我们有基于 BBB 的定制板,带有 256MB RAM 和 4GB eMMC,
我已经使用下面的代码对其进行了分区,
parted --script -a optimal /dev/mmcblk0 \
mklabel gpt \
mkpart primary 128KiB 255KiB \
mkpart primary 256KiB 383KiB \
mkpart primary 384KiB 511KiB \
mkpart primary 1MiB 2MiB \
mkpart primary 2MiB 3MiB \
mkpart primary 3MiB 4MiB \
mkpart primary 4MiB 5MiB \
mkpart primary 5MiB 10MiB \
mkpart primary 10MiB 15MiB \
mkpart primary 15MiB 20MiB \
mkpart primary 20MiB 21MiB \
mkpart primary 21MiB 22MiB \
mkpart primary …Run Code Online (Sandbox Code Playgroud) 我在这里发布了一个问题,因为我的 HDD 无缘无故地不断旋转,我想找出是什么过程导致它们旋转。
在对该问题的评论中,有人告诉我使用iosnoopwhich(没有任何参数或开关)在其中一个 HDD 随机旋转的几分钟内生成了几百行。复制输出并告诉 Emacs 删除所有带有与 SD 卡对应的设备号的行(关于我不关心的访问)后,我只剩下这个:
COMM PID TYPE DEV BLOCK BYTES LATms
dumpe2fs 19467 R 8,0 272648 4096 23.25
^C
Ending tracing...
Run Code Online (Sandbox Code Playgroud)
由于只剩下 1 行数据,因此假设已经确定了罪魁祸首似乎是合理的。但是为什么是dumpe2fs随机调用呢?更重要的是:如何让它停止,最好不要破坏东西(重命名相应文件的肮脏解决方案可能会这样做)?
sudo dumpe2fs /dev/sda1手动运行确实会使相应的 HDD 旋转。但是,该命令确实已经返回其输出并在 HDD 旋转之前终止(没有我在 HDD 旋转时访问文件时遇到的 ~ 7 秒延迟)。
我使用 Ubuntu Mate 16.04。
我有一个 SSD,有 2 个分区,格式为 ext4。在第二个分区上,我使用discard以下命令在文件系统级别启用了默认选项:
$ sudo tune2fs -o discard /dev/sda2
tune2fs 1.45.5 (07-Jan-2020)
$ sudo tune2fs -l /dev/sda2 | grep 'mount options'
Default mount options: user_xattr acl discard
Run Code Online (Sandbox Code Playgroud)
我还在discard两个分区上添加了该选项/etc/fstab:
/dev/sda2 / ext4 rw,relatime,discard,stripe=8191 0 1
/dev/sda1 /boot ext4 rw,relatime,discard,stripe=8191 0 2
Run Code Online (Sandbox Code Playgroud)
然而,当我查看 的输出时mount,只有没有discardfs-level 默认挂载选项的输出似乎启用了它:
$ mount | grep '^/dev'
/dev/sda2 on / type ext4 (rw,relatime,stripe=8191)
/dev/sda1 on /boot type ext4 (rw,relatime,discard,stripe=8191)
Run Code Online (Sandbox Code Playgroud)
我注意到提到的其他选项tune2fs也没有提及。
那么,尽管没有提及,我可以相信discard当前安装中已启用该功能吗?有什么方法可以验证吗?我的意思是, Even的输出与当前安装无关。/dev/sda2 …
e2fsprogs ×3
linux ×3
ext4 ×1
filesystems ×1
gpt ×1
hard-disk ×1
mkfs ×1
partition ×1
ssd ×1
util-linux ×1