如果我的条纹数设置为超过条带数,会发生什么

时间:2015-04-08 05:16:47

标签: io parallel-processing lustre

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

1 个答案:

答案 0 :(得分:1)

在考虑这个问题的时候,你可能会错过考虑OST数量这样的细节。我将对此进行更详细的阐述,因为我看到很多关于条带化的混淆。请耐心等待。

因此,如果文件为64GB,stripe_size = 1GB; 1GB的条带是64但不是stripe_count。我们可以有任何不。条带取决于文件大小和stripe_size,但不取决于依赖于OST的stripe_count。这是一个小实验,我有2个OST并使用stripe_size = 1M创建64 MB文件(默认)...

/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等于no。单个文件中的对象并且文件的每个对象都存储在不同的OST上。因此,它是负责否的OST的数量。 of stripe_count。

现在,如果你说我将stripe_count更改为128,那么你应该拥有128个OST,如果你不这样,那么file只会在可用的OST上进行条带化,那将是你的stripe_count(如果文件是用&#创建的) 34; -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与no混淆。条纹。 stripe_count取决于您希望对数据进行条带化的OST数量(如果可用)和stripe =(文件大小/ stripe_size)。

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