![如何指定 LVM 逻辑卷的扇区大小?](https://linux22.com/image/694609/%E5%A6%82%E4%BD%95%E6%8C%87%E5%AE%9A%20LVM%20%E9%80%BB%E8%BE%91%E5%8D%B7%E7%9A%84%E6%89%87%E5%8C%BA%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
我正在创建用于通过 targetcli (iSCSI) 导出的逻辑卷。
我正在使用 lvm 的精简配置卷,例如
lvcreate -V 1T --thin -n vol_name storage/thin_pool
然后我将创建的逻辑卷添加到targetcli
的 iblock 后台存储中。生成的设备显示 4096get attribute hw_block_size
由于缺乏启动器支持(VirtualBox),我需要这些 LUN 具有 512 字节扇区。出于一致性原因,我想避免使用 fileio 后台存储(据称允许设置扇区大小)。
是否可以在创建卷或将卷分配到后台存储期间指定扇区大小?
答案1
fileio 后备存储驱动程序是您实现此目的的方法。如果您选择在 fileio 后备存储上启用写回缓存(或如 targetcli 所称的“缓冲模式”),则一致性才是需要考虑的问题。
正如 Datera 自己所建议的那样,无缓冲模式是几乎所有发行版上每个 targetcli 实现的默认模式。这应该不是什么大问题。
但是,如果您需要强制对特定的支持对象使用无缓冲模式(也许您应该这样做以确保安全),您可以这样指定:
#> targetcli
/backstores/fileio/test_name> set attribute buffered=False
至于解决块大小问题,您还可以自由编辑特定 fileio 备用存储对象的 block_size 属性:
/backstores/fileio/test_name> set attribute block_size=4096
您可以使用 fileio 后端存储来处理精简 LVM2(或任何其他块设备),同时更改几乎任何设置,而 block 或 iblock 后端存储经过优化,可以将设备及其硬件属性“直接”传递给启动器。Block 的性能应该比 fileio 更好,因为实现更精简 - 只是由于精简实现而缺少这样的功能。如果您不需要设置这些参数,则应该对块设备使用“block”。
答案2
关于问题,可以在创建文件系统时更改块大小。因此,我认为您应该运行文件系统类型的mkfs.yourfs -b 512 /dev/mapper/<VGName>-<logical volume>
命令。yourfs
答案3
我花了很大力气才让 ESXi 6.5 识别 LIO 目标 LUN。我没有将 LVM 覆盖到从 RAID 子系统公开的虚拟磁盘上,只是直接使用“targetcli”命令将虚拟磁盘作为 iSCSI LUN 公开到我的 ESXi 主机。(使用“块”类型的后台存储)
作为新硬件,物理磁盘的大小为 4096 个扇区。这一直暴露在 ESXi 主机上的 iSCSI 子系统中,该子系统成功登录到目标,但拒绝显示 LUN 设备。(ESXi 日志文件提示我其对不受支持的扇区大小的投诉。)
一旦确定,就可以使用“targetcli”实用程序的“set attribute block_size=512”命令轻松解决这个问题。
我不需要切换到“fileio”后端存储类型!但请注意:如果后端存储当前已绑定到 iscsi lun,则不会允许您执行此操作 - 您必须打破该绑定(删除 lun),设置 block_size,然后重新创建 iscsi lun。
我正在 RHEL 7 上使用“targetcli”命令版本 2.1.51。