Sistem file dalam waktu dekat. ZFS

ZFS dalam urutan kompresi dan deduplikasi linux

bagaimana urutan penulisan data ke sistem file zfs di linux?

satu-satunya dokumen spesifik yang saya temukan adalah di http://docs.Oracle.com/cd/E36784_01/html/E36835/gkknx.html mengatakan: Saat file ditulis, data dikompresi, dienkripsi, dan checksum diverifikasi. Kemudian, data tersebut dihapus duplikatnya, jika memungkinkan.

tetapi jika ini benar, maka deduplikasi tidak akan menghapus duplikat blok yang dikompresi dengan algoritma kompresi yang berbeda.

Saya menguji mysqlf dan saya yakin urutannya adalah: dedup, kompres, enkripsi.

pengaturan pengujian saya:

Zpool membuat tangki /dev/sdb zfs membuat tangki/lz4 zfs membuat tangki/gzip9 zfs mengatur kompresi=lz4 tank/lz4 zfs mengatur kompresi=gzip-9 tank/gzip9 zfs mengatur dedup=di tangki

keluaran daftar zfs

NAMA YANG DIGUNAKAN AVAIL REFER MOUNTPOINT tank 106K 19.3G 19K /tank tank/gzip9 19K 19.3G 19K /tank/gzip9 tank/lz4 19K 19.3G 19K /tank/lz4

buat file acak menggunakan dd if=/dev/urandom of=random.txt count=128K bs=1024

131072+0 Tanggal dan 131072+0 Tanggal dari 134217728 Byte (134 MB) kopiert, 12,8786 dtk, 10,4 MB/s

mengeluarkan daftar zpool ke kumpulan kosong:

NAMA UKURAN ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT tank 19.9G 134K 19.9G - 0% 0% 1.00x ONLINE -

lalu salin file ke dalam kumpulan data dengan algoritma kompresi berbeda:

Cp acak.txt /tank/lz4 cp acak.txt /tank/gzip9

keluaran daftar zfs setelah menyalin:

NAMA YANG DIGUNAKAN AVAIL REFER MOUNTPOINT tank 257M 19.1G 19K /tank tank/gzip9 128M 19.1G 128M /tank/gzip9 tank/lz4 128M 19.1G 128M /tank/lz4

salinan penipuan daftar zpool keluaran:

NAMA UKURAN ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT tank 19.9G 129M 19.7G - 0% 0% 2.00x ONLINE -

faktor deduplikasi 2.0 setelah menyalin satu file ke kumpulan data yang berbeda. Menurut pendapat saya, ini berarti deduplikasi dilakukan data-blok sebelum kompresi dan enkripsi.

tolong bisakah seseorang memeriksa apakah ini benar?

1 jawaban

Saat file ditulis, data dikompresi, dienkripsi, dan checksum diverifikasi. Data tersebut kemudian dihapus duplikatnya jika memungkinkan.

tebakan saya dengan file acak itu salah. ZFS sepertinya membatalkan kompresi jika tidak dapat mencapai rasio kompresi minimum tertentu.

Hal khusus lainnya yang perlu diperhatikan adalah kinerja LZ4 pada data yang tidak dapat dimampatkan sangat tinggi. Hal ini dicapai dengan mengaktifkan mekanisme "pembatalan awal", yang dipicu jika LZ4 tidak dapat memenuhi rasio kompresi minimum yang diharapkan (12,5% pada ZFS).

Sistem file ZFS adalah dasar untuk penyimpanan data yang andal dan murah

Di halaman situs proyek, topik pengorganisasian penyimpanan file disinggung:

  • Bagian pertama
  • Bagian kedua

Dalam artikel ini disebutkan tentang sistem file ZFS, sekarang, seperti yang dijanjikan, mari kita bahas lebih detail.

Pengantar ZFS

Singkatan ZFS berasal dari frasa sistem file zettabyte, yang berarti salah satu sistem file paling modern dan canggih. Misalnya, dari namanya sudah jelas bahwa ini adalah zettabyte berkas sistem, lebih tepatnya FS ini mendukung 256 kuadriliun zettabytes. Sebagai referensi, satu zettabyte sama dengan 1.073.741.824 terabyte!

Mohon maaf kepada pembaca, namun tidak akan ada pernyataan akademis yang besar dalam artikel ini. Saya mengusulkan untuk berkonsentrasi langsung pada aspek praktisnya, yaitu pembuatan gudang data yang toleran terhadap kesalahan dan terukur. Penyimpanan semacam itu tentu saja dibangun menggunakan teknologi array RAID, dan sistem file ZFS memiliki alat standarnya sendiri untuk bekerja dengan disk fisik dan mengaturnya ke dalam RAID-Z array (analog dengan RAID5). Selain itu, tidak seperti teknologi serupa, FS ini secara mandiri memulihkan blok yang rusak dan memperbaikinya dengan cepat tanpa campur tangan pengguna. RAID-Z terus-menerus memeriksa data untuk menjaga integritas data dan dapat mengidentifikasi blok yang memerlukan perakitan ulang. Hal ini dilakukan sebelum data yang diminta sampai ke pengguna.

Keuntungan utama dari FS ini adalah ruang disk yang praktis tidak terbatas dan alat bawaan untuk membuat array RAID-Z yang toleran terhadap kesalahan, yang juga mencakup perekaman data atom. Istilah ini berarti sebagai berikut: data ditulis seluruhnya ke disk atau tidak ditulis sama sekali. Teknologi ini menghindari masalah yang timbul jika terjadi kegagalan jaringan, subsistem daya, dan kegagalan sistem operasi.

Dukungan sistem operasi

ZFS awalnya dikembangkan oleh Sun Microsystems untuk sistem operasi Solaris. Sekarang, berkat sejumlah proyek, sistem file ini telah tersedia untuk sistem operasi lain. Ini termasuk - selain Solaris, juga OpenSolaris, Apple Mac OS X 10.5, FreeBSD, Linux (melalui FUSE atau modul kernel terpisah (ZFS di Linux)). Pilihan OS tertentu untuk proyek Anda atau, lebih sederhananya, untuk penyimpanan file terserah Anda. Yang paling luas FreeBSD dan turunan - NAS4Gratis.

Fitur desain sistem penyimpanan

Saat mengatur gudang data, Anda harus mengevaluasi sejumlah poin. Beberapa pertanyaan yang paling mendesak adalah berapa banyak ruang disk yang perlu disediakan untuk pengguna dan layanan, serta opsi apa yang tersedia untuk memperluas dan menskalakan rangkaian perangkat penyimpanan. Kemudian muncul pertanyaan yang lebih teknis - berapa banyak disk yang dibutuhkan, pengontrol, motherboard, dan konfigurasi apa RAID-Z perlu digunakan. Pertanyaan-pertanyaan ini perlu dijawab sebelum mulai bekerja, jadi mari kita lihat lebih detail.

  • Ruang disk

Berdasarkan kebutuhan dan persyaratan volume penyimpanan yang dibuat, kuantitasnya HDD, modelnya, serta jenis konfigurasi RAID-Z. Izinkan saya segera memberi Anda beberapa rekomendasi:

