В данной статье описан один из методов архивирования и восстановления файловой системы с помощью программы dd
.
Целью задачи, заключается перенос корневой файловой системы с одного сервера на другой.
Используемая операционная система Centos 7.0
Просмотр структуры разбивки дисков с помощью программы lsblk
, в консоли набираем без опций:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sda 8:0 0 20,3G 0 disk
├─sda1 8:1 0 18,3G 0 part /
└─sda2 8:2 0 2G 0 part [SWAP]
где видим, что корневая файловая система /
находится в разделе sda1
.
С помощью команды df -h
смотрим размер файловой системы:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 18G 660M 17G 4% /
tmpfs 499M 0 499M 0% /dev/shm
где видим, что корневая файловая система /
занимает 660MB
дискового раздела /dev/sda1
.
Примонтируем внешний диск или флешку достаточного объема (в нашем случае раздел sda1
занимает 18,3G
):
$ mount /dev/sdb1 /mnt
где /dev/sdb1
- внешний носитель, а /mnt
- точка монтирования.
Теперь приступим к созданию образа корневой файловой системы /
на внешний носитель:
$ dd if=/dev/sda1 of=/mnt/backup_os.img
Если на сервере достаточно места для сохранения образа корневой файловой системы,
то можно сохранить образ backup_os.img
локально и после скопировать
на удаленный сервер.
Также с помощью любого архиватора, при создании образ раздела можно сжать:
$ dd if=/dev/sda1 | gzip -c > /mnt/backup_os.img
dd
По необходимости для наглядности, т.к. программа dd
не отображает статистику
выполнения, можно выполнить следующие действия.
Залогинимся в дополнительную вторую консоль на сервере.
Если Вы на сервере находитесь локально, то нажимаем комбинацию клавиш Alt+Ctrl+F2
.
После запуска программы dd
находим номер процесса программы с помощью следующей
команды:
$ pgrep -l '^dd$'
Теперь вводим команду:
$ watch -n 5 kill -USR1 1092
где 1092
номер процесса dd
После переходим в консоль где запущенна программа dd
:
где видим, что программа dd
выводит каждые 5 секунд статистику копирования.
Устанавливаем внешний носитель на новый сервер и загружаемся под любым
дистрибутивом liveCD
например - CentOS-7-x86_64-livecd
На новом сервере с помощью программы lsblk
определяем разбивку диска:
где раздел sda1
- локальный диск, а раздел sdb1
- внешний диск.
В консоли входим в режим администратора (root):
$ sudo -i
Монтируем внешний носитель sdb1
:
$ mount /dev/sdb1 /mnt
Теперь копируем образа корневой файловой системы /
на локальный раздел sda1
:
$ dd if=/mnt/backup_os.img of=/dev/sda1
Если использовалось сжатие образа, то выполняем следующую команду:
$ gunzip -c /mnt/backup_os.img | dd of=/dev/sda1
Отмонтируем внешний носитель sdb1
:
$ umount /mnt
И примонтируем новый раздел sda1
для установки на него загрузчика GRUB
:
$ mount /dev/sda1 /mnt
После устанавливаем загрузчик в смонтированный раздел /mnt/boot на диск /dev/sda:
$ grub-install --boot-directory=/mnt/boot /dev/sda