Як найкраще клонувати працюючу систему до нового жорсткого диска за допомогою rsync?


22

У мене система працює як сервер, який має несправний жорсткий диск. Хоча всі важливі дані знаходяться на RAID та створюються резервними копіями, і все це, я не маю зображення самої системи. Немає конкретної потреби, оскільки я можу зробити встановлення звичайно, але я все ж хочу спробувати зробити гарячу копію спочатку, перш ніж просто спуститися по шляху відновлення. Я знаю, що в цьому є деякі недоліки як процесу, але я не думаю, що є багато недоліків у тому, щоб спробувати це як першу інстанцію.

  • ОС: Ubuntu 12.04.4 LTS
  • Без голови
  • Я не сподіваюся встановити занадто багато нового програмного забезпечення, оскільки диск вже виходить з ладу :)
  • Система працює. Мені страшно, зупиняючи це, збільшується ймовірність того, що диск не повернеться. Це означає, що DD може бути поза?
  • Новий диск має не той же розмір (він вдвічі більший), ніж старий, що ще більше ускладнює проблему DD.

Моя ідея полягала в тому, щоб

  • гарячу підключення нового диска в системі
  • зробити файлову систему
  • змонтуйте його в / mnt / somedir
  • rsync файли
  • якась магія fstab
  • якась магія завантаження

У мене ще є такі питання:

Що було б хорошою командою rsync? Я планував:

rsync -aAXx  / /mnt/somedir/ 
   --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

(Я пропускаю ще кілька режиму, наприклад, мого монтованого рейду тощо)

Де такі варіанти:

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-A, --acls                  preserve ACLs (implies -p)
-X, --xattrs                preserve extended attributes
-x, --one-file-system       don't cross filesystem boundaries

Я спеціально пропускаю -H, -v та --progress, щоб прискорити процес.
Це буде працювати для Ubuntu? Я не впевнений, чи Ubuntu використовує якісь жорсткі посилання, але я не думаю, що мені потрібен варіант, чи не так?

Після цього запуску я міг перезавантажити (можливо, з живим USB-накопичувачем) і повторно запустити rsync, якщо старий диск все ще запускається. Це дозволило б виправити будь-які нечитабельні / змінені файли, оскільки система, напевно, працює.


Як виправити завантаження?
Тоді мій план полягав би в тому, щоб змінити UUID на /моєму fstab (все одно доводиться шукати Google, як знайти uuid), і зробити якусь магію, щоб система насправді завантажувалася з нового диска

Я щось забув чи запланував щось конкретно дурне?

Відповіді:


16

Ви можете захопити UUID для всіх блокових пристроїв за допомогою blkidкоманди. (Ви хочете той, що просто каже UUID, а не PARTUUID)

Я використовую параметри rsync -avhPHAXx.

Я не думаю, що -v або - прогрес прискорить що-небудь, якщо ви не будете на дуже повільній консолі / tty.

Використання -x усуває потребу у всіх ваших виключеннях, якщо вони є у різних файлових системах (у моїй системі всі, крім втрачених + знайдених).

Єдиною часто використовуваною програмою, про яку я знаю, яка використовує жорсткі посилання (принаймні, в моїй системі) git, тому я додаю опцію -H. Єдина проблема, яку я думаю, у вас виникне, якщо не використовувати -H, це те, що вона займе трохи більше місця.

Що стосується завантажувача, якщо ви використовуєте GRUB2 з MBR, то я використовую команду grub-install /dev/sda(замініть sda правильним для вас диском). Це повинно зробити новий привід завантажувальним. Якщо ви використовуєте інший завантажувач або UEFI, я б перевірив google, як правильно завантажити нове завантаження диска. Просто пам’ятайте, що / boot на новому диску повинен бути на тому ж розділі, що і зараз (якщо ви також не використовуєте UUID для / boot), інакше вам потрібно буде відповідно змінити fstab.


Я не вірю, що я їх маю на окремих системах, боюся, тому виключення здається доцільним. Я читаю змішані речі про швидкість - v, тому не знаю, що там робити;). Git - хороший момент, я впевнений, що вдома є щось таке!
Нанна

1
Ну, / proc, / sys і, швидше за все, / dev, безумовно, різні файлові системи / точки монтажу з /, тому абсолютно немає причин виключати ті, коли у вас є -x. Якщо ви не впевнені, що є частиною вашої кореневої файлової системи чи ні, просто запустіть, mountщоб перевірити. Все, що там знаходиться, не потрібно виключати вручну.
bparker

Я не впевнений, як і чому, але виключення були помилковими. Вони насправді були в сухому режимі, я це робив, не знаючи чому. (ну, я скопіював формат з напів випадкового місця, щоб це могло бути причиною?). У будь-якому випадку, з твердим місцем -x за вашою порадою, я не надто хвилювався, лише зайвим було те, що деякі незначні речі (наприклад, старі резервні копії резервних копій) також були "збережені".
Нанна