— keandalan dan kinerja maksimum dicapai bila menggunakan hard drive dari model dan pabrikan yang sama

— OS tidak boleh ditempatkan di penyimpanan itu sendiri; lebih baik menggunakan drive HDD/USB terpisah

— jumlah disk harus sesuai dengan sistem RAID-Z yang dipilih

  • Pilihan RAID-Z

Ada beberapa tipe array RAID-Z, tapi sekarang kita akan melihat dua yang paling praktis dan populer:

- raid-z1 - di sini satu disk dari kumpulan digunakan untuk kontrol paritas (disk minimum untuk mengatur array jenis ini adalah 3). Jika satu disk gagal, array akan bekerja dengan benar; ketika diganti, array akan membangun kembali dirinya sendiri. Jika dua disk gagal, array akan dimusnahkan dan data tidak dapat dipulihkan.

— raid-z2 — dalam hal ini, 2 disk dialokasikan untuk kontrol paritas (disk minimum untuk konfigurasi ini adalah 5). Sistem ini lebih toleran terhadap kesalahan.

  • Hard disk

Seperti disebutkan sebelumnya, yang terbaik adalah menggunakan disk yang identik dari pabrikan yang sama (volume, model, dll.). Pada saat yang sama, ada baiknya mempertimbangkan satu poin penting yang dilewatkan oleh para profesional muda. Sangat disarankan untuk membeli satu disk lagi, mis. melakukan pembelian menggunakan rumus n+1 jumlah disk. Hal ini akan mengurangi waktu henti dan risiko kehilangan informasi karena “cacat pabrik” atau kerusakan pada HDD selama pengangkutan, dan juga akan mengurangi waktu penggantian hard drive yang rusak di kemudian hari. Perlu dicatat bahwa ZFS mendukung "hot spare", yaitu. Anda dapat mengonfigurasi kumpulan dan disk sehingga salah satunya akan digunakan untuk penggantian panas (tanpa menghentikan penyimpanan), termasuk dalam mode otomatis. Perlu juga dipahami bahwa kecepatan penyimpanan bergantung pada jumlah hard drive (dengan mendistribusikan beban ke seluruh drive selama membaca dan menulis).

  • Komponen sistem lainnya

Berdasarkan kebutuhan ruang penyimpanan Anda, sebaiknya pilih matras. papan, pengontrol, catu daya, dan casing server dengan kemampuan untuk diperluas. Saat mengatur penyimpanan kelas perusahaan, Anda sebaiknya hanya menggunakan MB dan RAM dengan kontrol paritas (ECC)!

  • Skalabilitas sistem

Seperti disebutkan dalam paragraf sebelumnya, MB dan casing server harus mendukung instalasi perangkat tambahan. Pada saat yang sama, jika penyimpanan tingkat pemula atau menengah dibuat (tanpa persyaratan serius untuk keandalan dan kinerja sistem), pengontrol SATA dapat menjadi penghambat.

Meringkaskan

Sistem file ZFS memiliki sejumlah kemampuan unik untuk digunakan HDD dan mengaturnya ke dalam kumpulan data yang toleran terhadap kesalahan dan terukur. Namun, untuk mendapatkan semua manfaat FS ini, Anda harus menggunakan setidaknya dua harddisk.

Izinkan saya membuat daftar singkat keunggulan dan properti utama ZFS:

  • alat bawaan untuk bekerja dengan partisi HDD dan mengatur RAID-Z
  • tidak ada koneksi ke peralatan
  • tidak sensitif terhadap pemadaman listrik yang tidak direncanakan
  • penggantian otomatis HDD yang gagal, koreksi kesalahan, dan pembangunan kembali RAID
  • mendukung volume, file, kumpulan ukuran besar, serta skalabilitas penyimpanan yang mudah
  • administrasi ZFS Pools yang cepat dan nyaman
  • Seiring bertambahnya HDD, kinerja penyimpanan meningkat
  • deduplikasi dan kompresi data

Kerugian dari sistem file ini meliputi:

  • persyaratan tinggi untuk sumber daya CPU dan RAM
  • penyimpanan yang digunakan untuk data penting perusahaan harus dibangun menggunakan ECC RAM.

Artikel berikutnya akan membahas tentang praktik - bekerja dengan disk, membuat dan mengelola kumpulan data.

Pada postingan sebelumnya saya sudah berulang kali menyebutkan zfs. Terlebih lagi, ternyata hal itu membutuhkan memori dan prosesor yang melebihi standar kekanak-kanakan. Pertanyaannya tetap – mengapa? Saya akan segera mengatakan bahwa saya tidak berpura-pura lengkap, dll. Anda dapat mencari apa itu zfs di Wikipedia. Bagi yang berminat lebih serius, saya sarankan googling saja panduan administrasi zfs(sepertinya dalam bahasa Rusia). Tujuan saya adalah menjelaskan mengapa tiba-tiba ada sistem file tingkat perusahaan di rumah. Catatan Pembaca, khususnya postingan bagian kedua, diharapkan memiliki pemahaman yang yakin tentang apa itu array disk, misalnya. RAID5. Jika tidak ada pemahaman, kecil kemungkinan susunan seperti itu layak dibuat di rumah dan membaca teks ini.


1. Integritas sistem file. Setiap orang pernah menghadapi situasi di mana sistem file harus diperbaiki. Berhasil atau tidak terlalu sukses. zfs dibuat sedemikian rupa sehingga bahkan tidak memiliki utilitas seperti Windows chkdsk atau Linux fsck. Situasi di mana sistem file berakhir dalam keadaan tidak konsisten adalah hal yang mustahil. Diimplementasikan melalui Copy-on-write (kita tidak menulis data di atas yang lama, tetapi memilih blok baru, menulis di sana, jika semuanya baik-baik saja, kita mengganti pointer dari data lama ke yang baru. Untuk lebih lanjut detailnya, lihat Google). Akibatnya, struktur logis disk tidak akan rusak karena ada sesuatu yang dimatikan pada waktu yang salah atau listrik padam. Nah, apa yang terekam di 10 detik terakhir akan hilang? (Namun, disk dapat terbakar secara fisik saat diputar dengan listrik).

2. Keyakinan bahwa Anda tidak akan membaca sampah karena mengira Anda sedang membaca data. Besi tidak sempurna. Misalnya, jika kontak pada kabel SATA berbunyi, apa yang akan ditulis ke disk sama sekali berbeda dari apa yang ada di memori. Dan saya perhatikan, tidak seorang pun akan mengetahui hal ini untuk waktu yang lama. Pengalaman profesional saya berhubungan dengan percetakan. Lebih dari sekali saya harus melihat gambar pada output yang normal hingga tengah - dan kemudian ada noise. zfs menyimpan checksumnya dengan setiap blok data. Saat membaca data, jumlahnya secara otomatis dibandingkan. Tampaknya sangat sederhana...

