Skip to content


Программный RAID в Linux

Есть программный RAID-массив уровня 1. Однажды сервер прислал письмо, что с RAID-ом проблемы:

Date: Mon, 14 Jun 2010 11:18:44 +0300
From: mdadm monitoring <root@some.server.org>
To: root@some.server.org
Subject: DegradedArray event on /dev/md1:some.server.org

This is an automatically generated mail message from mdadm running on some.server.org
A DegradedArray event had been detected on md device /dev/md1.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid1] [raid6] [raid5] [raid4] [raid0]
md1 : active raid1 sdb1[0]
156288256 blocks [2/1] [U_]
md0 : active raid1 sdc3[1] sda3[0]
4192896 blocks [2/2] [UU]
unused devices: <none>

Здесь видно, что у массива md1 отвалился один из двух компонентов (знак подчеркивания вместо буквы U в /proc/mdstat). Через fdisk -l вычисляем имя второго компонента массива и видим, что на устройстве /dev/sdd вообще отсутствуют разделы:

  1. [root@~]# fdisk -l /dev/sdd
  2. Диск /dev/sdd: 160.0 ГБ, 160041885696 байт
  3. 255 heads, 63 sectors/track, 19457 cylinders
  4. Единицы = цилиндры по 16065 * 512 = 8225280 байт
  5. На диске /dev/sdd отсутствует верная таблица разделов

Для сравнения смотрим на второй диск массива:

  1. [root@~]# fdisk -l /dev/sdb
  2. Диск /dev/sdb: 160.0 ГБ, 160041885696 байт
  3. 255 heads, 63 sectors/track, 19457 cylinders
  4. Единицы = цилиндры по 16065 * 512 = 8225280 байт
  5. Устр-во Загр   Начало    Конец      Блоки  Id  Система
  6. /dev/sdb1  *        1    19457  156288321  fd  Автоопределение Linux raid

Следовательно, нужно содать на sdd раздел типа «fd» (linux raid autodetect) и добавить этот раздел в массив.

  1. [root@~]# fdisk /dev/sdd
  2. Команда (m для справки): n
  3. Действие команды
  4.    e   расширенный
  5.    p   основной раздел (1-4)
  6. p
  7. Номер раздела (1-4): 1
  8. Первый цилиндр (1-19457, по умолчанию 1):
  9. Используется значение по умолчанию 1
  10. Последний цилиндр или +size или +sizeM или +sizeK (по умолчанию 19457):
  11. Используется значение по умолчанию 19457
  12. Команда (m для справки): t
  13. Выбранный раздел 1
  14. Шестнадцатеричный код (введите L для получения списка кодов): fd
  15. Системный тип раздела 1 изменен на fd (Автоопределение Linux raid)
  16. Команда (m для справки): w
  17. Таблица разделов была изменена!
  18. Вызывается ioctl() для перечитывания таблицы разделов.
  19. Синхронизируются диски.
  20.  
  21. [root@ ~]# fdisk -l /dev/sdd
  22. Диск /dev/sdd: 160.0 ГБ, 160041885696 байт
  23. 255 heads, 63 sectors/track, 19457 cylinders
  24. Единицы = цилиндры по 16065 * 512 = 8225280 байт
  25. Устр-во Загр   Начало    Конец      Блоки  Id  Система
  26. /dev/sdd1           1    19457  156288321  fd  Автоопределение Linux raid
  27.  
  28. [root@~]# mdadm --manage /dev/md1 --add /dev/sdd1
  29. mdadm: re-added /dev/sdd1

Далее смотрим в /proc/mdstat и видим, что массив начал синхронизацию:

Personalities : [raid1] [raid6] [raid5] [raid4] [raid0]
md1 : active raid1 sdd1[2] sdb1[0]
  1562882 blocks [2/1] [U_]
  [===========>...] recovery = 76% (1194268/1562882) finish=4.3min speed=42M/sec

А если один из компонентов массива переходит в статус «Failed», то обычно помогает его ручное удаление из массива, а затем – добавление заново. Например:

  1. [root@~]# grep md1 /proc/mdstat -A 1
  2. md1 : active raid1 sdb1[1] sdd1[2](F)
  3.       14659200 blocks [2/1] [_U]
  4.  
  5. [root@~]# mdadm --manage /dev/md1 --remove /dev/sdd1
  6. [root@~]# mdadm --manage /dev/md1 --add /dev/sdd1

Размещено в категории  *nix. Теги: , .

Ограничение количества получателей в exim

Поскольку спамеры заинтересованы в отправке почты максимальному количеству получателей, они часто в одной SMTP-сессии передают множество команд «RCPT TO». Так как нормальный юзер такое будет делать очень редко (если вообще будет), то очень полезно ограничить количество получателей для одного письма для минимизации распространения спама через почтовый сервер. Для этого в exim предусмотерна опция recipients_max, числовое значение которой и устанавливает максимально допустимое число получателей одного письма. Если exim работает чисто как relay и не принимает почту для локальных доменов, то просто установки в exim.conf

  1. recipients_max = 10

должно быть достаточно (число 10 взято для примера). В противном же случае, когда exim помимо relay-инга еще и является primary mx для некоторых доменов, использование recipients_max может вызвать проблемы, поскольку количество получателей для входящей почты также будет лимитироваться. Представим ситуацию, когда на сервере пару тысяч пользователей (обычное дело для провайдеров и freemail-сервисов) и 12 из них подписалось на одну и ту же полезную рассылку. При приведённой выше конфигурации почтовый сервер рассылки сможет доставить письмо только 10-ти из этих пользователей, а оставшиеся 2 пойдут пинать админа со словами «почему у меня не работает почта». И вот чтобы всё было по фен-шую, нужно лимитировать количество получателей только для исходящих писем (когда сервер используется как relay). Для этого в блок списков контроля доступа, который соответствует acl_smtp_rcpt, нужно добавить следующее (так, чтобы новые правила были примерно 4-ым и 5-ым сверху если считать для exim.conf, который идет по-умолчанию):

  1. defer condition = RELAY_RCPT_LIMIT_ENABLE
  2.   message = Too many recipients
  3.   condition = ${if >={$recipients_count}{RELAY_RCPT_LIMIT_NUM} {yes}{no}}
  4.   hosts = +relay_from_hosts
  5.   !authenticated = *
  6.  
  7. defer condition = RELAY_RCPT_LIMIT_ENABLE
  8.   message = Too many recipients
  9.   condition = ${if >={$recipients_count}{RELAY_RCPT_LIMIT_NUM} {yes}{no}}
  10.   !hosts = +relay_from_hosts
  11.   authenticated = *

Ну и перед блоком «begin acl» определить две опции:

  1. # Флаг, включающий или выключающий ограничения числа получателей
  2. RELAY_RCPT_LIMIT_ENABLE = yes
  3. # Максимально допустимое число получателей в одном письме
  4. RELAY_RCPT_LIMIT_NUM = 10

Первое условие будет срабатывать для хостов, которым разрешёно использовать почтовый сервер как relay, но которые не прошли аутентификацию. А второе – для хостов, которые прошли аутентификацию, но которым запрещен relay-инг без неё. А вот хосты, которые не могут использовать сервер как relay и которые НЕ прошли аутентификацию проверять не надо, поскольку они доставляют входящую почту на домены, для которых наш exim является primary MX. Четвёртый вариант (хосты, прошедшие аутентификацию и которым разрешён relay) также ограничивать смысла нет, так как обычно эти два множества не пересекаются.

Размещено в категории  *nix, Howto.

МЕТА - Украина. Рейтинг сайтов