1

我通过 dd 文件创建了一个基于文件的目标并映射到 iSCSI 目标。这是由here的示例完成的

dd if=/dev/zero of=/root/os.img bs=1G count=10
Target iqn.2010-06.ServerName:desc
Lun 0 Path=/root/os.img,Type=fileio

我可以从wireshark看到windows(iSCSI启动器)和iSCSI目标之间的包。

我的问题是 iSCSI 启动器尝试访问的地址(LBA)如何映射到映像文件(os.img)?LUN 中会有元数据吗?

4

1 回答 1

3

没有额外的元数据。当您访问启动器上的逻辑块地址 (LBA) 0 时,您访问的是您创建的 10G 文件中的偏移量 0。当您将 10MiB 的 LBA 访问到 LUN 时,您正在将偏移 10MiB 的块访问到 os.img。块是 512 字节。

要使用 LUN,您可能需要使用文件系统对其进行格式化。文件系统包含元数据,如文件名、属性以及映射到它们的块。

如果您正在考虑为 LUN 本身提供精简配置元数据,那么您有一些迂回的方式,因为您的 LUN 是作为文件 ( os.img) 存储在文件系统上的(无论包含什么/root)。文件系统跟踪文件中分配了哪些块。但是,由于您使用 dd 创建了它,因此您已经分配了它的所有块。您可以通过像这样为 lun 创建一个稀疏文件来避免这种情况:

truncate -s 10G os.img

(礼貌在Linux系统上快速创建大文件?

但是,除了这两个切向相关的示例之外,没有元数据。

于 2017-08-23T01:37:01.020 回答