Предварительно советую ознакомиться с переводом страниц руководства:
restore
На одном из серверов вышел из строя один из HDD, собранных в RAID 1 с помощью gmirror. Систему запустил на одном HDD, отредактировав /etc/fstab. Поскольку HDD были небольшого размера (80 GB), решил заменить их более обьемными. Соответственно необходимо реализовать задачу переноса работающей системы на новый HDD, а потом уже снова собирать RAID.
Версия установленной FreeBSD - 6.2:
# uname -prs FreeBSD 6.2-RELEASE-p8 i386 |
HDD разбит на следующие разделы:
# df -h Filesystem Size Used Avail Capacity Mounted on /dev/ad4s1a 989M 54M 856M 6% / devfs 1.0K 1.0K 0B 100% /dev /dev/ad4s1d 3.9G 1.9G 1.6G 54% /home /dev/ad4s1e 989M 1.4M 909M 0% /tmp /dev/ad4s1f 12G 3.1G 7.6G 29% /usr /dev/ad4s1g 54G 45G 4.5G 91% /var |
Информация о текущем HDD:
# cat /var/run/dmesg.boot | grep ad4 ad4: 76319MB <WDC WD800AAJS-00PSA0 05.06H05> at ata2-master SATA150 Trying to mount root from ufs:/dev/ad4s1a |
Листинг /etc/fstab следующий:
# cat /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/ad4s1b none swap sw 0 0 /dev/ad4s1a / ufs rw 1 1 /dev/ad4s1d /home ufs rw 2 2 /dev/ad4s1e /tmp ufs rw 2 2 /dev/ad4s1f /usr ufs rw 2 2 /dev/ad4s1g /var ufs rw 2 2 |
Установим дополнительно новый HDD и проверим, как он инициализируется системой. Определился он как ad6:
# cat /var/run/dmesg.boot | grep ad6 ad6: 476940MB <SAMSUNG HD502HJ 1AJ10001> at ata3-master SATA150 |
Старый HDD размером 80 GB, новый - 500 GB. Поэтому подкорректируем размеры разделов. Новая схема разбивки:
Создадим в /mnt каталоги по количеству существующих файловых систем:
# mkdir /mnt/root |
Следующий шаг - разбивка диска ad6. Воспользуемся утилитой sysinstall. Sysinstall -> Configure -> Fdisk.
Выбираем диск ad6. Жмем клавишу "А", поскольку будем использовать весь диск. И не забываем сделать диск загрузочным - необходимо нажать клавишу "S" - напротив слайса должен появиться флаг "А". Потом необходимо нажать "W", чтобы записать изменения. Система выдаст запрос о необходимости загрузчика. От загрузчика отказываемся в пользу записи в MBR - пункт "Standart". Система должна выдать сообщение, что изменения успешно записаны.
Скриншот разбивки диска с помощью Fdisk:
Запускаем утилиту Label: Sysinstall -> Configure -> Label.
Создаем файловые системы в той же последовательности, что и на первоначальной системе. Создаем с помощью клавиши "С" - Create. В качестве точек монтирования указываем /mnt/root, /mnt/home, /mnt/tmp, /mnt/usr и /mnt/var соответственно. Обратите внимание на то, что слайсы файловых систем должны быть идентичны, отличаясь только диском.
Обратите внимание на то, что если сразу указать точку монтирования как /mnt/root, то получим в результате ad6s1d, а нам необходимо ad6s1a, поскольку адресация корневого раздела на ad4 - ad4s1a (см. вывод fstab). Чтобы "обхитрить" систему, указываем точку монтирования как / , а потом жмем клавишу "М" и задаем точку монтирования как /mnt/root. Еще одной особенностью является то, что все разделы сразу создать не получится - система в таком случае ругается на ошибки. Необходимо создать точку монтирования /mnt/root и после ее создания записать изменения, нажав на клавишу "W" - Write. После этого выходим из sysinstall и даем команду на отмонтирование /mnt/root:
# umount /mnt/root |
Снова запускаем Sysinstall -> Configure -> Label. Изменяем метку ad6s1a на /mnt/root и создаем остальные файловые системы, жмем "W" - Write для того, чтобы сохранить изменения. Скриншот утилиты Label:
В результате имеем следующие файловые системы:
# df -h Filesystem Size Used Avail Capacity Mounted on /dev/ad4s1a 989M 54M 856M 6% / devfs 1.0K 1.0K 0B 100% /dev /dev/ad4s1d 3.9G 1.9G 1.6G 54% /home /dev/ad4s1e 989M 1.4M 909M 0% /tmp /dev/ad4s1f 12G 3.1G 7.6G 29% /usr /dev/ad4s1g 54G 45G 4.6G 91% /var /dev/ad6s1d 3.9G 4.0K 3.6G 0% /mnt/home /dev/ad6s1a 989M 4.0K 910M 0% /mnt/root /dev/ad6s1e 1.9G 4.0K 1.8G 0% /mnt/tmp /dev/ad6s1f 19G 4.0K 18G 0% /mnt/usr /dev/ad6s1g 423G 4.0K 389G 0% /mnt/var |
Завершив "пляски с бубном" по созданию файловых систем, перезагружаем систему в однопользовательском режиме (пункт 4 в меню вариантов загрузки FreeBSD - Single User Mode).
Дождавшись приглашения для ввода shell, жмем "Enter", соглашаясь на предложенный /bin/sh. Смонтируем файловые системы, описанные в /etc/fstab:
# mount -a |
Следующий шаг - монтирование файловых систем, на которые будем копировать существующие разделы:
# mount /dev/ad6s1a /mnt/root # mount /dev/ad6s1d /mnt/home # mount /dev/ad6s1e /mnt/tmp # mount /dev/ad6s1f /mnt/usr # mount /dev/ad6s1g /mnt/var |
Теперь по очереди переносим каждую файловую систему:
# ( dump -0Lf - / ) | ( cd /mnt/root ; restore -rf - ) # ( dump -0Lf - /home ) | ( cd /mnt/home ; restore -rf - ) # ( dump -0Lf - /tmp ) | ( cd /mnt/tmp ; restore -rf - ) # ( dump -0Lf - /usr ) | ( cd /mnt/usr ; restore -rf - ) # ( dump -0Lf - /var ) | ( cd /mnt/var ; restore -rf - ) |
После переноса даем команду на останов системы и выключение:
# shutdown -p now |
После этого отключаем старый HDD, а на его место ставим новый. Если не допустили никаких ошибок - система корректно загрузится с нового HDD. Если же нет - то скорее всего допущена ошибка в fstab - внимательно проверяйте, не допустили ли какой опечатки и совпадают ли указанные пути с устройствами в /dev.
Спасибо, весьма помогло в
Спасибо, весьма помогло в моей проблеме с HDD
Рад, что пригодилось - не зря
Рад, что пригодилось - не зря значит писал.
Создадим в /mnt каталоги по
Создадим в /mnt каталоги по количеству существующих файловых систем:
# mkdir /mnt/root
# mkdir /mnt/home
# mkdir /mnt/tmp
# mkdir /mnt/usr
# mkdir /mnt/var
+
Обратите внимание на то, что если сразу указать точку монтирования как /mnt/root, то получим в результате ad6s1d, а нам необходимо ad6s1a, поскольку адресация корневого раздела на ad4 - ad4s1a (см. вывод fstab). Чтобы "обхитрить" систему, указываем точку монтирования как / , а потом жмем клавишу "М" и задаем точку монтирования как /mnt/root. Еще одной особенностью является то, что все разделы сразу создать не получится - система в таком случае ругается на ошибки. Необходимо создать точку монтирования /mnt/root и после ее создания записать изменения, нажав на клавишу "W" - Write. После этого выходим из sysinstall и даем команду на отмонтирование/mnt/root:
_________________________________
Совмещаем оба шага:
запускаем сразу sysinstall - label - А - меняем точку монтирования / - выбираем остальные разделы - W (записываем изменения) - выслушиваем ругань, закрываем sysinstall - повторяем процедуру, только теперь все успешно создается.
Дальше без всяких перезагрузок, однопользовательских загрузок и подобной чуши:
# cd /mnt/root
# dump -Lf- / | restore -rf-
# cd /mnt/tmp
# dump -Lf- /tmp | restore -rf-
и т.д.
Если нужно меняем /mnt/root/fstab, перегружаемся с нового винта - профит.
Спасибо за предложенный
Спасибо за предложенный вариант. Нужно будет попробовать.
Делал по Вашей статье
Делал по Вашей статье разметку диска, а сам процесс клонирования делал так:
# cd / && pax -p eme -X -rw . /mnt/root
Как говорится: "Есть много
Как говорится: "Есть много способов снять с кота шкуру..."