Bagaimana cara membuat snapshot btrfs?

22

Partisi saya / home terdiri dari seluruh disk fisik. Ini diformat sebagai btrfs. Saya ingin memotretnya. Saya bingung tentang penamaan subvolume, khususnya.

Saya sadar bahwa ada pertanyaan serupa, tetapi setiap pertanyaan serupa tampaknya menanyakan sesuatu yang berbeda dari apa yang saya tanyakan (dan mereka lebih tua, yang berarti mungkin sudah ketinggalan zaman, mengingat pesatnya perkembangan btrfs). Sebagai contoh, jawaban untuk pertanyaan ini tampaknya bukan jawaban untuk pertanyaan saya karena partisi / home saya adalah volume yang terpisah dan halaman manual untuk btrfs menunjukkan perintah berbeda untuk membuat snapshot sekarang.

masalah serupa lainnya, tidak ada solusi yang solid .
orang lain sama bingungnya dengan saya dalam masalah penamaan

Pertanyaan saya:

Memulai dengan mudah: apakah ini perintah yang benar untuk mengambil snapshot sederhana dari partisi home saya?

btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421

Saya menjadi sangat berani dan mengujinya dan itu tidak berhasil. Kesalahannya adalah error accessing /home/@home. Seperti yang ditunjukkan di bawah ini, @ rumah terdaftar.

Saya jelas bingung tentang nama-nama subvolume. Apakah saya perlu menggunakannya dalam membuat foto? Beberapa contoh menunjukkan mengambil snapshot dari rumah menggunakan /homesebagai parameter sumber, tetapi berdasarkan contoh volume root, menurut saya saya perlu menggunakan /home/@home.

Apakah perintah ini akan berhasil? Dan jika tidak, mengapa?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

Apakah @hanya konvensi penamaan? Apakah ini bermakna?

Berikut ini beberapa output yang mungkin relevan:

btrfs subvolume list /home
ID 256 top level 5 path @home

Saya tidak yakin apa artinya itu, tepatnya. Ketika saya mencobanya btrfs device scanmemberikan kesalahan (mis. Tidak dapat memindai perangkat / dev / sda1). Sistem file saya tidak memiliki kesalahan. Semuanya baik-baik saja.

Ini partisi saya. Menanggapi satu balasan, tidak / home bukan hanya partisi btrfs saya.

/dev/sda1: (boot partition) TYPE="ext2"  
/dev/sda2: (root partition) TYPE="btrfs"  
/dev/sdb1: (home partition) TYPE="btrfs"  
/dev/sdc1: (shared partition) TYPE="btrfs"  
/dev/sdc2: TYPE="swap"  
MountainX untuk Monica Cellio
sumber
komunitas akan memutuskan tentang repo ...
One Zero

Jawaban:

19

Apa perintah yang benar untuk membuat snapshot dari partisi home saya di Ubuntu 12.04?

Mengingat fakta bahwa home berada pada partisi btrfs dan di-mount sebagai / home, perintah yang benar adalah:

sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>

Inilah hasil saya:

Sebelum menjalankan perintah hari ini:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936

Perintah:

$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307  
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'

Setelah menjalankan perintah hari ini:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936  
ID 258 top level 5 path @home/@snapshot_20120611_1307

Satu-satunya masalah dengan metode ini adalah bahwa snapshot muncul ketika Anda ls (daftar) / rumah.

Komunitas Ubuntu Wiki telah diperbarui dengan solusi untuk ini. Ini dia:

Cara bekerja dengan snaphots di layout Ubuntu

Agar dapat bekerja dengan snapshot dari / atau / home dalam tata letak Ubuntu, sangat mudah untuk memasang sistem file btrfs di lokasi yang terpisah, dan bekerja dari atas pohon btrfs, daripada dari subvolume yang terpasang. <- itu solusinya. Sayangnya, itu tidak nyaman .

sudo mount /dev/sdX# /mnt

Untuk membuat snapshot gunakan sintaks yang sama yang saya gunakan di atas:

sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

Ini akan membuat snapshot dari @ subvolume bernama @_snapshot yang terletak juga di atas pohon btrfs. Karena berada di bagian atas pohon, itu tidak akan muncul ketika daftar file dalam volume yang dipasang.

Untuk kembali ke snapshot, Anda hanya perlu mengubah namanya menjadi nama yang di-mount dan reboot ubuntu. Berikut cara mengubah nama:

sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@

Untuk menghapus penggunaan snapshot:

sudo btrfs subvolume delete /mnt/@_badroot

snapshot btrfs adalah subvolume dalam dirinya sendiri, dan mandiri, menghapus @ subvolume lama seperti ini baik-baik saja, asalkan kita memiliki penggantinya.

CATATAN: Perintah btrfs-tools set-defaultakan merusak tata letak Ubuntu.

