solusi cadangan yang diaktifkan btrfs

14

Dengan btrf yang mencapai produksi di Oracle EL 14 bulan ini (bersama-sama dengan fsck dan scrubbing dari Linux 3.2) saya berpikir untuk mendesain ulang solusi cadangan saya saat ini untuk menggunakannya. Perhatikan bahwa saya sedang berpikir untuk melakukannya untuk sejumlah kecil data, kurang dari 10TB, itu cukup statis (kurang dari 1% berubah setiap hari). Singkatnya solusi cadangan SMB / SOHO.

Apa yang harus dilakukan cadangan:

  1. lakukan snapshot LVM dari ext [234] / XFS / JFS di server produksi
  2. rsync/ transfer data yang diubah ke btrfs di server cadangan
  3. snapshot sistem file btrfs
  4. jatuhkan foto lama saat ruang kosong hampir habis

Pro:

  • Semua file mudah tersedia, tidak perlu dekompresi atau pemasangan loop
  • Jepretan sebelumnya juga mudah tersedia ...
  • ... jadi saya dapat membagikannya sebagai saham Samba hanya baca (dengan dukungan salinan bayangan)
  • Snapshots mengambil jumlah ruang minimal berkat copy-on-write (snapshot tanpa perubahan hanya membutuhkan beberapa KiB pada disk)
  • Konsistensi cadangan yang tinggi: checksum pada file, menggosok semua data dan redundansi bawaan

Pertanyaan:

  • Apakah ada beberapa solusi cadangan (dalam bentuk Bacula, BackupPC, dll.) Yang, atau dapat dengan mudah dibuat, mengetahui sistem file copy-on-write?
  • Atau apakah saya perlu menggunakan rsyncsolusi di rumah ?
  • Apa yang dilakukan orang-orang dengan kotak ZFS yang didedikasikan untuk cadangan untuk membuat cadangan mesin Linux mereka?
Hubert Kario
sumber
Tidak bisa melihat cons! Salah satunya adalah bahwa snapshot Btrf hanya setara dengan cadangan inkremental (tidak ada salinan fisik per cadangan file Anda pada disk). Yang bisa jadi penting ketika menghadapi masalah permukaan disk. Perhatikan bahwa Anda dapat memaksa satu duplikasi dengan dukungan RAID1 asli yang termasuk dalam Btrfs.
vaab
1
@ avab: itu a pro- lebih dari dua salinan tidak benar-benar diperlukan jika Anda punya checksum dan secara aktif menggosok FS, tiga mungkin akan datang dengan dukungan RAID6. Seperti yang saya katakan, ini adalah pengaturan untuk sistem cadangan khusus, bukan salinan "cadangan" di dalam FS pada komputer tunggal. Itu akan menjadi "RAID bukan cadangan" dan "snapshot tidak cadangan". cp -adan rsyncuntuk itu ...
Hubert Kario
Saya juga mempertimbangkan untuk mencadangkan ke btrf, tapi saya hanya memikirkan rsync -a --delete /home/user /mnt/butterfs/backups/ && snapper create- selain membuat snapshot setelah mencadangkan, apa yang Anda maksudkan dengan sadar-sapi?
Unhammer
1
@unhammer: menggunakan rsynctanpa --inplaceAnda akan mendapatkan banyak salinan dari data yang sama di sistem file jarak jauh. (rsync biasanya menyalin data ke file tersembunyi sementara dan kemudian memindahkannya ke file yang lama, dengan sistem file Copy-On-Write Anda mendapatkan dua salinan pada data yang tidak berubah dengan cara ini)
Hubert Kario

Jawaban:

5

Saya telah melakukan pencarian ekstensif pada minggu lalu untuk hal yang serupa. Saya tidak menemukan solusi untuk melakukan semua 4 langkah. Ada banyak blog dari pengguna rumahan yang mencoba ' rsync to btrfs ' -jenis cadangan, dan semua wiki Btrf utama membahas cara melakukan snapshot Btrfs.

Ada juga beberapa orang yang mencoba berbagai cara memutar foto Btrf . Namun, Anda adalah orang pertama yang saya lihat yang ingin memutar foto berdasarkan ruang disk. Saya bermain dengan btrfs-snap sendiri yang menciptakan satu set snapshot per jam, mingguan dan bulanan, dan itu bagus dan sederhana.

Proyek Dirvish tampaknya memenuhi banyak kebutuhan Anda. Beberapa pengembang berusaha mengintegrasikan Dirvish dengan Btrfs . Namun, proyek Dirvish tampaknya agak macet .

Pada titik waktu ini, Anda berada di depan kurva.

Stefan Lasiewski
sumber
Yah, saya hanya ingin solusi cadangan tanpa rasa sakit seperti BackupPC: ketika ruang disk rendah, itu hanya menghapus data lama (foto lama). Sementara saya takut bahwa saya berada di depan kurva, tidak seperti ZFS belum bersama kami selama beberapa tahun terakhir ...
Hubert Kario
3

