понедельник, 25 февраля 2008 г.

Перемонтируем /home на новый HDD в Ubuntu Linux

В самом начале своего знакомства с unix-like системами я всегда выделял очередному линуксу/фре достаточно мало места, по умолчанию я использовал Windows XP и львиная доля HDD всегда доставалась этой ОС. С тех пор много чего изменилось, а я и не заметил, как уже более полугода работаю, выхожу в Интернет, слушаю музыку, смотрю фильмы, ТВ, etc находясь в своей уже полюбившейся(удобной, надёжной, защищённой и далее по тексту) ОС, а в Windows загружаюсь очень и очень редко - поиграть (да, есть такой грешок за мной :)).

Логично, что места на разделах, выделенных для линукса, стало катастрофически не хватать, особенно в своей домашней директории /home. Разумным выходом из сложившейся ситуации мне показалось следующее решение - перемещение /home на отдельный свободный (благо он есть) винчестер, в этой роли выступает Seagate SATA 80 Gb.
Первое место, где я ищу информацию по интересующему меня вопросу, это... нет, не Google, с недавних пор это планета runix.org. Полезной оказалась заметка mczim`a.
После этого я нагуглил вот это(англ.) небольшое руководство. Итак.

После подключения винчестера по всем правилам, он у нас должен появиться в /dev. В моем случае появился /dev/sdb.
Во-первых, форматируем наш новый винчестер и создаем раздел:


# fdisk /dev/sdb
# mkfs.ext3 /dev/sdb1

Проверить, что все идет по плану можно командой:

# fdisk -l

После этого, монтируем наш новый hdd в какое-нибудь место, например в /share/newhome, копируем содержимое папки /home в /share/newhome и не забываем после копирования отмонтировать новый hdd:

# mount /dev/sdb1 /share/newhome
# cp -vax /home /share/newhome
# umount /dev/sdb1

Теперь прописываем новый hdd в /etc/fstab. Тут есть одна тонкость - дело в том, что в Ubuntu в /etc/fstab вместо названий устройств (/dev/hda1, /dev/hda2, etc) используется UUID. Чтобы узнать UUID нашего нового hdd выполняем команду:

# ls -l /dev/disk/by-uuid/

Предварительно, на всякий случай, сделав резервную копию /etc/fstab, копируем нужный нам UUID вместо UUID старого раздела(надеюсь /home у вас вынесен в отдельный раздел?).
Строка монтирования домашнего раздела в моем случае выглядит так:

# /dev/sdb1
UUID=3dbf409b-c35e-482c-8464-59b85528f714 /home ext3 defaults 0 2

Тут можно вписать кучу параметров монтирования разделов типа ext3 или поменять режим журналирования - на Ваше усмотрение. По умолчанию ext3 раздел примонтируется в режиме "ordered", а в /var/log/messages будут выведены строчки:

Feb 25 19:13:44 fabian kernel: [ 32.474467] EXT3 FS on sdb1, internal journal
Feb 25 19:13:44 fabian kernel: [ 32.474473] EXT3-fs: mounted filesystem with ordered data mode.

Тут сказано, что это нормально :)

Обратите внимание на последнюю цифру "2" в строчке монтирования раздела. Вначале я по ошибке поставил там единицу, на что при загрузке Ubuntu ругалась, что не может примонтировать раздел. В man fstab по поводу этого параметра сказано следующее:

The sixth field, (fs_passno), is used by the fsck(8) program to determine the order in which filesystem checks are done at reboot time. The root filesystem should be specified with a fs_passno of 1, and other filesystems should have a fs_passno of 2.

Т.е. для "/" должна быть указана единица, а для других ФС - двойка. Поменял на двойку, Ubuntu загрузилась без ошибок.

В исходном руководстве сказано, что можно, не перезагружая компьютер, набрать команду

# mount -a

и наш новоиспечённый /home примонтируется, но тогда при выводе команды

# df -H

вы увидите, что два раздела смонтированы на /home. Чтобы этого избежать, необходимо сначала отмонтировать старый раздел, на котором расположен /home. Отмонтировать этот раздел при рабочей запущенной ОС достаточно не ординарная задача, ведь существует масса процессов, которые "занимают" этот раздел. Вообще говоря, мне показалось, что проще перезагрузиться. :)

Если все прошло как надо, то после перезагрузки, /home уже будет на новом разделе.

Что было у меня ДО:

root@fabian:/home/fab# df -H
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/sda10 12G 9,9G 689M 94% /home


ПОСЛЕ:

root@fabian:/home/fab# df -H
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/sdb1 79G 12G 64G 15% /home


Вот и все.

1 комментарий:

Анонимный комментирует...

Все это конечно замечательно, но не работает:(
Во первых: команду
# cp -vax /home /share/newhome
необходимо выполнить с ключом -p, чтобы скопировать права доступа на каталоги и , а во вторых копировать надо не /home, т.к. при этом на новом диске создается каталог home и после перезагрузки система не находит Ваш домашний каталог поскольку путь до него становится /home/home/Name. Так, что копировать лучше домашние папки пользователей, например:
# cp -vaxRp /home/ivan /share/newhome
и т.д. Ключ -R позволяет копировать каталоги рекурсивно, правильно обрабатывать ситуации, когда попадаются объекты, не являющиеся обычными файлами или каталогами.