RAID+LVM (1/2)

LinuxソフトウェアRAIDとLVMを弄ってみたかったので,サーバのシステムを再インストール. /boot もふくめて RAID 上に構築する.


パーティション構成

以下のような構成にする.

Drives_on_Pete_normalsize

swap 領域までミラーリングすることには違和感があるが,swap が壊れた場合のリスクを考慮する. 安全よりも性能を取る場合は md アレイ外に sda3, sdb3 を作ってストライピングするのが良いかもしれない.

パーティション分割は,基本に沿ってシステム領域とデータ領域 (/home, /storage) は別領域にする. また / を ro でマウントしなければならないときのことを考え,作業領域 (/var) も別ける.

再インストール

システムを展開するだけの最低限のmdアレイを作成する. インストーラで全ての領域作成とRAID/LVM設定を行ったほうがスマートなのだが, あえて手動で設定する余地を残しておく.

インストーラでの作業手順を以下に示す. EtchのStandardシステムは作業データを含めて約470MBなので,それくらいの領域を作成している.

  1. ストレージ設定の際に,sda1sdb1を500MBのRAID用パーティションとして作成
  2. RAID設定用の選択肢が表れるので,それを選んでmdデバイス (md0) を作成
  3. mdアレイ上にext3 fsを作成 (LABEL=BOOT)
  4. mdアレイをマウントし,その上にシステムをインストール

ここで作った領域は,後に/bootとして転用する.

インストールが終わったらリブートし,新しいシステムでログインする.

md アレイの作成 (残り部分)

fdiskを使い,sdasdbに"raid autodetect"パーティションを作成する. これはsda2sdb2になる.

# 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ランプ常時点灯状態でシステムが反応しなくなったので非常に焦った.