3. Keyakinan bahwa data yang disimpan tidak busuk. Ya, data cenderung memburuk selama penyimpanan. Hal ini diketahui oleh mereka yang mempercayai pemasaran produsen cakram DVD sekitar 100 tahun yang lalu dan mencatat arsip mereka di dalamnya. Hal ini sangat penting terutama untuk data “dingin” yang tidak bergerak dalam waktu lama. Arsip, foto lama, dll. Tampaknya sederhana untuk memeriksa data - Anda perlu membacanya dan membandingkan checksumnya. Untuk zfs sudah jelas - baca saja filenya. Untuk pengecekan rutin, ada perintah yang memeriksa semua yang ada di latar belakang.

4. Snapshot sistem file. Kemudahan mengingat keadaan sistem file pada waktu tertentu, menyimpan snapshot tersebut dan memutarnya kembali jika perlu. Melindungi dari tindakan bodoh manusia. Model Copy-on-write memungkinkan fungsionalitas seperti itu - kami tidak melepaskan blok data yang dihapus atau ditimpa, tetapi menyimpan tautan ke blok tersebut dalam snapshot. Akibatnya, snapshot memakan banyak ruang karena berisi data yang telah berubah dibandingkan dengan momen saat ini, dan bukan seluruh jumlah data.

Ini semua untuk data tanpa redundansi, seperti satu disk. Tapi zfs memungkinkan Anda untuk membuat array yang berlebihan, mirip dengan (dan lebih unggul dari) RAID1 (mirror), RAID5 (redundansi dalam ukuran satu disk), RAID6 (dua) dan bahkan “RAID7” (menyimpan data ketika tiga disk dalam array gagal). Array dapat digabungkan untuk membuat sesuatu seperti RAID10 atau RAID50. Dan mengapa array zfs lebih baik?

5. Kemandirian perangkat keras. Untuk membuat hardware RAID5, khususnya RAID6, diperlukan pengontrol RAID yang mahal. zfs raidz adalah opsi RAID perangkat lunak yang hanya memerlukan akses disk, seperti port SATA. zfs raidz mungkin dibuat pada port pengontrol yang berbeda dan dari disk dengan model berbeda (ada pro dan kontra dalam menggunakan model disk yang berbeda). Dan itu ditransfer ke hampir semua perangkat keras tempat Anda dapat menghubungkan drive. Misalnya, saya berulang kali mengatur ulang disk antara port SATA, secara transparan mengimpor array yang dibuat dalam mode IDE pada pengontrol, dalam mode ACHI, dan pada pengontrol SAS. Meskipun sistem operasi memberi nomor pada disk berdasarkan port dan mendefinisikan disk IDE, ACHI, dan SAS secara berbeda, zfs mampu menangani semua ini secara diam-diam (tentu saja hingga batas tertentu. Anda dapat dengan bodohnya merusak apa pun yang Anda inginkan.)

6. Ketidakhadiran Lubang demi Rekor. (Wiki) Artinya, pemusnahan data jika disk array tidak dapat menerima data. Pengontrol RAID yang mahal dilengkapi dengan baterai yang memungkinkan Anda menyimpan data yang tidak sempat masuk ke disk selama berhari-hari dan menulisnya ke array ketika ada kesempatan.

7. Ketahanan Kegagalan Disk. Mari kita memiliki RAID5 dan zfs raidz1 yang sama. Di masing-masing disk salah satu rusak, kami menggantinya dengan yang baru. Dan selama proses penggantian (yang memakan waktu berjam-jam untuk array besar), sebuah blok pada salah satu disk yang tersisa dalam array tidak dapat dibaca.

Untuk RAID5, ini adalah bencana dalam banyak kasus. Array dinyatakan rusak dan tidak dapat dibaca, kami membawanya ke profesional yang akan memulihkan informasi dengan jumlah yang rapi.

Untuk zfs raidz1, dilaporkan file mana yang mengandung blok buruk, sisanya disinkronkan. Dan jika setidaknya ada sesuatu yang dapat dibaca dari disk yang diganti dan belum diputuskan sambungannya dari komputer, informasi dari disk tersebut juga akan digunakan untuk sinkronisasi. Dan dengan tingkat kemungkinan yang tinggi kita tidak akan kehilangan data sama sekali.

8. Bekerja dengan data payload, bukan keseluruhan array. Misalnya, jika saya mengganti disk dalam array RAID5, waktu pemulihan bergantung pada ukuran array. Jika di zfs raid1 - dari volume informasi yang ditulis ke array, karena ruang yang tidak digunakan untuk data tidak akan disinkronkan.

Masih banyak lagi kelebihannya, tapi inilah yang paling menarik minat saya untuk rumah saya. Dalam aplikasi korporat, ada yang lain (kompresi data, deduplikasi...). Saya akan menyebutkan hal-hal yang penting bagi saya kekurangan.

1. Tidak mungkin untuk memperluas array raidz ke satu disk. Anda dapat mengganti semua disk terabyte dengan triter - dan menambah volumenya. Anda dapat merakit raidz lain dari 3 (atau lebih) disk dan menambahkannya ke disk yang sudah ada. Namun Anda dapat mengubah raidz1 dari 5 disk menjadi raidz1 dari 6 hanya dengan membocorkan informasi di suatu tempat, menghancurkan array, dan membuat yang baru.

2.Array tidak dapat dikurangi. Anda hanya dapat meningkatkannya. Misalnya, dimungkinkan untuk mengganti sekrup terabyte dalam array dengan sekrup dua terabyte. Namun hal ini tidak mungkin dilakukan untuk data berukuran setengah terabyte, meskipun arraynya menyimpan 1 kilobyte informasi.
Anda dapat menyambungkan yang lain ke array, tetapi Anda tidak dapat memutuskan sambungannya. Semua prosedur tersebut hanya melalui penyimpanan informasi di suatu tempat di luar, menghancurkan array dan membuat yang baru.

3. Intensitas sumber daya. zfs terus-menerus menghitung checksum, yang menimbulkan beban pada prosesor dan menghabiskan memori untuk cache. Dalam aplikasi perusahaan, ada pendapat - satu gigabyte memori per terabyte array. Di rumah, 330 atom dan memori 4 GB sudah cukup bagi saya (dan sebelumnya berfungsi dengan 2 GB - saya tidak melihat banyak perbedaan). Meskipun saya tidak mempunyai cukup atom untuk sepenuhnya memanfaatkan jaringan gigabit, 40-50 MB/s memenuhi kebutuhan saya. Namun jika perangkat kerasnya sudah tua dan bahkan jauh lebih lemah, zfs bukan untuk Anda.

Ya, saya akan mengingatkan Anda jika Anda menyukainya - masuk NAS4gratis, yang menjadi tempat seluruh rangkaian postingan dikhususkan, manajemen NAS, termasuk operasi dengan zfs, terjadi melalui antarmuka web yang dapat dimengerti oleh pemula.

ZFS seharusnya keren, tapi saya sedikit kesal karena sepertinya ZFS terjebak di masa lalu - bahkan sebelum ZFS diakui sebagai sistem file yang keren dan terbaik. Ini tidak fleksibel, tidak memiliki integrasi flash modern, dan tidak didukung langsung oleh sebagian besar sistem operasi. Namun saya menyimpan semua data berharga saya di ZFS karena ZFS memberikan tingkat keamanan terbaik untuk lingkungan SOHO (kantor kecil/kantor rumah). Dan itulah kenapa.

