
UEFI では、ほとんどの場合 vFAT としてフォーマットされた ESP から起動する必要があります。私の記憶が正しければ、BTRFS は論理ボリューム マネージャー (LVM) のように ext3/ext4 としてフォーマットされたサブボリュームを持つことができます。ただし、UEFI は BTRFS からの起動をサポートしていません。ほとんどの場合、解決策は 3 つ (または 2N + 1) のディスクを使用することです。2 つは RAID 用、1 つは起動用です。この場合の主な懸念は、単純な RAID1 ミラーリングです。ただし、この場合、使用できるディスクは 2 つだけです。マザーボードが BIOS を使用していれば、起動パーティションをミラーリングするだけで済みます。
この問題 (起動するために追加のディスクを使用する必要がある) が、人々が ZFS (FreeBSD と ZFS) に切り替えた理由の 1 つだと聞いたことがありますが、私の記憶が間違っているかもしれません。
私の場合、ディスク全体をパーティションでミラーリングしました。つまり、2 番目のディスクには 2 つのパーティション (ESP 1 つと btrfs パーティション 1 つ) がありました。ただし、これは BTRFS-RAID1 が意図した使用方法ではないと思います。そこで、私の質問は具体的に次のようになります。
- この構成により破損やその他の予期しない結果が生じるでしょうか?
- もっと良い解決策は何でしょうか?
答え1
あなたの発言から私が収集した情報によると、次の(または類似の)ディスク レイアウトを持つ 2 つのディスクがあります。
sda: GPT
sda1: Linux MD RAID member
sda2: Swap
sda3: BTRFS pool member (RAID 1 allocation policy)
sdb: GPT
sda1: Linux MD RAID member
sda2: Swap
sda3: BTRFS pool member (RAID 1 allocation policy)
md0: ESP (~100mb? VFAT) mounted at /boot/efi (RAID 1 allocation policy)
BTRFS pool:
root subvol (mounted at /)
home subvol (mounted at /home)
et cetera ad nauseam.
これは、ほとんどの場合にまさに必要なことであり、構成にこれが反映されていない場合は、これを反映させる必要があるでしょう。
この場合の Linux MD ボリュームは、sda1 と sdb1 の間の RAID 1 です。sd[a,b]1 を直接操作せず、それらから作成された MD ボリュームのみをマウントしてください (通常は、または/dev/md0
作成/dev/md/0
時に特別な名前を付ける必要があると感じた場合を除く)。マザーボードのファームウェアは、起動時に任意の 1 つのディスクにデータがそのまま存在することを期待するため、ESP ボリュームには必ず RAID1 を使用する必要があります。
スワップ パーティションは自然にストライプ化されますが、ほとんどの場合、1 つのパーティションに障害が発生してもシステムがクラッシュすることはありません。ページャは非常に賢いので、正当な理由がない限り、スワップに MD を使用しないでください。
BTRFS プールは自動的にスキャンされるため、ファイルにエントリを追加するときは、このボリュームを UUID で指定するのが最適です/etc/fstab
。
GRUB2 は、どの BTRFS RAID レベルからでも起動できます。両方のパーティション テーブル (sda、sdb) に「ステージ 1」ローダーがインストールされていることを確認してください。これは、起動時に実行されますgrub-install /dev/sda
(ディストリビューションによって若干異なる場合があります)。