2016年2月21日日曜日

ソフトウェアRAIDからハードウェアRAIDへ移行(バックアップから書き戻し)

データをバックアップから戻す。
[root@papa ~]# mount /dev/VGhome_tmp/home /backup/
[root@papa ~]# xfsdump -J - /home/backup/home/      | xfsrestore -J - /backup/
dumpはデバイス全体(/home)を指定しないと動かないので↓こうしないといけない。
[root@papa ~]# xfsdump -J - /home      | xfsrestore -J - /backup/
rsyncでも良かったかもしれないけど遅いからコピー後にmvする。

ソフトウェアRAIDからハードウェアRAIDへ移行(データ用HDDをRAIDカード側に)

RAIDカードでRAID10を作って再起動してOSで使えるように。
sda RAIDカードの1,2     システム
sdb RAIDカードの3,4,5,6 今回作ったもの
sdc SATAにつながったHDD
となっていて、今回増えたものがsdbで、sdb->sdcに動いているので作業対象はsdb。

パーティション設定は名前をhomeにするだけで後はbackupと同じ
parted /dev/sdb
(parted) mklabel gpt
(parted) unit s
(parted) mkpart home 2048s -1s
(parted) set 1 lvm on
(parted) p
Model: LSI MegaRAID 8708EM2 (scsi)
Disk /dev/sdb: 7811891200s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End          Size         File system  Name  Flags
 1      2048s  7811891166s  7811889119s               home  lvm
(parted) q

LVMを作る。
KVMのHDDイメージでもそんなに無いからスナップショット領域は50GBもあればいいと思うので
3.6TB。残り42GBをスナップショット用に。

[root@papa ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[root@papa ~]# pvdisplay -C
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  417.25g   4.00m
  /dev/sdb1         lvm2 ---    3.64t   3.64t      <-今回作成
  /dev/sdc1  VGhome lvm2 a--    3.64t 142.00g

現在VGhomeが稼動しているのでVGhome_tmpとしておく。
[root@papa ~]# vgcreate -s 64m VGhome_tmp /dev/sdb1
  Volume group "VGhome_tmp" successfully created
[root@papa ~]# vgdisplay -C
  VG         #PV #LV #SN Attr   VSize   VFree
  VGhome       1   1   0 wz--n-   3.64t 142.00g
  VGhome_tmp   1   0   0 wz--n-   3.64t   3.64t      <-今回作成
  centos       1   2   0 wz--n- 417.25g   4.00m
[root@papa ~]# lvcreate -L 3.6t -n home VGhome_tmp
[root@papa ~]# lvdisplay -C
  LV   VG         Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home VGhome     -wi-ao----   3.50t
  home VGhome_tmp -wi-a-----   3.60t      <-今回作成
  root centos     -wi-ao---- 410.00g
  swap centos     -wi-ao----   7.25g
確認したら空き(スナップショット領域)は38.5GBと思っていたより小さい。
[root@papa ~]# vgdisplay -C
  VG         #PV #LV #SN Attr   VSize   VFree
  VGhome       1   1   0 wz--n-   3.64t 142.00g
  VGhome_tmp   1   1   0 wz--n-   3.64t  38.50g
  centos       1   2   0 wz--n- 417.25g   4.00m

xfsでフォーマット。間違えたら死ぬ(データ消失)するのでHDD外すとかRAIDカードごと別マシンに繋いでやる方がいいかも。
[root@papa ~]# mkfs.xfs -s size=4096 -m crc=1 /dev/VGhome_tmp/home
SATAのときより時間がかかって不安になるも何とか終了。

ソフトウェアRAIDからハードウェアRAIDへ移行(バックアップ側データで起動)

SATAのRAID10をバックアップ用にコピーが終わったのでこっちを使ってこれまでどおりに稼動できるようにする。

元々は/dev/md2直下にデータがあった。
/dev/md2 -> /home/各ディレクトリ
バックアップ用は/dev/VGhome/homeにさらにbackupと一階層深い。
なので同じようにマウントすると以下のようになる。
/dev/VGhome/home -> /home/backup/各ディレクトリ
ディレクトリの数が3つなので
ln -s /backup/backup/hoge /backup/
でリンクを作ればうまくいった。

fstabを書き換えて再起動・・・しなかった。
fstabの古い行をコピってデバイス名だけ書き換えたら、新しいパーティションはxfsなのにext4のままだったのが原因。
書き換えて動作を確認できたらSATAのRAID10ディスクをRAIDカードに接続。

これが
SATA
0         バックアップ用(4TB)
2,3,4,5 データ(2TB*4のRAID10)
RAIDカード
0,3      システム(500GBのRAID1)

こうなる
SATA
0         バックアップ用(4TB) 現在利用中
RAIDカード
0,3      システム(500GBのRAID1)
4,5,6,7 2TB*4 (これをRAID10にする)