gpt4 book ai didi

linux - 哪个版本的 Linux 内核开始支持 VMware 6.5 UNMAP 的 SPC-4

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:26 25 4
gpt4 key购买 nike

VMware 6.5 announced支持 VMFS6 和支持 SCSI 主要命令 - 4 (SPC-4) 的 Linux 虚拟机的 UNMAP 命令(来自存储系统上精简 LUN 的空间回收)。哪个版本的 Linux 内核开始支持 VMware 6.5 UNMAP 的 SPC-4?这很有帮助 article .

最佳答案

这不是“Linux 何时支持 UNMAP 的 SPC-4”的问题(您总是可以尝试发送原始 SCSI 命令,而 Linux 不必真正“理解”这些命令)所以我想您是想问“哪个版本的 Linux 会在适当的 ESXi 磁盘上自动通告丢弃?”。

在过去的几年里,只要“磁盘”表示它可以支持 SCSI 标准 SPC-2 或更高版本,Linux 就会继续检查并公开丢弃(又名 TRIM 或 UNMAP)支持(如果可用)。公开丢弃支持随提交一起提交 https://github.com/torvalds/linux/commit/c98a0eb0e90d1caa8a92913cd45462102cbd5eaf最终出现在 2.6.39 中。参见 https://github.com/torvalds/linux/blob/v4.8/include/scsi/scsi_device.h#L546它显示了如何仅在以下情况下读取 VPD 页面:a) 它以某种方式被强制(通过呃,“古怪”设备的明确怪癖)或 b)该设备声称至少实现了 SCSI SPC-2 规范。反过来,需要能够读取 VPD 页面以检查设备是否支持精简配置 https://github.com/torvalds/linux/blob/v4.8/drivers/scsi/sd.c#L2840 .

我检查了 ESXi 6.0 上的精简配置 VMDK 磁盘,版本 11 VM 运行 Ubuntu 16.04, guest 操作系统设置为 Ubuntu 64 位。如果您查看磁盘的“逻辑 block 配置”VPD 页面(通过 sg_vpd -p lbpv),您会被告知:

Logical block provisioning VPD page (SBC):
Unmap command supported (LBPU): 1
Write same (16) with unmap bit supported (LBWS): 0
Write same (10) with unmap bit supported (LBWS10): 0

(我必须在 VM 上将高级选项 EnableBlockDelete 设置为 1 才能获得此信息)

如果您查看 READCAPACITY(16) 结果(通过 sg_readcap -16):

Read Capacity results:
Protection: prot_en=0, p_type=0, p_i_exponent=0
Logical block provisioning: lbpme=1, lbprz=1

所以它再次声称自己很薄。

但是 sg_inq 显示磁盘仅声称支持 SCSI-2:

standard INQUIRY:
PQual=0 Device_type=0 RMB=0 LU_CONG=0 version=0x02 [SCSI-2]

(SCSI-2 是 SPC-2 以下的一些修订版,请参阅 https://github.com/torvalds/linux/blob/v4.8/include/scsi/scsi.h#L253 以了解 Linux 如何订购 SCSI 规范版本)。

因此 Linux 不会通告丢弃:

grep . /sys/block/sdc/queue/discard_max_bytes
0

任何尝试使用丢弃的东西对我来说都会失败:

# blkdiscard --offset 0 --length=2048 /dev/sdc
blkdiscard: /dev/sdc: BLKDISCARD ioctl failed: Operation not supported

尽管如此,还是可以手动向下发送原始 SCSI UNMAP:

# sg_unmap --lba=0 --num=2048 /dev/sdc

(请注意,取消映射操作的最小大小为 1MByte,否则您将返回错误)

TLDR; 2.6.39 中添加了 Linux 中的广告丢弃,但几乎所有 Linux 都可以手动传递 SCSI UNMAP 命令(并且在 ESXi 上,您的 VM 必须满足正确的要求)。

关于linux - 哪个版本的 Linux 内核开始支持 VMware 6.5 UNMAP 的 SPC-4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40233159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com