LINUX.ORG.RU
ФорумAdmin

Бэкап Ubuntu


0

2

Всем привет!

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

Есть удалённый физический сервер, на нём стоит Ubuntu 14.04 LTS. В сервере будет два физических диска: на первом собственно уже стоит Ubuntu, а второй диск будет добавлен, и на второй диск я собираюсь бэкапить. На первом диске сейчас файлов примерно на 4 гигабайта. Стоит задача в случае поломки первого диска поднять сервер за максимум 4 часа в состояние, близкое к моменту до поломки первого диска. Считаем, что удалённый физический сервер будет помогать восстанавливать человек, работавший программистом пару-тройку лет назад.

Сам думаю смонтировать второй диск на /mnt и раз в день выполнять от имени root'a такой Bash-скрипт:

cd /
for DirOrFile in `ls`
do
    if [ «$DirOrFile» != «mnt» ]
    then
        cp -a $DirOrFile /mnt
    fi
done

Таким образом у меня будут практически все файлы с первого диска, но подозреваю, что просто файлов будет недостаточно, чтобы запустить Ubuntu со второго диска. Сейчас, без второго диска, имеем следующий вывод команды «fdisk -l»:

root@myschool-20140501:/# fdisk -l
 
Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000d19e0
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          501758  3907028991  1953263617    5  Extended
Partition 2 does not start on physical sector boundary.
/dev/sda5          501760  3907028991  1953263616   8e  Linux LVM
 
Disk /dev/mapper/myschool--20140501--vg-root: 1974.3 GB, 1974296641536 bytes
255 heads, 63 sectors/track, 240027 cylinders, total 3856048128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000
 
Disk /dev/mapper/myschool--20140501--vg-root doesn't contain a valid partition table
 
Disk /dev/mapper/myschool--20140501--vg-swap_1: 25.7 GB, 25702694912 bytes
255 heads, 63 sectors/track, 3124 cylinders, total 50200576 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000
 
Disk /dev/mapper/myschool--20140501--vg-swap_1 doesn't contain a valid partition table

Заранее благодарен тем, кто даст подсказки, как сделать бэкап в этой ситуации, а потом с бэкапа запустить сервер.

Если рассматривать вариант исключительно с выходом из строя диска, то однозначно RAID1.

Gotf ★★★ ()
  • Два диска в зеркальный raid (mdadm);
  • Поверх raid lvm том c системой;
  • На третий диск складывать снапшоты lvm время от времени.

Если выйдет один из дисков raid из строя, сам сервер останется в бою, а вы об этом узнаете по почте, к примеру.

Если софт «накосячит» с данными то можно откатиться из снашотов lvm.

petav ★★★★★ ()
Ответ на: комментарий от petav

Кстати, а как в таком случае откатываться со снепшотов? Берётся снепшот, монтируется только для чтения и заливается на полностью новый, отдельный диск... Ведь как-то так же? Не может же снепшот разливаться на исходный диск с LVM...

DALDON ★★★★★ ()

!= proc sys dev mnt
А лучше dd if=/dev/sda | xz -f -c -z -9 -e > /mnt/sda_`date`.xz

ubuntuawp ★★ ()
Ответ на: комментарий от DALDON

Создание резервной копии:

  • Создаем снапшот на том LVM «test» в группе «vg0»
    lvcreate -L10G -s -nSNAP /dev/vg0/test
    
  • Снимаем дамп
    dd if=/dev/vg0/SNAP of=/volume0/test.dd-image bs=8M
    
  • Отключаем снапшот
    lvremove /dev/vg0/SNAP --force

Разворачивание резервной копии:

  • Грузим машину в systemrescuecd
  • Перезаписывем том «test»
    dd if=/volume0/test.dd-image of=/dev/vg0/test bs=8M
    

Замечания:

  • /volume0 либо отдельный шустрый винчестер, либо диск в памяти. Ввод/Вывод сильно проседает в момент существования снапшота.
  • На момент создания снапшота сервисы использующие диск для надежности можно/нужно остановить и запустить сразу после выполнения команды lvcreate.
  • Можно продумать варианты с on-line разворачиванием и последующей перезагрузкой машины для загрузки с нужной копии системы.
petav ★★★★★ ()
Последнее исправление: petav (всего исправлений: 2)

В сервере будет два физических диска

если в качестве ФС - ext* то делай копии всех разделов dump-ом на второй диск

vxzvxz ★★★ ()
Ответ на: комментарий от vxzvxz

vxzvxz, спасибо за ответ!

А можно более подробно? Какие примерно команды? Какая примерно будет процедура восстановления при поломке первого диска?

Alexander7 ()
Ответ на: комментарий от vxzvxz

если в качестве ФС - ext* то делай копии всех разделов dump-ом на второй диск

Я бы поостерегся давать такой совет, к тому же не зная эксплуатируемых сервисов.

petav ★★★★★ ()
Ответ на: комментарий от petav

Я бы поостерегся давать такой совет

тоже могу сказать и в отношении снятия LVM-снапшотов, у которых механизм реализации Copy-on-write это настоящая порнография, жесточайшим образом насилующая диски.

vxzvxz ★★★ ()
Ответ на: комментарий от vxzvxz

ты когда-нибудь поймешь разницу в реализации c-o-w для фс и блочного устройства?

ТС: если простой сервера допустим, то два независимых диска, rsync и grub-install на второй диск. в fstab монтировать по uuid

sdio ★★★★★ ()
Ответ на: комментарий от vxzvxz

