RAID+LVM (1/2)
LinuxのソフトウェアRAIDとLVMを弄ってみたかったので,サーバのシステムを再インストール.
/boot
もふくめて RAID 上に構築する.
パーティション構成
以下のような構成にする.
swap 領域までミラーリングすることには違和感があるが,swap が壊れた場合のリスクを考慮する.
安全よりも性能を取る場合は md アレイ外に sda3
, sdb3
を作ってストライピングするのが良いかもしれない.
パーティション分割は,基本に沿ってシステム領域とデータ領域 (/home
, /storage
) は別領域にする.
また /
を ro でマウントしなければならないときのことを考え,作業領域 (/var
) も別ける.
再インストール
システムを展開するだけの最低限のmdアレイを作成する. インストーラで全ての領域作成とRAID/LVM設定を行ったほうがスマートなのだが, あえて手動で設定する余地を残しておく.
インストーラでの作業手順を以下に示す. EtchのStandardシステムは作業データを含めて約470MBなので,それくらいの領域を作成している.
- ストレージ設定の際に,
sda1
とsdb1
を500MBのRAID用パーティションとして作成 - RAID設定用の選択肢が表れるので,それを選んでmdデバイス (
md0
) を作成 - mdアレイ上にext3 fsを作成 (
LABEL=BOOT
) - mdアレイをマウントし,その上にシステムをインストール
ここで作った領域は,後に/boot
として転用する.
インストールが終わったらリブートし,新しいシステムでログインする.
md アレイの作成 (残り部分)
fdisk
を使い,sda
とsdb
に"raid autodetect"パーティションを作成する.
これはsda2
とsdb2
になる.
# fdisk /dev/sda
...
Command (m for help): p (現在のパーティション情報を表示)
Device Boot Start End Blocks Id System
/dev/sda1 * 1 61 489951 fd Linux raid autodetect
Command (m for help): n (新しいパーティション sda2 を作成)
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (62-30401, default 62):
Last cylinder or +size or +sizeM or +sizeK (62-30401, default 30401):
Command (m for help): t (パーティションタイプを 0xfd に変更)
Partition number (1-4): 2
Hex code (type L to list codes): fd
Command (m for help): w (書き込み)
新しく作った二つのパーティションを束ね,mdアレイmd1
を作成する.
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
# cat /proc/mdstat
md1 : active raid1 sda2[0] sdb2[1]
243705984 blocks [2/2] [UU]
[===>.................] resync = 15.9% (38856832/243705984) finish=95.1min speed=35896K/sec
この作業には 非常に時間がかかる (240GBで約2時間) 上,途中 ディスク I/O を完璧に使い切ることに注意する. HDDランプ常時点灯状態でシステムが反応しなくなったので非常に焦った.