Menurut Avi Miller (ceramahnya selama LinuxConf.AU), sebuah btrf mengirim / menerima sedang dikerjakan. Ini akan lebih cepat daripada rsync karena tidak perlu menelusuri direktori untuk menemukan perubahan dalam file .. Saya tidak tahu apakah ada tanggal rilis yang diharapkan.

Namun, ada utilitas yang dibangun ke dalam btrfs-progs yang mencantumkan setiap file yang telah berubah di antara snapshots / dll. Btrfs subvolume find-new

borring
sumber
2
Saya ingin mem- backup ke btrfs, bukan dari ...
Hubert Kario
2

Saya sedang mengerjakan sistem cadangan OS yang mirip dengan BackupPC. Saya sudah memikirkan hal ini. Apa yang telah menghentikan saya dari implementasi sebenarnya adalah bahwa Anda tidak dapat menghubungkan antara subvolume. Anda juga hanya dapat membuat snapshot subvolume -> Satu subvolume per klien cadangan. Dengan demikian fitur deduplikasi tingkat file tidak dapat hidup berdampingan dengan pendekatan ini. Dan deduplikasi tingkat file itu biasanya menghemat banyak ruang. Apakah Anda ingin mencadangkan hanya satu server?

Jika btrfs memiliki deduplikasi level blok, masalah ini mungkin dapat dihindari, tetapi biasanya lambat juga ...

Maka pendekatan seperti itu tentu saja memerlukan integrasi yang ketat dengan satu sistem file (btrfs), jadi ini harus menjadi fitur opsional.

Saya bertanya karena saya sedang berpikir tentang menambahkan fitur sapi seperti itu, tetapi tidak tahu apakah saya harus melakukannya karena kekurangan yang tercantum di atas.

Sunting: UrBackup mendukung backup seperti yang dijelaskan dalam pertanyaan sekarang dengan kernel Linux> = 3.6 (dengan dukungan reflink lintas volume). Lihat cara mengaturnya.

UrOni
sumber
1
salinan reflink lintas-subvolume (semi-hardlink yang dilakukan oleh cp --reflink) sudah diterapkan atau akan diterapkan dalam waktu dekat. De-duplikasi online dalam FS lambat (kurang-lebih) atau membutuhkan RAM dalam jumlah besar (ZFS) sehingga tergantung pada itu akan benar - benar menjadi fitur buruk dalam perangkat lunak cadangan. Either way, perangkat lunak cadangan berorientasi btrfs akan memiliki audiens yang besar, itu seharusnya ext3 berikutnya.
Hubert Kario
Satu hal lagi: Anda dapat mengatasi masalah ini dengan menjaga semua server dalam satu subvolume - Anda dapat reflink menyalin di antara mereka (untuk dikurangi) sambil mempertahankan kemampuan snapshot. Anda hanya perlu memotret setelah dedupe, Anda masih dapat memotret setelah mencadangkan hanya satu server! Pencadangan tidak akan mengambil lebih banyak ruang jika Anda melakukan pencadangan satu per satu. Atau Anda dapat membuat cadangan semua server, dedupe dan hanya kemudian snapshot. Dengan cara ini Anda dapat membuat cadangan beberapa server sekaligus.
Hubert Kario
Kamu benar. Tidak memikirkan itu. Untuk kenyamanan Anda dapat symlink ke foto yang tepat di volume lain. Saya juga melihat tambalan untuk lintas-volume hardlink (atau --reflink) tetapi sepertinya tidak membuatnya / atau akan membuatnya menjadi arus utama. Saya benar-benar akan melihatnya! Sekarang Anda mungkin melakukan backup Anda melalui ssh. Proyek saya dikhususkan untuk jaringan lokal ... (penemuan otomatis dan sebagainya)
UrOni
Ya, tambalan masih hidup dan berfungsi, sayangnya tidak di jalur utama, saya tidak tahu mengapa. Saya mencoba untuk mengganggu Chris Mason tentang hal itu. Adapun proyek Anda, jangan ragu untuk mengirimkan saya garis, saya dengan senang hati akan mengujinya (waktu mengizinkan). Pasti terdengar menarik.
Hubert Kario
Akhirnya tambalan itu mendarat di kernel Linux 3.6. Dengan reflink lintas-perangkat itu sebenarnya tidak banyak bekerja. Saya telah menulis di sini tentang hal itu: urbackup.org/blog/?p=83 Kode ini ada di cabang "berikutnya" di repositori git. Saya sedang mengujinya.
UrOni
1

Halaman wiki btrfs " Use Cases " berisi daftar beberapa alat: SnapBtr , Snapper, btrfs-time-machine, UrBackup.

Ada proposal untuk alat bawaan yang disebut autosnap :

Menggunakan fitur autosnap, Anda dapat mengonfigurasi btrfs untuk mengambil snapshot biasa atau berbasis peristiwa dan selanjutnya mengelola snapshot secara otomatis.

