标签: trim

Unix:如何从文件中读取行的原始内容

我有一个数据文件,内容如下:

department: customer service  section: A
department: marketing         section: A
department: finance           section: A
Run Code Online (Sandbox Code Playgroud)

当我阅读每一行时,我会使用cut命令提取部门名称。不幸的是,程序会自动trim将多余的空间全部删除,因此我错误地剪切了部门名称。

cat dept.dat | while read line
do
    echo $line
    echo $line | cut -c 12-29
done
Run Code Online (Sandbox Code Playgroud)

例如原始行是:

department: marketing         section: A
Run Code Online (Sandbox Code Playgroud)

虽然程序将此行视为:

department: marketing section: A
Run Code Online (Sandbox Code Playgroud)

如何在不修剪所有冗余空间的情况下读取该行?

echo cut trim

6
推荐指数
1
解决办法
6907
查看次数

在 SSD 和 HDD 上配置 mdadm RAID-1

我需要在一个 SSD 和一个 HDD 上配置 RAID-1。SSD 和 HDD 都有一些我不需要的预装软件,因此如果有任何优势,它们都可以完全擦除。

到目前为止,我的研究使我找到了这个--write-mostly选项,我知道我应该在 HDD 上使用它,以便读取操作可以获得 SSD 的全速。

但是我不清楚如何确保正确使用 TRIM 命令。

我在设置期间阅读了有关 mdadm 写入设备每个扇区的警告,无论在设置突袭之前执行了任何 TRIM,SSD 都没有备用扇区。

我最好先创建以 SSD 作为唯一设备而降级的 RAID,然后添加 HDD,以便只有 HDD 被写入?

在设置 RAID 之前,我需要对 SSD 做什么,以便执行任何需要的 TRIM?SSD 预装了软件(我不需要),这意味着我不知道以前写入了哪些扇区。

如果有任何相关性,SSD 是 128GB,并且在SAMSUNG MZ7LF128HCP-00000, FXT0101Qata 层和SAMSUNG MZ7LF128 101Q PQsd 层提到的 dmesg 输出中。

linux ssd mdadm trim

6
推荐指数
1
解决办法
3411
查看次数

LVM 缓存和 TRIM

我已将 LVM 设置为在 SSD 的分区上缓存逻辑卷(位于 HDD 上)(如果这很重要,则处于回写模式)。据我所知,这可以正常工作并且缓存使用了所有可用空间。

现在,我想知道此设置是否向 SSD 发出 TRIM 命令,以及是否需要(或合理)发出此类命令来延长 SSD 的使用寿命。我已添加discard/etc/fstab缓存逻辑卷条目的选项中。但是,我不知道这如何影响缓存分区,也不知道如何测试是否发出 TRIM 命令。

linux cache ssd lvm trim

6
推荐指数
1
解决办法
1117
查看次数

TRIM 是否需要“丢弃”安装?