Arahan pertama dari sistem penyimpanan: jangan kembalikan data yang salah!

Revolusi ZFS. Sekitar tahun 2006

Dari 2007 hingga 2010: ZFS mengalami penurunan

Namun sesuatu yang buruk terjadi pada ZFS dalam perjalanan menuju kejayaannya: tuntutan hukum, masalah perizinan, dan FUD - taktik manipulasi psikologis dari para simpatisan.

Awan badai pertama kali muncul pada tahun 2007, ketika NetApp menggugat Sun dengan alasan bahwa ZFS melanggar paten WAFL mereka. Sun menggugat balik pada tahun yang sama - dan pertarungan hukum pun berlanjut. Meskipun ZFS tentu saja tidak memiliki kode NetApp, mekanisme copy-on-write untuk snapshot mirip dengan WAFL, dan sebagian dari kami di industri khawatir bahwa gugatan NetApp akan berdampak pada ketersediaan ZFS open source. Risiko ini cukup bagi Apple untuk berhenti mendukung ZFS di Mac OS X 10.6 “Snow Leopard” tepat sebelum OS tersebut dirilis.

Berikut blog bagus tentang ZFS dan Apple dari Adam Leventhal, yang mengerjakan proyek di perusahaan tersebut: ZFS: Sistem File Baru Apple yang Tidak Ada

Saat itu, Sun sedang mengalami masa-masa sulit, dan Oracle memanfaatkan kesempatan tersebut untuk membeli perusahaan tersebut. Hal ini menimbulkan keraguan baru tentang masa depan ZFS, karena Oracle tidak terlalu menyukai dukungan publik luas untuk proyek gratis. Dan lisensi CDDL yang diterapkan Oracle pada kode ZFS ternyata tidak kompatibel dengan GPLv2, yang digunakan oleh Linux, sehingga tidak mungkin menggunakan ZFS pada OS server paling populer di dunia.

Meskipun proyek OpenSolaris berlanjut setelah akuisisi Oracle, dan ZFS disertakan dalam FreeBSD, hal ini sebagian besar terjadi di luar sektor perusahaan. Tentu saja, NexentaStor dan GreenBytes membantu mendorong ZFS ke sektor perusahaan, namun kurangnya dukungan Oracle terhadap server Sun juga mulai berdampak.

Masalah apa yang dialami ZFS saat ini?

OpenZFS praktis tidak berbeda dengan sistem file sepuluh tahun yang lalu.

Banyak yang masih skeptis terhadap deduplikasi, yang memerlukan banyak memori mahal. Dan maksud saya mahal: Hampir setiap FAQ ZFS secara eksplisit memerlukan memori khusus ECC dan minimal 8GB. Berdasarkan pengalaman saya sendiri dengan FreeNAS, 32 GB cukup untuk server kecil aktif yang menjalankan ZFS, dan biayanya $200-300 bahkan pada harga saat ini.

Dan ZFS tidak pernah benar-benar beradaptasi dengan memori flash yang kini ada di mana-mana. Meskipun flash dapat digunakan untuk cache ZIL dan L2ARC, manfaatnya meragukan untuk sistem dengan RAM yang cukup, dan ZFS tidak memiliki fitur penyimpanan hybrid yang sebenarnya. Sungguh menggelikan bahwa dokumentasi ZFS tersebar dimana-mana membicarakan tentang flash SLC multi-gigabyte padahal sudah ada drive 3D NAND multi-terabyte di pasaran. Dan tidak ada yang membicarakan NVMe, meskipun ini adalah standar untuk PC kelas atas.

Dan ada juga pertanyaan tentang fleksibilitas, atau lebih tepatnya ketiadaan fleksibilitas. Setelah Anda membuat volume ZFS, volume tersebut pada dasarnya terkunci seumur hidup. Hanya ada tiga cara untuk memperluas kumpulan penyimpanan:

  • Ganti sepenuhnya semua disk di kumpulan dengan disk berkapasitas lebih besar (yang keren, tapi mahal).
  • Buat urutan disk dengan kumpulan disk yang berbeda (yang dapat menyebabkan kinerja tidak seimbang, redundansi, dan banyak kesalahan bodoh lainnya).
  • Bangun kumpulan baru dan transfer kumpulan data di sana menggunakan perintah zfs send (inilah yang saya lakukan, meskipun ada beberapa trik di sini).

Selain metode ketiga, Anda tidak memiliki pilihan untuk mengecilkan kumpulan ZFS. Lebih buruk lagi, Anda tidak dapat mengubah jenis perlindungan data tanpa membangun kembali seluruh kumpulan, termasuk menambahkan disk paritas kedua dan ketiga. FreeNAS dengan hati-hati menghabiskan banyak waktu untuk mencoba menghalangi pemula menggunakan RAID-Z1, dan mengeluh jika mereka tetap memilihnya.

Ini semua mungkin tampak seperti pertengkaran kecil dan tidak penting, tetapi jika digabungkan, semuanya secara subyektif mengirim ZFS kembali ke Abad Pertengahan setelah menggunakan Drobo, Synology, atau sistem penyimpanan cloud modern. Dengan ZFS Anda harus "membeli disk, membeli banyak memori, membuat susunan RAID dan tidak pernah menyentuhnya lagi", yang tidak sesuai dengan penggunaan penyimpanan modern.

Pilihan apa?

Saya kira saya tidak menampilkan ZFS dengan cara yang menguntungkan. Ini dulunya revolusioner, tetapi sekarang mulai menunjukkan keterbatasan dan keluar dari konteks dunia modern dengan penyimpanan data flash. Jadi apakah ada alternatif lain?

Linux memiliki beberapa pengelola volume dan sistem file yang layak, dan sebagian besar menggunakan LVM atau MD dan ext4. Orang-orang sistem file sangat tertarik dengan Btrfs, yang menggabungkan fungsionalitas manajer volume dan sistem file bergaya ZFS, tetapi dengan fleksibilitas tambahan di luar apa yang digunakan ReiserFS. Dan Btrfs sebenarnya bisa menjadi “ZFS untuk Linux,” namun pengembangannya terhenti baru-baru ini, setelah bug mengerikan tahun lalu dengan hilangnya data akibat serangan RAID 5 dan 6, dan hampir tidak ada informasi lain yang terdengar tentangnya. Namun saya masih berpikir bahwa dalam lima tahun ke depan saya akan merekomendasikan pengguna Linux untuk menggunakan Btrfs, terutama karena potensinya yang kuat untuk digunakan dalam container.

Untuk Windows, Microsoft juga akan meluncurkan sistem file generasi berikutnya, ReFS, menggunakan pohon B+ (mirip dengan Btrfs), dengan penskalaan dan ketahanan yang luar biasa serta fitur perlindungan data. Dikombinasikan dengan Storage Spaces, Microsoft akan memiliki sistem penyimpanan generasi berikutnya yang layak untuk Windows Server yang bahkan dapat menggunakan SSD dan 3D-XPoint sebagai tingkatan atau cache.

