web-dev-qa-db-ja.com

UEFI BIOSを搭載したマシンに、Ubuntu 18.04デスクトップをRAID 1およびLVMでインストールします

UEFI BIOSを搭載したマシンがあります。 RAID 1(およびLVM)を備えたデスクトップバージョンのUbuntu 18.04をインストールして、ドライブの1つが故障してもシステムが引き続き動作するようにします。私はそれを行う方法のHOWTOを見つけていません。デスクトップインストーラーはRAIDをサポートしていません。 この質問 への答えはほとんど機能しますが、いくつかのGRUB Shell/rescue USBディスクとUEFI設定マジックが必要です。魔法の部品なしで機能する手順を知っている人はいますか?

7
Niclas Börlin

EFIおよびRAID1 + LVMでUbuntuサーバーをインストールする方法buntu 18.04でセットアップされたRAID 、および buntu 18.04デスクトップインストーラーでのRAIDサポート? および 起動時に「btrfsファイルシステムのスキャン」を削除する方法? 、linuxコマンドのみを使用して、動作するHOWTOをまとめることができました。

要するに

  1. 代替サーバーのインストーラーをダウンロードします。
  2. 手動パーティション設定、EFI + RAID、およびRAIDパーティション上のLVMを使用してインストールします。
  3. EFIパーティションをインストールされたパーティションから他のドライブにクローンします。
  4. 2番目のEFIパーティションをUEFIブートチェーンにインストールします。
  5. ドライブが故障した場合の起動中の長時間の待機を回避するには、btrfs起動スクリプトを削除します。

詳細に

1.インストーラーをダウンロードする

2.手動パーティション設定でインストールします

  • インストール中、Partition disksステップで、Manualを選択します。
  • ディスクにパーティションが含まれている場合は、それらを削除します。
    • ドライブに論理ボリュームが存在する場合は、Configure the Logical Volume Manager。を選択します。
      • すべてのボリュームが削除されるまで、Delete logical volumeを選択します。
      • すべてのボリュームグループが削除されるまで、Delete volume groupを選択します。
    • RAIDデバイスが存在する場合は、Configure software RAID。を選択します。
      • すべてのMDデバイスが削除されるまで、Delete MD deviceを選択します。
    • 物理ドライブ上のすべてのパーティションを選択し、Delete the partitionを選択して削除します。
  • 物理パーティションを作成します
    • 各ドライブで、ディスクの先頭に512MBのパーティションを作成します(他のユーザーが128MBを使用するのを見たことがあります)として使用:EFI System Partition
    • 各ドライブで、「最大」サイズの2番目のパーティションを作成し、Physical Volume for RAIDとして使用します。
  • RAIDをセットアップする
    • Configure software RAIDを選択します。
    • Create MD deviceを選択し、RAID1、2つのアクティブディスク、0つのスペアディスクを入力して、/dev/sda2および/dev/sdb2デバイスを選択します。
  • LVM をセットアップします
    • Configure the Logical Volume Managerを選択します。
    • /dev/md0デバイスにボリュームグループvgを作成します。
    • 論理ボリュームを作成します(例:)
      • 16Gのswap
      • 35Gのroot
      • 10Gのtmp
      • 5Gのvar
      • home at 200G
  • 論理パーティションの使用方法を設定します
    • swapパーティションの場合、Use as: swapを選択します。
    • 他のパーティションについては、適切なマウントポイントでUse as: ext4を選択します(それぞれ[//tmp/var/home)。
  • Finish partitioning and write changes to diskを選択します。
  • インストールプログラムが終了して再起動するのを許可します。

3.システムの検査

  • どのEFIパーティションがマウントされているかを確認してください。最も可能性の高い/dev/sda1

    マウント| grepブート

  • RAIDステータスを確認します。ほとんどの場合、同期しています。

    猫/ proc/mdstat

4. EFIパーティションの複製

ブートロードされたEFIは/dev/sda1にインストールされているはずです。そのパーティションはRAIDシステムを介してミラーリングされないため、クローンを作成する必要があります。

Sudo dd if=/dev/sda1 of=/dev/sdb1

5. 2番目のドライブをブートチェーンに挿入します

どちらかのドライブが停止した場合、システムは(同一の)EFIパーティションから起動する必要があるため、この手順は不要です。ただし、どちらのディスクからでも起動できるようにすることは賢明なようです。

  • efibootmgr -vを実行し、ubuntuブートエントリのファイル名を確認します。私のインストールでは、\EFI\ubuntu\shimx64.efiでした。
  • Sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efiを実行します。
  • これで、ドライブのいずれかが故障してもシステムが起動するはずです!

7.待つ

ドライブを削除または無効にしようとする場合は、最初にRAID同期が完了するまで待つ必要があります! cat /proc/mdstatで進行状況を監視しますが、待機中に以下の手順8を実行できます。

8. BTRFSを削除します

1台のドライブに障害が発生した場合(同期の完了後)、システムは引き続き起動します。ただし、ブートシーケンスはbtrfsファイルシステムの検索に多くの時間を費やします。不要な待機を削除するには、次を実行します

Sudo apt-get purge btrfs-progs

これにより、btrfs-progsbtrfs-tools、およびubuntu-serverが削除されます。最後のパッケージは単なるメタパッケージであるため、削除するパッケージがリストにない場合は問題ありません。

9.デスクトップバージョンをインストールする

Sudo apt install ubuntu-desktopを実行して、デスクトップバージョンをインストールします。その後、おそらく同期が行われ、システムが構成され、ディスク障害に耐えることができます!

10. grub-efi-AMD64の更新後にEFIパーティションを更新します

パッケージgrub-efi-AMD64が更新されると、EFIパーティション(/boot/efiにマウント)上のファイルが変更される場合があります。その場合、更新プログラムを手動でミラーパーティションに複製する必要があります。幸いなことに、grub-efi-AMD64が更新されようとしているという警告を更新マネージャーから受け取る必要があります。そのため、更新のたびに確認する必要はありません。

10.1クローンソースを見つける、簡単な方法

更新後に再起動していない場合は、使用します

mount | grep boot

どのEFIパーティションがマウントされているかを確認します。そのパーティション(通常は/dev/sdb1)をクローンソースとして使用する必要があります。

10.2クローンソースを見つける、偏執的な方法

マウントポイントを作成し、両方のパーティションをマウントします。

Sudo mkdir /tmp/sda1 /tmp/sdb1
Sudo mount /dev/sda1 /tmp/sda1
Sudo mount /dev/sdb1 /tmp/sdb1

各ツリーで最新のファイルのタイムスタンプを見つける

Sudo find /tmp/sda1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sda1
Sudo find /tmp/sdb1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sdb1

タイムスタンプを比較する

cat /tmp/newest.sd* | sort | tail -n 1 | Perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 is newest.\n"'

/dev/sdb1 is newest(ほとんどの場合)または/dev/sda1 is newestを印刷する必要があります。そのパーティションをクローンソースとして使用する必要があります。

キャッシュ/パーティションの不整合を回避するために、クローニングの前にパーティションをアンマウントします。

Sudo umount /tmp/sda1 /tmp/sdb1

10.3クローン

/dev/sdb1がクローンソースの場合:

Sudo dd if=/dev/sdb1 of=/dev/sda1

/dev/sda1がクローンソースの場合:

Sudo dd if=/dev/sda1 of=/dev/sdb1

完了!

11.仮想マシンの落とし穴

最初に仮想マシンでこれを試してみたい場合、いくつかの注意事項があります。どうやら、UEFI情報を保持するNVRAMは再起動間で記憶されますが、シャットダウンと再起動のサイクル間では記憶されません。その場合、UEFI Shellコンソールが表示される場合があります。次のコマンドを実行すると、/dev/sda1からマシンが起動します(FS1:には/dev/sdb1を使用します)。

FS0:
\EFI\ubuntu\grubx64.efi

virtualboxでのUEFIブート-Ubuntu 12.04 の一番上の答えの最初の解決策も役立つかもしれません。

12
Niclas Börlin