software RAID

■software-RAIDの作り方
1. fdiskで各ディスクにfdラベルのパーティションを作成
2. mdadmで作成
  raid1の場合

    mdadm --create --level=1 --raid-devices=2 --spare-devices=0 /dev/md0 /dev/sdb1 /dev/sdc1

  raid5の場合

    mdadm --create --level=5 --raid-devices=3 --spare-devices=0 /dev/md1 /dev/sdd1 /dev/sde1 /dev/sdf1

3. ファイルシステムをフォーマット

  mkfs -t ext3 /dev/md0

4. 意図的にディスクを故障させる。

  mdadm --manage /dev/md0 --fail /dev/sdc1
  *これで故障が発生して、/proc/mdstatで/dev/sdc1がFであると認識できます

5. 故障したディスクを取り除く

  mdadm --manage /dev/md0 --remove /dev/sdc1
  *これでシステムから/dev/md0の構成員として/dev/sdc1は存在しなくなりました。
  *ここで再起動しても、そして壊れたHDDを交換しても/dev/sdc1が正常でもraidは
  *異常構成で稼動し続けます。

6. スペアディスクの追加

  fdisk /dev/sdc
  *fdiskでfdラベルのパーティションを作成します
  mdadm --manage /dev/md0 --add /dev/sdc1
  *これで初めてディスクが追加されたことなり、raidの再構築が開始されます

オンライン容量拡張

  4本の8GB HDDのうち3本でRAID5(16GB)を構築して、後に1本追加してトータル4本のRAID5(24GB)にします。
    2012y07m25d_204505091.png

  • 3本でRAID5を構築します
    mdadm --create --level=5 --raid-devices=3 --spare-devices=0 /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1
    mkfs -t xfs -f /dev/md0
    mount -t xfs /dev/md0 /home
  • 次にもう一つをスペアディスクとして/dev/md0に追加します
    mdadm --manage /dev/md0 --add /dev/sde1
    確認
    mdadm --detail /dev/md0
    そして
    [root@w1 sample]# df -h /home
    Filesystem            Size  Used Avail Use% マウント位置
    /dev/md0               16G  524M   16G   4% /home
  • そしてスペアをRAID5構成員として加えます
    mdadm --grow /dev/md0 -n 4
    *拡張中普通にファイルを修正したりコピーできます
    完了時点では
    [root@w1 sample]# df -h /home
    Filesystem            Size  Used Avail Use% マウント位置
    /dev/md0               16G  524M   16G   4% /home
    と変化なし。っで
  • ファイルシステムへ反映
    xfs_growfs /home
    とすると
    [root@w1 sample]# df -h /home
    Filesystem            Size  Used Avail Use% マウント位置
    /dev/md0               24G  525M   24G   3% /home
    と容量が増えます

オンライン容量拡張(その2)

  2本の8GB HDD(sdb1,sdc1)でRAID1を構成して、この2つのHDDを全て16GB HDD(sdd1,sde1)と差し替える
    2012y07m26d_003845461.png

  • 2本でRAID1を構築
    mdadm --create --level=1 --raid-devices=2 --spare-devices=0 /dev/md0 /dev/sdb1 /dev/sdc1
    mkfs -t xfs -f /dev/md0
    mdadm --detail --brief /dev/md0 > /etc/mdadm.conf
    mount -t xfs /dev/md0 /home
  • 意図的に片方のHDDに障害を起こさせる
    [root@w1 ~]# mdadm --manage /dev/md0 --fail /dev/sdb1
    mdadm: set /dev/sdb1 faulty in /dev/md0
  • 障害のHDDを取り去る
    [root@w1 ~]# mdadm --manage /dev/md0 --remove /dev/sdb1
    mdadm: hot removed /dev/sdb1 from /dev/md0
  • 容量の大きいHDDを加える
    [root@w1 ~]# mdadm --manage /dev/md0 --add /dev/sdd1
    mdadm: added /dev/sdd1
    再構築開始
  • 再構築が終わったら、もう片方のHDD(sdc1)も取り出す
    [root@w1 ~]# mdadm --manage /dev/md0 --fail /dev/sdc1
    mdadm: set /dev/sdc1 faulty in /dev/md0
    [root@w1 ~]# mdadm --manage /dev/md0 --remove /dev/sdc1
    mdadm: hot removed /dev/sdc1 from /dev/md0
  • そして容量の大きいHDDを再び加える
    [root@w1 ~]# mdadm --manage /dev/md0 --add /dev/sde1
    mdadm: added /dev/sde1
    再び再構築開始
  • ここで容量を計測すると
    [root@w1 ~]# df -h /home
    Filesystem            Size  Used Avail Use% マウント位置
    /dev/md0              8.0G  139M  7.9G   2% /home
    とHDDは入れ替えたがサイズはそのまま。
  • ディスク領域のサイズを拡大
    mdadm --grow --size=max /dev/md0
    にて/dev/md0の最大まで広げます。そして次にファイルシステムのサイズも増やさせます。
    xfs_growfs /home
    こんな感じで。っで計測すると
    [root@w1 ~]# df -h /home
    Filesystem            Size  Used Avail Use% マウント位置
    /dev/md0               16G  139M   16G   1% /home
    と容量が増大されました

