我对Lustre文件系统有疑问。如果我有一个大小为64 GB的文件,并且我将条带大小设置为1GB,那么我的条带数变为64.但是如果我将条带数设置为128,那么Lustre在这种情况下做了什么?
答案 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)。
希望你回答的问题......