RAID 1モードでBTRFSを使用して複数のデバイスにDebian Jessieを正しくインストールする方法は?

RAID 1モードでBTRFSを使用して複数のデバイスにDebian Jessieを正しくインストールする方法は?

簡単な紹介として、私がどのような設定をしていて、何を達成しようとしているのか教えてください。その後、私は私の問題を説明しようとします。これがU&Lに関する最初の質問なので、おかしいかもしれないことをお詫び申し上げます。かなり長いので、BTRFSやDebianの新しいユーザーが私の経験を活用したり、ある種のチュートリアルとして使うことができます。

基本ハードウェア設定

私はマザーボードとHaswell世代のCPU、いくつかのRAM、2つのSSDを持っています。

(注:正確な診断のためにこの部分以外は接続していません。この部分についてより多くの情報が必要な場合は、お気軽にお問い合わせください。)

太陽

Debian Jessieを2つのSSDにインストールし、RAID 1モードでBTRFSを使用して両方のドライブをミラーリングしたいと思います。これにより、あるドライブに障害が発生しても、別のドライブをパフォーマンス低下モードで引き続き使用できます。

私はまた何を達成しましたか?

Jessieは現在テスト中であるため、過去にテストブランチをインストールするのに問題があったため、以前のバージョンのWheezyの新規インストールを開始しました。インストール中に最初のドライブを分割しました(例:)手動方法は次のとおりです。

  • パーティションは1つだけです(ドライブの利用可能なすべてのスペースを使用するすべての将来のマウントポイントを含む)。
  • BTRFS形式と
  • スワップパーティションはそのままにしておきます。

インストールが正常に完了しました。予想通り、その後Jessieにアップグレードしました(edit/etc/apt/sources.listとexecを介してapt-get update && dist-upgrade)。再起動を行いました。今、カーネル3.14-2-amd64は大丈夫であることがわかりました。

その後、別のドライブを準備し始めます(例:第二)。パーティションテーブルをコピーしました。そしてsfdisk -d /dev/sda > /tmp/sda.ptまた捨てる第二そしてsfdisk /dev/sdb < /tmp/sda.pt

これで、次のコマンドを使用してデバイスを追加してRAID 1に変換する準備が整いました。

mount /dev/sda1 /mnt
btrfs device add /dev/sdb1 /mnt
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

btrfs filesystem show/dev/sda1エイリアスを含むRAID 1を見ると、ここまですべてが成功しました。/dev/sdb1エイリアス第二。また、blkidUUID は同じで、UUID_SUB が異なる 2 つのドライブも一覧表示されます。

/etc/fstab私はいくつかのSSD関連のマウントオプションを追加しましたが、マウントポイントはほとんど変わりませんでした。

UUID=01234567-89ab-cdef-0123-456789abcdef / btrfs  defaults,noatime,nodiratime,discard  0   1

再起動後、システムはオペレーティングシステムで完全に起動します。上記のコマンドはbtrfs filesystem showまだblkid同じ結果を示しています。 RAID 1が動作しているようです。

私の質問と私の質問

システムがコールドブートする前に電源を切りました。第二(完全なデバイスエラーシミュレーション)使用可能であり、BTRFS は依然としてパフォーマンス低下モードで起動すると見なされます。しかしそれは真実ではない。 initramfsがデバイスを見つけることができないというエラーが発生します。

  1. これがBTRFSの期待される動作ですか、それとも私のinitramfsに問題がありますか? (おそらく、これはBTRFSがオフラインでドライブが破損していることを知らせる方法です)。

    ㅏ。 1つのドライブでのみ起動できますか?、新しいドライブを挿入(ホットスワップ)します。オンラインで再同期しますか?

    バットbtrfs.wiki.kernel.org劣化モードでは、障害のあるデバイスを最初にインストールしてから新しいデバイスを追加するように指示されています。これが唯一の方法ですか?

    (自分で話してください。他のベアデバイスに接続してテストします。何が起こっているのか確認してください。おそらくドイツの資料を研究した後、この質問に自分で答えることができます。wiki.ubuntuusers.de.)

  2. ドライバーはどのように作りますか?第二起動も可能になります(ドライブ破壊されるか)?同期/boot?デバイスにGRUBのみをインストールする必要がありますか?第二それともgrub-install /dev/sdbもっとすべきですか?

  3. fstabでマウントオプションを使用するのは役に立たssdないと思いますか?btrfs.wiki.kernel.org自動的に有効になると説明しますか?私にとっては、これはオペレーティングシステムがSSDを正しく検出できない場合にのみ必要なようです。