オンライン容量拡張(その3)

  3本の8GB HDD(sdb1,sdc1,sdd1)でRAID5を構成して、この3つのHDDを全て16GB HDD(sde1,sdf1,sdg1)と差し替える
その2と同じ。ただ単にRAID5でできるのかの検証
2012y07m29d_185730009.png

  • 3本でRAID1を構築
    mdadm --create --level=5 --raid-devices=3 --spare-devices=0 /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1
    mkfs -t xfs -f /dev/md0
    mdadm --detail --brief /dev/md0 > /etc/mdadm.conf
    mount -t xfs /dev/md0 /home
    構築完了後に/dev/sdb1から順次交換していく
  • 1本目
    mdadm --manage /dev/md0 --fail   /dev/sdb1
    mdadm --manage /dev/md0 --remove /dev/sdb1
    mdadm --manage /dev/md0 --add    /dev/sde1
  • 2本目
    mdadm --manage /dev/md0 --fail   /dev/sdc1
    mdadm --manage /dev/md0 --remove /dev/sdc1
    mdadm --manage /dev/md0 --add    /dev/sdf1
  • 3本目
    mdadm --manage /dev/md0 --fail   /dev/sdd1
    mdadm --manage /dev/md0 --remove /dev/sdd1
    mdadm --manage /dev/md0 --add    /dev/sdg1
  • そしてサイズを拡大
    mdadm --grow --size=max /dev/md0
    にて/dev/md0の最大容量まで広げ、ファイルシステムのサイズも増やさせます。
    xfs_growfs /home
    これで完了。ただし時間が結構かかる......

/dev/md127になってしまう件

mdadmでraidを作って再起動をすると/dev/md0のはずが/dev/md127に代わってしまう。
/etc/mdadm.confに mdadm --detail --brief /dev/md0(or /dev/md127) の結果を記載して
そこに /dev/md0 と記載して再起動すればOK
こんな感じ

ARRAY /dev/md0 metadata=1.2 name=w.chaperone.jp:0 UUID=e75f97da:822aff44:e6af95cd:0e6790f9

追加で障害時のメール送信宛先 MAILADDR root を追記しても構わない

RAIDの構成消去

  mdadm --manage /dev/md0 --stop
  *これで構成員のRAID構成は解除されるが、各ディスクにraid情報は残ってます。

そのため、各々のディスクのraid情報を削除します

  mdadm --misc --zero-superblock /dev/sdb1
  mdadm --misc --zero-superblock /dev/sdc1 /dev/sdd1

AFT

TOSHIBA MK6459GSX(AFT)
  ディスク /dev/sdb: 640.1 GB, 640135028736 バイト
  ヘッド 128, セクタ 32, シリンダ 305240, 合計 1250263728 セクタ
  Units = セクタ数 of 1 * 512 = 512 バイト
  セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
  I/O size (minimum/optimal): 4096 bytes / 4096 bytes
  ディスク識別子: 0x00000000

このHDD2台をAFT問題を避ける方法でパーティションを作成して
  fdisk -u -H 128 -S 32 /dev/sdb
  コマンド (m でヘルプ): n
  コマンドアクション
   e 拡張
   p 基本パーティション (1-4)
  p
  パーティション番号 (1-4): 1
  最初 セクタ (32-1250263727, 初期値 32): 2048
  Last セクタ, +セクタ数 or +size{K,M,G} (2048-1250263727, 初期値 1250263727):
  初期値 1250263727 を使います
  
  コマンド (m でヘルプ): t
  選択した領域 1
  16進数コード (L コマンドでコードリスト表示): fd
  領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 1250263727 625130840 fd Linux raid 自動検出

soft-raidのストライピングにて/dev/md0を作成、
  mdadm --create --level=0 --raid-devices=2 /dev/md0 /dev/sdb1 /dev/sdc1
  mkfs -t ext4 /dev/md0
このデバイスを/storageにマウントして100Gほどのファイルを作った見たときの速度
  dd if=/dev/zero of=/storage/d3.img bs=10G count=10 seek=1
  0+10 records in
  0+10 records out
  21474795520 bytes (21 GB) copied, 129.818 s, 165 MB/s


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2012-07-29 (日) 22:12:20 (1790d)