Apakah mungkin untuk menemukan disk saat ini yang Anda boot?

23

Saya memiliki salinan FreeNAS yang menjalankan disk USB langsung. Dan saya ingin membuat cadangannya.

Ketika mencoba untuk menghindari kerusakan pada sistem yang berfungsi dengan baik, apakah saya dapat ke dddisk saat OS sedang berjalan?

Atau apakah saya harus mematikan mesin dan menjalankan ddmesin lain?

stuartc
sumber

Jawaban:

16

Anda dapat menjalankannya dddi disk yang sedang berjalan. Melakukannya ketika ada perubahan besar pada struktur disk harus dihindari. Anda juga harus fschkmenjadi tujuan begitu selesai. Semakin tenang sistem selama cadangan, semakin baik.

Menjalankan cadangan dingin (sistem file tidak terpasang) adalah opsi terbaik jika Anda ingin menggunakan `dd '.

Ada opsi yang lebih baik untuk membuat cadangan sistem yang sedang berjalan.

  • taratau cpioakan membaca file dan menangani file terbuka dengan cukup baik. Anda mungkin akan kehilangan beberapa perubahan yang terjadi selama pencadangan.
  • rsyncberperilaku seperti tarsehubungan dengan membuka file, dan perubahan yang hilang selama cadangan. Ini dapat digunakan untuk melakukan pencadangan awal dan melakukan pencadangan tambahan dengan sangat baik. Saat menjalankan cadangan tambahan, ia dapat melewati menyalin bagian file yang tidak berubah.

Jika Anda mencadangkan sistem file dengan database data, pelajari dukungan untuk backup panas.

BillThor
sumber
Poin bagus tentang penggunaan alat tingkat tinggi - tar, cpiodan rsyncsemua berfungsi di dalam sistem file , jadi ini mungkin tepat. dd, OTOH, bekerja langsung dengan blok disk, mem-bypass FS.
Piskvor
16

Secara teknis dimungkinkan (seperti dalam "memotret sendiri di kaki"), tetapi sangat tidak disarankan, terutama jika ada partisi disk yang dapat ditulis.

Bayangkan skenario ini:

  • dd mulai membaca disk di awal, dan dengan gembira membuat jalan menuju akhir.
  • Ketika sudah setengah jalan, OS menulis file ke disk. File agak terfragmentasi - satu bagian secara fisik terletak di awal disk, dan yang lain menjelang akhir.
  • Tidak ada masalah untuk OS - ia menulis file dengan baik, dan mendorongnya keluar dari cache tulisnya; sekarang ditulis dengan benar pada disk.
  • Masalahnya adalah dengan cadangan Anda: ddsudah melewati dan menyalin bagian pertama file, sehingga akan menangkap keadaan tidak konsisten ketika sampai ke bagian kedua - setiap bagian akan dari versi yang berbeda!

Jika Anda mampu me-remount semua partisi pada disk USB sebagai read-only, masalah ini seharusnya tidak terjadi (penekanan pada " seharusnya tidak"); ini membutuhkan persiapan instalasi / offline di muka yang signifikan di muka dan pengaturan boot-time untuk /partisi - saya tidak berpikir Anda biasanya dapat me-remount /r / o on-the-fly, akan ada beberapa hal yang menggantung yang memerlukan r / w mengakses.

Jadi, menjalankan salinan mungkin tidak akan merusak sistem yang sedang berjalan, tetapi tidak akan memberi Anda cadangan yang bisa diterapkan , menjadikan tugasnya diperdebatkan. Saya sangat merekomendasikan untuk membuat salinannya offline - yang mengharuskan Anda mematikan mesin.

Piskvor
sumber
1
Terima kasih atas jawaban yang bagus, saya berharap untuk jalan keluar yang mudah, tetapi Anda benar, saya tidak bisa membayangkan skenario yang baik muncul dari apa yang Anda tunjukkan.
stuartc
1
@stuartc: Ini akan membutuhkan kerja sama besar dari driver FS - menginformasikan proses penyalinan setiap perubahan yang telah terjadi sejak salinan dimulai, dan apakah akan mencapai kondisi yang konsisten. Jika ini merupakan masalah besar, lihatlah ke sistem file yang mendukung snapshotting, seperti btrfs.
Piskvor
4

Anda seharusnya tidak pernah membuat gambar partisi yang dipasang. Tidak masalah apakah Anda boot dari itu atau tidak.

Tetapi Anda akan mengalami kesulitan mencoba untuk melepas partisi yang Anda boot dari.

Der Hochstapler
sumber
4

Untuk ini, saya gunakan dump(8)di FreeBSD. Misalnyadump -auLf /mnt/some-other-disk/root.dmp /

The -Lpilihan memungkinkan menyalin dari sistem file hidup dengan mengambil snapshot.

Kesedihan dapat dipulihkan dengan menggunakan restore(8).

Mungkin hanya bekerja dengan UFS; Saya tidak yakin tentang hal itu.

maksimal
sumber
0

Sungguh menakjubkan betapa banyak kiat cadangan yang tidak menyebutkan yang berikut:

Sistem linux (dan sebagian besar OS multi-thread) umumnya harus diam saat Anda membuat cadangan dan memulihkan.

Ini paling mudah dicapai dengan tidak menjalankan OS di atasnya saat Anda mencoba untuk membayangkannya.

Untuk backup dan restore, ini bisa di-mount, dan sebenarnya mungkin harus, tetapi tidak dengan menjalankan OS sebagai root (/).


Alasan: Di setiap sistem operasi multi-tasking, termasuk linux, ada utas kode simultan yang menjalankan file yang tidak memungkinkan untuk melakukan backup atau mengembalikan file-set sistem yang akurat.

Secara khusus, saat Anda mengambil file, mungkin ada beberapa tugas lain yang membuat atau menghapus file sehingga cadangan Anda tidak akan mewakili gambar yang benar dan akurat dari sistem file pada waktu tertentu. Jika Anda mencoba memulihkan cadangan ini, Anda akan mengalami kerusakan data yang akan menyebabkan crash, dan anomali lainnya.


Opsi: Pencadangan harus dilakukan oleh perangkat lunak khusus dan / atau sistem disk (seperti Acronis pada Windows misalnya yang dapat mencadangkan OS yang berjalan), atau dengan OS sekunder eksternal yang mengakses file OS yang tidak berjalan yang sedang Anda coba lakukan backup atau restore.

!!! Jadi ketika Anda melihat halaman web yang memberitahu Anda untuk menggunakan Deja-dup misalnya untuk melakukan backup Anda, ini hanya berfungsi untuk /homedan kemudian HANYA jika Anda tidak menjalankan program yang mempengaruhi /homesaat Anda menjalankan deja-dup. (Dan bahkan kemudian Anda mungkin ingin menyilangkan jari Anda kecuali jika Anda benar-benar tahu apa yang mungkin menyentuh file Anda melalui daemon.)

Pandangan elips
sumber
0

Saya sudah melakukan ini dengan berhasil pada lingkungan pengujian, dengan fsck dan rsync pada akhirnya untuk meningkatkan peluang salinan perangkat yang baik.

Joao
sumber
1
Bisakah Anda menjelaskan bagaimana Anda menggunakan rsyncuntuk meningkatkan dump seluruh disk (whole-filesystem) yang dibuat  dd? (Dan, jika Anda memiliki akses ke rsync, mengapa Anda tidak hanya menggunakannya sebagai alat cadangan utama Anda daripada yang sekunder, teman satu?) ... ... ... ... ... ... ... ... ... ... ... Tolong jangan menanggapi dalam komentar; edit  jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap.
Scott