我通过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中会有元数据吗?
答案 0 :(得分:2)
没有额外的元数据。当您在启动器上访问逻辑块地址(LBA)0时,您正在访问您创建的10G文件中的偏移量0。当您将10MiB的LBA访问LUN时,您将访问偏移10MiB的块到os.img。块是512字节。
要使用LUN,您可能需要使用文件系统对其进行格式化。文件系统包含元数据,如文件名,属性以及映射到它们的块。
如果您正在考虑为LUN本身提供精简配置元数据,那么您可以采用迂回方式,因为您的LUN存储为文件系统上的文件(os.img
)(包含/root
})。文件系统跟踪文件中的哪些块被分配。但是,由于您是使用dd创建的,因此您已经分配了所有块。您可以通过为lun创建稀疏文件来避免这种情况:
truncate -s 10G os.img
(礼貌Quickly create a large file on a Linux system?)
但是,除了这两个相关的例子之外,没有元数据。