Zimbra Read-only file system RAID 1 on OVH
Если вдруг увидели при работе Zimbra "Read-only file system", скорее всего Зимбра не причем....
Это означает, что Ваша файловая система перешла в режим только чтения. Такое случается при проблемах с жесткими дисками, колизиях и сделанно, что б не допустить еще больших проблем. В моем случае, виновником был один из дисков в RAID 1. И так, что же требуется сделать, что б восстановить работоспособность системы.
Данные шаги нужно делать только на свой страх и риск и если есть возможность загрузиться с RECOVERY.
Первое, что нужно проверить, это статус RAID. Делается это коммандой:
cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty] md1 : active raid1 sdb1[1] sda1[0] 976234432 blocks [2/2] [UU] bitmap: 7/8 pages [28KB], 65536KB chunk
В идеале у Вас должно быть "[UU]", что означает, что оба диска в статусе UP и работают, но, скорее всего вы увидите "[_U]" или "[U_]", что значит, что работает только один диск из масива, что будет выглядеть так:
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10] md0 : active raid1 sda1[0] 24418688 blocks [2/1] [U_]
Далее смотрим какие диски есть, в системе командой:
fdisk -l
Нам выдаст список текущих дисков в системе, если у Вас всего два диска, и в RAID показано, что активный sda1 или sdb1, то мы понимаем, что неисправны наверняка sdb1 или sda1 соответсвенно.
Так, мы поняли, что что-то не так с RAID, не будем мучать систему дальше и перезагружаемся в recovery.
Важно!!! В этот момент перезагружаться можно только если у Вас есть возможность подключится по RECOVERY, в противном случае Вы не сможете подключится к серверу по ssh, так как он не будет работать после перезагрузки.
У OVH переключение в режим RECOVERY делается очень просто:
Заходите в админку, выбираете сервер с которым проблемы, дальше жмете на три точки возле надписи hd(Boot from hard drive)
Далее жмете EDIT, выбираете пункт BOOT IN RESCUE MODE и жмете NEXT.
Далее, если Вы можете перзагрузить свой сервер командой reboot - перезагружаете сами, если сервер не может выключиться самостоятельно из-за ошибок - делаем hard reset, для этого в той-же админ-панели напротив Status: Normal, жмем на три точки и выбираем пункт Restart:
Ждем письма на почту с паролем и логином от ssh. Когда он приходит - заходим на сервер.
В RECOVERY:
Еще раз проверяем статус RAID, если по прежднему один диск не поднялся убираем неисправный диск из массива. Если у Вас активный sdb1, соответственно неисправен sda1.
Для того, что б его убрать из масива - нужно сначала поставить ему статус faulty:
mdadm --manage /dev/md0 --fail /dev/sda1
Далее удаляем его из масива окончательно:
mdadm --manage /dev/md0 --remove /dev/sda1
После того как удалили диск из масива, нам нужно восстановить систему. Делаем это командой:
fsck /dev/md0
Где md0 - названия масива, на все вопросы отвечаем согласием, это может занят довольно длительное время.
Теперь нам нужно достать всю смарт информацию по неисправному диску командой:
sudo smartctl --all /dev/sda
И просто копируем весь вывод команды и в админке OVH создаем Ticket с просьбой о замене HDD и вставляем в информацию вывод этой команды.
Далее в админке меняем BOOT назад на Boot from hard drive.
И в rescue режиме вводим:
reboot
Теперь сервер должен загрузится и все заработать, но не забывайте, у Вас сейчас вся система только на одном диске.
После того, как Вы получите сообщение от поддержки, что жесткий диск заменен Вы можете приступить к ресинхронизации дисков и воссозданию RAID 1.
Сначала нужно скопировать разделы с диска sdb на sda командой:
sfdisk -d /dev/sdb | sfdisk /dev/sda
Теперь добавляем диск в RAID:
mdadm --manage /dev/md0 --add /dev/sda1
Теперь проверяем, что статус масива изменится на resync и появится полоска с процентами и временем требуемом для полной синхронизации.
cat /proc/mdstat
Если у Вас синхронизация идет слишком медленно и займет пару дней - Вы можете ее ускорить.
Дело в том, что стандартно скорость синхронизации стоит невысокая для того, что б не нагружать единственный жесткий диск, что б он не вышел из строя, но ,на свой страх и риск, Вы можете ускорить синхронизацию, для этого требуется ввести следующие команды:
sudo echo 100000 > /proc/sys/dev/raid/speed_limit_min sudo echo 400000 > /proc/sys/dev/raid/speed_limit_max
Теперь еще раз проверяем время синхронизации, оно должно уменьшится:
cat /proc/mdstat
По окончанию синхронизации статус масив должен автоматически снова стать active.
По завершению синхронизаций рекомендую сделать исправление всех разрешений, но оно может затянуться на долго и занять несколько часов, поэтому лучше сделать в фоне командой от имени root:
/opt/zimbra/libexec/zmfixperms -extended &
На этом всё!