Lalu ada Apple, yang dikabarkan telah mengubah sistem penyimpanannya beberapa kali sebelum memilih APFS, yang dirilis tahun ini di macOS High Sierra. APFS dalam banyak hal mirip dengan Btrfs dan ReFS, meskipun diterapkan dengan cara yang sangat berbeda, dengan lebih fokus pada pengguna. Meskipun lebih rendah di beberapa area (data pengguna tidak di-checksum dan kompresi tidak didukung), APFS adalah sistem yang Anda perlukan untuk iOS dan macOS. Dan APFS adalah paku terakhir dalam peti mati ide "ZFS di Mac OS X".

Masing-masing dari tiga sistem operasi utama sekarang memiliki sistem file generasi berikutnya (dan manajer volume). Linux memiliki Btrfs, Windows memiliki ReFS dan Storage Spaces, dan macOS memiliki APFS. FreeBSD tampaknya tetap berkomitmen pada ZFS, tetapi ini hanyalah sebagian kecil dari pasar. Dan setiap sistem tingkat perusahaan telah mengalami kemajuan jauh melampaui apa yang dapat dilakukan oleh sistem tingkat perusahaan berbasis ZFS dan ZFS dari Sun, Nexenta, dan iXsystems.

Namun ZFS masih jauh lebih unggul dibandingkan sistem file lama untuk pengguna rumahan. Karena kurangnya pemeriksaan integritas, redundansi dan pemulihan kesalahan, NTFS (Windows), HFS+ (macOS) dan ext3/4 (Linux) sama sekali tidak cocok untuk penyimpanan data jangka panjang. Dan bahkan ReFS dan APFS, karena kurangnya pemeriksaan integritas, tidak cocok jika kehilangan data tidak dapat diterima.

Posisi Penulis: Gunakan ZFS (untuk saat ini)

Memang menyedihkan untuk mengatakannya, tetapi pada tahun 2017, ZFS adalah sistem file terbaik untuk penyimpanan data jangka panjang dan berskala besar. Meskipun terkadang sulit untuk digunakan (kecuali pada FreeBSD, Solaris, dan peralatan khusus), keandalan ZFS dan sifatnya yang telah terbukti menjadikannya satu-satunya alat yang dapat dipercaya untuk menyimpan data di luar sistem penyimpanan perusahaan. Lagi pula, menyimpan data dengan andal adalah satu-satunya hal yang seharusnya dilakukan oleh sistem file.

Di dunia sistem *nix, sistem file ZFS dan Btrfs menjadi semakin populer. Popularitas ini memang pantas didapatkan - tidak seperti pendahulunya, mereka tidak memiliki beberapa masalah dan memiliki banyak keunggulan yang tidak dapat disangkal. Dan belum lama ini mereka diberi status stabil. Semua ini mendorong saya untuk menulis artikel ini.

PERINGATAN!

Beberapa perintah yang dijelaskan di sini dapat menghancurkan data Anda secara permanen. Periksa tiga kali masukan Anda sebelum menekan Enter.

Mungkin, sebelum melanjutkan ke praktik, perlu diberikan sedikit penjelasan tentang apa itu sistem file generasi baru. Saya akan mulai dengan ZFS. FS ini dikembangkan untuk Solaris dan saat ini dicabangkan ke versi OpenZFS, karena Oracle telah menutup kode sumbernya. Di masa depan, ZFS akan disebut sebagai fork. Berikut adalah beberapa fitur utama ZFS:

  • ukuran maksimum sistem file sangat besar hingga tidak terbayangkan;
  • kumpulan penyimpanan, yang memungkinkan Anda menggabungkan beberapa perangkat berbeda;
  • checksum tingkat sistem file, dengan kemampuan untuk memilih algoritma;
  • berdasarkan prinsip COW - data baru tidak menimpa data lama, tetapi ditempatkan di blok lain, yang membuka kemungkinan seperti snapshot dan deduplikasi data;
  • kompresi data saat itu juga - seperti halnya checksum, beberapa algoritme didukung;
  • kemampuan untuk mengelola sistem file tanpa me-reboot.

Btrfs mulai dikembangkan bertentangan dengan ZFS oleh Oracle - bahkan sebelum pembelian Sun. Saya tidak akan menjelaskan fitur-fiturnya - secara umum, serupa di ZFS dan Btrfs. Perbedaan dari ZFS adalah sebagai berikut:

  • dukungan untuk versi file (disebut generasi dalam terminologi Btrfs) - dimungkinkan untuk melihat daftar file yang telah berubah sejak snapshot dibuat;
  • kurangnya dukungan untuk zvol, perangkat blok virtual tempat Anda dapat menempatkan, misalnya, partisi swap - tetapi kekurangan ini sepenuhnya dikompensasi oleh perangkat loopback.

Memperkenalkan ZFSonLinux

Untuk menginstal ZFSonLinux, Anda memerlukan prosesor 64-bit (32 dimungkinkan, tetapi pengembang tidak menjanjikan stabilitas dalam hal ini) dan, oleh karena itu, distribusi 64-bit dengan kernel minimal 2.6.26 - Saya menggunakan Ubuntu 13.10. Memori juga harus cukup - setidaknya 2 GB. Diasumsikan bahwa paket dasar yang diperlukan untuk membangun dan mengkompilasi modul dan kernel sudah terinstal. Unduh paket tambahan dan unduh tarball yang diperlukan:

$ sudo apt-get install alien zlib1g-dev uuid-dev libblkid-dev libselinux-dev berpisah lsscsi wget $ mkdir zfs && cd $_ $ wget http://bit.ly/18CpniI $ wget http://bit.ly/ 1cEzO0V

Kami membongkar kedua arsip, tetapi pertama-tama kami mengumpulkan SPL - lapisan kompatibilitas Solaris, dan baru kemudian ZFS itu sendiri. Saya perhatikan bahwa karena kami menginstal ZFSonLinux versi terbaru, DKMS (mekanisme yang memungkinkan Anda untuk secara otomatis membangun kembali modul kernel saat ini dengan driver perangkat setelah memperbarui versi kernel) tidak tersedia, dan jika kernel diperbarui, Anda harus melakukannya merakit kembali paket secara manual.

$ tar -xzf spl-0.6.2.tar.gz $ tar -xzf zfs-0.6.2.tar.gz $ cd spl-0.6.2 $ ./configure $ make deb-utils deb-kmod

Sebelum mengkompilasi ZFS, Anda perlu menginstal header, dan pada saat yang sama kami akan menginstal sisa paket yang baru dikompilasi:

$ sudo dpkg -i *.deb

Terakhir, kami merakit dan menginstal ZFS:

$ cd ../zfs-0.6.2 $ ./configure $ make deb-utils deb-kmod $ sudo dpkg -i *.deb


Mentransfer sistem file root ke ZFS dengan enkripsi dan pembuatan RAIDZ

