wiper.sh 正在运行吗?

wiper.sh 正在运行吗?

我正在设置运行 Ubuntu Precise 的服务器,并尝试验证 SSD TRIM 是否正常工作。

fstrim 失败:

~  sudo fstrim -v /
fstrim: /: FITRIM ioctl failed: Operation not supported

因此我尝试在 hdparm 中使用 wiper.sh:

wiper-3.5  sudo ./wiper.sh --verbose  --commit /dev/sda1

wiper.sh: Linux SATA SSD TRIM utility, version 3.5, by Mark Lord.
rootdev=/dev/sda1
fsmode2: fsmode=read-write
/: fstype=ext4
freesize = 169502088 KB, reserved = 1695020 KB
Preparing for online TRIM of free space on /dev/sda1 (ext4 mounted read-write at /).

This operation could silently destroy your data.  Are you sure (y/N)? y
Creating temporary file (167807068 KB)..
Syncing disks..
Beginning TRIM operations..
get_trimlist=/sbin/hdparm --fibmap WIPER_TMPFILE.11503

/dev/sda:
trimming 3211263 sectors from 64 ranges
succeeded
trimming 3571713 sectors from 64 ranges
succeeded
trimming 3915776 sectors from 64 ranges
succeeded
(...)
trimming 3657913 sectors from 60 ranges
succeeded
Removing temporary file..
Syncing disks..
Done.

它似乎在工作,但我不知道它是否真的在工作。当 fstrim 不工作时,是否有任何情况下 wiper.sh 应该工作?除了信任 wiper.sh-log 之外,我还有没有什么方法可以检查 TRIMing 是否真的成功了?

内核版本:Linux 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:16:45 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

答案1

你运行的是哪个版本的内核?FITRIM ioctl于 2010 年 8 月左右添加,所以较旧的内核没有它。我猜是 wiper.sh 使用了不同的修剪方法,这就是为什么它可以在没有 ioctl 的情况下工作。

答案2

fstrim使用内核接口与驱动器通信,如果您的内核不知道如何向TRIM驱动器发送命令,fstrim则会发出Operation not supported。 (例如,某些驱动器需要TRIM转换为UNMAPDISCARD。)

另一方面,hdparm直接与您的存储设备对话,无需内核支持(这就是它始终需要由 运行的原因root)。因此,它可能支持内核(目前?)还不太了解的设备。该wiper.sh脚本只是 的一个前端,hdparm因此您无需手动计算和输入扇区号。

我相信,如果您运行的是任何较新的 Linux 内核,则TRIM如果设备直接连接到系统,则应该会得到支持。但是,如果您的设备使用 SAT over UAS/UASP 桥通过 USB 连接,则内核可能不支持TRIM您的设备。

请注意,现在您可能也需要在 HDD 上执行TRIM,因为如果可以丢弃大块,SMR HDD 驱动器将具有更好的性能。

相关内容