Тюнинг файл-сервера (готовим самый быстрый файл-сервер)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
ArhAngel
Сообщения: 33
ОС: Gentoo Linux

Тюнинг файл-сервера

Сообщение ArhAngel »

Здравствуйте, дорогие форумчане!
У меня возникла следующая проблема, связанная с быстродействием файл-сервера.
Есть сервер:
Железо:
мать - Intel S3210SH
RAID - 3ware 9550SX-8LP
проц - Intel® Core™2 Duo CPU E7200 @ 2.53GHz
Винты - 8 шт. Seagate (которые RAID-edition) собран RAID-5
Софт
Linux 2.6.29-gentoo-r1
RAID bus controller: 3ware Inc 9550SX SATA-II RAID PCI-X (Kernel driver in use: 3w-9xxx)
RAID-5 на 8-ми винчестерах
Файловая система XFS

Код: Выделить всё

share # xfs_info /dev/sda1
meta-data=/dev/sda1              isize=256    agcount=7, agsize=268435392 blks
               =                       sectsz=512   attr=2
data         =                       bsize=4096   blocks=1708965879, imaxpct=5
                =                       sunit=64     swidth=640 blks
naming     =version 2              bsize=4096   ascii-ci=0
log           =internal               bsize=4096   blocks=32768, version=2
               =                       sectsz=512   sunit=64 blks, lazy-count=0
realtime    =none                   extsz=4096   blocks=0, rtextents=0

MOUNT: /dev/sda1 on /mnt/raid type xfs (rw,noatime,logbufs=8)


Вот, собственно, суть:
Когда к диску начинают часто обращаться (при копировании с ФТП, при раздаче торрентов, при копировании через самбы) система ничанает тормозить, причём очень критично.
Приведу пример: (использую dstat для диагностики)
начинаем копировать какой-нибудь большой файлик

Код: Выделить всё

cp ubuntu-9.10-dvd-i386.iso /dev/null

получаем

Код: Выделить всё

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- --epoch---
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  epoch
  1   4  50  45   1   0| 148M    0 |1603B 1288B|   0     0 | 875  1728 |1257131281
  0   2  52  47   0   0| 137M    0 |1930B 2334B|   0     0 | 840  1626 |1257131282
  1   3  48  49   0   0| 144M    0 |1036B  964B|   0     0 | 842  1635 |1257131283
  1   3  51  47   0   0| 140M    0 |1181B  910B|   0     0 | 831  1624 |1257131284
  1   3  50  47   0   0| 137M    0 |1082B 1234B|   0     0 | 826  1582 |1257131285
  1   2  51  47   0   0| 136M    0 | 934B  856B|   0     0 | 794  1476 |1257131286
  1   2  49  50   0   0| 127M    0 | 871B  640B|   0     0 | 749  1363 |1257131287
  1   3  47  50   0   0| 140M    0 | 438B  694B|   0     0 | 802  1489 |1257131288
  1   1  50  49   0   0| 148M    0 | 992B 1072B|   0     0 | 850  1604 |1257131289
  1   2  51  47   0   0| 146M    0 | 910B  831B|   0     0 | 836  1582 |1257131290
  1   5  48  47   0   0| 322M    0 |1005B  910B|   0     0 |1595  3444 |1257131291
  1  13  50  36   0   1| 458M    0 |1701B 1450B|   0     0 |2203  4861 |1257131292
  1   9  53  38   0   0| 587M   24k|1671B 1396B|   0     0 |2753  6107 |1257131293
  1  13  50  37   0   0| 576M    0 |1971B 1628B|   0     0 |2697  5988 |1257131294
  1   7  66  27   0   0| 418M    0 | 999B 1148B|   0     0 |2015  4304 |1257131295
  1   0 100   0   0   0|   0     0 |1767B 1222B|   0     0 | 236    15 |1257131296
  1   0 100   0   0   0|   0     0 |1030B 1126B|   0     0 | 232    11 |1257131297^C

Обратим внимание, на скорость чтения с диска и WAIT-ы
Запускаем сразу несколько копирований

Код: Выделить всё

cp ubuntu-9.10-dvd-i386.iso /dev/null & cp ubuntu-9.10-dvd-amd64.iso /dev/null & cp edubuntu-9.10-dvd-i386.iso /dev/null & cp edubuntu-9.10-dvd-amd64.iso /dev/null

Видим:

Код: Выделить всё

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- --epoch---
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  epoch
  0   3  15  83   0   0| 102M    0 |1496B 1225B|   0     0 | 691  1540 |1257131582
  0   2   8  91   0   0| 109M    0 |1956B 2334B|   0     0 | 740  1668 |1257131583
  0   2   5  94   0   0| 115M    0 |1183B 1018B|   0     0 | 752  1793 |1257131584
  0   3  14  83   0   0| 135M    0 |1547B 1180B|   0     0 | 827  2059 |1257131585
  0   3   2  96   0   0|  88M    0 |1480B 1396B|   0     0 | 644  1350 |1257131586
  0   4   8  89   0   0| 106M    0 |1158B 1234B|   0     0 | 714  1667 |1257131587
  0   3   3  95   0   0| 113M    0 | 821B  694B|   0     0 | 732  1775 |1257131588
  0   1   3  96   0   0|  91M    0 | 746B  910B|   0     0 | 637  1408 |1257131589
  0   2   7  91   0   0| 101M    0 |1318B 1450B|   0     0 | 704  1564 |1257131590
  0   1   1  99   0   0|  99M    0 |1596B 1425B|   0     0 | 684  1489 |1257131591
  0   1   4  95   0   0|  89M    0 | 880B 1072B|   0     0 | 625  1362 |1257131592
  0   2   3  95   0   0| 135M    0 | 708B  856B|   0     0 | 813  2077 |1257131593
  0   3   4  94   0   0| 111M    0 |1436B 1018B|   0     0 | 730  1734 |1257131594
  0   2   2  97   0   0|  96M    0 |1703B 1504B|   0     0 | 674  1522 |1257131595
  0   2   1  97   0   0| 106M    0 | 557B  586B|   0     0 | 695  1654 |1257131596
  0   2   4  95   0   0|  92M    0 | 937B  802B|   0     0 | 632  1401 |1257131597
  0   3   5  92   0   0| 131M    0 | 942B 1126B|   0     0 | 812  2010 |1257131598

Скорость уже начинает хлябать, но полной уже не выдаёт (под 300-500 МБайт\сек)
WAIT-ы повысились почти до 100%.
Теперь проводим следующий тест в реальных условиях:
запускаем на копировании наш 1 большой файла и начинаем копировать ещё впридачу мелкие (например зеркало Убунты и Сусе), открываем доступ по фтп и запускаем 4 торрента на закачку:

Код: Выделить всё

cp ubuntu-9.10-dvd-i386.iso /dev/null & while read -r xx; do cp $xx /dev/null; done < /files_to_null.list & while read -r xx; do cp $xx /dev/null; done < /files_to_null1.list &

Код: Выделить всё

ftpcount
Service class                      -  35 users

Видим, что наша share выдаёт уже совсем не те результаты:

Код: Выделить всё

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- --epoch---
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  epoch
 17   3   8  73   0   0|  47M 3204k| 414k 1578k|   0     0 |1946  1476 |1257134268
  4   2  19  76   0   0|  30M  100k| 368k 1258k|   0     0 |2090  1449 |1257134269
  3   3  21  75   0   0|  40M    0 | 449k 1239k|   0     0 |2060  1406 |1257134270
  5   2   7  87   0   0|  78M    0 | 457k 1162k|   0     0 |2155  1897 |1257134271
  4   1  10  85   0   0|  62M    0 | 422k 1282k|   0     0 |2231  1666 |1257134272
  4   1  15  81   0   0|  43M 1644k| 447k 1370k|   0     0 |2313  1573 |1257134273
  4   2   9  87   0   0|  68M 1048k| 549k 1435k|   0     0 |2532  1925 |1257134274
  5   2   9  85   0   0|  63M  124k| 420k 1193k|   0     0 |2159  1768 |1257134275
  5   4  15  77   0   0|  67M    0 | 523k 1146k|   0     0 |2233  1832 |1257134276
  5   2  19  75   0   1|  64M    0 | 392k 1233k|   0     0 |2216  1754 |1257134277
  9   0   6  86   0   0|  18M 3161k| 416k 1326k|   0     0 |2098  1136 |1257134278
 18   2   1  81   0   0|2704k 9186k| 518k 1758k|   0     0 |2213  1184 |1257134279
  8   1   1  90   1   0|  12M 5976k| 444k 1334k|   0     0 |2185  1015 |1257134280
  4   1   5  91   0   0|  35M  181k| 461k 1349k|   0     0 |2237  1496 |1257134281
  6   2  15  77   0   0|  44M    0 | 425k 1313k|   0     0 |2254  1582 |1257134282
  3   2  23  73   0   0|  37M 1922k| 349k 1252k|   0     0 |2019  1375 |1257134283
  5   2   8  86   0   0|  35M 4840k| 478k 1341k|   0     0 |2330  1565 |1257134284