Katakanlah Anda menginginkan sistem file yang aman, terenkripsi, namun pada saat yang sama toleran terhadap kesalahan. Dalam kasus sistem file klasik generasi lama, Anda harus memilih antara enkripsi dan toleransi kesalahan, karena hal-hal ini agak tidak kompatibel. Namun, di ZFS, dimungkinkan untuk “merekatkannya” menjadi satu. Implementasi kepemilikan sistem file saat ini mendukung enkripsi. Implementasi terbuka dengan kumpulan versi 28 tidak mendukung hal ini - tetapi tidak ada yang menghalangi Anda menggunakan cryptsetup untuk membuat volume LUKS (atau beberapa volume) dan menyebarkan kumpulan di atasnya. Mengenai toleransi kesalahan, ZFS mendukung pembuatan array multi-disk. Teknologi ini disebut RAIDZ. Berbagai variannya memungkinkannya bertahan dari kegagalan satu hingga tiga disk, dan, karena beberapa fitur ZFS, bebas dari salah satu kelemahan mendasar dari array RAID stripe + paritas tradisional - lubang tulis (situasi dengan RAID 5 / RAID 6, ketika selama operasi aktif merekam dan mematikan, data pada disk pada akhirnya berbeda).

INFORMASI

Enkripsi memperlambat pemrosesan data. Ini tidak boleh digunakan pada komputer lama.

Tentu saja, cara termudah adalah jika Anda tidak memiliki sistem apa pun - dalam hal ini, Anda tidak perlu terlalu repot. Namun kita tidak hidup di dunia yang ideal, jadi saya akan memberi tahu Anda cara mentransfer sistem yang sudah terinstal tanpa partisi /boot ke array RAIDZ di atas volume LUKS.

Pertama-tama, Anda perlu membuat partisi ini sendiri - tanpanya, transfer tidak mungkin dilakukan, karena sistem tidak bisa boot. Mari kita asumsikan untuk kesederhanaan bahwa ada satu partisi dengan Ubuntu pada disk, dan kami ingin membuat RAIDZ tingkat pertama (analog dengan RAID 5, ini memerlukan setidaknya tiga perangkat, tetapi saya tidak mengerti gunanya melakukan RAIDZ di tingkat yang lebih tinggi di rumah). Dengan menggunakan editor partisi pilihan Anda, kami membuat dua partisi - satu dengan ukuran 256–512 MB, di mana /boot akan ditempatkan, dan satu lagi dengan ukuran tidak kurang dari partisi root saat ini, dan kami ulangi prosedur terakhir pada semua partisi. tiga hard drive. Mari kita baca ulang tabel partisi dengan perintah

# partprobe /dev/disk/by-id/ata-VBOX_HARDDISK_VB203f5b52-a7ff5309

dan buat sistem file (ext3) pada partisi yang lebih kecil:

# mke2fs -j /dev/disk/by-id/ata-VBOX_HARDDISK_VB203f5b52-a7ff5309-part2 -L boot

Tentu saja, dalam kasus Anda, ID hard drive akan berbeda. Selanjutnya, Anda perlu mengenkripsi partisi tempat volume LUKS akan berada, dan ulangi prosedur ini untuk semua partisi lain yang pada akhirnya akan menjadi host array RAIDZ:

# cryptsetup -h=sha512 -c=aes-cbc-essiv:sha256 -s=256 -y luksFormat /dev/disk/by-id/ata-VBOX_HARDDISK_VB203f5b52-a7ff5309-part3 # cryptsetup -h=sha512 -c=aes- cbc-essiv:sha256 -s=256 -y luksFormat /dev/disk/by-id/ata-VBOX_HARDDISK_VB2fdd0cb1-d6302c80-part1 # cryptsetup -h=sha512 -c=aes-cbc-essiv:sha256 -s=256 -y luksFormat /dev/disk/by-id/ata-VBOX_HARDDISK_VB781404e0-0dba6250-part1

Menghubungkan volume terenkripsi:

# cryptsetup luksOpen /dev/disk/by-id/ata-VBOX_HARDDISK_VB203f5b52-a7ff5309-part3 crypto0 # cryptsetup luksOpen /dev/disk/by-id/ata-VBOX_HARDDISK_VB2fdd0cb1-d6302c80-part1 crypto1 # cryptsetup luksOpen /dev/dis k/by - id/ata-VBOX_HARDDISK_VB781404e0-0dba6250-part1 kripto2

Dan buat kumpulan ZFS:

# zpool buat -o ashift=12 zroot raidz dm-nama-crypto0 dm-nama-crypto1 dm-nama-crypto2

Selanjutnya, kita membuat dua sistem file bersarang:

# zfs buat zroot/ROOT # zfs buat zroot/ROOT/ubuntu-1310-root

Mari kita lepas semua sistem file ZFS dan atur beberapa sistem file dan properti kumpulan:

# zfs umount -a # zfs set mountpoint=/ zroot/ROOT/ubuntu-1310-root # zpool set bootfs=zroot/ROOT/ubuntu-1310-root zroot

Terakhir, kami mengekspor kumpulan:

# zpool ekspor zroot



Migrasi dan konfigurasi sistem

Pertama, salin direktori /boot ke partisi yang tidak terenkripsi sehingga Anda dapat menginstal bootloader di sana:

# mkdir /mnt/boot # mount /dev/disk/by-label/boot /mnt/boot # cp -r /boot/* /mnt/boot/ # umount /mnt/boot

Setelah ini, kita akan memindahkan grub ke partisi /boot terpisah, yang mana kita akan menambahkan baris ke /etc/fstab

# <...>LABEL=kesalahan boot /boot ext3=remount-ro 0 0

Pasang dan buat ulang konfigurasi grub:

# grub-mkconfig -o /boot/grub/grub.cfg

Untuk memeriksanya, reboot. Jika semuanya baik-baik saja, hapus konten lama dari direktori /boot, ingat untuk meng-unmount partisi terlebih dahulu.