我想知道是否使用该选项安装SSD discard(记录在man mount才能将 ATA TRIM 发送到 SSD 的控制器。

\n

证据有点间接:我是否在SanDisk SSD PLUSdiscard上安装分区安装分区,删除的文件都无法通过删除后立即运行 TestDisk 来恢复。文件路径完好无损,但文件内容消失了。由此我怀疑 TRIM 在 SSD 上运行并导致文件内容无法恢复。

\n

看了一下systemctl list-timers,好像没有一个单元在运行fstrim

\n

尽管分区没有挂载,但文件删除后内核是否发送TRIMdiscard?或者这是 TestDisk 无法可靠地从 SSD 恢复文件的另一个原因?

\n
\n

我使用的是 Arch Linux 5.12.3。

\n

findmnt告诉我有关分区及其安装选项的信息:

\n
TARGET                       SOURCE     FSTYPE OPTIONS\n/                            /dev/sda3  ext4   rw,relatime\n\xe2\x94\x94\xe2\x94\x80/sda1                      /dev/sda1  ext4   rw,relatime,lazytime,discard\n
Run Code Online (Sandbox Code Playgroud)\n

ssd mount data-recovery trim

6
推荐指数
1
解决办法
6866
查看次数

fstrim 和 iostat

我的新笔记本中有一个新的三星 ssd。我调整了所有内容以避免写入磁盘(firefox 配置文件和/var/log内存中),我正在使用ext4fsrelatime并且我fstrim每天使用一次来修剪我的 ssd。

我用iostat -dhm. 运行前fstrim的命令iostat所示

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda
              4.97         0.05         0.59       1856      20924
Run Code Online (Sandbox Code Playgroud)

修剪后 /home

# fstrim -v /home
/home: 100.2 GiB (107555401728 bytes) trimmed
Run Code Online (Sandbox Code Playgroud)

ìostat 显示

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda
              5.91         0.05         3.51       1859     123498
Run Code Online (Sandbox Code Playgroud)

MB_wrtn增加了102574 MB。这是否意味着fstrim正在写入102574 MB = 100.2 GB我的磁盘?

Trim 应该“标记”不包含有效数据的页面,而不是写入它们。

我想iostat看到了fstrim作为写作的操作(即使它不是 …

io ssd trim

5
推荐指数
1
解决办法
2035
查看次数

jpegtran - 无损裁剪图像的左侧部分

我有一个 1400x1400 的图像,我想在其中向左修剪 4 个像素,在底部修剪 1 个像素,为了保持方形比例,从顶部修剪 3 个像素。问题是,每当我使用 进行裁剪时jpegtran,无论我做什么,都会从右下角删除像素。例如,仅测试左侧部分,我尝试过:

jpegtran -perfect -crop 1396x1400+0+0 -outfile crop.jpg image.jpg
Run Code Online (Sandbox Code Playgroud)

但这只是从右侧删除了 4 个像素;

jpegtran -perfect -crop 1396x1400-4+0 -outfile crop.jpg image.jpg
Run Code Online (Sandbox Code Playgroud)

这再次从右侧删除了 4 个像素;

jpegtran -perfect -crop 1396x1400+4+0 -outfile crop.jpg image.jpg
Run Code Online (Sandbox Code Playgroud)

并且根本不会删除任何像素;更一般地说,

jpegtran -perfect -crop 1396x1400+x+0 -outfile crop.jpg image.jpg

jpegtran -perfect -crop 1396x1400-x+0 -outfile crop.jpg image.jpg
Run Code Online (Sandbox Code Playgroud)

x0和4之间,不会分别取出从右侧4-x和x个象素。凭借x高于5,显然给出了一个错误。我无法实现任何左修剪。谁能帮我?

我使用的是jpegtranlibjpeg-turbo一个Arch Linux的x86_64的系统版本1.4.2(编译20151205)。

image-manipulation jpeg trim

5
推荐指数
1
解决办法
2538
查看次数

如何检查TRIM?

我在带有三星 PM851 SSD 的戴尔 XPS 9343 上安装了 Linux。
我最近读到许多 SSD 不支持 TRIM 操作。
所以我想检查discard选项是否在我的系统上有效。

第一步,我尝试简单地运行sudo fstrim --verbose --all并报告41GB trimmed;这让我感到害怕,因为我一直期待一个很小的价值,因为我一直启用 TRIM(见上文);事实上,如果我再次重新运行该命令,我会得到O bytes trimmed. 正常吗? 即使我在 /etc/fstab 中有丢弃选项?

PS:我尝试遵循此处提出的解决方案但由于trim.test: FIBMAP unsupported.
PS2:它是带有 GPT 和 EXT4 文件系统的平面SSD(无 LVM 或 RAID)

storage ssd ext4 trim fstrim

5
推荐指数
2
解决办法
2万
查看次数

是否应该使用“discard”选项来挂载交换文件?

凯旋门维基说defaults,discard可以在中使用fstab的交换分区文件。然而,交换文件和手册页都不清楚。

如果交换文件驻留在一个文件系统中,该文件系统本身用discard选项挂载(显然在 SSD 中),它应该使用discard自己吗?如果父文件系统没有 discard'ing 怎么办?

直觉说“不”,但我找不到任何关于它的东西,并认为值得讨论。

filesystems mount swap trim

5
推荐指数
1
解决办法
4697
查看次数

无法在 SSD 上启用 TRIM

我无法在新安装的 SSD 上启用 TRIM。Ubuntu Server 12.04,Linux 3.11.0-15-generic。我通过 /etc/fstab 中的丢弃设置打开了 TRIM。TRIM 也不适用于 fstrim 命令。

以下是我检查 TRIM 是否有效的方法:

#for i in {1..100000}; do echo "1" >> tempfile; done
#sudo hdparm --fibmap tempfile
#sudo hdparm --read-sector 293865512 /dev/sda
#rm tempfile
#sync
#sudo hdparm --read-sector 293865512 /dev/sda
Run Code Online (Sandbox Code Playgroud)

在启用 TRIM 的情况下,hdparm --read-sector 命令的第二次运行应返回零,但结果与该命令的第一次运行相同。

fstrim 命令不起作用:

#sudo fstrim -v /
/: 0 bytes were trimmed
Run Code Online (Sandbox Code Playgroud)

这是 hdparm -i /dev/sda 的结果:

Model=KINGSTON SV300S37A240G, FwRev=520ABBF0, SerialNo=50026B7243004D3E
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4 …
Run Code Online (Sandbox Code Playgroud)

ubuntu ssd trim

4
推荐指数
1
解决办法
1689
查看次数

如何丢弃/修剪打开文件中的范围?

对于 SSD,我可以打开行设备并使用ioctl()withBLKDISCARD命令丢弃一系列页面。

我的问题是

对于打开的文件,如何丢弃一系列数据?这是否取决于底层文件系统的实现?

linux filesystems ssd trim

4
推荐指数
1
解决办法
833
查看次数

标签 统计

trim ×10

ssd ×7

linux ×3

filesystems ×2

mount ×2

cache ×1

cut ×1

data-recovery ×1

echo ×1

ext4 ×1

fstrim ×1

image-manipulation ×1

io ×1

jpeg ×1

lvm ×1

mdadm ×1

storage ×1

swap ×1

ubuntu ×1