Опять же высокие WAIT-ы!! и маленькая скорость.
А если количество пользователей ФТП превышает 70 и на раздаче стоит более 10-15 торрентов (на активной раздаче) + ко всему, необходимо отдавать ещё и по САМБЕ общую шару и с ней сетевая и дисковая активность возрастает. ТОгда машина начиает просто тупить....скачивание фильма по 100Мбитной сети едёт уже со скоростью 2-3 Мбита/сек.
Подскажите куда копать?
Либо это файловая система? Либо дисковая подсистема? Либо неправильно настроенное ядро? Либо ещё что-то?
Спрашивайте, выложи всё необходимое.
Спасибо сказали:
ALexhha
Сообщения: 109

Re: Тюнинг файл-сервера

Сообщение ALexhha »

Ну для такой нагрузки SATA не лучший выбор.

Батарейка есть? Кеш записи включен? Почему был выбран raid5? Чем обусловлен выбор XFS?
Спасибо сказали:
Аватара пользователя
ArhAngel
Сообщения: 33
ОС: Gentoo Linux

Re: Тюнинг файл-сервера

Сообщение ArhAngel »

ALexhha писал(а):
02.11.2009 14:32
Ну для такой нагрузки SATA не лучший выбор.

Батарейка есть? Кеш записи включен? Почему был выбран raid5? Чем обусловлен выбор XFS?

Батарейка есть? - нет...(и причём здесь батарейка)
Кеш записи включен? - о каком кэше записи идёт речь? (и причём тут запись)
Почему был выбран raid5? - портов на контроллере всего 8, а объёма надо больше (приходится рисковать)
Чем обусловлен выбор XFS? - файл-сервер служит для хранения фильмов, музыки, образов ОС и прочей шушары.
Спасибо сказали:
ALexhha
Сообщения: 109

Re: Тюнинг файл-сервера

Сообщение ALexhha »

Батарейка есть? - нет...(и причём здесь батарейка)

мы обсуждаем производительность дисковой подсистемы или у вас контролер для красоты стоит?

Кеш записи включен? - о каком кэше записи идёт речь?

кеш самого контроллера, хотя и так понятно, что без батарейки он отключен.

(и причём тут запись)

а вы что ничего не пишете, только чтение?

портов на контроллере всего 8, а объёма надо больше (приходится рисковать)

ну теперь и отгребаем :)

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

у XFS очень страдает надежность. И насколько помню, он хорошо работает только с кучей мелких файлов.

Какой размер stripe?
Спасибо сказали:
Аватара пользователя
ArhAngel
Сообщения: 33
ОС: Gentoo Linux

Re: Тюнинг файл-сервера

Сообщение ArhAngel »

ALexhha писал(а):
02.11.2009 14:50
1) а вы что ничего не пишете, только чтение?
2) у XFS очень страдает надежность. И насколько помню, он хорошо работает только с кучей мелких файлов.
3) Какой размер stripe?

1) На запись я не "ругаюсь", в моих выкладках статистики меня интересует только скорость чтения. Запись меня пока не волнует.
2) http://www.opennet.ru/docs/RUS/xfs_arch/
3) 64К
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Тюнинг файл-сервера

Сообщение rm_ »

у XFS очень страдает надежность. И насколько помню, он хорошо работает только с кучей мелких файлов.

С рейзерфс перепутали. Это у неё страдает надёжность и это она заточена на мелкие файлы.
Про надёжность XFS можно холиварить, но абсолютно точно можно сказать - XFS оптимизирована вовсё не под мелкие, а наоборот, под файлы огромных размеров.
Спасибо сказали:
ALexhha
Сообщения: 109

Re: Тюнинг файл-сервера

Сообщение ALexhha »

С рейзерфс перепутали. Это у неё страдает надёжность и это она заточена на мелкие файлы.
Про надёжность XFS можно холиварить, но абсолютно точно можно сказать - XFS оптимизирована вовсё не под мелкие, а наоборот, под файлы огромных размеров.

точно, то про reiserfs. Понедельник день тяжелый :)
Спасибо сказали:
Аватара пользователя
ArhAngel
Сообщения: 33
ОС: Gentoo Linux

Re: Тюнинг файл-сервера

Сообщение ArhAngel »

Вот ещё одна статистика.

