如果我的条纹数设置为大于条纹数,会发生什么



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

在考虑这一点时,可能遗漏了OST数量等细节。我将更详细地阐述这一点,因为我在许多人中看到了关于脱衣舞的困惑。请耐心等待。

因此,如果文件大小为64GB,stripe_size=1GB;1GB的条带是64,但不是stripe_count。根据文件大小和stripe_size,我们可以有任何数量的条纹,但不能有依赖于OST的stripe_count。这是一个小实验,我有2个OST,正在创建一个64MB的文件,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,那么光泽将只在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_cout是2,并且数据只写入了2个OST。

摘要:-不要将stripe_count与条纹数混淆。stripe_count是指如果数据可用,则要对其进行条带化的OST数量,stripe=(文件大小/stepe_size)。

希望这能回答你的问题。。。

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

相关内容

  • 没有找到相关文章

最新更新