soft-RAID構成でsystem drive(/boot,/など)を作ってみた
ESXiで構築して、片方のディスクイメージを削除して再駆動. 再度ディスクイメージを追加して復旧ができた.
その作業を下記に示す

仮想リソースの準備

ディスクイメージは2つ用意します。ここでは16GBを2つです。
2017y07m23d_230410116.png

あと仮想マシンのプロパティから「オプション」タブの「詳細」-「起動オプション」で
指定可能なブートファームウエアは、BIOSです。
2017y07m23d_230502594.png
*EFIでは試してないが、、、無理っぽい気がする

起動 インストール開始

OSのインストールは画面に従い進めて、「インストール先」の画面で2つのHDDを選択して、「パーティションを自分で構成する」を有効にします。
2017y07m23d_231334995.png
ディスクの空きサイズが992.5KiBとあるが、仮想ディスクなので..
そして、画面左上の「完了(D)」ボタンを押下します。
「手動パーティション設定」画面に移ります。
ここでは

  • 「/boot」領域を512BM、「swap」領域を512MB、残りはすべて「/」(root)領域へ。
  • 2つのHDDはsoftware-raidで存在して、3つの領域(/boot,swap,root)のパーティションを持つ

とします。
まず「/boot」を作ります。画面左下の「+」ボタンを押下して、
2017y07m23d_232010505.png
「新規のマウントポイントの追加」画面からマウントポイント欄に「/boot」(プルダウンから選択)、割り当てる領域には「512」を指定して「マウントポイントの追加」ボタンを押下します
2017y07m23d_232102460.png
「手動でパーティション設定」画面に戻り、作った「/boot」領域をデバイスタイプ「RAID」に変更します。自動的にRAIDレベルは「RAID1」になります
2017y07m23d_232730711.png

次に「swap」領域
こちらも同じように画面左下の「+」ボタンを押下して、現れた「新規のマウントポイントの追加」画面で今度はマウントポイント欄を「swap」、領域のサイズを「512」にして「マウントポイントの追加」ボタンを押下します
2017y07m23d_233100158.png
「手動でパーティション設定」画面に戻り、こちらも作った「swap」領域のデバイスタイプを「RAID」に変更します。そして「設定の更新」ボタンを押下します。
2017y07m23d_233734384.png

最後に「/(root)」領域
こちらも同じように画面左下の「+」ボタンを押下して、「新規のマウントポイントの追加」画面を表示させ、今度はマウントポイント欄に「/」をブルダウンから選択して、領域サイズには何も記載せず、そのまま「マウントポイントの追加」ボタンを押下します
2017y07m23d_234041015.png
これで残りの領域がすべて「/(root)」に渡ることになります
「手動でパーティション設定」画面に戻り、先ほどの「swap」領域と同様の選択肢にして、「設定の更新」ボタンを押下します。
2017y07m23d_234519357.png

これで画面左上の「完了」ボタンを押下します
「変更の概要」画面が表示され、「変更を許可する」ボタンを押下します
2017y07m23d_234949840.png

ここらが重要な場所。あとは通常のインストールを進めます

software-raidでの稼動確認

稼動確認といっても各種設定内容を示す

