トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

CentOS6 md RAID1 演習

目的

  • CentOS での software-RAID の md-RAID
  • CentOS でインストールした RAID を対象とする。
  • 障害発生時の復旧方法を確認する。
    • RAID の障害が復旧しても、起動ができない場合がある。
  • 起動可能にするための手順を確認する。

概要

機材概要

  • CentOS 6.5 x86_64 LiveDVD
  • Linux がインストール可能なパソコン
  • 複数のHDD

今回の機材

項目 内容
機種 HP ML110G7
CPU Intel Xeon E3 1220 3.1GHz 4コア 8Mキャッシュ
メモリ 32G
ハードディスク 250G+250G+500G+500G

作業手順

CentOS-6 md-RAID インストール

インストーラ起動

  • 英語画面の場合、いったんログアウトして日本語を指定
  • 英語以外を選択
  • 日本語を選択
  • 日本語のデスクトップを確認
  • インストーラ起動
  • 日本語
  • jp106 キーボード

ディスク配置方法の選択

  • 「どのタイプのインストールをしますか?」
  • 「カスタムレイアウトを使用する」

RAID として使用する領域をディスク上に作成

  • 「空き」の領域を選択、「作成」ボタン
  • 「ストレージを作成」ダイアログで「基本パーティション」を選択、「作成する」ボタン
  • 「パーティションを追加」ダイアログで「使用可能なドライブ」で「sda」にチェックを入れる
  • 「ファイルシステムタイプ」に「RAIDパーティション」を選択
  • 「サイズ」に「512MB」、「容量追加オプション」に「固定容量」を選択、「OK」ボタン
  • sda1 に 0.5G が作成される
  • sdb1 に同様に 0.5G にRAIDパーティションを作成
  • 「ストレージを作成」ダイアログで「ソフトウェアRAIDを作成」の「RAIDパーティション」を選択、「作成する」ボタン
  • 「パーティションを追加」ダイアログで「使用可能なドライブ」で「sda」にチェックを入れ、
  • 「容量追加オプション」に「最大許容量」を選択
  • 起動用なので「基本パーティション」にチェックを入れて「OK」ボタン
  • sda1 に 9.5G, sda2 に 0.5G
  • sdb1 に同様にRAIDパーティションを作成
  • sdb1 に 9.5G, sdb2 に 0.5G
  • 結果、sda1:9.5G sda2:0.5G sdb1:9.5G sdb2:0.5G

RAID1 のデバイスを構成

  • / (ルート) ファイルシステムを作成
  • 「ストレージを作成」ダイアログで「ソフトウェアRAIDを作成」の「RAIDデバイス」を選択、「作成する」ボタン
  • RAIDデバイスの作成」ダイアログで「マウントポイント」に / を指定
  • 「ファイルシステムタイプ」は ext4 のまま変更なし
  • 「デバイス」は md0 のまま変更なし
  • RAID レベルは RAID1
  • RAIDメンバーは sda1+sdb1
  • 「OK」ボタン
  • swap 領域を作成
  • 「ストレージを作成」ダイアログで「ソフトウェアRAIDを作成」の「RAIDデバイス」を選択、「作成する」ボタン
  • RAIDデバイスの作成」ダイアログで「マウントポイント」に / を指定
  • 「ファイルシステムタイプ」は swap を指定
  • 「デバイス」は md1 のまま変更なし
  • RAID レベルは RAID1
  • RAIDメンバーは sda1+sdb1
  • 「OK」ボタン
  • 「変更をディスクに書き込む」
  • 結果、 md0=RAID1(sda1+sdb1) md1=RAID1(sda2+sdb2)

起動設定

  • ブートローダを /dev/sda に書き込む
  • (推測) /dev/sdb にも書き込まれているため、2台目HDD のみでの起動が可能

その他

  • インストールを継続
  • Basic-Server
  • vmware-tools をインストールするためには minimal だと足りない。

MD 管理

  • Multiple Device
  • 管理コマンド mdadm

MDデバイス名

  • /dev/md0
  • /dev/md1

MD状況確認

cat /proc/mdstat
mdadm --detail /dev/md0

MDデバイス除去

  • デバイスの切断
mdadm /dev/md0 --fail /dev/sda1
  • RAIDからのデバイスの除去
mdadm /dev/md0 --remove /dev/sda1

MDデバイスの追加

mdadm /dev/md0 --add /dev/sda1

LVM 管理

  • Logical Volume Manager
  • 管理コマンド lvm
  • 稼働させながらPVを追加しファイルシステムを拡張できる。
  • 縮小はオフラインで実施することが必要

LVM デバイス名

  • /dev/mapper/vg_data-lv_data

LVM 状況確認

  • vgs ボリュームグループの状況表示, Volume Group
  • lvs 論理ボリュームの状況表示, Logical Volume
  • pvs 物理ディスクの状況表示, Physical Volume
  • vgdisplay

LVM デバイス除去

  • VG から PV の除去
vgremove vg_data /dev/sda3
  • PV登録解除
pvremove /dev/sda3

LVM デバイス追加

  • PV 作成
pvcreate /dev/sda3
  • VG に PV を追加
vgextend vg_data /dev/sda3
  • 論理ボリューム拡張
lvextend --size +100G vg_data/lv_data
  • ファイルシステム拡張
resize2fs /dev/mapper/vg_data-lv_data

HDD 障害試験