Настаиваю возражать обоснованно, относительно и по теме разбираемого комментария, вызвавшего Ваше возмущение своей искаженной сутью, а не ради того, что бы употреблять термины.

Мои опасения высказыны о возможной, а даже вполне реальной неконсистентности данных при эксплуатации Вашего метода бэкапа. Здравый смысл говорит о высокой вероятности возможности этого. Если у Вас есть обратное мнение прошу обосновать его.

petav ★★★★★ ()
Ответ на: комментарий от quest

quest, спасибо за ответ!

Осиль rsync или

Предположим, что я как root буду бэкапить командой

rsync -auHxv --delete --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/mnt / /mnt

Смогу ли я потом загрузиться с диска, который был смонтирован на /mnt, и получить работающий сервер в состоянии, близком к времени, когда выполнялась команда rsync выше?

или программный raid

Я нашёл довольно подробную инструкцию: http://feeding.cloud.geek.nz/posts/setting-up-raid-on-existing/. При изучении этой инструкции не обнаружил у себя в /etc/fstab прямых упоминаний /dev/sda1 и /dev/sda2. У меня /etc/fstab выглядит примерно так:

/dev/mapper/myschool--20140501--vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=f2448510-32db-4599-9be0-1fdb77237f25 /boot           ext2    defaults        0       2
/dev/mapper/myschool--20140501--vg-swap_1 none            swap    sw              0       0

tmpfs   /var/www/tmpdata/d       tmpfs   auto,noexec,rw,nodev,noatime,size=5G    0   0
tmpfs   /var/www/tmpdata/h        tmpfs   auto,noexec,rw,nodev,noatime,size=5G    0   0
tmpfs   /var/www/tmpdata/log        tmpfs   auto,noexec,rw,nodev,noatime,size=2G    0   0
tmpfs   /var/www/tmpdata/m      tmpfs   auto,noexec,rw,nodev,noatime,size=1G    0   0

Как я понимаю, UUID=f2448510-32db-4599-9be0-1fdb77237f25 - это /dev/sda1, поскольку

# df -h
Filesystem                                 Size  Used Avail Use% Mounted on
/dev/mapper/myschool--20140501--vg-root  1.8T  4.1G  1.7T   1% /
none                                       4.0K     0  4.0K   0% /sys/fs/cgroup
udev                                        12G  4.0K   12G   1% /dev
tmpfs                                      2.4G  656K  2.4G   1% /run
none                                       5.0M     0  5.0M   0% /run/lock
none                                        12G     0   12G   0% /run/shm
none                                       100M     0  100M   0% /run/user
tmpfs                                      2.0G  679M  1.4G  34% /var/www/tmpdata/log
tmpfs                                      1.0G   96K  1.0G   1% /var/www/tmpdata/m
/dev/sda1                                  236M   35M  189M  16% /boot
tmpfs                                      5.0G  1.7G  3.4G  34% /var/www/tmpdata/d
tmpfs                                      5.0G  1.8G  3.3G  35% /var/www/tmpdata/h

Насчёт /dev/sda2 я как-то не уверен... При конфигурировании рейда 1 ставить /dev/md1 вместо /dev/mapper/myschool--20140501--vg-root?

Alexander7 ()
Ответ на: комментарий от Alexander7

Смогу ли я потом загрузиться с диска, который был смонтирован на /mnt, и получить работающий сервер в состоянии, близком к времени, когда выполнялась команда rsync выше?

нет. rsync не накатит вам загрузчик. живую ОС на ходу не копируют с помощью rsync, cp, dd или dump.

vxzvxz ★★★ ()
Последнее исправление: vxzvxz (всего исправлений: 1)
Ответ на: комментарий от Alexander7

Как я понимаю, UUID=f2448510-32db-4599-9be0-1fdb77237f25 - это /dev/sda1

Выполни

# blkid
и все будет ясно

quest ★★★★ ()
Ответ на: комментарий от Alexander7

Смогу ли я потом загрузиться с диска, который был смонтирован на /mnt, и получить работающий сервер в состоянии, близком к времени, когда выполнялась команда rsync выше?

Сможешь если на диске куда ты делаешь бекап есть загрузчик и он помечен как загружаемый. Программный raid будет синхронизировать разделы которые в raid включены автоматически и постоянно, а rsync каталоги с файлами когда ты скажешь в cron. rsync проще в настройке, raid надежней.

Если у тебя два одинаковых по размеру диска можно тупо загрузится с livecd и сделать клон dd if=disk1 of=disk2 bs=4096, а потом делать rsync. После клона второй диск станет загрузочным потому что полная копия первого.

quest ★★★★ ()
Ответ на: комментарий от quest

C livecd загрузится чтобы как правильно сказал vxzvxz не копировать на ходу (могут быть не сброшенные кеши).

quest ★★★★ ()
Ответ на: комментарий от quest

Если у тебя два одинаковых по размеру диска можно тупо загрузится с livecd и сделать клон dd if=disk1 of=disk2 bs=4096, а потом делать rsync.

Если у меня сейчас /dev/sda, а второй будет /dev/sdb, то команда с dd будет

dd if=/dev/sda of=/dev/sdb bs=4096

Правильно?

Alexander7 ()
Ответ на: комментарий от Alexander7

Правильно?

Да. /dev/sdb у тебя станет полной копией /dev/sda со всеми его разделами, загрузчиком и данными. А дальше грузишься как обычно с /dev/sda и настраиваешь rsync в cron.

quest ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.