Saya memiliki sistem file BTRFS yang ada yang terdiri dari satu disk 500GB dan saya baru saja membeli disk 2TB untuk meningkatkan kapasitas penyimpanan server rumah saya dan saya ingin menambahkan disk baru ke sistem file yang ada. Dari apa yang saya baca, sepertinya tidak ada pengaturan BTRFS yang dapat menangani disk dengan ukuran yang berbeda tanpa menyia-nyiakan perbedaan ukuran antara disk yang lebih besar dan yang lebih kecil, tetapi saya baru menggunakan BTRFS dan saya mungkin telah melewatkan sesuatu, jadi apakah ada pengaturan yang dapat memungkinkan saya untuk menggabungkan dua disk dalam sistem file tanpa membuang ruang?
14
Jawaban:
Btrf dapat menggunakan tingkat serangan yang berbeda untuk data dan Metadata:
default (bahkan untuk satu disk) adalah raid1 untuk metadata (direktori dll) dan raid0 untuk data.
Jika Anda tidak mengubah ini maka kemungkinan Anda tidak akan memiliki masalah menambahkan disk kedua dan menjalankan kembali keseimbangan. karena hanya metadata yang akan disalin ke kedua disk (Anda dapat melihat ukuran metadata Anda dengan
btrfs filesystem df /
). Perlu diketahui bahwa jika salah satu disk Anda gagal Anda kehilangan data.karena disk 2tb sangaaaat lebih besar dari 500g itu mungkin akan memberi Anda peluang yang lebih baik jika Anda menambahkan yang baru dan kemudian menghapus yang lama (kemungkinan satu drive gagal spesifik jauh lebih kecil daripada peluang salah satu drive kegagalan).
jika Anda berencana memiliki array raid nanti (dengan drive berukuran lebih mirip) Anda mungkin ingin membuat kembali sistem file pada drive baru dengan raid1 untuk data dan metadata dan kemudian menyalin semuanya. kemudian ketika Anda memiliki lebih banyak uang, beli drive 2tb kedua.
ps: menggunakan raid1 pada drive singl berarti data akan disimpan di dua lokasi pada drive yang satu (untuk melindungi dari korupsi) dan akan mengurangi ruang penyimpanan Anda (itu ide yang sangat bagus untuk metadata).
pss: serius, jangan tergoda untuk tidak menggunakan raid1 untuk metadata. psss: ada peluang yang sangat bagus bahwa btrf akan mendapatkan kemampuan untuk mengubah level serangan secara dinamis.
sumber
Itu tergantung pada profil apa yang Anda gunakan untuk blok data dari sistem Btrfs multi-perangkat.
Ketika Anda menggunakan RAID0 (default untuk blok data), setiap disk hanya dapat diisi hingga kapasitas disk terkecil dalam array.
Saat Anda menggunakan profil "tunggal" untuk blok data, setiap disk akan terisi hingga kapasitas penuhnya. misalnya
mkfs.btrfs -d single /dev/sda /dev/sdb
Saya memiliki server file dengan disk 2TB dan 3TB. Ini mem-boot Ubuntu 12.10 dari flash drive USB. Pertama saya membuat sistem file Btrfs tanpa
-d single
opsi:Hasilnya adalah saya hanya bisa menyimpan sekitar 4TB (3,45 data file TB biner).
Perhatikan
used 1.82TB
untuk drive 3TB.Lalu saya menggunakan perintah "balance" untuk mengubah blok data dari RAID0 ke profil "tunggal":
Butuh waktu yang sangat lama (sekitar 30 jam) untuk menyeimbangkan data 4TB. Tetapi setelah selesai, saya bisa menggunakan 5TB penuh (4,36 data file TB biner).
sumber
Saya telah menggunakan banyak perangkat dengan btrfs di Ubuntu, dan itu berfungsi dengan baik. Perlu diingat bahwa btrf sebenarnya tidak menerapkan level RAID standar. Ini mengimplementasikan striping dan mirroring opsional, tetapi tidak benar RAID.
sumber
Dimungkinkan untuk menggabungkan drive dengan ukuran berbeda dalam btrfs.
Tetapi saat ini btrfs tidak menangani ENOSPC (Tidak ada ruang tersisa di perangkat) dengan sangat baik.
Misalnya saya menginstal 3 drive dalam array RAID0 (striped). 1x500GB, 1x250GB, 1x160GB.
Anda akan mengasumsikan bahwa Anda akan memiliki ruang disk antara 800-900GB.
Inilah yang
df -h
menunjukkan:/ dev / sdf 848G 615G 234G 73% / media / btrfs
Tapi saya tidak dapat menyimpan data lagi di array. (Tidak ada ruang tersisa)
btrfs filesystem df /media/btrfs
menunjukkan kepada saya ini:Data: total = 612.51GB, digunakan = 612.51GB
Metadata: total = 1.62GB, digunakan = 990.73MB
Sistem: total = 12.00MB, digunakan = 48.00KB
Bahkan penyeimbangan kembali tidak membantu.
Pada milis saya melihat kalibrasi ini:
ukuran drive terkecil * jumlah drive dalam array
(walaupun saya memiliki lebih banyak ruang: 612GB bukannya 160GB * 3 = 480GB)
Jadi dalam keadaan saat ini kemungkinan pengembangan adalah bahwa Anda tidak akan dapat menggunakan semua ruang yang Anda miliki meskipun btrfs mendukung ukuran yang berbeda dalam satu array.
Saya menggunakan Ubuntu 10.10 dengan kernel 2.6.35-22-generik.
sumber
pembaruan: jawaban di bawah ini ditulis sebelum Linux 3.0 dirilis. Linux 3.0 termasuk patch quasi-round-robin.
Ketika Anda melakukan mirroring atau striping data, mirror kedua atau strip strip perlu dialokasikan pada perangkat lain dengan ruang kosong. BTRFS mengalokasikan potongan ke perangkat dalam mode round-robin, yang dapat menyebabkan ruang kosong jika Anda memiliki perangkat dengan ukuran berbeda.
Ada patch quasi-round-robin di dalam pipa untuk memperbaiki ini. Tentu saja, masih tidak mungkin untuk memasangkan semua potongan pada perangkat yang berbeda jika Anda memiliki disk 500GB dan 2TB. Patch ini lebih ditujukan untuk situasi seperti 1 x 1TB + 2 x 500GB di mana setiap disk kecil sebaiknya memilih mirror / stripe dengan disk besar daripada disk kecil lainnya.
Dalam situasi Anda, saya hanya akan menggunakan mode "tunggal" untuk data Anda (
mkfs.btrfs -d single
). Bongkahan tidak dipasangkan dalam mode itu, jadi saya pikir tidak akan ada masalah dengan perangkat dengan ukuran yang berbeda. Saya belum mengujinya.sumber
Masalah ini hanya berlaku untuk pengaturan btrfs-raid1, dari halaman Gotchas :
sumber