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

Скорость чтения / записи RAID постепенно снижается

На самом деле это домашний сервер, но я чувствовал, что он достаточно сложен, чтобы не иметь его в SuperUser, и его можно легко применить в профессиональной ситуации.

У меня есть файловый сервер под управлением Debian (Lenny 5.0.4), и у него есть LVM XFS поверх RAID 5 с диском ОС, отдельным от RAID. Он также запускает apache, samba и postgresql. Боковое примечание: прежде чем критики RAID5 распнут меня, я использую RAID5, потому что я получаю больше отдачи от необработанного дискового пространства и все еще имею некоторую отказоустойчивость.

Когда ящик запускается (через выключение или перезагрузку), чтение / запись в его общий ресурс samba максимизирует гигабитное сетевое соединение. Со временем это постепенно ухудшается, и в конечном итоге становится <10 МБ / с; однако при перезагрузке скорость возвращается к максимальному уровню соединения.

Почему это происходит, и есть ли способ «устранить» причину этого, не отключая сервер?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Чтобы ответить на вопрос @ LapTop006, вывод cat / proc / mdstat одинаков после перезагрузки и при медленной работе:

Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[0] sda[5] sdb[4] sdf[3] sdg1[2] sde1[1]
  4883799680 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]

unused devices: <none>

Согласно команде xfs_db frag:

actual 58969, ideal 23904, fragmentation factor 59.46%

РЕДАКТИРОВАТЬ 2: Я использую стандартное ядро ​​Debian. cat / etc / fstab выводит это для моего диска ОС и рейда:

# <file system>       <mount point>   <type>  <options>         <dump>  <pass>
/dev/sda1              /               ext3    errors=remount-ro   0       1
/dev/mapper/oomox-lvm  /raid           xfs     defaults            0       2

Если честно, я не совсем большой гуру Linux, и я не делал рейд или lvm через командную строку (т.е. mkfs_xfs); Я использовал настройку установки Debian RAID на основе пользовательского интерфейса при первой установке ОС и использовал командную строку только тогда, когда мне нужно было добавить диски в массив.

Когда он снова начнет замедляться, я опубликую вывод iostat.

РЕДАКТИРОВАТЬ 3:

В медленном или быстром режиме вывод iostat показывает, что байты прочитаны и записаны одинаково на всех дисках. Я также пробовал установить

socket options = TCP_NODELAY

в конфиге самбы согласно совету @Avery Payne, но он все равно был медленным. Однако, по крайней мере, проблема была сужена, так как только перезапуск самбы устранил проблему. Это довольно странно, поскольку до недавнего времени у меня никогда не было этой проблемы.

ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Я попробовал предложение @David Spillett запустить

time dd if=/dev/sda of=/dev/null

Для каждого диска, когда он медленный, чтобы увидеть, есть ли разница, когда он быстрый, а его нет. Итак, проблема явно в Samba.

Я награждаю @Avery Payne правильным ответом. Хотя в ответе @David Spillett есть отличные методы устранения неполадок, технически @Avery Payne указал мне на наиболее правильное направление решения этой проблемы. Я опубликую, если найду окончательное решение этой проблемы.

Спасибо всем!

Несколько мыслей, которые могут помочь вам исключить некоторые вещи:

Может быть, у вас где-то утечка памяти, из-за которой через некоторое время машина меняет местами как сумасшедшая? Проверьте free -m когда проблема очевидна.

Кроме того, могут ли у вас проблемы с программным обеспечением RAID, которое решает, что ему необходимо выполнить повторную синхронизацию? Проверьте /proc/mdstat когда вы испытываете медлительность, чтобы проверить это (хотя я не ожидал, что это будет решено перезагрузкой - любая такая повторная синхронизация должна перезапуститься после перезапуска).

Вы исключили локальные проблемы ввода-вывода? Насколько быстро массив выполняет локальные процессы, когда проблема очевидна. Если локальные процессы не могут получить доступ к массиву на нормальной скорости, тогда проблема не в Samba (и наоборот, если они могут, когда доступ к сети не может поддерживать противоположное). Если локально диски кажутся медленными, вы можете поискать дополнительные доказательства, убедившись, что сеть не медленная. а также диски выполнив простые тесты с netcat и pv (видеть http://www.interphero.com/?p=116 или ищите "netcat speedtest" для других примеров).

Может быть, проблема в прошивке одного или нескольких ваших дисков? Проверьте, не поступали ли такие обновления от производителя. Кроме того, это может быть просто один диск, который странно играет. Когда возникает проблема со скоростью, попробуйте time dd if=/dev/sda of=/dev/null, повторяя для каждого диска несколько раз и взяв среднее значение. Если один диск выходит много медленнее, чем другие, возможно, у него есть проблема и его необходимо заменить (или обновить прошивку, если у него есть известная проблема).

Вы исключили проблему с сетевой картой (аппаратной или драйвером)? Вы можете попробовать заменить его на другую карту Гбит (с другим набором микросхем), чтобы увидеть, имеет ли это значение.

Если проблема действительно связана с Samba, а не с массивом RAID, сетевой картой или чем-то еще, требуется ли полная перезагрузка для решения проблемы или достаточно просто перезапустить Samba? (Или перезапустить и Samba, и winbindd, если сервер таким образом участвует в домене?)

Примечание к вашему комментарию RAID5:

Основная проблема с RAID5 - это производительность записи, особенно для значительного количества небольших записей. Это может снизить производительность при тяжелой работе с базой данных, но для основной роли файлового сервера (как звучит ваша ситуация), которая тратит большую часть своего времени на выполнение массовых чтений, это по большей части практически не оказывает заметного эффекта. Если вы обнаружите, что производительность записи когда-либо была проблемой, попробуйте новый блестящий драйвер RAID10 в режиме с 3 дисками (производительность чтения аналогична RAID5 с 3 дисками. (или 2-х дисковый RAID0) но производительность записи больше похожа на производительность RAID1 с 2 дисками, сохраняя при этом ту же избыточность, что и любой диск может умереть за раз). Однако драйвер RAID10 может быть классифицирован как «экспериментальный» во всех ядрах, кроме новейших.

Другая проблема с RAID5 - это время, необходимое для восстановления массива при замене одного диска. Я сомневаюсь, что трехдисковый RAID10 лучше в этом отношении.

Для справки: RAID10 в Linux с тремя дисками аналогичен тому, что контроллеры RAID в некоторых серверах IBM называют RAID1E.

Когда ящик запускается (через выключение или перезагрузку), чтение / запись в его общий ресурс samba максимизирует гигабитное сетевое соединение. Со временем это постепенно ухудшается, и в конечном итоге становится <10 МБ / с; однако при перезагрузке скорость возвращается к максимальному уровню соединения.

Проблема, скорее всего, не в ОС или оборудовании, а в вашей конфигурации Samba. Правильно ли установлены параметры TCP в Samba? Есть несколько вариантов, которые могут вызвать ухудшение клиентского доступа либо из-за замедления потоков TCP, либо из-за дополнительных накладных расходов.

Ваш RAID и fstab выглядят нормально.


Продолжение комментария (ов):

В smb.conf у вас должна быть следующая строка в вашем глобальном разделе:

socket options = TCP_NODELAY

Дополнительную информацию можно найти в разделе «Настройка производительности Samba» их часто задаваемых вопросов.

http://samba.org/samba/docs/man/Samba-HOWTO-Collection/speed.html