xfs на lvm на апаратному RAID: правильні параметри?


10

У мене є 10 дисків з 8 ТБ кожен в апаратному RAID6 (таким чином, 8 дисків даних + 2 паритету). Після відповіді на дуже схоже питання я сподівався на автоматичне виявлення всіх необхідних параметрів. Однак при створенні файлової системи XFS наприкінці я отримав

# mkfs.xfs /dev/vgdata/lvscratch 
meta-data=/dev/vgdata/lvscratch  isize=256    agcount=40, agsize=268435455 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10737418200, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Це виглядає так, що стриптиз не використовувався. Через різні терміни, які я знаходив на різних сайтах (розмір смуги, розмір смуги, шматок смуги, ...), я хотів би запитати, чи правильно я встановив параметри вручну.

RAID 6 був налаштований розміром смуги 256 КБ:

# ./storcli64 /c0/v1 show all | grep Strip
Strip Size = 256 KB

Таким чином, розмір смуги становить 8 * 256 Кб = 2048 КБ = 2 МБ. Це правильно? Відповідно до цього (і якщо я правильно це розумію), pvcreateаргумент повинен використовувати розмір смужки (або фрагмента) як аргумент для dataalignment:

# pvcreate --dataalignment 256K /dev/sdb
  Physical volume "/dev/sdb" successfully created

Зауважте, що я використовував весь пристрій RAID без розділів. Тепер a

# vgcreate vgdata /dev/sdb
  Volume group "vgdata" successfully created

з розміром PE за замовчуванням розмір 4 Мб повинен бути добре, оскільки він кратний розміру смуги 2 Мб. Правильно?

Тепер частина vgroup віднесена до логічного обсягу:

# lvcreate -L 40T vgdata -n lvscratch 
  Logical volume "lvscratch" created.

Нарешті, файлова система створюється, але тепер з правильними аргументами (розмір смужки 2 Мб, ширина смуги 8):

# mkfs.xfs -d su=2048k,sw=8 /dev/vgdata/lvscratch 
meta-data=/dev/vgdata/lvscratch  isize=256    agcount=41, agsize=268434944 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10737418240, imaxpct=5
         =                       sunit=512    swidth=4096 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Чи правильний такий підхід? Чи варто пам’ятати про розширення логічного обсягу або групи томів? Я припускаю, що якщо група гучності буде розширена за допомогою іншої системи RAID6, розмір смуги повинен бути рівний нинішньому RAID6.

EDIT : Моя плутанина, здається, в основному заснована на різному використанні термінів, пов'язаних із смугою. Виробник мого RAID-контролера, LSI або Avago, визначає умови таким чином :

Ширина смуги

Ширина смуги - це кількість приводів, що беруть участь у групі приводів, де реалізована смуга. Наприклад, група приводів на чотири диски з смугою диска має ширину смуги чотири.

Розмір смуги

Розмір смуги - це довжина переплетених сегментів даних, які контролер RAID записує на декілька приводів, не включаючи диски парності. Наприклад, розглянемо смужку, яка містить 64 КБ дискового простору і має 16 КБ даних, що зберігаються на кожному диску в смужці. У цьому випадку розмір смужки становить 64 КБ, а розмір смужки - 16 КБ.

Розмір смужки

Розмір смуги - це частина смуги, яка знаходиться на одному приводі.

ВікіпедіяIBM ), схоже, використовують інші визначення:

Сегменти послідовних даних, записаних або прочитаних з диска до продовження операції на наступному диску, зазвичай називаються блоками, кроками або смуговими одиницями, тоді як їх логічні групи, що утворюють одиночні смугасті операції, називаються смугами або смугами. Обсяг даних в одному відрізку (смугова одиниця), часто позначається в байтах, по-різному називається розміром шматка, розміром кроку, розміром смуги, глибиною смуги або довжиною смуги. Кількість дисків даних у масиві іноді називають шириною смуги, але вона також може стосуватися кількості даних у смузі.

