Что произойдет, если число моих полос будет больше, чем количество полос?

У меня есть сомнения относительно файловой системы Luster. Если у меня есть файл размером 64 ГБ, и я установил размер полосы в 1 ГБ, мое число полос становится равным 64. Но если я установлю количество полос в 128, что будет делать Lustre в этом случае?

2 ответа

Возможно, вы упускаете из виду такие детали, как количество ОЗТ, думая об этом. Я более подробно остановлюсь на этом, потому что во многих я видел путаницу в отношении чередования. Пожалуйста, потерпите меня.

Таким образом, в случае файла 64 ГБ с stripe_size=1 ГБ; полосы 1 ГБ - 64, но не полоса. Мы можем иметь любое нет. полос в зависимости от размера файла и stripe_size, но не от stripe_count, который зависит от OST. Вот небольшой эксперимент, у меня есть 2 OST и я создаю файл размером 64 МБ с 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

Теперь я создаю файл foo с -c -1(полоса на всех 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

Итак, здесь мы видим, что файл размером 64 МБ создан, а stripe_count равен 2, что означает, что данные записываются во все 2 OST одинаково.

stripe_count невероятно похож на no. объектов в одном файле. и каждый объект файла хранится на разных OST. Следовательно, это количество OST, которое отвечает за нет. из stripe_count.

Теперь, когда вы говорите, что если я изменю stripe_count на 128, у вас должно быть 128 OST, если вы этого не сделаете, тогда файл будет чередоваться только на доступных OST, и это будет ваш stripe_count (если файл создается с опцией "-c -1").

Но если я установлю число полосок равным 128, что в этом случае сделает Lustre?

Так что, если вы предполагаете, что 64 OSTs, блеск будет чередовать файл только на 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, которые вы хотите разделить на данные, если они доступны, и stripes = (размер файла / stripe_size).

Надеюсь, что ответит на ваш вопрос...

Если число полос установлено на 128, из 128 используются 64 полосы, а остальные 64 полосы не учитываются. Файловая система Lustre записывает данные циклически, что необходимо при чередовании. Также, чтобы убедиться, что остальные полосы не пропущены, нам нужно установить свойство так, чтобы запись начиналась с 65-й полосы.

Другие вопросы по тегам