我目前正在尝试找出如何使用我的新 TP 进行修剪,并想知道手动/在线修剪的区别。
这是我的设置:
ThinkPad T430s with SSD Samsung 830, 128GB and Xubuntu 12.10,这里有一些输出来检查trim是否可以在我的系统上工作(从这里得到这些:http : //wiki.ubuntuusers.de/SSD/TRIM)
root@eike-tp:~# sudo hdparm -I /dev/sda | grep -i TRIM
* Data Set Management TRIM supported (limit 8 blocks)
Run Code Online (Sandbox Code Playgroud)
我的 fstab 插入了丢弃:
UUID=d6c49c17-a4f1-466c-9f7e-896c20db3bba / ext4 discard,noatime,errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=a0322f5f-c6c1-4896-863f-668f0638d8cf none swap sw 0 0
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
Run Code Online (Sandbox Code Playgroud)
我试图测试它是否有效(但是当我使用 /dev/sda 尝试它时我没有得到任何零),但发现这种方法只适用于 SSD 类型 2,而我似乎有类型 3。所以我不知道它是否有效。
Ubuntuwiki(第一个链接)建议手动修剪,因此我设置了每日 cronjob 而不是丢弃:
#!/bin/sh
LOG=/var/log/batched_discard.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
Run Code Online (Sandbox Code Playgroud)
维基文章建议每周或每天。现在我的问题:
多久执行一次自动修剪?建议多久一次?在线与手动修剪?
感谢您的帮助
自动和手动修剪之间的区别在于,自动修剪(使用discardmount 选项)会在删除任何文件后同步修剪释放的块,而手动修剪(使用fstrim)会立即修剪所有可用空间。
测试自动修剪是否正常工作的一种方法是创建和删除一个大文件:
user@host:/somewhere$ dd if=/dev/urandom bs=1M count=100 of=bigfile
user@host:/somewhere$ sync
user@host:/somewhere$ rm bigfile
user@host:/somewhere$ sync
Run Code Online (Sandbox Code Playgroud)
如果自动丢弃正在工作,再次手动修剪不会修剪很多块,因为它们应该已经被修剪过。在您的文件系统上运行sudo discard -v并查看有多少块被修剪。
至于推荐哪个:根据我的经验,自动修剪会降低性能。然而,这可能取决于硬件;在你的驾驶上可能没问题。
如果您使用手动修剪,至于频率,请考虑在典型工作负载中写入数据的速率与 SSD 上的可用空间量相比。您希望在磁盘被已删除的数据填满之前进行足够频繁的修剪。如果您的 SSD 大部分是可用空间或者您的磁盘工作负载很轻,那么偶尔(每周或更长时间)修剪就足够了。如果您的 SSD 大部分已满,或者您经常编辑视频文件,则需要更频繁地修剪。
我不是存储工程师,我自己也有相关的担忧,但我可以就调度提出可能有用的建议。我非常有信心 TRIM 不会对 SSD 造成任何令人担忧的磨损。这只是您的磁盘最终必须进行的内务处理,然后才能开始回收块。批量修剪的最佳时间表取决于使用情况;我认为是写入频率和可用空间的函数。考虑到这一点,我会手动取消 cron 作业fstrim -v几天。
我认为的技巧是制定一个时间表,其中批处理 TRIM 准备 SSD 进行写入,然后必须回收已使用的块才能完成正常的写入操作,从而损害性能。等待 24 小时并进行 fstrim。如果它声称修剪的块比可用空间少得多,那么您可能会比这更少地进行批量修剪。
| 归档时间: |
|
| 查看次数: |
25078 次 |
| 最近记录: |