web-dev-qa-db-ja.com

BTRFS RAID10から安全にブートすることができますか?

Ubuntu 16.04.1 LTSを使用しています。システムはRAID1 BTRFS /(2つのディスクSDA1、SDB1)で設定されました。別の/ブートパーティションまたはBIOSブートパーティションは作成されませんでした。

さらに2つのディスクを追加してRAID10に変換した後、システムは起動を拒否しました。ただし、説明の手順に従って、Live CDからupdate-grubを実行して修復することができました このページ

Grubがどのように機能するかについてはあまり知りません。しかし、Retrospectでは、それは実際にシステムを起動することができた奇跡のようです。正しく理解している場合、GRUBはMBRの次の段階の最初のブロックのブロックアドレスを格納します。バランスがブロックをシャッフルしたので、私はUpdate-Grubを使わなければならなかったという点で私は正しいですか?

第二に、RAID10のために、GRUBの次の段階が複数のディスクに分割された場合、どうなるでしょうか。これを扱う方法を知っていますか、それともここで一時爆弾に座っていますか?

1
user2323470

GRUBは、独自のファイルシステムマネージャ(NTFS、FAT32、EXT *、BTRFS、LUKS、LVM、RAIDなど)をロードします。 (それはサポートされています)ので、MBRまたはGPTの整合ディスク(またはHIBRID)の場合は、小さなMBRコード(1セクタに保存)をロードしてから、セクタと次のセクタにハードコードされたデータの「大きい」データをロードします。 (たくさんのモジュールがその段階に置かれている場合は2mib近くにすることができます.1つのモジュールが8mibにアップされていた場合)データはディスクの不動的部分に保存されていることがMBRの後にある可能性があります。 )、フォーマットなしの専用パーティション(BIOSGRUB)(RAWモード)では、(移動してはいけないファイルの場合)、またはチェーンブロック(一部のext *、およびそれ以来コミュニケーションされていない) GRUB再インストールまで起動しません)。

そのため、GRUBは「BIG」コードが保存されているとおりにハードコードされているミニコードをロードしてから、IRはそのコードをロードし、そのコードは「BIG」コードでは(モジュールパラメータを使用してGRUBをインストールするときに)を知っています。ファイル構成などを使用すると、GRUBがLUKS登録済み(マルチレベルの許可)、RAID、LVM2、FAT32、NTFS、EXT *、BTRFSなどにアクセスする方法を知ることができるので、ファイルシステム内のファイルシステムにアクセスする方法を知っています。 (grub.cfgなど)が格納されています。

そのため、GRUB2は問題なく純粋なストリップ(RAID0、LVM、BTRFSなど)に取り付けることができます。しかし、その「大きい」コードが別の場所にKeddされていて、それが上書きされた場所であれば、GRUBはそのハードコードされた位置をその「大きい」に更新することを再インストールするまで起動することはできません。コード。

一部のファイルシステムには、ファイルシステムがファイルシステムが移動させる必要があることを確認できるファイルごとにフラグがあり、そのファイルが再作成されていないため、場合によっては移動しません。

BTRFのバランスが発生する可能性があります(「大きな」コードが保存されている場合)BTRFの牛のために移動したり、それが上書きされた場所でも移動したり、GRUB2は起動しません... 2番目のディスクを追加した後に 'Single'から 'RAID1'へ行くときに苦しんでください。

その場合、GRUBは起動の代わりにレスキューコマンドラインを表示します。それを修正するために実行できるのは非常に簡単です.Grub-installコマンドを持つライブLinux(chrootを実行する必要はありません)で起動し、grub.cfgがあるパーティションをマウントします。 bootは区切りのパーティションであるか、/ partitionsからではありません。正しいMODU、ESパラメータ、アンマウント、再起動でGRUBインストールを実行してから、自分のLinuxからインストールをREDOして、同じVeriorを持ちます(妄想の場合、または混乱バージョンではない場合)。

