Многие сталкиваются с проблемой, что после того, как установлен iSCSI и один диск роздан по сети на две и более машин, начинаются проблемы с файловой системой. То вместо владельца файла будут знаки вопроса, то файл не до конца запишется, то еще какая беда....
Проблема в том, что была неверно выбрана файловая система. Нельзя на диск, к которому обращается более одного шедулера (читай более одной операционной системы) ставить обычную файловую систему. Нужна только кластерная. Например GFS2 или OCFS2.
Такая файловая система имеет свой кластер. Вообще у всех в голове сразу появится "мне не нужен кластер, мне просто диск надо раздать по сети в совместное пользование" - все в порядке. Кластер ставится две минуты и не будет большим усложнением системы.
Делается это легко. Сначала устанавливаем пакеты поддержки такой файловой системы и кластер:
Теперь создаем файл настроек кластера (по умолчанию директория кластера пустая). Допустим у нас 3 сервера хотят писать в один диск, подключенный на каждый из них по iSCSI:
Кроме того нужно поставить в автозапуск драйвер файловой системы:
Все тоже самое нужно повторить на всех трех серверах, к которым подцеплен iSCSI-диск. Причем файл /etc/ocfs2/cluster.conf должен быть абсолютно одинаковым на всех трех серверах вне зависимости от названия сервера.
Теперь на каждом сервере запустим демон o2cb:
И проверим его статус:
Осталась одна задача - отформатировать диск. Для этого на любом из трех серверов, но только на одном, делаем следующую команду, заменив имя диска /dev/sd* на свой вариант, а значение -N выставив в свое количество серверов:
Теперь на каждом из серверов нужно вписать в список монитруемых разделов наш новый диск, заменив UUID в примере на тот, что выдаст blkid:
Теперь монтируем все, что записано в /etc/fstab:
Готово.
Баг:
Если вы пытаетесь выключить сервис o2cb и он не выгружается с такой ошибкой:
Проблема в том, что была неверно выбрана файловая система. Нельзя на диск, к которому обращается более одного шедулера (читай более одной операционной системы) ставить обычную файловую систему. Нужна только кластерная. Например GFS2 или OCFS2.
Такая файловая система имеет свой кластер. Вообще у всех в голове сразу появится "мне не нужен кластер, мне просто диск надо раздать по сети в совместное пользование" - все в порядке. Кластер ставится две минуты и не будет большим усложнением системы.
Делается это легко. Сначала устанавливаем пакеты поддержки такой файловой системы и кластер:
apt-get install ocfs2-tools ocfs2console
Теперь создаем файл настроек кластера (по умолчанию директория кластера пустая). Допустим у нас 3 сервера хотят писать в один диск, подключенный на каждый из них по iSCSI:
tee > /etc/ocfs2/cluster.confnode:
ip_port = 7000
ip_address = 10.0.0.11
number = 1
name = server1
cluster = ocfs2
node:
ip_port = 7000
ip_address = 10.0.0.12
number = 2
name = server2
cluster = ocfs2
node:
ip_port = 7000
ip_address = 10.0.0.13
number = 3
name = server3
cluster = ocfs2
cluster:
node_count = 3
name = ocfs2
Кроме того нужно поставить в автозапуск драйвер файловой системы:
vi /etc/default/o2cb
O2CB_ENABLED=true
Все тоже самое нужно повторить на всех трех серверах, к которым подцеплен iSCSI-диск. Причем файл /etc/ocfs2/cluster.conf должен быть абсолютно одинаковым на всех трех серверах вне зависимости от названия сервера.
Теперь на каждом сервере запустим демон o2cb:
invoke-rc.d o2cb start
И проверим его статус:
invoke-rc.d o2cb status
Осталась одна задача - отформатировать диск. Для этого на любом из трех серверов, но только на одном, делаем следующую команду, заменив имя диска /dev/sd* на свой вариант, а значение -N выставив в свое количество серверов:
mkfs.ocfs2 -b 4k -C 32K -L "OCFS2Cluster" -N 3 /dev/sd*
Теперь на каждом из серверов нужно вписать в список монитруемых разделов наш новый диск, заменив UUID в примере на тот, что выдаст blkid:
mkdir /datablkid /dev/sd*vi /etc/fstabUUID=b0ce0a78-ec75-4e93-9483-f92c3d473ae6 /data ocfs2 noatime 0 0
# iSCSI storage
Теперь монтируем все, что записано в /etc/fstab:
mount -a
Готово.
Баг:
Если вы пытаетесь выключить сервис o2cb и он не выгружается с такой ошибкой:
invoke-rc.d o2cb stopТо чинится так:
Stopping O2CB cluster ocfs2: Failed
Unable to stop cluster as heartbeat region still active
invoke-rc.d: initscript o2cb, action "stop" failed.
umount configfsИ после этого все выгрузится:
invoke-rc.d o2cb stop
Unloading module "ocfs2": OK
Unloading module "ocfs2_dlmfs": OK
Unloading module "ocfs2_stack_o2cb": OK
Комментариев нет:
Отправить комментарий