ベストアンサー1

質問1への回答 - ドライブの故障後に始める方法

次の手順に従ってRAID 1を復元できます。

  1. 何らかの方法でフォーマットされたドライブをインポートしました(例:)同じSATAポートに接続します。欠陥運転する第二以前でした。

  2. その後、コンピュータを起動し、ブートメニューからプリブートe編集コマンドを押しました。wiki.ubuntuusers.deによって:

    ㅏ。関連する開始項目までスクロールして、次の行を見つけました。

    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  01234567-89ab-cdef-0123-456789abcdef
    else
      search --no-floppy --fs-uuid --set=root 01234567-89ab-cdef-0123-456789abcdef
    fi
    echo    'Loading Linux 3.14-2-amd64...'
    linux   /boot/vmlinuz-3.14-2-amd64 root=UUID=01234567-89ab-cdef-0123-456789abcdef ro  quiet
    

    b。その後、ライン1を編集し、ドライブ番号を動作しているハードドライブに変更しました(私の場合はまだそこにあり、複数のhd0ドライブがまだ接続されている可能性がありますhd1)。

    set root='hd0,msdos1'
    

    氏。コメントを付けるために先行文字を追加して2行から6行を無効にしました#

    #if [ x$feature_platform_search_hint = xy ]; then
    #  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  01234567-89ab-cdef-0123-456789abcdef
    #else
    #  search --no-floppy --fs-uuid --set=root 01234567-89ab-cdef-0123-456789abcdef
    #fi
    

    d。次に、8行を編集し、ルートフラグを挿入してRAID(rootflags=degraded)を下げました。

    linux   /boot/vmlinuz-3.14-2-amd64 root=UUID=01234567-89ab-cdef-0123-456789abcdef ro rootflags=degraded quiet
    

    e.このキーを押すと、編集したばかりのF10項目が選択されます。システムが起動中です。

  3. OSを完全に起動した後、新しいドライブを追加する必要がありました。私のRAID 1で。上で言ったようにしました。btrfs.wiki.kernel.org:

    ㅏ。まだ動作するドライブを取り付けました。:

    mount -o degraded /dev/sda1 /mnt
    

    b。新しいドライブを追加しました。:

    btrfs device add /dev/sdb1 /mnt
    

    氏。その後、古いデバイスを削除しました(私の場合はドライブ第二):

    btrfs device delete missing /mnt
    
  4. 最後に、上記の質問で述べたように、すべてがうまくいったことをbtrfs filesystem show確認するためにコマンドを確認しました。どちらのドライブもUUIDは同じですが、UUID_SUBが異なり、RAID 1モードにあることが報告されます。blkidbtrfs fi df /mnt

    おめでとう、成功しました!

個人メモ

他の人が私が間違っていることを証明するまで、期待どおりに失敗したinitramfsを説明したように処理します。たぶんこれは私のディスクがひどく衝突するので、慎重に対応する必要があることを知らせる方法かもしれません。しかし、それは単なる推測です。

手動ダウングレードの必要性に関するガイドライン

その間、このトピックに関する興味深い議論が見つかりました。Linuxカーネル開発者メーリングリスト。関連性のために、特に新しいユーザーにとっては、理解することが非常に重要であると思われるDuncanによって書かれたフレーズを引用したいと思います。