Обсяг даних за один крок, помножений на кількість дисків даних у масиві (тобто глибина смуги, кратна ширині смуги, яка за геометричною аналогією дала б площу), іноді називається розміром смуги або шириною смуги. Широка смугаста виникає, коли шматки даних поширюються по декількох масивах, можливо, на всіх дисках системи. Вузька смугаста трапляється, коли шматки даних розподіляються по накопичувачам в одному масиві.

Навіть у Вікіпедії текст вище розміру смуги використовується з двома різними значеннями. Однак я припускаю, що при створенні файлової системи xfs розмір одного фрагмента, що зберігається на одному диску, повинен бути заданий як аргумент su. Це, воно повинно бути mkfs.xfs -d su=256k,sw=8в команді вище. Правильно?

Відповіді:


12

Замість "розміру смуги" та "розміру смуги", сторінки сторінок XFS використовують терміни "смуга" та "ширина смуги" відповідно.

Це дає можливість розшифрувати інакше заплутаний текст на mkfs.xfs(8)довільній сторінці:

               sunit=value
                      This is used to specify the stripe unit for  a  RAID
                      device  or  a  logical  volume.  The value has to be
                      specified in 512-byte block units. Use the su subop‐
                      tion  to specify the stripe unit size in bytes. This
                      suboption ensures  that  data  allocations  will  be
                      stripe  unit aligned when the current end of file is
                      being extended and the  file  size  is  larger  than
                      512KiB.  Also inode allocations and the internal log
                      will be stripe unit aligned.

               su=value
                      This is an alternative to using sunit.  The su  sub‐
                      option is used to specify the stripe unit for a RAID
                      device or a striped logical volume. The value has to
                      be  specified  in  bytes,  (usually using the m or g
                      suffixes). This value must  be  a  multiple  of  the
                      filesystem block size.

Отже, маючи ваш масив, який повідомляє розмір смуги 256KiB, ви вказали б su=256Kабо sunit=512(тому що 512 512-байтних блоків дорівнює 256KiB).

               swidth=value
                      This  is used to specify the stripe width for a RAID
                      device or a striped logical volume. The value has to
                      be  specified  in  512-byte  block units. Use the sw
                      suboption to specify the stripe width size in bytes.
                      This  suboption  is  required  if  -d sunit has been
                      specified and it has to be  a  multiple  of  the  -d
                      sunit suboption.

               sw=value
                      suboption is an alternative to using swidth.  The sw
                      suboption is used to specify the stripe width for  a
                      RAID  device or striped logical volume. The value is
                      expressed as a multiplier of the stripe  unit,  usu‐
                      ally the same as the number of stripe members in the
                      logical volume configuration, or  data  disks  in  a
                      RAID device.

                      When  a  filesystem  is  created on a logical volume
                      device, mkfs.xfs will automatically query the  logi‐
                      cal volume for appropriate sunit and swidth values.

За допомогою 10 шпинделів (8 даних, 2 паритет) ви б вказали або sw=8(шпинделі даних), або swidth=2M(розмір смуги, помножений на шпинделі даних).

Зауважте, що xfs_info і mkfs.xfsінтерпретуйте sunitта swidthяк зазначено в одиницях секторів 512B; але, на жаль, це не одиниця, про яку вони повідомляють. xfs_infoі mkfs.xfsповідомте про них у кратних розмірах вашого основного блоку ( bsize), а не в секторах 512B.

TL; DR:

Найпростіший спосіб вказати їх, як правило, за розміром смуги та кількістю шпинделя, таким чином, su=розмір смуги та sw=кількість шпинделя.


Дякую за роз’яснення! Різне використання терміна розмір смуги (для шматка на одному диску або для всіх дисків даних разом) досить заплутано ... Чи можете ви також детальніше розглянути питання про використання розміру смуги смуги як аргумент для pvcreate's --dataalignment?
sebschub

1
Вирівнювання даних має бути вашою повною шириною смуги, в цьому випадку 2М, а ваш фізичний розмір розміру, яким ви користуєтесь, vgcreateповинен бути або однаковим, або кратним.
Майкл Хемптон

1

Логічний том не був смугастим (-i 8 -I 256k), тому ваша файлова система xfs не бачить нічого, крім суміжного одного диска

Старе питання, але врятуйте інших пошукових запитів від тієї ж помилки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.