我在多个系统上运行 Arch Linux (systemd)。有些具有 SSD 存储,有些具有 NVME 存储设备,有些则使用旋转 HDD。有些系统使用 dm-crypt 来加密文件系统。所有系统都在/
.
我希望有一个 bash 脚本来确定托管根文件系统的物理设备 ( /
)。目的是检查该块设备是否支持修剪,如果支持,则在系统上未启用 fstrim.timer 时采取一些操作。
例如,如果我们知道该功能/
已打开,我们可以检查是否支持修剪。如果是这样,我可以做。/dev/sda
hdparm -I /dev/sda | grep TRIM
systemctl enable fstrim.timer
但在加密系统上,/
被报告为正在运行/dev/mapper/cryptoroot
或类似的情况,并且我没有找到脚本友好方法将其映射回物理块设备(例如,/dev/sda
)以确定它是否支持修剪。
我的理解是,SSD 通常受益于定期修剪运行,而 NVMe 设备可能不会。
对于非加密情况,这些问题是相关的:
如何查找文件夹位于哪个物理设备上?
找出Linux中/dev/root代表什么设备?
https://unix.stackexchange.com/a/431968/15010
答案1
BTRFS 支持多种设备,因此您可以使用它btrfs fi show
来获取块设备列表。然后用于cryptsetup status
检查给定设备是否是 LUKS 容器。如果是,该命令将输出下划线设备。
我不会称此为脚本友好,因为您必须解析输出,但它应该可以工作。