[root@c101 ~]# df -lTh
ファイルシス   タイプ   サイズ  使用  残り 使用% マウント位置
/dev/md125     xfs         15G  1.2G   14G    8% /
devtmpfs       devtmpfs   911M     0  911M    0% /dev
tmpfs          tmpfs      920M     0  920M    0% /dev/shm
tmpfs          tmpfs      920M  8.5M  912M    1% /run
tmpfs          tmpfs      920M     0  920M    0% /sys/fs/cgroup
/dev/md127     xfs        510M  169M  342M   34% /boot
tmpfs          tmpfs      184M     0  184M    0% /run/user/0
[root@c101 ~]#
[root@c101 ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb3[1] sda3[0]
      15717376 blocks super 1.2 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk
 
md126 : active raid1 sdb2[1] sda2[0]
      524736 blocks super 1.2 [2/2] [UU]
 
md127 : active raid1 sdb1[1] sda1[0]
      525248 blocks super 1.0 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk
 
unused devices: <none>
[root@c101 ~]#

どうしてmd125とかな数字なのかと、、、
HDDのパーティション情報を提示する

[root@c101 ~]# parted /dev/sda
GNU Parted 3.1
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 17.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
 
番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  539MB   538MB   primary  xfs               boot, raid
 2    539MB   1077MB  538MB   primary                    raid
 3    1077MB  17.2GB  16.1GB  primary                    raid
 
(parted) q
[root@c101 ~]#

もう片方の/dev/sdbも同じ内容であった


片方のディスクイメージを削除

片方のdiskにエラーが発生した場合を想定。mdadmで意図的に障害を発生させてみる

[root@c101 ~]# mdadm --manage /dev/md125 --fail /dev/sda3
mdadm: set /dev/sda3 faulty in /dev/md125
[root@c101 ~]#

っで、/proc/mdstatを確認すると

[root@c101 ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb3[1] sda3[0](F)
      15717376 blocks super 1.2 [2/1] [_U]     <--- 
      bitmap: 1/1 pages [4KB], 65536KB chunk
(略)

確かに障害が確認。同時にメールも飛んできた。
っで、故障した領域(/dev/sda3)を外します

[root@c101 ~]# mdadm --manage /dev/md125 --remove /dev/sda3
mdadm: hot removed /dev/sda3 from /dev/md125
[root@c101 ~]#

っでまた/proc/mdstatを確認すると、「sda3[0](F)」が除かれたことが分かる

[root@c101 ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb3[1]
      15717376 blocks super 1.2 [2/1] [_U]
      bitmap: 1/1 pages [4KB], 65536KB chunk
(略)

っで、再度/dev/sda3を繋げてみる

[root@c101 ~]# mdadm --manage /dev/md125 --add /dev/sda3
mdadm: re-added /dev/sda3
 
[root@c101 ~]#
[root@c101 ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sda3[0] sdb3[1]
      15717376 blocks super 1.2 [2/1] [_U]
      [==========>..........]  recovery = 51.8% (8144320/15717376) finish=1.6min speed=75960K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk
(略)

とリビルドが自動的に開始され復旧が行われる。これは既定どおりの動作です。

次に、稼働中に片方のディスクを丸ごと削除してみる。だが、削除方法が分からないので、
マシンを一旦停止して、片方のディスクイメージファイルを削除してみた。

2017y07m24d_002641125.png
そしてディスク1枚だけで起動してみた
2017y07m24d_002816530.png

起動には少々時間が掛かるが起動に成功。(3minくらい)
片方が無くなったので/proc/mdstatは下記のような感じになる

[root@c101 ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sda3[1]
      15717376 blocks super 1.2 [2/1] [_U]
      bitmap: 1/1 pages [4KB], 65536KB chunk
 
md126 : active (auto-read-only) raid1 sda2[1]
      524736 blocks super 1.2 [2/1] [_U]
 
md127 : active raid1 sda1[1]
      525248 blocks super 1.0 [2/1] [_U]
      bitmap: 1/1 pages [4KB], 65536KB chunk
 
unused devices: <none>
[root@c101 ~]#

swap領域も片方運転だが、機能は保持されている

[root@c101 ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/md126                              partition       524732  0       -1
[root@c101 ~]#

稼動そのものには影響はない。いつもどおり使用できる状態である。
ディスクの片方がなく片肺運転だけど


新しいディスクイメージを追加して修復

ESXiの操作でディスクイメージを追加します。そうして起動を行うとブートディスクが見つからない状態になります。
恐らく/dev/sdaを削除したため、/dev/sdb側を削除していれば発生しないかも知れない
2017y07m24d_121112223.png
その場合、BIOS画面で/dev/sdbを起動ディスクに指定します
下記画面だと(0:1)が/dev/sdbで削除されていないデバイスに該当します
2017y07m24d_121515719.png

すると起動します。新しいディスクを入れたためか、swapがありません

[root@c101 ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
[root@c101 ~]#

各ディスクのパーティションは下記のようになります
留意 software-raidのデバイス名が変わっていることに留意

[root@c101 ~]# cat /proc/partitions
major minor  #blocks  name
 
   2        0          4 fd0
   8        0   16777216 sda
   8       16   16777216 sdb
   8       17     525312 sdb1
   8       18     525312 sdb2
   8       19   15725568 sdb3
   9      126     525248 md126
   9      125   15717376 md125
  11        0    1048575 sr0
[root@c101 ~]#

追加した/dev/sdaがあります。
このデバイス/dev/sda に /dev/sdb と同じようにパーティションを作成します。
まず、/dev/sdbのパーティション情報を参照

[root@c101 ~]# parted /dev/sdb
 :
(parted) unit s
(parted) print
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 33554432s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
 
番号  開始      終了       サイズ     タイプ   ファイルシステム  フラグ
 1    2048s     1052671s   1050624s   primary  xfs               boot, raid
 2    1052672s  2103295s   1050624s   primary                    raid
 3    2103296s  33554431s  31451136s  primary                    raid
 
(parted)

なので、/dev/sdaもmsdosパーティションテーブルにしてパーティションを作成します。

[root@c101 ~]# parted /dev/sda
(parted) mklabel msdos
(parted) unit s
(parted) 
(parted) mkpart
パーティションの種類?  primary/プライマリ/extended/拡張? primary
ファイルシステムの種類?  [ext2]? xfs
開始? 2048s
終了? 1052671s
(parted)
(parted) mkpart
パーティションの種類?  primary/プライマリ/extended/拡張? primary
ファイルシステムの種類?  [ext2]?
開始? 1052672s
終了? 2103295s
(parted)
(parted) mkpart
パーティションの種類?  primary/プライマリ/extended/拡張? primary
ファイルシステムの種類?  [ext2]?
開始? 2103296s
終了? 33554431s
(parted)
(parted) set 1 boot on
(parted) set 1 raid on
(parted) set 2 raid on
(parted) set 3 raid on
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 33554432s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
 
番号  開始      終了       サイズ     タイプ   ファイルシステム  フラグ
 1    2048s     1052671s   1050624s   primary                    boot, raid
 2    1052672s  2103295s   1050624s   primary                    raid
 3    2103296s  33554431s  31451136s  primary                    raid
 
(parted)

と同じようなパーティションが作成できた。あとはmdadmを使ってraidを修理します

[root@c101 ~]#  mdadm --manage /dev/md126 --add /dev/sda1
[root@c101 ~]#  mdadm --manage /dev/md125 --add /dev/sda3

これで/dev/md126(/boot)と/dev/md125(/)の復旧が完了。
このりはswapである。swapが既に使われていない状態なので、swapとして存在している/dev/md127は捨てる。

[root@c101 ~]# mdadm --stop /dev/md127
mdadm: stopped /dev/md127
[root@c101 ~]#

/proc/mdstatからも消えていることを確認します

[root@c101 ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sda3[2] sdb3[1]
      15717376 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk
 
md126 : active raid1 sda1[2] sdb1[1]
      525248 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk
 
unused devices: <none>
[root@c101 ~]#

その上で再度ボリュームを作成してswapボリュームに仕立て上げます

[root@c101 ~]# swapoff /dev/md127
[root@c101 ~]# mdadm --stop /dev/md12
[root@c101 ~]# mdadm --misc --zero-superblock   /dev/sdb2 /dev/sda2
[root@c101 ~]# mdadm --create --level=1 --raid-devices=2 --metadata=0.90 /dev/md127 /dev/sdb2 /dev/sda2
[root@c101 ~]# mkswap /dev/md127
[root@c101 ~]# swapon /dev/md127

で最終的に

[root@c101 ~]# cat /proc/mdstat
Personalities : [raid1]
md127 : active raid1 sda2[1] sdb2[0]
      525248 blocks [2/2] [UU]
 
md125 : active raid1 sda3[2] sdb3[1]
      15717376 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk
 
md126 : active raid1 sda1[2] sdb1[1]
      525248 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk
 
unused devices: <none>
[root@c101 ~]#

となる。

swap領域もraid1にする必要があるかと思うが、片方のディスクが故障した場合でも
稼動し続ける必要があるので、raid1にしている。未検証ではあるが、もしraid0なら
片方のディスクの故障で稼動が止まってしまうのでは?と。まぁ検証すればいいだけのお話

あ、再度ディスクイメージを削除したら起動しなくなった....MBR関係かな?
ここから修正可能となりましたgrub


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-07-24 (月) 14:42:30 (90d)