2014年2月2日日曜日

自己満足的自宅サーバーディスク構成変更(6)~仕上げ

さてようやく2.0TBのRAID5/2から4.0TBのRAID6/4となり、サイズも倍、冗長性も倍となりました。まあこの時点ではRAID10と同等と言えなくもないですが、RAID10は2本壊れるとダメな組み合わせもあるわけで、少しは改善したかな?

しかしアレイを大きくしただけではLVMのPVとしては大きくなっていません。
# pvdisplay /dev/md127
  --- Physical volume ---
  PV Name               /dev/md127
  VG Name               vg_data
  PV Size               1.82 TiB / not usable 3.50 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              476899
  Free PE               41829
  Allocated PE          435070
  PV UUID               N1cjJ3-N5Zy-7SqP-aVsz-47H4-9eF1-uucRbY
これを大きくするには
# pvresize /dev/md127
  Physical volume "/dev/md127" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
# pvdisplay /dev/md127
  --- Physical volume ---
  PV Name               /dev/md127
  VG Name               vg_data
  PV Size               3.64 TiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              953799
  Free PE               518729
  Allocated PE          435070
  PV UUID               N1cjJ3-N5Zy-7SqP-aVsz-47H4-9eF1-uucRbY
でOKです。これが終わったら最後に残っているRAID 1のアレイにあるextentをここに移動します。(また数時間仕事w)それが終わったらそのアレイをLVMから外し、パーティションを切りなおし、またRAID 6のアレイに追加します。
# mdadm --add /dev/md127 /dev/sdd1 /dev/sde1 
mdadm: added /dev/sdd1
mdadm: added /dev/sde1
# mdadm --detail /dev/md127
/dev/md127:
    Number   Major   Minor   RaidDevice State
       0       8        3        0      active sync   /dev/sda3
       2       8       81        1      active sync   /dev/sdf1
       3       8       19        2      active sync   /dev/sdb3
       4       8       33        3      active sync   /dev/sdc1

       5       8       49        -      spare   /dev/sdd1
       6       8       65        -      spare   /dev/sde1

スペア2台になりました。サイズを増やします。やっぱひとつずつだよね・・・。
# mdadm --grow /dev/md127 --raid-devices=6
mdadm: Need to backup 2048K of critical section..
おっ!?いきなり2個分増やせたのかな?
# cat /proc/mdstat 
md127 : active raid6 sde1[6] sdd1[5] sdb3[3] sda3[0] sdc1[4] sdf1[2]
      3906763776 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [>....................]  reshape =  0.0% (607232/1953381888) finish=1849.1min speed=17600K/sec
できてるっぽい!しかもたった(!)1849分=30時間じゃないか!(←既に麻痺してるw)実際は26時間ほどで完成しました。
# mdadm --detail /dev/md127 
/dev/md127:
        Version : 1.2
  Creation Time : Fri Jan 24 09:11:13 2014
     Raid Level : raid6
     Array Size : 7813527552 (7451.56 GiB 8001.05 GB)
  Used Dev Size : 1953381888 (1862.89 GiB 2000.26 GB)
   Raid Devices : 6
  Total Devices : 6
    Persistence : Superblock is persistent

    Update Time : Sat Feb  1 09:49:27 2014
          State : clean 
 Active Devices : 6
Working Devices : 6
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

    Number   Major   Minor   RaidDevice State
       0       8        3        0      active sync   /dev/sda3
       2       8       81        1      active sync   /dev/sdf1
       3       8       19        2      active sync   /dev/sdb3
       4       8       33        3      active sync   /dev/sdc1
       6       8       65        4      active sync   /dev/sde1
       5       8       49        5      active sync   /dev/sdd1

おお・・・。8.0TBのディスク(しかも2本の冗長性)なんてもはや家庭用とは思えないw これで子どもの写真や動画とかがなくなるリスクが軽減されたのだと納得させます。
もちろん
# pvresize /dev/md127 
をしてLVM上でも使えるようにすることをお忘れなく。

これにて完成!まとめると
  1. 2.0TB (/boot, swap, /, pv(1))
  2. 2.0TB (/boot, swap, /, pv(1))
  3. 2.5TB (pv(2))
  4. 2.5TB (pv(2))
  5. 3.0TB (pv(3), data)
  6. 2.0TB (pv(3))
でデータ領域はpv(1) (1.5TB RAID 1) + pv(2) (2.5TB RAID 1) + pv(3) (2.0TB RAID 1)= 6.0TB の構成だったわけですが、
  1. 3.0TB (/boot, /, pv)
  2. 2.5TB (/boot, /, pv)
  3. 2.5TB (pv)
  4. 2.0TB (pv)
  5. 2.0TB (pv)
  6. 2.0TB (pv)
で pv (2.0TBx6 RAID 6) = 8.0TB の構成となりました。この後、1から3のディスクには空きが少しあるので、swap 領域の確保とテンポラリ領域を作成して終わりです。

本当は停電対策(正確にはUPS故障対策)のために別アレイにコピーしたいんですけどね。いろいろ考えていたら、RAID 6ってデータ書き込むとき全ディスクにほぼ同時にアクセスするわけじゃないですか。その瞬間にUPSが壊れて電源ロスが起きたら同時に3台以上のディスクがダメになるということも考えられなくもないかなと。まあそれはかなりのレアケースだと思うので、現状はこの状態で運用しようと思います。