1

我对 Lustre 文件系统有疑问。如果我有一个大小为 64 GB 的文件并将条带大小设置为 1GB,我的条带数变为 64。但如果我将条带数设置为 128,那么 Lustre 在这种情况下会做什么?

4

2 回答 2

2

考虑到这一点,您可能会错过诸如 OST 数量之类的细节。我将对此进行更详细的说明,因为我在许多人中看到了对条带化的困惑。请多多包涵。

所以对于 64GB 的文件,stripe_size=1GB; 1GB 的条带是 64,但不是 stripe_count。我们可以有任何没有。条带的数量取决于文件大小和 stripe_size,但不是取决于 OST 的 stripe_count。这是一个小实验,我有 2 个 OST 并创建了 64 MB 的文件,其中 stripe_size=1M(默认)...

/dev/loop0 on /mnt/mds1 type lustre (rw,loop=/dev/loop0)
/dev/loop1 on /mnt/ost1 type lustre (rw,loop=/dev/loop1)
/dev/loop2 on /mnt/ost2 type lustre (rw,loop=/dev/loop2)
ashish-203@tcp:/lustre on /mnt/lustre type lustre (rw,user_xattr,flock)
[root@ashish-203 tests]# lfs df -h
UUID                       bytes        Used   Available Use% Mounted on
lustre-MDT0000_UUID       146.4M       17.5M      119.4M  13% /mnt/lustre[MDT:0]
lustre-OST0000_UUID       183.1M       25.2M      147.7M  15% /mnt/lustre[OST:0]
lustre-OST0001_UUID       183.1M       25.2M      147.7M  15% /mnt/lustre[OST:1]

filesystem summary:       366.1M       50.3M      295.5M  15% /mnt/lustre

现在我用-c -1创建一个文件foo(所有OST上的条带)......

[root@ashish-203 tests]# lfs setstripe -c -1 /mnt/lustre/foo
[root@ashish-203 tests]# lfs getstripe /mnt/lustre/foo
/mnt/lustre/foo
lmm_stripe_count:   2
lmm_stripe_size:    1048576
lmm_pattern:        1
lmm_layout_gen:     0
lmm_stripe_offset:  1
    obdidx           objid           objid           group
         1               2            0x2                0
         0               2            0x2                0
[root@ashish-203 tests]# dd if=/dev/urandom of=/mnt/lustre/foo bs=1M count=64
64+0 records in
64+0 records out
67108864 bytes (67 MB) copied, 7.465 s, 9.0 MB/s
[root@ashish-203 tests]# du -h /mnt/lustre/foo
64M     /mnt/lustre/foo
[root@ashish-203 tests]# lfs df -h /mnt/lustre/foo
UUID                       bytes        Used   Available Use% Mounted on
lustre-MDT0000_UUID       146.4M       17.5M      119.4M  13% /mnt/lustre[MDT:0]
lustre-OST0000_UUID       183.1M       57.2M      115.8M  33% /mnt/lustre[OST:0]
lustre-OST0001_UUID       183.1M       57.2M      115.8M  33% /mnt/lustre[OST:1]

filesystem summary:       366.1M      114.3M      231.6M  33% /mnt/lustre
[root@ashish-203 tests]# lfs getstripe -c /mnt/lustre/foo
2

所以在这里我们可以看到文件 64MB 被创建,stripe_count 为 2,这意味着数据被平等地写入所有 2 个 OST。

stripe_count 等于编号。单个文件中的对象。并且文件的每个对象都存储在不同的 OST 上。因此,是 OST 的数量负责。stripe_count。

现在,当您说如果我将 stripe_count 更改为 128,那么您应该拥有 128 个 OST,如果您不这样做,那么文件将仅在可用的 OST 上进行条带化,这将是您的 stripe_count(如果文件是使用“-c -1”选项创建的) )。

但是如果我将我的条带计数设置为 128,那么 Lustre 在这种情况下会做什么?

因此,如果您假设 64 个 OST,则 luster 将仅在 64 个 OST 上对文件进行条带化

这是上述理论的小实验......

[root@ashish-203 tests]# lfs setstripe -c 4 /mnt/lustre/bar
[root@ashish-203 tests]# dd if=/dev/urandom of=/mnt/lustre/bar bs=1M count=64
64+0 records in
64+0 records out
67108864 bytes (67 MB) copied, 7.31459 s, 9.2 MB/s
[root@ashish-203 tests]# du -h /mnt/lustre/bar
64M     /mnt/lustre/bar
[root@ashish-203 tests]# lfs df -h /mnt/lustre
UUID                       bytes        Used   Available Use% Mounted on
lustre-MDT0000_UUID       146.4M       17.5M      119.4M  13% /mnt/lustre[MDT:0]
lustre-OST0000_UUID       183.1M       89.2M       83.9M  52% /mnt/lustre[OST:0]
lustre-OST0001_UUID       183.1M       89.2M       83.9M  52% /mnt/lustre[OST:1]

filesystem summary:       366.1M      178.3M      167.7M  52% /mnt/lustre
[root@ashish-203 tests]# lfs getstripe -c /mnt/lustre/bar
2

尽管设置了 stripe_count=4,但您可以看到 stripe_count 为 2,并且数据仅写入了 2 个 OST。

摘要:- 不要将 stripe_count 与否混淆。的条纹。stripe_count 是关于您想要对数据进行条带化的 OST 数量(如果它们可用),并且 stripes = (file size / stripe_size)。

希望能回答你的问题...

于 2016-06-05T06:35:44.470 回答
0

如果条带数设置为 128,则使用 128 个条带中的 64 个条带,其余 64 个条带被忽略。Lustre 文件系统以循环方式写入数据,这在条带化时是必需的。此外,为了确保其余的条带不被遗漏,我们需要设置一个属性,以便从第 65 个条带开始写入。

于 2015-09-14T11:10:52.187 回答