Код: Выделить всё

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  2   1  81  16   0   0| 503k  379k|   0     0 | 256B  643B|2173  1093
 26   2   0  73   0   1|  23M 2000k|1572k 4840k|   0     0 |4824  2263
 19   3   0  75   2   2|  18M 1813k|1307k 5319k|   0     0 |4903  2532
  9   1   0  91   0   0|  18M 2234k|1294k 6995k|   0     0 |5029  1969
  8   2   0  90   1   1|  16M 1697k|1161k 5449k|   0     0 |4492  1959
  7   3   0  91   0   0|  21M 1182k|1430k 9256k|   0     0 |5448  2583
  9   1   0  90   0   0|  22M 1696k|1042k 5272k|   0     0 |4067  2265
  8   1   4  88   0   0|5880k 7792k|1100k 4331k|   0     0 |4466  2311
  2   0   0  98   1   0|   0    11M| 902k 1936k|   0     0 |2820  1097
  3   1   0  97   0   0|3968k 8346k| 662k 2876k|   0     0 |2707   649
  6   1   0  94   0   0|  17M 3609k| 984k 3807k|   0     0 |3877  1534
  9   1   0  90   1   0|  14M 3947k|1249k 4021k|   0     0 |4079  1729
  5   1   0  94   0   1|  18M  674k|1191k 3515k|   0     0 |3568  1330
  3   1   0  96   0   1|   0    11M| 987k 1629k|   0     0 |2613   905
  3   1   0  97   0   0|   0   9.8M| 574k 1208k|   0     0 |1987   698
  2   0   0  98   0   0|  15M 7856k| 559k 3111k|   0     0 |2730   759 ^C

42 юзера качают по ФТП фильмы, 2 качаю по самбе и скачиваются/раздаются 12 торрентов
Как видно система задыхается:
около 200-140Мбит/сек чтение с диска
около 100% WAIT-ов
Где-то сидит пробка?
Остаётся выяснить, где.
Спасибо сказали:
ALexhha
Сообщения: 109

Re: Тюнинг файл-сервера

Сообщение ALexhha »

А что говорит top/iostat/vmstat?
Спасибо сказали:
Аватара пользователя
ArhAngel
Сообщения: 33
ОС: Gentoo Linux

Re: Тюнинг файл-сервера

Сообщение ArhAngel »

ALexhha писал(а):
02.11.2009 20:17
А что говорит top/iostat/vmstat?

ну вообще-то тоже самое
не понимаю, к чему вы клоните? какая разница что показывает top? что там можно увидеть, чего вы не можете посмотреть в моих логах? интересует что-то конкретное?
Спасибо сказали:
Аватара пользователя
ArhAngel
Сообщения: 33
ОС: Gentoo Linux

Re: Тюнинг файл-сервера

Сообщение ArhAngel »

Мне кажется где-то не хватает системных буферов, либо в настройках драйвера файловой системы, либо в настройках дисковой подсистемы. Может кто-нибудь подсказать, где можно прочитать про то, как устроена дисковая система ввода-вывода ядра Linux, его драйвера XFS и SCSI-шины. Где какие параметры sysctl нужно смотреть. Как можно промониторить операции ввода-вывода Linux.
Может найдутся знатоки 3WARE with Linux?
Я почему-то всё больше склоняюсь к мнению, что виновата файловая система, но нужны факты. Всё-таки бэкапить около 6ТБ, перед тем как переезжат на новую фаловую систему, немного сложновато.
Спасибо сказали:
Solaris10
Сообщения: 11
ОС: macOS

Re: Тюнинг файл-сервера

Сообщение Solaris10 »

Тебе не хватает шпинделей, и всего-то. Кроме прочего, RAID5 создает дополнительную нагрузку на винты. Насчет XFS ты сделал правильный выбор - это агрессивная ФС, которая хорошо кеширует контент, но эффективность этой ФС себя оправдает лишь при условиях, что достаточно ОЗУ (1) и пользователи действительно загружают один и тот же контент, то есть, большой процент попадания в кэш ФС (2). Другая ФС даст тебе лишь выигрыш в свободном ОЗУ, скорости в трансфере с дисков при таком количестве юзеров ты не получишь.
Спасибо сказали:
ALexhha
Сообщения: 109

Re: Тюнинг файл-сервера

Сообщение ALexhha »

Я почему-то всё больше склоняюсь к мнению, что виновата файловая система, но нужны факты. Всё-таки бэкапить около 6ТБ, перед тем как переезжат на новую фаловую систему, немного сложновато.

смена ФС не поможет, имхо.

Тут только переходить на SAS и raid10 например. Либо распределять нагрузку на несколько серверов.
Спасибо сказали:
Solaris10
Сообщения: 11
ОС: macOS

Re: Тюнинг файл-сервера

Сообщение Solaris10 »

> Либо распределять нагрузку на несколько серверов.

На другой контроллер, ты хотел сказать. Задыхается дисковая система.
Спасибо сказали:
Moskovitter
Сообщения: 1

Re: Тюнинг файл-сервера

Сообщение Moskovitter »

Есть какие-нибудь идеи по этой проблеме?
У меня собственно такие же тормоза как у ТС-а...
Спасибо сказали: