среда, 5 октября 2011 г.

Добавляем свободное место для домена Xen

Несколько месяцев назад я перешел на новый проект, который будет работать под управлением Linux. До этого я работал под Solaris на уровне непродвинутого пользователя, а с Linux знаком по институтским занятиям и непродолжительному самостоятельному изучению. На днях столкнулся с проблемой - в виртуальной машине под управлением Xen закончилось свободное место. На то, чтобы справиться, у меня ушел целый день, надеюсь, этот пост кому-то поможет сэкономить рабочее время.

Найти способ увеличить диск оказалось несложно - Google помог. Однако дело осложнилось тем, что у нас операционка (RH Linux) ставится на диск по сети и заранее сконфигурирована админами, причем разделы настроены через группы и способ "нарастить диск, удалить swap'ы, переразбить основной раздел, вернуть swap и обновить размер кластеров" не подошел, по крайней мере, моих познаний не хватило.

После изучения документации пришел к следующему решению: добавить еще один диск и перенести все свои данные туда. В будущем при необходимости наращивать этот диск, благо данные не теряются.

Добавляем дополнительный диск

host# dd if=/dev/zero of=/path/to/disk/imagename bs=1k seek=1024k count=0
- создаем диск размером 1 Gb.

Подключаем его, дополнив в конфигурационном файле нужного домена раздел disk (выделено жирным):
disk = [ "tap:aio:/srv/disk001,xvda,w", "tap:aio:/srv/disk002,xvdb,w"]
Останавливаем домен, запускаем его заново (обычная перезагрузка не помогла, при ней диск не подхватился), диск находится. Далее все просто:
guest# mkfs.ext3 /dev/xvdb
guest# fdisk /dev/xvdb
Command (m for help): n
Command action: e
Partition number (1-4): 1
First cylinder (1-130, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): 130
Command (m for help): w
Теперь осталось смонтировать диск:
guest# mkdir /data
guest# mount /dev/xvdb /data
guest# cat >> /etc/fstab <<!
/dev/xvdb /data ext3 defaults 0 1
!
Диск смонтирован, при перезагрузке он будет монтироваться автоматически.

Увеличиваем размер диска

Когда места на диске перестанет будет хватать, можно его добавить, это довольно просто. Отмонтируем диск, чтобы туда никто не смог писать и нарастим его:
guest# umount /dev/xvdb
host# dd if=/dev/zero bs=1M count=1024 >> /path/to/disk/imagename
Перезагрузим гостевой домен, чтобы он подхватил изменения диска, пересоздадим раздел и обновим размер кластера, диск смонтируется сам:
guest# umount /dev/xvdb
guest# fdisk /dev/xvdb
Command (m for help): d
Command (m for help): n
Command action: e
Partition number (1-4): 1
First cylinder (1-261, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): 261
Command (m for help): w
guest# resize2fs /dev/xvdb
Вуаля! На диске увеличилось свободное пространство, все данные остались целы. Плюсы такого подхода: данные можно хранить отдельно от системы, проще откатываться к нужному состоянию.

Поскольку я не большой знаток линуксов, в предложенном варианте могут быть недочеты, так что конструктивная критика приветствуется!

0 коммент.:

Отправить комментарий