LUN的LBA如何映射到基于iSCSI文件的目标的映像文件

时间:2017-08-22 09:12:54

标签: mapping memory-address iscsi

我通过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中会有元数据吗?

1 个答案:

答案 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?

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