MountainX untuk Monica Cellio
sumber
Jadi kamu di sana kan? Sekarang Anda harus dapat memasang snapshot Anda.
turbo
Saya sebenarnya belum mencoba memasang mereka. Dan saya baru saja melihat jawaban psusi tentang paket apt-btrfs-snapshot. Itu terlihat menarik, bukan?
MountainX untuk Monica Cellio
Ya saya menyebutkannya di poin ketiga juga. Maaf harus menunjukkannya;)
turbo
Saya sarankan Anda menandai solusi Anda sebagai jawaban.
turbo
Ada solusi untuk snapshot yang muncul ketika Anda ls / home. Saya sedang mengedit jawaban saya dengan info sekarang.
MountainX untuk Monica Cellio
11

Oke, hal pertama yang pertama:

  • Nama subvolume yang Anda lihat adalah @homeseperti yang ditunjukkan oleh btrfs subvolume list /home. Sudah terpasang /home. @ Rumah adalah nama subvolume juga memiliki ID 256 sehingga kemungkinan besar hanya / home Anda diformat sebagai btrfs.

  • Sekarang untuk membuat snapshot @rumah Anda harus mengeluarkan: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • Subvolume dapat memiliki nama apa saja. @ Adalah konvensi Ubuntu saat instalasi. (Jika Anda menggunakan apt-btrfs-snapshotsubvolume root harus dinamai @btw.) Komunitas wiki sangat menyarankan untuk tetap @sebagai root dan @homesebagai rumah karena sudah terpasang seperti itu. Ini sangat penting jika Anda ingin memutar kembali: Anda TIDAK boleh menggunakan btrfs subvolume set-default (bukan sintaks yang disorot dengan sengaja).

  • Untuk btrfs device scanAnda harus menggunakan sudo.

  • Untuk menghapus subvolume, Anda dapat menggunakan sudo btrfs subvolume delete @home_snapshot_20120421

Semua perintah btrf dapat disingkat asalkan tidak ambigu, jadi misalnya sudo btrfs device scandapat dipotong sudo btrfs d s, sudo btrfs dev scatau apa pun di antaranya.

Saya harap itu menjawab pertanyaan Anda. Ada beberapa alat di luar sana untuk mengambil cadangan reguler, btrfs-snapshot-rotasi adalah salah satu contohnya. Gunakan mereka dengan hati-hati karena tidak satupun dari mereka yang benar-benar matang atau mendapatkan daya tarik yang cukup, yaitu mereka mungkin sangat mengandung bug.

turbo
sumber
Saya mendapatkan kesalahan:$ sudo btrfs subvolume snapshot @home home/@snapshot_20120611_1257 ERROR: error accessing '@home'
MountainX untuk Monica Cellio
Juga, saya belum berhasil btrfs device scan. Varian apa pun, termasuk menggunakan sudomemberikan kesalahan "GALAT: tidak dapat memindai perangkat '/ dev / sdX'" di mana X adalah nama yang valid seperti a, a1, b, dll.
MountainX untuk Monica Cellio
@OneZero: Saya belum memiliki semua jawaban, tetapi saya sudah mengetahui perintah yang benar untuk membuat snapshot partisi rumah saya di Ubuntu 12.04 dan saya memberikan info itu sebagai jawaban di bawah ini.
MountainX untuk Monica Cellio
itu memang aneh. Saya memeriksa dengan partisi btrfs saya btrfs sub snap @ /mnt/randomdan berhasil untuk saya. Kemudian lagi saya berada di / mnt di mana @ dipasang. Maaf atas kebingungan
turbo
@turbo: Jawaban Anda sangat membantu. Tidak perlu meminta maaf karena mencoba membantu. Bahkan halaman Ubuntu tidak jelas. Kami akan menyelesaikan semuanya pada akhirnya.
MountainX untuk Monica Cellio
10

Instal apt-btrfs-snapshotpaket, dan menggunakan subcommands nya list, snapshot, deletedan set-default.

Ini adalah skrip yang membungkus btrfsperintah tingkat bawah . Ia bekerja dengan pertama-tama memasang sistem file root btrfs di suatu tempat. Maksud saya root sebenarnya, yang bertentangan dengan /@subvolume yang biasanya dipasang sebagai /. Dengan kata lain, Anda perlu menjalankan mount /dev/sda1 /mntsehingga Anda dapat melihat sub-volume yang akan terdaftar sebagai /mnt/@, /mnt/@home, dan lain-lain yang telah Anda buat. Dari sana Anda bisa btrfs subvolume snapshot /mnt/@home @snapshot-today, yang akan membuat snapshot dari /@homenama /@snapshot-today. Bandingkan ini dengan running btrfs subvolume snapshot /home /home/@snapshot_today, yang sebaliknya membuat snapshot sebagai anak dari /@home, karenanya akan muncul ketika Anda ls /homedan nama aslinya /@home/@snapshot-today.

Bergulir kembali snapshot hanya operasi ganti nama sederhana: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home. Lain kali Anda boot, ketika ia pergi untuk me-mount /@homedi /home, ia akan menemukan foto itu.

Agak sulit untuk membungkus kepala Anda karena Anda harus mengingat perbedaan antara bagaimana btrfs melihat sesuatu vs bagaimana kernel melihat sesuatu, yang dipengaruhi oleh opsi mount (subvol = argumen khusus).

psusi
sumber