DFID
我尝试使用 lustre 中定义的 来获取文件的 id(描述符)#define DFID "["DFID_NOBRACE"]"
,并得到输出为[0x200000401:0x4:0x0]
.那么:
其中用 分隔的字段代表什么意思呢?
答案1
您可以看到 的定义旁边DFID
是 的定义PFID()
,它正在打印FID 的f_seq
、f_oid
和f_ver
字段。 FID 绝不会在 Lustre 中重复使用。
f_seq
是 64 位序列 (SEQ) 号。这指示它位于哪个 MDT(或在哪个 OST 上的 DNE 配置中)的 inode(或对象)范围。每个 MDT 获取一系列序列号,然后将它们(一次一个)分配给客户端,客户端可以在该序列号内创建新文件。
f_oid
是 32 位对象 ID 号 (OID)。这表示 SEQ 范围内的对象,每当创建新文件时,客户端都会分配该对象。对于 DNE 配置,MDS 为分配给每个 OST 的 SEQ 号分配 OID。
f_ver
是保留的 32 位版本 (VER) 字段。这旨在供快照/数据集使用来区分具有相同 SEQ/OID 的对象。该字段还用于 OST 对象,以在 xattr 中存储文件的 LOV 条带索引fid
,以便在 MDT 布局损坏时可以从 OST 对象重建 LOV 布局。
看https://www.eofs.eu/_media/events/elw11/08_johann_lombardi_hands_on_lustre_2.x.pdf有关 FID 的更完整描述。
答案2
第一个学期0x200000401
。
它基本上是文件所属的序列。在lustre中,属于特定序列的文件存储在一起,这意味着具有给定序列的FID的所有文件(对象)都存储在同一服务器上。