Це врятувало мій $$. Я клонував 12GB + систему на Linode на абсолютно новий вузол. Через 5+ років це все ще працює. Дякую, хлопці!
geeth

Отже, при розділенні клонованої файлової системи, готової прийняти клони, чи повинен мій кореневий розділ встановити прапорець завантаження, поки я зберігаю їх несинхронізованими, або я встановлю його безпосередньо перед тим, як клонувати диск у виробництво. Інакше я б припустив, що клонований диск тоді завантажувальний, що насправді не хочеться. У моїй ситуації мій диск клонів - це диск на окремому сервері. І Rsync використовується, щоб підтримувати його у відповідність із prod.
NZ Dev

11

Я просто зробив це успішно (після пари спроб).

я використав

sudo rsync -ahPHAXx --delete --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} / /mnt

Тоді я скидаю свій /mnt/etc/fstabфайл для завантажувального розділу та мій swap.

Тоді мені потрібно було скинути GRUB

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
sudo grub-install --recheck /dev/sdX
sudo update-grub

Зауважте, що це стосується лише дисків у форматі MBR.
Teque5

2

Не намагайтеся виправити завантаження за допомогою цього диска; моя рекомендація:

  1. Підключіть привід на іншій машині замість того, щоб ризикувати гарячою заміною на несправній машині.
  2. rsync ваші несистемні файли на новий диск.
  3. На окремому жорсткому диску створіть завантаження, мінімальний корінь та swap. Встановіть ту ж операційну систему, яку ви хочете клонувати з хворого жорсткого диска.
  4. Завантажте цей новий диск (в ідеалі на окремій машині, якщо ви не можете ризикувати простоєм на цільовому хості, інакше ви можете завантажувати цільовий хост цим диском).
  5. Додайте диск з кроку №2 до цієї нової системи з правильними точками кріплення. Тепер у вас є клон системного диска. Ви можете (необов'язково) копіювати розділи на цей новий диск, але моя рекомендація полягає в тому, щоб диск був мінімальною вимогою до завантаження вашої ОС. Як ви зрозуміли, занадто багато речей на первинному розділі ускладнює відновлення. Переконайтеся, що ви правильно скопіювали конфігурацію мережі, оскільки ваш сервер без голови.
  6. Просто замініть диск на хворій системі на цю нову пару дисків (якщо ви вирішите не завантажувати ціль спочатку на кроці №4).
  7. Перезавантажте.

Я можу ризикувати простоєм, це несуттєвий сервер. Я збирався на гарячу заміну (в основному гаряча добавка), тому що ця копія була б набагато швидшою. Не повинно бути занадто багато ризиків, я вважав, як ми говоримо про SATA (принаймні, II). Крім того, яка причина запропонувати додатковий завантажувальний диск? Хіба це не ускладнить питання для вже встановленого програмного забезпечення, homedirs тощо? Це звучить як більша робота, якої я намагаюся уникати: D
Nanne

Це те, що я використовую у виробництві; Я монтую / home, / etc, / var, / usr та / вибираю зовнішні диски (фактично на LVM) та / та / завантажуюсь на окремому диску. Таким чином, мені не потрібно хвилюватися, коли основний диск виходить з ладу, я просто поміняю його, не впливаючи на мої сервіси :) Спочатку це трохи працює, але в майбутньому економить. Особливо, коли у вас не вистачає місця на перегородці і вам потрібно додати обсяг без простоїв.
Бурхан Халід

Хоча ви добре зазначаєте, я зараз не є вимогою, ані не потребую :). У системі є кілька інших дисків (близько 7), і я повинен десь намалювати лінію; D. Тож ОС зараз не потребує розбиття. Я маю на увазі: я згоден, що система гарна, просто не те, що я зараз шукаю; D. Тож якщо я залишу все це на 1 диску, факт, який я копіюю зовнішній, зробить це серйозно повільним, чи не так?
Нанна

Залежить від вашого інтерфейсу до зовнішнього, через Ethernet він повинен бути швидким, через USB 2 швидшим, на USB 3 ще швидшим. Це не зробить це дуже повільно - звичайно, не копіюйте каталоги, до яких записуються (наприклад, / tmp, які вам так чи інакше не потрібні) або десь записуються труби.
Бурхан Халід

0

Я витратив багато часу на дистрибутив Centos Freepbx для rsync і маю завантажувальний новий диск, і, нарешті, після виправлення fstab і grub UUID він не працює.

Останній крок, щоб змусити його працювати - це

dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1
grub

Коли ви перебуваєте в CLI Grub (тобто під grub>запитом):

device (hd0) /dev/sda
device (hd1) /dev/sdb
root (hd0,0) 
setup (hd0) 
root (hd1,0)
setup (hd1)
quit

Натисніть, enterі тепер ви можете відключити, вийняти старий диск і завантажити новий.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.