HDD HDD1 HDD2
状況 正常 正常
/ デバイス /dev/sda1 /dev/sdb1
swap デバイス /dev/sda2 /dev/sdb2

1台目HDD 障害

  • 稼働中に1代目のHDDを除去
  • 稼働を確認
HDD HDD1 HDD2
状況 障害 正常
/ デバイス /dev/sda1 /dev/sdb1
swap デバイス /dev/sda2 /dev/sdb2

1台目HDD 障害の復旧

  • 1台目HDD に新規のHDDを追加
HDD HDD1 HDD2
状況 障害 正常
/ デバイス なし /dev/sdb1
swap デバイス なし /dev/sdb2
  • X-Window GUI 必要に応じてTERMINAL/端末画面を複数立ち上げる
  • X-Window GUI CTL+ALT+F1〜F6 で画面切り替え
  • テキスト画面 CUI ALT+F1/F2/F3/F4 で複数画面を操作する
  • HDD2 パーティションテーブル確認
fdisk -l -u /dev/sdb
  • -l パーティションテーブルの表示 (List)
  • -u 表示単位をセクタに切り替え、標準は古い形式のシリンダ単位 (Unit)
  • HDD1 パーティションテーブル作成
fdisk -u -c /dev/sda
  • -u 表示単位をセクタに切り替え、標準は古い形式のシリンダ単位 (Unit)
  • -c 古いDOS形式を使わない (Compatibility)
  • 「n」Enter 新規作成
  • 「p」Enter 基本パーティション指定 (Primary)
  • 「1」Enter パーティション番号
  • 「開始位置」Enter
  • 「終了位置」Enter
  • 「a」Enter 起動可能に設定 (Activate)
  • 「1」Enter
  • 「t」Enter 利用タイプ変更
  • 「1」Enter パーティション選択
  • 「fd」Enter パーティションタイプ指定(fd=Linux RAID)
  • 「t」Enter 利用タイプ変更
  • 「2」Enter パーティション選択
  • 「fd」Enter パーティションタイプ指定(fd=Linux RAID)
  • 「p」設定内容表示
  • 「w」設定書き込み
HDD HDD1 HDD2
状況 障害 正常
/ デバイス /dev/sda1 /dev/sdb1
swap デバイス /dev/sda2 /dev/sdb2
  • RAIDデバイス確認
cat /proc/mdstat
mdadm /dev/md0 --add /dev/sda1
mdadm /dev/md1 --add /dev/sda2
HDD HDD1 HDD2
状況 正常 正常
/ デバイス /dev/sda1 /dev/sdb1
swap デバイス /dev/sda2 /dev/sdb2

再起動 #1

  • 起動できない!!!
  • RAID は復活したが、Linux 起動コードが不十分
  1. PC起動
  2. HDD MBR (セクタ1) 読み込み /boot/grub/stage1 512バイト
  3. HDD ファイルシステム認識 /boot/grub/e2fs_stage1_5 13380バイト セクタ 2〜27
  4. HDD kernel+init* 読み込み /boot/grub/kernel 4Mバイト /boot/grub/initramfs 16Mバイト
  5. kernel 起動 -->複雑なファイルシステムを認識
  6. init 起動

起動コード整備

  • 生きているHDD2 または LiveCD で起動
  • grub 起動
  • 起動コード検索
find /boot/grub/stage1
  • hd0 hd1 の情報を取得
  • 起動コード設置
root (hd0,0)  HDD1の1番目のパーティションを選択
setup (hd0)   起動コード設置
root (hd1,0)  HDD2の1番目のパーティションを選択
setup (hd1)   起動コード設置

再起動 #2

  • 起動確認

解説

RAID レベル

RAID レベル 説明 長所 短所
RAID0 ストライピング 分散保存 高速 障害発生しやすい
RAID1 ミラーリング コピー保存 計算なし 性能低下 容量半分=コスト2倍
RAID5 分散パリティ (例)合計値の保存 容量損失1台のみ 計算コスト大
RAID6 分散パリティ 2重化 計算コスト超大 安全性大、2台の故障に耐久
  • スペアディスクを用意してRAIDに参加させておくと、ドライブ故障発生時に自動で置換作業を行う。
  • スペア置換中に障害が発生する場合もある。

Software-RAID 対 Hardware-RAID

比較項目 SW-RAID HW-RAID 備考
CPU 使用 する しない
スピード CPU が良いと差が出ない、RAID5/6 では高負荷
価格 なし 数万〜
運用 コマンドラインで運用が煩雑 GUIで使いやすくできる
対応バージョン Linux なら使える バージョン対応の確認が必要
インストール作業 不要 必要 GUI

起動できるRAID

  • MD-RAID1 暗号化なし 起動できる
  • MD-RAID1 暗号化あり 起動できない
  • MD-RAID0 起動できない
  • MD-RAID5 起動できない
  • LVM 起動できない
  • 起動できないファイルシステムは /boot を ext4 で別に用意して起動する。
  • /boot ext4 100M
  • / LVM RAID1/5
  • /boot ext4 100M
  • / MD-RAID5

/proc システム情報

cat /proc/version  Linux のバージョン
cat /proc/cpuinfo  CPU
cat /proc/meminfo  メモリ
cat /proc/diskstats  ディスク
cat /proc/net/bonding/bond1  ネットワークのチーミング状況
cat /proc/プロセス番号/  各プログラムの状況