如何判断 Linux 块设备是否可修剪?

pet*_*erh 10 linux block-device trim

fstrim需要挂载Linux块设备,而且不是很冗长。blkdiscard可以看出,但这也需要写操作。

我能否以某种方式判断块设备是否支持修剪/丢弃,而不实际尝试修剪/丢弃其上的某些内容?

Ste*_*itt 18

您可以检查设备\xe2\x80\x99s最大丢弃大小,例如

\n
$ cat /sys/block/X/queue/discard_max_hw_bytes\n
Run Code Online (Sandbox Code Playgroud)\n

X酌情更换)。

\n

如果这显示的值大于 0,则设备支持丢弃

\n
\n

值为discard_max_hw_bytes0 表示设备不支持丢弃功能。

\n
\n

同一目录中支持的最大丢弃大小由 指示;discard_max_bytes这可以小于硬件支持的值以限制丢弃延迟(并且可以写入以更改限制):

\n
\n

虽然discard_max_hw_bytes是设备的硬件限制,但此设置是软件限制。当发出大量丢弃时,某些设备\n会表现出较大的延迟,\n设置较低的值将使 Linux 发出较小的丢弃,并\n可能有助于减少由大量丢弃\n操作引起的延迟。

\n
\n

这适用于许多不同的块设备,而不仅仅是磁盘:循环设备、设备映射器设备等。

\n


dco*_*nch 9

使用该hdparm命令,您可以在磁盘设备上执行低级命令。

该选项hdparm -I /dev/sda(或插入块设备而不是 sda)将查询驱动器的信息。有一个部分列出了驱动器支持的操作。

在 TRIM 支持驱动器上运行hdparm -I /dev/sda | grep TRIM将输出如下内容:

    *    Data Set Management TRIM supported (limit 1 block)
Run Code Online (Sandbox Code Playgroud)

输出中还有很多其他有用的信息,hdparm 命令非常有用。

请注意,这仅适用于 SATA 和某些 SCSI 设备,因为hdparm其设计目的是在设备上运行 SATA 命令。

  • @Jeremy因为“fstrim”修剪文件系统,而不是块设备 - 它要求文件系统修剪自身,因此必须安装文件系统。如果您想从块设备中丢弃块而不安装它,请使用“blkdiscard”;你必须弄清楚要丢弃哪些块。 (4认同)
  • 请注意,“hdparm”仅适用于 ATA 设备(也可能适用于某些 SCSI 设备)。当您对 NVMe、MMC/SD、某些 USB 设备、设备映射器目标、ramdisk 和许多其他设备类型运行“hdparm -I”时,它们不会返回任何有用的信息。 (3认同)