しかし、それを修正するための勧告された方法はBTFRをマウントし、Chrootを実行し、あなた自身のLinuxからのGRUBインストールを再実行することです

私は別のスキームを好む、私は他のすべてのLinux/Windows/etcブートローダをチェーンロードし、それぞれのシステムが独自のブレーカを持っており、各システムが他のシステムに依存する必要はありません(マルチ) -ブート)。また、1つのシステムのみであるコンピュータでは、ISOループを持っているので、ISOループを持っているので、Linuxブートローダをジャンプするオプションも追加します(ただし更新プログラムの最初のセクター(Distroブートローダがインストールされていた場合)に、独自のブートローダなどを損傷しています。

そのように、Linux Distro BootloaderがChailoadで起動した代わりにLinux Distro Bootloaderが起動しない場合、自分のエントリで起動した場合は、固定される必要があるものを修正しました。

私はBTRFS RAID 1を発見して以来、私が力のない長い期間後に(1週間以上、eigth daysもっと)何らかのセクターが読みやすくないと言う(そして、そのリストが別のeigthの日にしていない場合)。読みやすい変化と読みやすいものは、それらの上の正しいデータで再度読みやすくなります。そのKingdian SSDの本当に奇妙な誤動作)。 BTRFS RAID 1は、自分のメインのGRUB2ブートローダーとすべてのLinuxにのみ使用します。

とい、LinuxのGrubブートを修正することがありましたが、数ヶ月以来、私はそれを一度だけそれを実行するための針を持っていて、2番目のディスクとバランスを追加した直後でした(単一からRAID1に変換する)、それは心配しているものではありません。 (勧告)。

私がBTRFについて知っていた前に、私はRAID0のNXHDDでGRUB2を使用していました(DM-RAID以上LVM2を介してDM-RAIDオーバー)、「議決権」のために問題がありませんでした。 grub-installコマンド。

それでは、BTRFSのRAID 0,1,10)にGRUB2を持つことについて心配してはいけませんが、私が知っているすべての人は、RAID(5または6)の場合は警告を言った(5または6)、BTRF上のRAID5も使用しないでください。

1
Laura

あなたは多くの情報を与えません。例えば。 GRUBをまったく存在しませんでしたか。

これを仮想マシンでテストしました。私は単一のディスクにKernel 4.9とBtrfs-Progs v4.7を使ってDebianストレッチをインストールしました。ブートローダはGRUB 2.02~Beta3-4パッケージです。

インストールした後、私は3倍の追加のディスクを追加しました(4ディスク(それぞれ1パーティション付き)を合計で追加しました)。私はすべてのディスクにGRUBをインストールし、Update-Grubを実行しました。

データとメタデータの両方をRAID10に再バランスしました。私はRAID10セット内のディスクの1つを削除して何が起こったのかを確認しました。 rootflags =劣化したディスクで起動してカーネルコマンドラインを編集しなければならなかった。ディスクをもう一度再接続してバランスを実行した後(単一のチャンクを再びRAID10に変換するために)私はデータをシャッフルし、少しスタッフをインストールし、数回再バランスを取得し、まだ起動しました。これらの残高の間に、任意のディスクにUPDATE-GRUBを実行しなかったことに注意してください。

また、BTRFS RAID0、RAID1、RAID10、GZIP、LZO)がサポートされているGRUBマニュアルには、 https://www.gnu.org/software/grub/manual/grub.html

私はGRUBが自分自身を作動させる方法についてあまり知りませんが、BTRFSに翻訳レイヤーがなければならないと仮定することができます。仮想ブロック1234は、実際にディスク上にある場所を指しています。

私のテストに基づく結論は、RAID1よりもBTRFS RAID10で起動するのはそれほど怖いように思われることです。私はそれを使わないのでUbuntu 16.04.1 LTSのために答えることはできませんが、私のテストに基づいてうまくいくように思われるので自分自身を実験することをお勧めします。

0
Waxhead