1つのデバイスのみを使用してダウングレードマウントオプションを使用して2つのデバイスbtrfs raid1ファイルシステムをマウントできる必要がありますが、現在のカーネルはこの場合は読み取り/書き込みマウントを拒否するため、2番目のデバイスを追加するまで読み取り専用アクセス権を持つようになります。通常のraid1モードを再実行できるように、btrfsデバイスにデバイスを追加します。 [...] また、btrfsが実際にファイルシステムのすべてのコンポーネントを見つけることができる場合、ダウングレードされたmount-optは事実上動作しないため、一部の人々は単に標準マウントオプションにダウングレードを追加することを選択します(grub設定を編集して追加) 起動するたびに表示されます) したがって、これを心配する必要はありません。ただし、インストールをダウングレードできないと、システム管理者に非常に間違ったことが発生し、それを修正する必要があるという警告が出されるという通念があるため、これはお勧めできません。その後、必要に応じてファイルシステムをマウントして起動できるように一時的にパフォーマンスを低下させることができますが、起動するたびにそのオプションを定期的に追加すると、この重要な警告は無視され、管理者は問題を無視する可能性が高くなります。 (または全く知らなかった)遅すぎるまで。

(源泉:https://www.mail-archive.com/[Eメール保護]/msg31265.html)

追加の注意:私のコンピュータの例にはスワップパーティションはありませんが、スワップパーティションを持っている人なら誰でも私がリンクしたこの興味深いEメールを読むことをお勧めします。 RAIDモードでBTRFSにスワップする方法を説明しているからです。 。


質問2への答え - 別のドライブを起動可能にする方法

これまで私が知っている限り、grub-install /dev/sdb(追加のupdate-grubも)使用するだけでは十分ではないようです。私がそう思う理由を説明します。

ドライブをオフラインにして逆の場合ドライブを使用してのみ起動第二次のようなことが起こりました。ブートローダGRUBが表示され、質問1の2番目のエントリと同じ手順に従いました。起動プロセスを確認したらF10すぐに停止し、空の画面が表示されます(アクティブモニター、黒い背景、カーソルなし)。明らかにドライブのブートローダに問題があるようです。第二。 (注意:私はRAID 1を持っており、最初のドライブが「失敗」した後に2番目のドライブから起動できません。)

ハードリセットを実行し、ドライブを接続して助けました。また(だからそして第二どちらも再表示されます)オペレーティングシステムから起動します。私の運転のためそして第二作業ドライブからMBR(ブートローダを含む)全体をコピーしたのとまったく同じです。到着第二生モードで対。dd if=/dev/sda of=/dev/sdb bs=512 count=1コンピュータをシャットダウンしてドライブを取り外しました。以前のように何が起こったのかを推測してください。ダウングレード手順を再度実行した後、ついにドライブからのみOSを起動できました。第二

要約する必要がありますが、これが私のパーティションテーブル(GPTではなくMSDOS)に関連しているのか、grub-installBTRFSまたは他のものと組み合わせたコマンドに関連しているのかはまだわかりません。また、私のオリジナルがgrub-install

まだこの問題を解決していますので、この回答をもう一度更新します。もっと整理したいのですが、元のコードを研究するのに時間がかかります。MBRセクターレイアウト両方のドライブを確認し、問題がブートローダで発生するか、さらにはディスクID


質問3の答え - SSDマウントオプションを処理する方法

マザーボードがドライバの状況を正しく通過できるかどうかによって異なります。上記のようにbtrfs.wiki.kernel.orgBTRFS自体はオペレーティングシステムの値に依存します。オペレーティングシステムの他のモジュールもこれらの値によって異なる可能性があるため、通常、/sys/block/sdX/queue/rotationalその値(0:SSD、1:HDD)を確認するのが最善です。値が適切な場合は、SSDオプションが保持されます。

おすすめ記事