apakah Anda menggunakan partisi hanya untuk cadangan?
Rui F Ribeiro
1
Subvolume @homedipasang di /home, dengan btrbkcadangan dalam subvolume btrbk-snap. Untuk sistem file yang mendukung hingga 2 ^ 64 snapshot, saya berharap ini memiliki cara untuk meningkatkan ukuran metadata ...
@ EmmanuelRosa saya punya. Bagian mana yang menurut Anda berguna?
Tom Hale
Ada yang kedua yang membahas tentang menyeimbangkan kembali metadata. Mungkin dengan filter yang tepat Anda dapat memberikan lebih banyak ruang untuk potongan metadata.
Emmanuel Rosa
Jawaban:
7
TL; DR Metadata (jika btrf tidak mengalami kondisi ruang rendah umum) secara otomatis akan meningkat. Dalam hal tidak ada ruang bebas yang tidak terisi ada, peningkatan otomatis akan ditentukan. Namun, jika bagian data btrfstelah dialokasikan lebih banyak ruang daripada yang dibutuhkan, maka dimungkinkan untuk mendistribusikan ulang ini. Ini disebut balance-ing dalam btrfs.
Dengan asumsi bahwa ada cukup memori yang tidak terisi pada perangkat blok pendukung btrfs, maka bagian Metadata dari sistem file mengalokasikan - seperti yang diasumsikan oleh OP - secara otomatis memori untuk menambah / memperluas metadata.
Oleh karena itu, jawabannya adalah: Ya (asalkan tidak ada memori rendah / kondisi ruang kosong di btrfs) , maka metadata akan meningkat secara otomatis, seperti:
(1) Kami telah melihat beberapa pengaturan alokasi awal btrfs (pada 40GBperangkat)
(2) Seperti dapat dilihat, ruang yang dialokasikan dalam sistem file untuk menyimpan Metadata adalah 1,55GiB, di mana 1,33GiB, maka hampir semua digunakan (ini mungkin situasi yang terjadi dalam kasus OP)
(3) Kami sekarang memprovokasi penambahan metadata yang akan ditambahkan. Untuk melakukannya, kami menyalin folder / home menggunakan --reflink=alwaysopsi cpperintah.
$> cp -r --reflink=awlways /home /home.copy
(4) Karena (seperti yang kita asumsikan ada banyak file di / home), yang ditambahkan banyak data baru ke sistem file, yang karena kita --reflinkmenggunakan sedikit atau tidak ada ruang tambahan untuk data aktual, ia menggunakan Copy-on-Write, mekanisme. Singkatnya, sebagian besar Metadata ditambahkan ke sistem file. Karena itu kita dapat memiliki pandangan lain
Seperti yang bisa dilihat, ruang yang dialokasikan untuk Metadata yang digunakan dalam hal btrfsini secara otomatis meningkat diperluas.
Karena ini sangat otomatis, biasanya tidak terdeteksi oleh pengguna. Namun, ada beberapa kasus, sebagian besar di mana seluruh sistem file sudah cukup terisi. Dalam kasus tersebut, btrfsmungkin mulai "gagap" dan gagal untuk secara otomatis meningkatkan ruang yang dialokasikan untuk Metadata. Alasannya adalah, misalnya, bahwa semua ruang telah dialokasikan ke bagian-bagian (Data, Sistem, Metadata, GlobalReserve). Yang membingungkan, bisa jadi belum ada ruang yang jelas. Contohnya adalah output ini:
Seperti dapat dilihat, sistem semuanya 40GiB, namun alokasi agak tidak aktif balance, karena sementara masih ada ruang untuk data file baru, Metadata (seperti dalam kasus OP) rendah. Alokasi memori otomatis untuk perangkat yang mendukung sistem btrfsfile tidak lagi dimungkinkan (cukup tambahkan total alokasi, 38.12G + 1.55G + .. ~ = 40GiB).
Namun karena ada kelebihan ruang kosong yang dialokasikan ke databagian sistem file, sekarang dapat berguna, diperlukan untuk menyeimbangkan btrfs. Saldo berarti mendistribusikan kembali ruang yang sudah dialokasikan.
Dalam kasus OP, dapat diasumsikan bahwa, karena alasan tertentu, telah terjadi ketidakseimbangan antara berbagai bagian btrfsalokasi.
Sayangnya, perintah sederhana sudo btrfs balance -dusage=0, yang pada prinsipnya harus mencari blok kosong (dialokasikan untuk data) dan menempatkannya ke pengguna yang lebih baik (yang akan menjadi ruang yang hampir habis untuk Metadata), mungkin gagal, karena tidak ada blok data yang benar-benar kosong dapat ditemukan.
The btrfspengembang merekomendasikan untuk maka berturut-turut meningkatkan batas penggunaan "ketika data blok harus disusun kembali untuk ruang reclaim"
Makanya, jika hasilnya
$> sudo btrfs balance -dusage=0
Done, had to relocate 0 out of 170 chunks
tidak menunjukkan relokasi, seseorang harus melakukan beberapa
$> sudo btrfs balance -dusage=5
Done, had to relocate 0 out of 170 chunks <--(again fail)
$> sudo btrfs balance -dusage=10
Done, had to relocate 0 out of 170 chunks <--(again fail)
$> sudo btrfs balance -dusage=15
Done, had to relocate 2 out of 170 chunks <--(success)
Jawaban lain mengisyaratkan pengaruh btrfsnodesize, yang sedikit memengaruhi seberapa cepat metadata akan meningkat. Nodesize adalah (seperti yang disebutkan dalam jawaban lain) hanya ditetapkan sekali pada mkfs.btrfswaktu pembuatan filesystem. Secara teori, seseorang dapat mengurangi ukuran Metadata jika itu mungkin untuk mengubah ke nilai yang lebih rendah untuk nodesize, jika itu mungkin (itu tidak!). Namun demikian, nodesize tidak akan dapat membantu memperluas atau menambah ruang metadata yang dialokasikan dengan cara apa pun. Sebaliknya, itu mungkin hanya membantu menghemat ruang sejak awal. Nodesize yang lebih kecil, namun tidak dijamin untuk mengurangi ukuran metadata. Memang, beberapa kasus mungkin menunjukkan bahwa nodesize yang lebih besar mengurangi panjang btrf pohon-traversal, karena catatan dapat mengandung lebih banyak "tautan".
Menurut FAQ pada wiki btrfs , ini tidak mungkin dan tidak mungkin diterapkan.
Bisakah saya mengubah ukuran blok metadata tanpa membuat ulang filesystem?
Tidak, nilai yang diteruskan ke mkfs.btrfs -n SIZE tidak dapat diubah setelah sistem file dibuat. Diperlukan cadangan / pemulihan. Perhatikan, bahwa ini kemungkinan tidak akan pernah diterapkan karena akan memerlukan pembaruan besar untuk fungsionalitas inti.
Anda dapat memigrasi sistem file btrf yang ada ke yang baru yang memiliki yang lebih besar -n SIZE. Anda bahkan dapat menambahkannya ke sistem file yang ada menggunakan btrfs RAID dan balance, kemudian menghapus sistem file yang lama.
Ada perbedaan antara nodesize (yang seperti yang Anda nyatakan hanya dapat diatur sekali pada pembuatan filesystem) dan ukuran metadata, yang juga merupakan btrfs filesystem df /perintah yang Metadata, single: total=xxGiB, used=xxxdiwakili oleh garis output .
humanityANDpeace
Apa maksudmu Tentu ada perbedaan, tapi itu bukan masalah pendapat. -nmengatur ukuran setiap blok metadata, sambil btrfs filesystem dfmenunjukkan ruang yang digunakan oleh blok-blok itu. Jika penulis posting asli memiliki terlalu banyak ruang yang diambil oleh metadata vs data aktual, mereka harus mengurangi ukurannya -n, sehingga blok metadata memiliki ukuran minimum yang lebih rendah (lebih sedikit ruang yang digunakan tetapi lebih banyak fragmentasi).
etskinner
3
OP bertanya bagaimana "menambah / memperluas ruang yang dialokasikan untuk metadata", maka -njawaban Anda "mustahil untuk mengatur nodesize ( opsi)" adalah imho, bukan langsung ke intinya. Karena ketika dia bertanya lebih lanjut "atau [ruang yang dialokasikan untuk metadata] apakah itu secara otomatis diperluas?", Mengisyaratkan bahwa itu bukan nodesize, tetapi ruang yang dialokasikan dia tertarik. Oleh karena itu jawabannya harus "ya". Anda tentu saja benar, mengisyaratkan bahwa -npengaturan memengaruhi ukuran metadata secara tidak langsung, tetapi pertanyaan itu tampaknya lebih mengarah ke memori yang dialokasikan untuk Metadata, bukan ukuran catatan metadata tunggal ....
humanityANDpeace
... katakan misalnya bahwa ada 100G ruang yang tidak digunakan pada perangkat blok pendukung, maka dalam hal memori yang dialokasikan / dialokasikan untuk metadata, akan diperluas secara otomatis (seperti yang diasumsikan oleh OP). Dengan btrfsnamun tidak uncommen, bahwa semua perangkat dukungan / memori, telah dibagikan kepada blockgroups data, yang berarti bahwa selain memori bebas (untuk data itu sendiri), "tidak ada ruang" kesalahan yang dihasilkan. Oleh karena itu, pengguna perlu mencoba beberapa btrfs balance, yang jika masih ada ruang di segmen lain dapat mendistribusikannya untuk menambah ruang metadata yang kurang.
@home
dipasang di/home
, denganbtrbk
cadangan dalam subvolumebtrbk-snap
. Untuk sistem file yang mendukung hingga 2 ^ 64 snapshot, saya berharap ini memiliki cara untuk meningkatkan ukuran metadata ...Jawaban:
TL; DR Metadata (jika btrf tidak mengalami kondisi ruang rendah umum) secara otomatis akan meningkat. Dalam hal tidak ada ruang bebas yang tidak terisi ada, peningkatan otomatis akan ditentukan. Namun, jika bagian data
btrfs
telah dialokasikan lebih banyak ruang daripada yang dibutuhkan, maka dimungkinkan untuk mendistribusikan ulang ini. Ini disebutbalance
-ing dalam btrfs.Dengan asumsi bahwa ada cukup memori yang tidak terisi pada perangkat blok pendukung
btrfs
, maka bagian Metadata dari sistem file mengalokasikan - seperti yang diasumsikan oleh OP - secara otomatis memori untuk menambah / memperluas metadata.Oleh karena itu, jawabannya adalah: Ya (asalkan tidak ada memori rendah / kondisi ruang kosong di
btrfs
) , maka metadata akan meningkat secara otomatis, seperti:(1) Kami telah melihat beberapa pengaturan alokasi awal btrfs (pada
40GB
perangkat)(2) Seperti dapat dilihat, ruang yang dialokasikan dalam sistem file untuk menyimpan Metadata adalah 1,55GiB, di mana 1,33GiB, maka hampir semua digunakan (ini mungkin situasi yang terjadi dalam kasus OP)
(3) Kami sekarang memprovokasi penambahan metadata yang akan ditambahkan. Untuk melakukannya, kami menyalin folder / home menggunakan
--reflink=always
opsicp
perintah.(4) Karena (seperti yang kita asumsikan ada banyak file di / home), yang ditambahkan banyak data baru ke sistem file, yang karena kita
--reflink
menggunakan sedikit atau tidak ada ruang tambahan untuk data aktual, ia menggunakan Copy-on-Write, mekanisme. Singkatnya, sebagian besar Metadata ditambahkan ke sistem file. Karena itu kita dapat memiliki pandangan lainSeperti yang bisa dilihat, ruang yang dialokasikan untuk Metadata yang digunakan dalam hal
btrfs
ini secara otomatis meningkat diperluas.Karena ini sangat otomatis, biasanya tidak terdeteksi oleh pengguna. Namun, ada beberapa kasus, sebagian besar di mana seluruh sistem file sudah cukup terisi. Dalam kasus tersebut,
btrfs
mungkin mulai "gagap" dan gagal untuk secara otomatis meningkatkan ruang yang dialokasikan untuk Metadata. Alasannya adalah, misalnya, bahwa semua ruang telah dialokasikan ke bagian-bagian (Data, Sistem, Metadata, GlobalReserve). Yang membingungkan, bisa jadi belum ada ruang yang jelas. Contohnya adalah output ini:Seperti dapat dilihat, sistem semuanya
40GiB
, namun alokasi agak tidak aktifbalance
, karena sementara masih ada ruang untuk data file baru, Metadata (seperti dalam kasus OP) rendah. Alokasi memori otomatis untuk perangkat yang mendukung sistembtrfs
file tidak lagi dimungkinkan (cukup tambahkan total alokasi, 38.12G + 1.55G + .. ~ = 40GiB).Namun karena ada kelebihan ruang kosong yang dialokasikan ke
data
bagian sistem file, sekarang dapat berguna, diperlukan untuk menyeimbangkan btrfs. Saldo berarti mendistribusikan kembali ruang yang sudah dialokasikan.Dalam kasus OP, dapat diasumsikan bahwa, karena alasan tertentu, telah terjadi ketidakseimbangan antara berbagai bagian
btrfs
alokasi.Sayangnya, perintah sederhana
sudo btrfs balance -dusage=0
, yang pada prinsipnya harus mencari blok kosong (dialokasikan untuk data) dan menempatkannya ke pengguna yang lebih baik (yang akan menjadi ruang yang hampir habis untuk Metadata), mungkin gagal, karena tidak ada blok data yang benar-benar kosong dapat ditemukan.The
btrfs
pengembang merekomendasikan untuk maka berturut-turut meningkatkan batas penggunaan "ketika data blok harus disusun kembali untuk ruang reclaim"Makanya, jika hasilnya
tidak menunjukkan relokasi, seseorang harus melakukan beberapa
Jawaban lain mengisyaratkan pengaruh
btrfs
nodesize, yang sedikit memengaruhi seberapa cepat metadata akan meningkat. Nodesize adalah (seperti yang disebutkan dalam jawaban lain) hanya ditetapkan sekali padamkfs.btrfs
waktu pembuatan filesystem. Secara teori, seseorang dapat mengurangi ukuran Metadata jika itu mungkin untuk mengubah ke nilai yang lebih rendah untuk nodesize, jika itu mungkin (itu tidak!). Namun demikian, nodesize tidak akan dapat membantu memperluas atau menambah ruang metadata yang dialokasikan dengan cara apa pun. Sebaliknya, itu mungkin hanya membantu menghemat ruang sejak awal. Nodesize yang lebih kecil, namun tidak dijamin untuk mengurangi ukuran metadata. Memang, beberapa kasus mungkin menunjukkan bahwa nodesize yang lebih besar mengurangi panjang btrf pohon-traversal, karena catatan dapat mengandung lebih banyak "tautan".sumber
Menurut FAQ pada wiki btrfs , ini tidak mungkin dan tidak mungkin diterapkan.
Anda dapat memigrasi sistem file btrf yang ada ke yang baru yang memiliki yang lebih besar
-n SIZE
. Anda bahkan dapat menambahkannya ke sistem file yang ada menggunakan btrfs RAID dan balance, kemudian menghapus sistem file yang lama.Lihat juga bagian tentang drive yang hampir penuh .
sumber
btrfs filesystem df /
perintah yangMetadata, single: total=xxGiB, used=xxx
diwakili oleh garis output .-n
mengatur ukuran setiap blok metadata, sambilbtrfs filesystem df
menunjukkan ruang yang digunakan oleh blok-blok itu. Jika penulis posting asli memiliki terlalu banyak ruang yang diambil oleh metadata vs data aktual, mereka harus mengurangi ukurannya-n
, sehingga blok metadata memiliki ukuran minimum yang lebih rendah (lebih sedikit ruang yang digunakan tetapi lebih banyak fragmentasi).-n
jawaban Anda "mustahil untuk mengatur nodesize ( opsi)" adalah imho, bukan langsung ke intinya. Karena ketika dia bertanya lebih lanjut "atau [ruang yang dialokasikan untuk metadata] apakah itu secara otomatis diperluas?", Mengisyaratkan bahwa itu bukan nodesize, tetapi ruang yang dialokasikan dia tertarik. Oleh karena itu jawabannya harus "ya". Anda tentu saja benar, mengisyaratkan bahwa-n
pengaturan memengaruhi ukuran metadata secara tidak langsung, tetapi pertanyaan itu tampaknya lebih mengarah ke memori yang dialokasikan untuk Metadata, bukan ukuran catatan metadata tunggal ....btrfs
namun tidak uncommen, bahwa semua perangkat dukungan / memori, telah dibagikan kepada blockgroups data, yang berarti bahwa selain memori bebas (untuk data itu sendiri), "tidak ada ruang" kesalahan yang dihasilkan. Oleh karena itu, pengguna perlu mencoba beberapabtrfs balance
, yang jika masih ada ruang di segmen lain dapat mendistribusikannya untuk menambah ruang metadata yang kurang.