Чи можливо ввести поточний диск, з якого ви завантажилися?


23

У мене є копія FreeNAS, на якій працює живий USB-диск. І я хотів би зробити резервну копію.

Намагаючись уникнути злому ідеально працюючої системи, чи зможу я ddдиск на час роботи ОС?

Або мені довелося б вимкнути автомат і запустити ddіншу машину?

Відповіді:


16

Ви можете запустити ddна запущеному диску. Це потрібно уникати, коли є серйозні зміни структури диска. Також слід вказати fschkмісце призначення, як тільки ви закінчите. Чим тихіше система під час резервного копіювання, тим краще.

Запуск холодної резервної копії (файлова система відключена) - найкращий варіант, якщо ви хочете використовувати `dd '.

Є кращі варіанти резервного копіювання запущеної системи.

  • tarабо cpioбуде читати файли і справлятися з відкритими файлами досить добре. Ви, ймовірно, пропустите деякі зміни, які відбудуться під час резервного копіювання.
  • rsyncповодиться як tarіз відкритими файлами, так і з відсутніми змінами під час резервного копіювання. Він може бути використаний для початкового резервного копіювання та робить додаткові резервні копії дуже добре. При запуску додаткового резервного копіювання він може пропустити копіювання незмінних частин файлу.

Якщо ви створюєте резервну копію файлової системи з файлами даних, вивчіть підтримку гарячих резервних копій.


Хороші моменти щодо використання інструментів вищого рівня - tar, cpioі rsyncвсі роботи в рамках файлової системи , так що це може бути доцільним. dd, OTOH, працює безпосередньо з дисковими блоками, минаючи FS.
Пісквор

16

Це технічно можливо (як у "стрілянині-в-ногу"), але вкрай недоцільно, особливо якщо будь-який з розділів диска підходить для запису.

Зобразіть цей сценарій:

  • dd починає читати диск на початку і весело пробивається до кінця.
  • Коли він знаходиться на півдорозі, ОС записує файл на диск. Файл, проте, дещо фрагментований - одна його частина фізично розташована на початку диска, а інша - до кінця.
  • Немає проблем для ОС - він записує файл просто чудово і виштовхує його з кешів запису; тепер це правильно записано на диску.
  • Проблема у вашій резервній копії: ddвже минула і скопіювала першу частину файлу, тож вона захопить непослідовний стан, коли потрапить у другу частину - кожна частина буде з іншої версії!

Якщо ви можете перекомпонувати всі розділи на USB-диску як лише для читання, ця проблема не повинна виникати (наголос на " не слід "); для цього потрібна значна підготовка до встановлення / офлайн та встановлення часу завантаження для /розділу, хоча - я не думаю, що ти можеш нормально переглядати /r / o на ходу, буде відхилено багато речей, що вимагають r / w доступ.

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


1
Дякую за чудову відповідь, я сподівався на простий вихід, але ви праві, я не можу уявити, що хороший сценарій виходить із того, що ви вказали.
stuartc

1
@stuartc: Це потребує значної співпраці з драйвером FS - інформує процес копіювання про кожну зміну, що відбулася з моменту початку копії, і про те, чи переходить вона в послідовний стан. Якщо це головна проблема, подивіться у файлові системи, які підтримують знімки, такі як btrfs.
Пісквор

4

Ніколи не слід створювати зображення змонтованого розділу. Незалежно від того, завантажили ви з цього чи ні.

Але вам буде важко намагатися відкрутити розділ, з якого ви завантажилися.


4

Для цього я використовую dump(8)на FreeBSD. Напрdump -auLf /mnt/some-other-disk/root.dmp /

Цей -Lпараметр дозволяє копіювати живу файлову систему шляхом зйомки.

Відвали можна відновити за допомогою restore(8).

Він може працювати лише з UFS; Я не впевнений у цьому.


0

Дивно, скільки підказок щодо резервного копіювання не згадують наступне:

Систему Linux (і більшості багатопотокових ОС), як правило, потрібно вимкнути, коли ви створюєте резервну копію та відновлення.

Це найлегше досягти, якщо на ньому не запускати ОС, коли ви намагаєтесь зобразити її.

Для резервного копіювання та відновлення він може бути змонтований, а насправді, мабуть, повинен бути, але не запускається ОС як його root (/).


Причина: У кожній багатозадачній операційній системі, що включає Linux, є одночасні потоки коду, що впливають на файли, що унеможливлює точні резервні копії та відновлення файлів на загальній системі.

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


Параметри: резервне копіювання потрібно робити спеціальним програмним забезпеченням та / або дисковими системами (наприклад, Acronis в Windows, наприклад, для резервного копіювання операційної ОС), або зовнішньою вторинною ОС, що отримує доступ до файлів ОС, що не працюють, до яких ви намагаєтеся резервне копіювання або відновлення.

!!! Отже, коли ви бачите веб-сторінки, які говорять вам про те, як використовувати Deja-dup, наприклад, для створення резервних копій, це працює лише, /homeа потім ТІЛЬКИ, якщо ви не запускаєте жодної програми, що впливає /homeпід час запуску deja-dup. (І навіть тоді ви можете захотіти схрестити пальці, якщо ви дійсно не знаєте, що може торкнутися ваших файлів через демон.)


0

Я вже роблю це з успіхом у тестовому середовищі, з fsck та rsync врешті-решт, щоб покращити шанси на гарну копію пристрою.


1
Чи можете ви пояснити, як ви rsyncвдосконалюєте дамп на весь диск (ціла файлова система), зроблений за допомогою  dd? (І якщо у вас є доступ rsync, чому б ви просто не використали його як основний інструмент резервного копіювання, а не як вторинний, супутній?)……………………………… Будь ласка, не відповідайте на коментарі; відредагуйте  свою відповідь, щоб зробити її більш зрозумілою та повною.
Скотт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.