利用可能な合計スペースをより活用するために、btrfs RAID-0構成ファイル内のデータストライプの数を制限する方法は?

利用可能な合計スペースをより活用するために、btrfs RAID-0構成ファイル内のデータストライプの数を制限する方法は?

問題の背景

btrfsの最大の利点の1つは、さまざまなサイズのドライブを効率的に使用できることです。しかし、デフォルトのRAID-0(ストライピング)プロファイルではそうではないことがわかりました。

8TB、4TB、4TBの3つのドライブでRAID-0を使用し、合計16TBを取得したいと思います。 8TBの前半は、最初の4TBドライブと2番目の変更でストライピングできます。半分は2番目の4TBドライブを使用してストライプできます。

しかし(非常に役に立つ)によると、Btrfsディスク使用量計算機12TBしか入手できません。各ブロックは3つのドライブすべてにストライプされ、8TBドライブに4TBの未使用スペースが残ります。この質問に対する回答でも言及されています。ドライブサイズの異なるbtrfs RAID0を使用すると、空き容量が不足します。

イラスト

これが私が期待するものです:
RAID-0のbtrfsストライピング(必要に応じて動作する場合)

...実際に起こることは次のとおりです。
btrfs RAID-0の基本ストライピング

マニュアルには何と書かれていますか?

よく読んだ後mkfs.btrfsこれはデフォルトのRAID-0プロファイル設定によるものです。最低限度でデバイス数は2つですが、上限はありません。これは、データブロックがプール内で見つけることができるだけのデバイスにわたってストライプされることを意味します。これは間違いなく合理的な選択であり、完全に理解されています。

btrfsディスク使用量計算機を使用している間、次のように設定すると望ましい結果が得られることがわかりました。最高デバイス数は2です。追加の速度のために、2つのドライブにわたってデータを削除しますが、使用可能なスペースをより多く使用できるように、ストライピングを2つのデバイスに制限します。私にとって、これは非常に有利なトレードオフであり、そう思う人は私だけではありません。

質問

私は道が見つかりませんでした。変化ファイルシステム作成時の最大デバイス数。

  • 可能ですか?
  • では、どうすれば変更できますか?
  • もし私がするこれを変更すると、他のツールがレイアウトを理解できますか?

ベストアンサー1

直接はできませんが、いくつかの幸運と努力があれば可能です。

問題は、現在(btrfs-progs 5.7ベース)これを行う方法がないことですmkfs.btrfs。オンライン空間計算機には、デフォルトのRAIDレベルでのこの効果に関する注意事項も含まれています。

これは現在btrfsでサポートされている唯一のパラメータ設定です。

mkfs.btrfs2つのドライブ、btrfs device add3番目のドライブ、およびbtrfs balance(8 + 4 + 4 GiB LVを「ドライブ」として使用)のさまざまな組み合わせを試しました。残念ながら、FSに12GiB以上のデータを格納できることが多かったが、必要な16GiBに近いことはなかった。によるとbtrfs device usage、私は常に2つと3つのドライブにわたってブロックが混在してストライプされています。

つまり、可能mkfs.btrfsコードを修正することで、カスタムストリップカウントを使用できます。ブロックレイアウトはbtrfs-progsbtrfs_alloc_chunk()で設定されます。volume.cこの関数呼び出しは、init_alloc_chunk_ctl()RAIDプリセットをストライプ数に変換します。min_stripesRAID0の場合は、2 num_stripes(実際にブロックを作成するために使用されたストライプの数)に設定しますmin(ctl->max_stripes, ctl->total_devs)max_stripesに設定されているブロックタイプに関する制限は次のとおりですbtrfs_alloc_chunk()

したがって、このルーチンを変更してnum_stripes目的の値(2)に制限し、これらの変更を使用して目的mkfs.btrfsの方法で動作するファイルシステムを作成できます。この仮説を徹底的にテストする時間がなかったため、カーネルやbtrfs-progsでバグが発生する可能性がありますが、IMHOでは動作する可能性が高いです。結局のところ、修正されていないツールを使用してデバイスを追加/削除するとき(上記のテストなど)、必要なディスクレイアウトは依然として頻繁に発生するため、原則としてサポートする必要があります。しかし、レイアウトが後でdevice add/再び台無しになってもあまり驚かないでしょうbalance

おすすめ記事