Bagaimana cara mengganti nama subvolume BTRFS?

24

Saya memiliki sistem file BTRFS dengan satu set subvolume di dalamnya. Sejauh ini baik. Saya perlu mengubah nama subvolume, sayangnya btrfsprogram tidak memungkinkan saya untuk mengubah nama subvolume. Pencarian dengan Google telah menghasilkan beberapa hasil, satu mengatakan saya bisa saja mv, yang lain mengatakan saya bisa hanya snapshotdengan nama baru dan menghapus subvolume lama. Sebelum saya crash partisi saya dan harus memuatnya kembali dari cadangan (ini cukup besar), pertanyaan saya adalah:

  • Apa cara terbaik saat ini untuk mengganti nama subvolume?
  • Apakah boleh untuk mvitu saja , atau akankah itu membatalkan beberapa struktur internal?
  • Apakah membuat snapshot baru dan menghapus subvolume lama cara untuk pergi, atau apakah ini memiliki beberapa kelemahan?

Saya tahu semuanya masih eksperimental, tetapi untuk tujuan saya itu sudah berfungsi dengan baik (sejauh ini, dan saya memiliki cadangan tambahan untuk setiap hari).

hochl
sumber
1
senang mendengar btrfs bekerja dengan baik untuk Anda. Ini bekerja dengan baik untuk saya sejauh ini. Tidak ada masalah.
MountainX untuk Monica Cellio

Jawaban:

16

Hanya mvitu. Itulah cara yang disarankan dalam dokumentasi komunitas Ubuntu .

Dan untuk lebih memperjelas mengapa itu adalah cara yang tepat untuk melakukannya, berikut adalah kutipan dari panduan sysadmin btrfs:

Jepretan

Sebuah snapshot hanyalah sebuah subvolume yang membagikan datanya (dan metadata) dengan beberapa subvolume lainnya, menggunakan kemampuan KKP btrfs. Setelah snapshot [dapat ditulis] dibuat, tidak ada perbedaan status antara subvolume asli, dan subvolume snapshot baru. Untuk memutar kembali ke snapshot, lepas pasang subvolume asli yang dimodifikasi, dan pasang snapshot di tempatnya. Pada titik ini, subvolume asli dapat dihapus jika diinginkan. Karena snapshot adalah subvolume, snapshot dari snapshot juga dimungkinkan.

MountainX untuk Monica Cellio
sumber
8

ada beberapa hal penting yang perlu diperhatikan. Penamaan:

btrfs Subvolume - insidesistem file wadah data independen . Ini direpresentasikan sebagai direktori FS yang ada. Jika Anda membuat subvolume baru, itu akan kosong, siap untuk menggunakan blok data logis di dalam sistem file. Sangat nyaman digunakan di mana data harus dipisahkan secara logis misalnya VM yang berbeda atau klien yang berbeda pada subvolume yang berbeda. Ini memungkinkan very fastpenghapusan semua blok data logis hanya dengan perintah hapus subvolume.

btrfs Snapshot - salinan existingsubvolume dengan semua datanya saat snapshot dilakukan. Dapat digunakan sebagai cadangan operasional untuk mengembalikan pengaturan atau perubahan, mis. Buat snapshot subvolume, buat perubahan (VM atau data), uji apakah semuanya baik-baik saja, setelah masa tenggang hapus snapshot. Penting untuk dicatat: snapshot hanya dapat dibaca ( -rberalih) dan dengan demikian dapat digunakan sebagai blok kenaikan perubahan FS dan mungkin ditransfer ke BTRFS lain!

Batasan BTRFS saat ini (2016-12-30):

Menyalin atau memindahkan data antar subvolume, mis. mv dir1/dataset1 dir_subvolume1/Menghasilkan semua io nyata untuk menyalin data ke subvolume lain dan dalam hal perpindahan, menghapus dari yang asli. Dan sangat efisien menyalin banyak data hanya dengan membuat referensi dan dengan demikian menggunakan fitur COW dari BTRFS:

cp -a --reflink=always dir1/dataset1 dir_subvolume1/

dan jika perlu:

rm -rf dir1/dataset1

Hanya baca Subvolume snapshot dapat diubah namanya (dipindahkan dengan mv) pada tingkat direktori yang ada, tetapi tidak dapat diubah namanya / dipindahkan ke tingkat subdirektori yang berbeda. misalnya mv /btrfs/subvol_snap1 /btrfs/.snaphotstidak mungkin, menghasilkan tidak banyak menjelaskan kesalahan: mv: cannot move 'subvol_snap1' to '.snapshots/subvol_snap1': Read-only file system. Agar dapat memindahkan snapshot seperti itu, Anda perlu membuat snapshot read-only baru dari snapshot read-only yang ada ke lokasi pilihan yang baru, dan kemudian menghapus yang lama:

btrfs sub snap -r /btrfs/subvol_snap1 /btrfs/.snaphots/subvol_snap1
btrfs sub del /btrfs/subvol_snap1

Hanya untuk hidup yang lebih mudah:

btrfs sub list /btrfs

Saya harap ini akan menghemat banyak waktu untuk semua penggemar btrf baru :)

Arunas Bartisius
sumber
4

Jika Anda ingin mengganti nama volume root menjadi subvolume bersarang, Anda perlu memotretnya dan kemudian melakukan a find $ROOT_VOL -xdev -deleteuntuk menghapus konten volume root sebelumnya. Manipulasi terbalik (mengganti nama subvolume ke volume root) tampaknya tidak mungkin.

Tobu
sumber