peterh Asked: 2021-09-10 05:46:27 +0800 CST2021-09-10 05:46:27 +0800 CST 2021-09-10 05:46:27 +0800 CST 如何判断 Linux 块设备是否可修剪? 772 fstrim需要挂载Linux块设备,而且不是很冗长。blkdiscard可以告诉,但也需要写操作。 我可以以某种方式判断块设备是否支持修剪/丢弃,而无需实际尝试修剪/丢弃上面的东西吗? linux block-device 3 个回答 Voted Best Answer Stephen Kitt 2021-09-10T05:59:09+08:002021-09-10T05:59:09+08:00 您可以检查设备的最大丢弃大小,例如 $ cat /sys/block/X/queue/discard_max_bytes (酌情更换X)。 如果显示的值大于 0,则设备支持丢弃。严格来说,discard_max_hw_bytes表示硬件支持什么;discard_max_bytes表示软件支持什么,后者通常是相关的: discard_max_bytes 值为 0 表示设备不支持丢弃功能。 (这在本discard_max_hw_bytes节中,但对两者都有效。参考将在 5.15 中修复。) 这适用于许多不同的块设备,而不仅仅是磁盘:循环设备、设备映射器设备等。 dcom-launch 2021-09-10T06:55:55+08:002021-09-10T06:55:55+08:00 利用该hdparm命令,您可以在磁盘设备上执行低级命令。 该选项hdparm -I /dev/sda(或插入块设备而不是 sda)将查询驱动器以获取信息。有一个部分列出了驱动器支持的操作。 在支持 TRIM 的驱动器上运行hdparm -I /dev/sda | grep TRIM将输出如下内容: * Data Set Management TRIM supported (limit 1 block) 输出中还有很多其他有用的信息,hdparm 命令非常有用。 请注意,这仅适用于 SATA 和一些 SCSI 设备,因为hdparm它旨在在设备上运行 SATA 命令。 GauriK 2021-11-19T21:36:29+08:002021-11-19T21:36:29+08:00 要检查设备是否支持修剪/丢弃,也可以使用 linuxlsblk实用程序。如果设备的丢弃限制如granularity和max_sectors非零,则启用丢弃/修剪支持,例如, $ lsblk -D NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO sda 0 512B 2G 0
您可以检查设备的最大丢弃大小,例如
(酌情更换
X
)。如果显示的值大于 0,则设备支持丢弃。严格来说,
discard_max_hw_bytes
表示硬件支持什么;discard_max_bytes
表示软件支持什么,后者通常是相关的:(这在本
discard_max_hw_bytes
节中,但对两者都有效。参考将在 5.15 中修复。)这适用于许多不同的块设备,而不仅仅是磁盘:循环设备、设备映射器设备等。
利用该
hdparm
命令,您可以在磁盘设备上执行低级命令。该选项
hdparm -I /dev/sda
(或插入块设备而不是 sda)将查询驱动器以获取信息。有一个部分列出了驱动器支持的操作。在支持 TRIM 的驱动器上运行
hdparm -I /dev/sda | grep TRIM
将输出如下内容:输出中还有很多其他有用的信息,hdparm 命令非常有用。
请注意,这仅适用于 SATA 和一些 SCSI 设备,因为
hdparm
它旨在在设备上运行 SATA 命令。要检查设备是否支持修剪/丢弃,也可以使用 linux
lsblk
实用程序。如果设备的丢弃限制如granularity
和max_sectors
非零,则启用丢弃/修剪支持,例如,