UEFI BIOSを搭載したマシンにRAID 1とLVMを搭載したUbuntu 18.04デスクトップをインストールする


11

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

回答:


18

いくつかの助けを借りてUEFIとRAID1 + LVMでのUbuntu Serverをインストールする方法Ubuntuの18.04で設定RAID、およびUbuntuの18.04デスクトップインストーラでRAIDをサポートしていますか?そして起動時「のbtrfsファイルシステムのスキャン」を取り除くためにどのように?、私はLinuxコマンドのみを使用して作業HOWTOを組み立てることができました。

要するに

  1. 代替サーバーのインストーラーをダウンロードします。
  2. 手動パーティショニング、EFI + RAID、LVMをRAIDパーティションにインストールします。
  3. インストールされているパーティションから他のドライブにE​​FIパーティションを複製します。
  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
      • Delete MD deviceすべてのMDデバイスが削除されるまで選択します。
    • 物理ドライブ上のすべてのパーティションを選択し、を選択して削除しますDelete the partition
  • 物理パーティションを作成する
    • 各ドライブで、ディスクの先頭に512 MBのパーティションを作成します(他のユーザーは128 MBを使用しているのを見てきました)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ます。
    • デバイスにボリュームグループvgを作成します/dev/md0
    • 論理ボリュームを作成します。
      • swap 16Gで
      • root 35Gで
      • tmp 10Gで
      • var 5Gで
      • home 200Gで
  • 論理パーティションの使用方法を設定する
    • 以下のためにswapパーティションを選択Use as: swap
    • 他のパーティションのために、選択しUse as: ext4適切なマウントポイント(と//tmp/var/home、それぞれ)。
  • を選択しFinish partitioning and write changes to diskます。
  • インストールプログラムを終了して再起動します。

以前にRAID構成があったドライブに再インストールする場合、上記のRAID作成手順が失敗し、mdデバイスが取得されない場合があります。その場合、gparted このHOWTOを再起動する前に、Ubuntu Live USBスティックを作成して起動し、実行してすべてのパーティションテーブルをクリアする必要がある場合があります。

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。シェルによっては、バックスラッシュをエスケープする必要がある場合があります。
  • で確認してくださいefibootmgr -vあなたが同じファイル名を持っていることubuntuubuntu2、ブート項目と、彼らは起動順序の最初の2つであることを。
  • これで、いずれかのドライブに障害が発生した場合でも、システムが起動するはずです。

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シェルコンソールが表示されることがあります。次のコマンドは、からあなたのマシンにあなたを起動する必要があります/dev/sda1(使用FS1:のために/dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

virtualboxでのUEFIブートのトップアンサーの最初のソリューション-Ubuntu 12.04も役立つかもしれません。


暗号化されたミラーセット/ RAID 1でLUKSをどのように使用しますか?暗号化が2回発生するのを回避します(たとえば、LUKSはmdadmの下に置かれるため、IOが2回発生しますが、暗号化自体は1回だけ発生しますが、実際には一部のセットアップでは発生しません、ZFSに推奨されるもののように、ボリュームがデバイスごとに1回ずつ2回暗号化され、物事の暗号化側のコストを効果的に複製します)。この設定に関する最近の説明は見つかりませんでした。
2018

2
@soze、残念ながら、暗号化されたLinuxパーティションの経験はありません。仮想マシンで試行錯誤して調べてみます。注意:仮想マシンの落とし穴に関するセクションを上記に追加しました。
NiclasBörlin18年

@NiclasBörlin、ありがとう!RAIDとLVMでのブートパーティションの作成に苦労していましたが、あなたの答えは明白でした。どうもありがとう!
Gui Ambros

聖なる牛!いいね!
pipeofrogs

代替インストーラがなくなったため、これはFocal Fossaでは機能しなくなったようです。Focalのインストーラーには、前述のパーティショニングオプションがなく/boot、自動レイドインストールルートに移動しようとした場合にデバイスを要求します。
ウェディ

3

RAID-1 + XFS + UEFI

@NiclasBörlinの回答で、道の約99%を得ることができました。ありがとうございます。

また、次の回答も参考にしています。

ここに私が物事を台無しにした方法があります

  1. BIOSを「自動」モードにします。これにより、USBキーをUEFIモードではなく起動できます。これにより、Grubが正しくインストールされませんでした。モードをUEFIのみに切り替え、再起動してすべての論理ボリューム、RAIDグループ、およびパーティションを削除し、最初からやり直しました。私はさらにEFIパーティションにgrubを再インストールしようとしましたが、これは事態をさらに悪化させました。
  2. 持つ/bootXFSのパーティションBEを。Ubuntu 18.04LTSに付属するgrub2は明らかにこれを処理しません。それはどこにも文書化されていませんが。別のEXT-4 /bootパーティションを作成しました。これはまだRAID-1 LVMボリューム上にあり、EFIのような個別のパーティションではないことに注意してください!古い回答の多くは、これは不可能だと言っていますが、今は可能であるようです。結局、grubを取得することになったが、不明なファイルシステムエラー(たとえば、「error:unknown filesystem。grub rescue>」を修正する方法)を取得したため、手掛かりXFSを/boot使用できなくなった。
  3. その途中のどこかにgrubがインストールされていましたが、空のgrubプロンプトがあり、grubメニューがありませんでした。(例:https://help.ubuntu.com/community/Grub2/Troubleshooting#Specific_Troubleshooting)。これは/boot、アクセスできないことが原因でした。

何がうまくいったか

@NiclasBörlinの回答から始めて、いくつかの小さなことを変更します。

パーティションテーブル

私は1つの大きな/パーティションを優先するので、これはその選択を反映しています。主な変更点は/boot、XFSパーティションではなくEXT4 パーティションです。

sda/
          GPT     1M (auto-added)
   sda1 - EFI - 512M
   sda2 - MD0 - 3.5G

sdb/
          GPT     1M (auto-added)
   sdb1 - EFI - 512M
   sdb2 - MD0 - 3.5G

md0/
   vg/
     boot - 1G   - EXT4 /boot
     swap - 16G  - SWAP 
     root - rest - XFS  /

インストール完了後、私はすることができたddの内容sda1sdb2他の回答で説明するように。efibootmgr詳細を使用して、2番目のドライブをブートチェーンに追加することもできました。


非常に役立ちます!私はubuntuサーバー18.04 + UEFI + RAID1 + LVMで同じ問題に直面しています。パーティションスキームに従うことは、私を大いに助けてくれました。ありがとう!
Lucas Aimaretto、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.