{{outline}} !!!目的 *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 インストール !インストーラ起動 *LiveDVD 起動画面 {{ref_image CentOS-6.5-LiveDVD-001.png}} *英語画面の場合、いったんログアウトして日本語を指定 {{ref_image CentOS-6.5-LiveDVD-003-logout.png}} *英語以外を選択 {{ref_image CentOS-6.5-LiveDVD-004-langother.png}} *日本語を選択 {{ref_image CentOS-6.5-LiveDVD-005-langjp.png}} *日本語のデスクトップを確認 {{ref_image CentOS-6.5-LiveDVD-008-jpdesktop.png}} *インストーラ起動 {{ref_image CentOS-6.5-LiveDVD-007-installer.png}} *日本語 *jp106 キーボード !ディスク配置方法の選択 {{ref_image CentOS-6.5-LiveDVD-009-storageselect.png}} *「どのタイプのインストールをしますか?」 *「カスタムレイアウトを使用する」 !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」ボタン {{ref_image CentOS-6.5-LiveDVD-010-disklayout.png}} *「変更をディスクに書き込む」 *結果、 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 *RAID復旧 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 起動コードが不十分 +PC起動 +HDD MBR (セクタ1) 読み込み /boot/grub/stage1 512バイト +HDD ファイルシステム認識 /boot/grub/e2fs_stage1_5 13380バイト セクタ 2〜27 +HDD kernel+init* 読み込み /boot/grub/kernel 4Mバイト /boot/grub/initramfs 16Mバイト +kernel 起動 -->複雑なファイルシステムを認識 +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台の故障に耐久 *RAID10,RAID50,RAID60 *<<スペアディスク>>を用意して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/プロセス番号/ 各プログラムの状況