Autosnap tidak hanya tentang mengambil snapshot, tetapi juga mengelola snapshot yang dibuat, seperti yang sekarang Anda dapat mengkonfigurasi autosnap untuk menghapus snapshot berdasarkan ruang filesystem yang digunakan.

Namun, pada Oktober 2013, wiki menyatakan bahwa "Fungsi autosnap saat ini tidak termasuk dalam versi btrfs hulu."

ignis
sumber
1

Saya memiliki frustrasi yang sama, jadi saya akhirnya membuat beberapa skrip yang saya sebut snazzer . Bersama-sama mereka menawarkan snapshotting, pemangkasan, pengukuran dan transportasi melalui ssh (tetapi hari ini dapat mengirim / menerima ke / dari sistem file lokal juga). Pengukuran hanyalah laporan tentang sha512sum dan tanda tangan PGP dari jalur snapshot. Ini tidak cukup siap untuk rilis tetapi saya akan senang mendengar umpan balik jika ada yang punya waktu untuk memeriksanya di tahap awal ini.

CLI-hanya pada saat ini, tapi saya telah mengambil beberapa waktu untuk membuatnya mudah digunakan pada sistem dengan banyak sub-volume btrfs - biasanya saya harus sub-volume terpisah untuk /var/cache, /home, dll yang mungkin perlu dikeluarkan dari snapshotting atau memiliki lebih / kurang jadwal pemangkasan yang agresif.

Saya khawatir algoritma pemangkasan murni membuat keputusan tentang keberadaan kumpulan snapshot dan tanggalnya, tidak ada yang bisa dilakukan pemangkasan sampai kendala penggunaan disk terpenuhi - yang mana yang Anda hapus dulu? Kurangi jumlah hourly pertama, atau daylies? Mungkin menjatuhkan yang tertua, Eg. yearlies? Penyebaran yang berbeda akan memiliki prioritas yang berbeda; dan saya tidak bisa tahu apakah ini satu-satunya tingkat cadangan (dalam hal ini Anda tidak boleh menjatuhkan cadangan terlama jika ada kewajiban hukum / asuransi), atau hanya tingkat menengah (dalam hal ini Anda mungkin mengarsipkan tahun-tahun tersebut di tempat yang aman di tempat lain).

Saya akan menambahkan dukungan ZFS dan / atau interoperabilitas di beberapa titik; sebagian besar ditulis dalam shell dan perl posix-ish karena keinginan yang kuat untuk dependensi "nol" saat ini, semoga saya memiliki implementasi alternatif python yang lebih bersih yang dipelihara secara paralel di beberapa titik.

csirac2
sumber
kecuali FS Anda sangat besar dan sering berubah, ada sedikit perbedaan antara menyimpan snapshot dari satu bulan yang lalu, dan hanya 1 per hari dari minggu lalu dibandingkan dengan satu per hari selama sebulan penuh - btrf perlu menyimpan selisih antara Keadaan saat ini dan yang dari bulan lalu - saya menyimpan hanya harian, tetapi karena terkompresi dan berbeda saya dapat menyimpannya selama setengah tahun dengan mudah - kemudian menjatuhkan jaminan tertua untuk membebaskan setidaknya beberapa ruang
Hubert Kario
Yah, saya memiliki sejumlah VM yang tidak sepele untuk melacak - beberapa dengan file sementara besar (yaitu snapshot dengan luasan unik) yang seperti yang Anda sarankan dapat memperoleh manfaat dari pemangkasan snapshot menengah. Jadi sementara memang benar bahwa pemangkasan perantara tidak membebaskan disk sebanyak menjatuhkan yang tertua, apa yang bisa saya katakan ... menjaga hanya jumlah minimum snapshot di sekitar dan melakukannya dengan sistem file SAP seperti btrfs tampaknya sama seefisien itu mendapat, tapi saya menyadari ada lebih banyak untuk memilih solusi yang tepat dari itu :)
csirac2
@ csirac2 apakah Anda mempertahankannya? Saya mencari solusi jenis ini. Saya tertarik pada snazzer jika sedang dipelihara secara aktif. GitHub tampaknya tidak menunjukkan aktivitas terbaru ...
MountainX-for-Monica
@MountainX Ketika saya tidak mendapatkan banyak umpan balik awal tentang snazzer, saya agak kehilangan antusiasme .. Ketika saya mulai menulisnya, hanya ada kakap OpenSUSE dan beberapa skrip shell / python yang beredar untuk mengotomatisasi btrfs. Pada saat saya sempat membaginya dengan dunia, banyak pilihan lain telah muncul, dan saya akan mengatakan btrbk tampaknya memiliki banyak momentum (kurangnya pengujian otomatis [mungkin diperbaiki sekarang?] Sudah memprihatinkan). Jika saya harus melakukan semuanya lagi, saya mungkin akan berkolaborasi dengan penulis sanoid untuk menambahkan kompatibilitas btrfs di sana. Tertarik mendengar pikiran Anda.
csirac2