Назад | Перейти на главную страницу

Неравномерное использование дисков в логическом томе в формате xfs

У нас есть резервный сервер с 66 ТБ свободного места, настроенный так:

12 массивов RAID10 по 6 ТБ -> 12 PV -> 1 VG -> 1 LV -> xfs

Эта файловая система используется исключительно для резервного копирования (через BackupPC). Он получает довольно много операций ввода-вывода, но определенно не настолько, чтобы у оборудования возникли проблемы с этим. Однако мы сталкиваемся с множеством неудачных операций резервного копирования, и недавно я заметил, что даже запись одного 10-строчного файла при монтировании занимает> 20 секунд. Запуск iostat показывает, почему:

[root@lolno BackupPC]# iostat 
Linux 2.6.18-194.17.1.el5 (lolno)      06/27/2012

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          19.93    0.00    9.53   31.95    0.00   38.59

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               5.34       115.29        43.07  874600222  326773590
sda1              0.00         0.00         0.00       3586        126
sda2              5.34       115.29        43.07  874594516  326773464
sdb             207.33      3544.02      1594.70 26886233184 12097955904
sdc              11.39       844.42      1033.16 6406058328 7837945704
sdd              11.20       622.92       481.77 4725691832 3654875728
sde              15.84      1812.99      1661.13 13754015304 12601927592
sdf              14.86      1483.24       888.80 11252361120 6742733600
sdg              11.67      1020.94       746.05 7745220408 5659828008
sdh              22.60      1127.12      1424.24 8550776952 10804834600
sdi              12.66      1176.71      1043.97 8926929272 7919898000
sdj              13.50      1140.80       912.27 8654489384 6920787296
sdk              13.14      1314.36      1041.48 9971220872 7901060992
sdl              11.16       674.53       366.49 5117257008 2780306920
sdm              10.82       829.36       604.99 6291851320 4589685592
dm-0              2.82        24.81         9.80  188208594   74373432
dm-1              0.00         0.00         0.00        680          0
dm-2              2.52        50.08         5.81  379928338   44067760
dm-3              8.48        40.40        27.46  306454472  208332272
dm-4            364.33     15591.41     11799.05 118282051176 89511839936

Как вы можете видеть, вместо того, чтобы ввод-вывод равномерно распределялся между дисками / PV, подавляющее большинство его было сосредоточено на одном диске. Что могло бы вызвать это?

Еще немного информации о системе:

Он работает под управлением CentOS 5.5 с ядром 2.6.18-194.17.1.el5

[root@lolno BackupPC]# xfs_info /data 
meta-data=/dev/mapper/backup_vg1-BackupLV isize=256    agcount=66, agsize=268435455 blks 
         =                       sectsz=4096  attr=0 
data     =                       bsize=4096   blocks=17581608960, imaxpct=25 
         =                       sunit=0      swidth=0 blks, unwritten=1 
naming   =version 2              bsize=4096   
log      =internal               bsize=4096   blocks=32768, version=2 
         =                       sectsz=4096  sunit=1 blks, lazy-count=0 
realtime =none                   extsz=4096   blocks=0, rtextents=0 


[root@lolno BackupPC]# lvdisplay -v /dev/backup_vg1/BackupLV
        Using logical volume(s) on command line
    --- Logical volume ---
    LV Name                /dev/backup_vg1/BackupLV
    VG Name                backup_vg1
    LV UUID                L8i09U-lVxh-1ETM-mNRQ-j3es-uCSI-M1xz45
    LV Write Access        read/write
    LV Status              available
    # open                 1
    LV Size                65.50 TB
    Current LE             17169540
    Segments               12
    Allocation             inherit
    Read ahead sectors     auto
    - currently set to     256
    Block device           253:4

Моя первая мысль заключалась в том, что это как-то связано с отсутствием чередования в xfs, но согласно http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/xfsmain.html#xfscreating

«При создании файловых систем на томах lvm или md mkfs.xfs выбирает оптимальную геометрию».

Так это просто здесь не происходит или происходит что-то еще?

Из agcount=66 вы можете видеть, что у вас есть 66 групп распределения (т.е. 66 потенциальных потоков ввода-вывода), но только 12 физических блочных устройств.

XFS будет пытаться чтобы поместить каждый новый каталог в другой AG, поэтому, если вы выполняете много операций ввода-вывода в одном каталоге, вы можете выполнять однопоточный ввод-вывод для одного AG, который хранится на одном блочном устройстве.

Также возможно, что даже если вы выполняете ввод-вывод для разных групп AG, несколько из этих 66 AG находятся на одном блочном устройстве. 66/12 = 5.5, поэтому у вас может быть до 5 потоков ввода-вывода, записывающих данные для 5 AG на одно базовое блочное устройство.

Из sunit=0 swidth=0 вы можете видеть, что файловая система вообще не знает о базовом массиве RAID.

Я думаю, ваша файловая система сделана неправильно. mkfs.xfs не так уж и умно.

Прочтите документацию XFS, узнайте, как структурирована файловая система и как ваши существующие данные могут в конечном итоге распределиться по этим структурам. Это удивительно простая для понимания файловая система.

У вас здесь хорошее положение, потому что у вас действительно есть данные, на которые нужно смотреть, а вы не работаете с какой-то воображаемой спецификацией от разработчиков приложения, которая со временем будет меняться.

Измените файловую систему, чтобы она лучше соответствовала вашим данным, блочным устройствам и структуре RAID. В частности «Как рассчитать правильные значения sunit, swidth для оптимальной производительности» Вопрос в FAQ будет вам полезен, но это не единственное, на что стоит обратить внимание: