お知らせ!! 「jpcmoh.myds.me」から「mohlog.com」へ変更しました
PR

RAID1 Ubuntu Server障害発生リハーサル その3

アイキャッチ RAID1リハーサルその3 Linuxをつかおう!!
記事内に広告が含まれています。
スポンサーリンク

はじめに

今回は、RAID1の片側SSDが故障してしまった場合を想定して、復旧作業をしてみます。
あわせて、RAID1の拡張も行います。
手順を図で表すと、こんな感じです。SSD1が故障した想定です。

RAID1 Ubuntu Server障害発生リハーサル その3イメージ
NOTE

故障の状況により、/dev/sda、/dev/sdbがかわります。
どのデバイスが正常で、どのデバイスが異常かよく確認したうえ、読み替えて実施ください。
著者の環境では、この内容でうまくできておりますが、ご自分の環境で事前テストするのが確実です。
もしトラブルや損害が発生しましても、一切の責任を負い兼ねますのでご了承下さい。

NOTE

Ubuntu Server は、24.04.2LTSを使用しています。

スポンサーリンク

RAID1 正常時と、SSD1異常時の状態

RAID1 正常時からSSD1異常

RAIDの状態は、コマンド「cat /proc/mdstat」で確認できます。


RAID1 正常時
RAID1 正常時
SSD1異常時
SSD1異常時

今回は、/dev/sdaとして認識されていた、SSD1が異常で認識しなかった場合を想定してますので、
md0 : active raid1 sdb2[1] と sda2[0]が消えており、
116050944 blocks super 1.2 [2/1] [_U] と、[2/2] [UU] からかわっています。

スポンサーリンク

復旧作業

SSD交換

異常があったSSD1を取り外し、新しいSSD3を接続します。
今回新しく使用したのは、SSD1の120GBより容量の大きな256GBのSSDを使用しています。

SSD1異常からSSD3接続

SSD3パーティション分割

新しいSSD(SSD3)をパーティション分割しますが、SSD2のレイアウトを一部複製する形で実施します。

SSD3パーティション分割

パーティションレイアウト情報の書き出し

パーティションレイアウトを、問題の出ていないSSD(SSD2・・・/dev/sdb)から書き出し、ファイルとして保存します。

コマンド:パーティションレイアウト情報の書き出し

sudo sfdisk -d /dev/sdb > sdb.partinfo

sdbは、問題の出ていないSSDです。
sdb.partinfo は、保存するファイル名なので、何でもよいです。
結果は以下のようになります。

sdb.partinfoの内容
label: gpt
label-id: E071FA00-049C-46BF-A51B-D52C17B005A2
device: /dev/sdb
unit: sectors
first-lba: 34
last-lba: 250069646
sector-size: 512
/dev/sda1 : start= 2048, size= 2201600, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=84284536-B6E9-46F4-BA88-789987C05BE1
/dev/sda2 : start= 2203648, size= 247863296, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=3195D86A-9552-4F6D-9771-5450411DAB44

パーティションレイアウト情報の編集

読み出した情報、sdb.partinfo から赤字部分を削除します。
やっていることは、
label-idやuuid等がSSD3(/dev/sda)とSSD2(/dev/sdb)で同じにならないように、削除。
容量違いのSSDを使うので、last-lbaや、第2パーティションのサイズ情報も消してしまい、第2パーティションが最大容量となるようにする。

コマンド:sdb.partinfoの編集

sudo nano ./sdb.partinfo

編集済みsdb.partinfoの内容
label: gpt
device: /dev/sdb
unit: sectors
first-lba: 34
sector-size: 512
/dev/sda1 : start= 2048, size= 2201600, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B
/dev/sda2 : start= 2203648, size= , type=0FC63DAF-8483-4772-8E79-3D69D8477DE4

SSD3にパーティション情報の反映(パーティション分割)

コマンド:パーティション情報の反映

sudo sfdisk /dev/sda < ./sdb.partinfo

NOTE

くれぐれも、sdasdb を間違えないようにしてください。

結果

RAID1にSSD3の第2パーティション/dev/sda2を追加して復旧

RAIDに追加
コマンド:RAID1へsda2を追加

sudo mdadm --add /dev/md0 /dev/sda2

NOTE

くれぐれも、sdasdb を間違えないようにしてください。

mdadm --add 結果
コマンド:復旧状態確認

cat /proc/mdstat

復旧状態が確認

RAID1の復旧自体は、これが100%になれば完了です。

ESPの復旧 (/dev/sda1の復旧)

SSD3の/dev/sda1とSSD2の/dev/sdb1はRAID1になっていないので、これを復旧します。
ここには、起動時に必要なファイルが入っています。

SSD3 /dev/sda1 をフォーマット

FAT形式でフォーマットします。

コマンド:FAT形式でフォーマット

sudo mkfs.vfat /dev/sda1

FATフォーマット

grub-efiの再設定・・・ESP(/dev/sda1)の復旧

コマンド:grub-efiの再設定

sudo dpkg-reconfigure grub-efi-$(dpkg --print-architecture)

dpkg-reconfigure grub-efi

途中、5つほど問い合わせがありますが、4つ目まではデフォルトのまま、5つめのインストール先の設定で、RAIDを構成している2つのSSDを選択します。

grub-efi d5
スポンサーリンク

RAID1拡張

RAID1の容量を、容量の少ない方、今回はSSD2の第2パーティションいっぱいまで広げます。

RAID1拡張
コマンド:RADI1 md0の拡張

sudo mdadm --grow --size=max /dev/md0

md0拡張結果
コマンド:RADI1 md0の状態確認

sudo mdadm --detail /dev/md0

 mdadm --detail /dev/md0結果

もともとは、SSD1の容量にあわせて設定されていた118.84GB(110.67GiB)が、126.84GB(118.13GiB)まで広がりました。

スポンサーリンク

再起動

SSD1が故障したため、/boot/efi がマウントされていない状態のままです。
再起動して、マウントします。

再起動

以上で、復旧作業は完了になります。

スポンサーリンク

おまけ

grub-efiの再設定・・・ESP(/dev/sda1)の復旧で、警告がでた場合

本記事の作業を、何回か繰り替えしためしましたが、まれに発生しました。(下図赤字部分)
よく分かりませんでしたが、この状態でも起動はします。
再起動後に再び「grub-efiの再設定・・・ESP(/dev/sda1)の復旧」の

コマンド:grub-efiの再設定

sudo dpkg-reconfigure grub-efi-$(dpkg --print-architecture)

を実行したらエラーは出ずに終了したので、よしとしてます。

RAID1領域の縮小

RAID1領域は、縮小もできます。ただし、実際に使用している容量より小さくはできません。

コマンド:RAID1領域の縮小

sudo mdadm --grow --size=<size_Kilobytes> /dev/md0

--size=のあとに、サイズをキロバイト単位で指定します。

実施例)123865088 (118.13 GiB 126.84 GB)から、116050944 (110.67 GiB 118.84 GB)に縮小

RAID1領域の縮小

コメント

タイトルとURLをコピーしました