Saatnya untuk mengkloning Ubuntu. Keseluruhan proses kloning dijelaskan dalam artikel versi lengkap, yang dapat ditemukan di situs web] [, di sini saya juga akan menyentuh beberapa seluk-beluk terkait ZFS. Untuk memuat normal dari kumpulan ZFS, diperlukan beberapa skrip initramfs. Untungnya, Anda tidak perlu membuatnya - semuanya ada di GitHub. Unduh repositori (semua tindakan dilakukan di chroot):

# git clone http://bit.ly/1esoc8i

Dan salin file ke tempat yang diperlukan. Satu-satunya perubahan yang saya lakukan adalah mengganti rpool pool dengan zroot. Sekarang Anda perlu menulis hostid ke file /etc/hostid. Ini perlu dilakukan karena ZFS di-porting dari Solaris dan lapisan kompatibilitas memerlukannya:

# hostid >/etc/hostid

Terakhir, kita perlu membuat initramfs. Jangan pernah menggunakan update-initramfs . Ini menimpa file yang ada, dan jika timbul kesulitan, mem-boot dari sistem normal akan menjadi masalah. Gunakan perintah sebagai gantinya

# mkinitramfs -o /boot/initrd.img-$(uname -r)-crypto-zfs

Partisi /boot harus di-mount.

Maka Anda perlu menambahkan item menu ke grub. Karena konfigurasi yang agak rumit (tiga cryptovolume, di atasnya terdapat sistem file yang tidak biasa untuk Linux), ini tidak dapat dilakukan di chroot, jadi kami keluar ke sistem utama (untuk saat ini) dan tambahkan sesuatu seperti baris berikut:

# vi /etc/grub.d/40_custom menuentry "Ubuntu crypto ZFS" ( #<...>linux /vmlinuz-3.11.0-14-generic boot=zfs rpool=zroot initrd /initrd.img-3.11.0-14-generic-crypto-zfs )

Kami menjalankan update-grub , reboot, pilih item menu baru dan bersukacita.

Menyetel ZFS dan trik berguna dengan Btrfs

Dalam kebanyakan kasus, pengguna rumahan tidak mengkonfigurasi FS mereka. Namun, pengaturan default ZFS tidak selalu cocok untuk digunakan di rumah. Ada juga fitur yang cukup menarik, yang penggunaannya memerlukan keterampilan tertentu dalam bekerja dengan sistem file tertentu. Selanjutnya, saya akan menjelaskan penyempurnaan ZFS untuk memenuhi kebutuhan rumah dan fitur-fitur ini.

Dalam hal menggunakan Btrfs, tidak ada masalah khusus yang diamati. Namun demikian, beberapa kehalusan masih terjadi - terutama jika ada keinginan tidak hanya untuk “mengatur dan melupakannya”, tetapi untuk memanfaatkan peluang baru. Saya akan membicarakan beberapa di antaranya di bawah.

Nonaktifkan perubahan waktu akses file dan optimalkan untuk drive SSD

Seperti yang Anda ketahui, dalam sistem *nix, setiap kali Anda mengakses file, waktu aksesnya berubah. Hal ini memicu rekaman ke media setiap saat. Jika Anda bekerja dengan banyak file secara bersamaan atau memiliki drive SSD, hal ini mungkin tidak dapat diterima. Pada sistem file klasik, untuk menonaktifkan penulisan atime, Anda harus menambahkan opsi noatime ke opsi perintah mount atau ke /etc/fstab. Di ZFS, perintah berikut digunakan untuk menonaktifkannya (tentu saja, dalam kasus Anda, FSnya mungkin berbeda):

# zfs setel atime=mati zroot/ROOT/ubuntu-1310-root

Di Btrfs, selain opsi noatime yang disebutkan di atas, ada opsi ssd dan ssd_spread yang lebih optimal. Yang pertama, mulai dari kernel 2.6.31, biasanya diinstal secara otomatis, yang kedua ditujukan untuk drive SSD murah (mempercepat pengoperasiannya).

ZFS - duplikasi file

Saat bekerja dengan data yang sangat penting, terkadang ada pemikiran menakutkan bahwa listrik akan mati atau salah satu hard drive akan mati. Yang pertama sangat mungkin terjadi dalam kondisi Rusia, dan yang kedua, meskipun tidak mungkin, juga terjadi. Untungnya, pengembang ZFS tampaknya telah mengalami hal ini lebih dari sekali dan menambahkan opsi untuk menggandakan data. Dalam hal ini, jika memungkinkan, file ditempatkan pada disk independen. Anggaplah Anda memiliki FS zroot/HOME/home-1310 . Untuk menyetel tanda duplikasi, ketikkan perintah berikut:

# zfs mengatur salinan=2 zroot/HOME/home-1310

Selain itu, jika dua salinan tampaknya tidak cukup, Anda dapat menentukan nomor 3. Dalam hal ini, redundansi rangkap tiga dilakukan dan jika dua dari tiga hard drive tempat salinan ini berada gagal, ZFS akan tetap memulihkannya.

Menonaktifkan pemasangan otomatis di ZFS

Saat menghubungkan kumpulan, secara default semua sistem file bersarang dipasang secara otomatis. Hal ini mungkin menimbulkan kebingungan karena, misalnya, dalam kasus konfigurasi di atas, pengguna tidak memerlukan akses ke zroot atau zroot/ROOT. Dimungkinkan untuk menonaktifkan automounting menggunakan dua perintah berikut (untuk kasus ini):

# zfs set canmount=noauto zroot/ROOT # zfs set canmount=noauto zroot

Kompresi data

ZFS juga mendukung kompresi data. Pada volume terenkripsi, ini hanya masuk akal untuk meningkatkan entropi (dan ini bukan fakta), tetapi secara umum, untuk media yang lambat, kompresi meningkatkan kinerja dan dapat menghemat ruang disk secara signifikan. Pada saat yang sama, sekarang kapasitas hard drive sudah diukur dalam terabyte, kecil kemungkinannya ada orang yang benar-benar perlu menghemat ruang, dan ini berdampak lebih besar pada kinerja dan konsumsi RAM. Jika Anda membutuhkannya, Anda dapat mengaktifkannya sebagai berikut:

# zfs mengatur kompresi=di zroot/ROOT/var-log

Di Btrfs, untuk mengaktifkan kompresi Anda perlu meletakkan opsi kompres di /etc/fstab.

Pembuatan snapshot otomatis di ZFS

Seperti yang Anda ketahui, ZFS memungkinkan Anda membuat snapshot. Namun, malas membuatnya dengan pena, dan ada kemungkinan melupakannya begitu saja. Solaris memiliki layanan Time Slider untuk mengotomatiskan prosedur ini, tetapi ini adalah bencana! - walaupun menggunakan fungsi ZFS, itu bukan bagian darinya, jadi tidak termasuk dalam ZFSonLinux. Tapi jangan khawatir: ada skrip untuk membuatnya secara otomatis untuk Linux juga. Mari unduh dan atur hak yang diperlukan:

# wget -O /usr/local/sbin/zfs-auto-snapshot.sh http://bit.ly/1hqcw3r # chmod +x /usr/local/sbin/zfs-auto-snapshot.sh

Mari kita ubah awalan untuk snapshot terlebih dahulu, karena secara default ini tidak terlalu “menceritakan”. Untuk melakukannya, ubah parameter opt_prefix dalam skrip dari zfs-auto-snap menjadi snapshot. Selanjutnya, mari kita atur beberapa variabel sistem file:

# zfs set com.sun:auto-snapshot=true zroot/ROOT/ubuntu-1310-root # zfs set snapdir=terlihat zroot/ROOT/ubuntu-1310-root

Parameter pertama diperlukan untuk skrip, sedangkan parameter kedua memungkinkan akses langsung ke snapshot, yang juga diperlukan untuk skrip.

Sekarang Anda dapat membuat skrip untuk cron (/etc/cron.daily/autosnap). Pertimbangkan kasus ketika Anda perlu membuat snapshot setiap hari dan menyimpannya selama sebulan:

#!/bin/bash ZFS_FILESYS="zroot/ROOT/ubuntu-1310-root" /usr/local/sbin/zfs-auto-snapshot.sh --quiet --syslog --label=daily --keep=31 " $ZFS_FILESYS"

Untuk melihat snapshot yang dibuat, gunakan perintah zfs list -t snapshot, dan untuk memulihkan status, gunakan zfs rollback snapshot_name.

ZFS - contoh yang kompleks

Di bawah ini adalah perintah yang membuat beberapa sistem file dalam satu kumpulan untuk tujuan berbeda dan menunjukkan fleksibilitas ZFS.

# zfs buat -o kompresi=on -o mountpoint=/usr zroot/ROOT/usr # zfs buat -o kompresi=on -o setuid=off -o mountpoint=/usr/local /zroot/ROOT/usr-local # zfs buat -o kompresi=on -o exec=off -o setuid=off -o mountpoint=/var/crash zroot/ROOT/var-crash # zfs buat -o exec=off -o setuid=off -o mountpoint=/var /db zroot/ROOT/var-db # zfs buat -o kompresi=on -o exec=off -o setuid=off -o mountpoint=/var/log zroot/ROOT/var-log # zfs buat -o kompresi=gzip -o exec=off -o setuid=off -o mountpoint=/var/mail zroot/ROOT/var-mail # zfs buat -o exec=off -o setuid=off -o mountpoint=/var/jalankan zroot/ROOT/ var-jalankan # zfs buat -o exec=off -o setuid=off -o salinan=2 -o mountpoint=/home zroot/HOME/home # zfs buat -o exec=off -o setuid=off -o salinan=3 -o mountpoint=/home/rom zroot/HOME/home-rom

Defragmentasi Btrfs

Defragmentasi di Btrfs tidak terlalu diperlukan, tetapi dalam beberapa kasus ini memungkinkan Anda mengosongkan ruang yang ditempati. Itu hanya dapat dilakukan pada sistem yang terinstal. Saya perhatikan bahwa akses ke data selama defragmentasi dipertahankan - baik membaca maupun menulis. Untuk memulai prosedur defragmentasi, gunakan perintah berikut:

# defrag sistem file btrfs /

Pada kernel lama, prosedur ini menghapus semua salinan COW, seperti snapshot dan data yang dihapus duplikatnya, jadi jika Anda menggunakannya pada kernel yang lebih lama dari 2.6.37, defragmentasi hanya akan merugikan Anda.

RAID di Btrfs

Seperti ZFS, Btrfs mendukung array multi-volume, tetapi tidak seperti ZFS, Btrfs disebut secara klasik. Namun saat ini hanya RAID 0, RAID 1 dan kombinasi keduanya yang didukung, RAID 5 masih dalam pengujian alpha. Untuk membuat array RAID 10 baru, cukup gunakan perintah ini (dengan perangkat Anda):

# mkfs.btrfs /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Nah, jika Anda perlu mengonversi sistem file yang ada ke RAID, ada perintah untuk ini:

# perangkat btrfs tambahkan /dev/sdb1 /dev/sdc1 /dev/sdd1 / # saldo btrfs mulai -dconvert=raid10 -mconvert=raid10 /

Perintah pertama menambahkan perangkat ke sistem file, sedangkan perintah kedua menyeimbangkan kembali semua data dan metadata untuk mengubah kumpulan volume ini menjadi array RAID 10.

Cuplikan Btrf

Tentu saja, Btrfs mendukung snapshot - dan selain snapshot biasa, snapshot dengan kemampuan menulis juga tersedia (selain itu, snapshot tersebut dibuat secara default). Untuk membuat snapshot gunakan perintah berikut:

# btrfs subvol snap -r / /.snapshots/2013-12-16-17-41

Informasi lebih lanjut tentang pembuatan snapshot, baik manual maupun otomatis, dapat ditemukan di artikel “Airbag”, yang diterbitkan di ] edisi April 2013. Di sini saya akan memberi tahu Anda bagaimana, jika Anda memiliki snapshot, Anda dapat melacak file mana yang telah berubah sejak pembuatannya. Untuk tujuan ini, Btrfs memiliki apa yang disebut pembuatan file. Fitur ini digunakan untuk keperluan internal, tetapi ada perintah yang memungkinkan Anda melihat daftar perubahan terkini - kami akan menggunakannya. Pertama kita mencari tahu generasi file saat ini:

# btrfs subvol temukan-baru / 99999999

Jika tidak ada generasi seperti itu (yang hampir pasti), generasi terakhir akan diproduksi. Sekarang mari kita jalankan perintah yang sama pada snapshot:

# btrfs subvol temukan-baru /.snapshots/28-17-12-2013 99999999

Jika generasinya berbeda, dan mereka akan berbeda, maka kita melihat file apa yang telah berubah sejak snapshot dibuat. Dalam kasus saya, perintahnya adalah sebagai berikut:

#btrfs subvol temukan-baru/96 | awk "(cetak $17)" | urutkan | unik

NILFS2 adalah sistem file lain dengan dukungan COW

Dimulai dengan kernel 2.6.30, Linux menambahkan dukungan untuk FS lain - NILFS2. Singkatan ini berarti implementasi baru dari sistem file terstruktur log. Fitur utama FS ini adalah setiap beberapa detik, pos pemeriksaan secara otomatis dibuat di dalamnya - perkiraan analog snapshot dengan satu perbedaan: setelah beberapa waktu, mereka dihapus oleh pengumpul sampah. Namun, pengguna dapat mengubah pos pemeriksaan menjadi snapshot, sehingga pos pemeriksaan tersebut menjadi tidak terlihat oleh pengumpul sampah, atau sebaliknya. Dengan demikian, NILFS2 dapat dianggap sebagai semacam “Wikipedia”, di mana setiap perubahan dicatat. Karena fitur ini - menulis data baru bukan di atas data yang sudah ada, tetapi di blok baru - ini sempurna untuk drive SSD, di mana, seperti yang Anda tahu, penimpaan data tidak diperbolehkan.

Ya, NILFS2 memang tidak setenar ZFS atau Btrfs. Namun dalam beberapa kasus penggunaannya akan lebih dibenarkan.

Kesimpulan

Saya mungkin tampak subjektif, tetapi ZFS, jika dibandingkan dengan Btrfs, menang. Pertama, beberapa fitur Btrf masih dalam tahap awal, meskipun sudah berusia lebih dari lima tahun. Kedua, ZFS, semua hal lain dianggap sama, lebih teruji. Dan ketiga, terdapat lebih banyak alat untuk bekerja dengan ZFS serta kemampuannya.

Di sisi lain, betapapun bagusnya ZFS, karena alasan perizinan, kecil kemungkinannya ZFS akan disertakan dalam kernel arus utama. Jadi, kecuali pesaing lain muncul, Anda harus menggunakan Btrfs.

Facebook dan Btrfs

Pada bulan November 2013, pemimpin tim pengembangan Btrfs Chris Mason pindah ke Facebook. Joseph Batsik, pengelola cabang btrfs-next, melakukan hal yang sama. Mereka menjadi bagian dari departemen perusahaan yang berspesialisasi dalam pengembangan tingkat rendah, di mana mereka sekarang mengerjakan kernel Linux - khususnya, mereka mengerjakan Btrfs. Pihak pengembang juga menyatakan bahwa Facebook tertarik dengan pengembangan Btrfs, sehingga komunitas sama sekali tidak perlu khawatir.