nigakyのブログ

雑多なメモです。

Ubuntu を BeyondRAID 環境へ移行する (2/2)

ファイルサーバデータの移行

OS 領域と同様に、以下のような流れで行います。
BeyondRAID 環境を構築します。

  1. MDRAID 構築
  2. LVM、ファイルシステム構築
  3. 既存データをコピー
  4. 既存ディスクの RAID 組み込み
MDRAID 構築

3つのディスクを使う部分は RAID5、2つのディスクを使う部分は RAID1 にします。
データ移行のため、まずは2つのディスクを使って RAID5、1つのディスクで RAID1 を構成します。

# mdadm -C -l5 -n3 -e1 --assume-clean /dev/md2 /dev/sdb4 /dev/sdc5 missing
# mdadm -C -l1 -n2 -e1 --assume-clean /dev/md3 /dev/sdb5 missing
LVM、ファイルシステム構築

2つの md デバイスをまとめて一つの LVM ボリュームにします。

# pvcreate /dev/md2
# pvcreate /dev/md3
# vgcreate BeyondRAIDVG0 /dev/md2 /dev/md3
# lvcreate -n BeyondRAIDLV0 -l 324317 BeyondRAIDVG0  ☆PEの数 (324317) は vgdisplay で確認出来ます
# mkfs -t ext4 /dev/mapper/BeyondRAIDVG0-BeyondRAIDLV0
既存データをコピー

rsync でコピーします。
800GB ほどデータがあったので一晩かかりました。

# mount /dev/mapper/BeyondRAIDVG0-BeyondRAIDLV0 /mnt
# rsync -aSv /opt/oldfiles /mnt/
# vim /etc/fstab  ☆新しい領域を使うように fstab を編集
既存ディスクの RAID 組み込み

これで既存ディスク (sda) のデータはすべて新しいディスクに移行できたので、パーティションを切りなおして RAID に組み込みます。

# parted -s /dev/sda p
モデル: ATA Hitachi HDT72101 (scsi)
ディスク /dev/sda: 1000GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始    終了    サイズ  タイプ    ファイルシステム  フラグ
 1    32.3kB  510MB   510MB   primary   ext3              boot
 2    511MB   1512MB  1001MB  primary
 3    1512MB  20.0GB  18.5GB  primary                     raid
 4    20.0GB  1000GB  980GB   extended                    lba
 5    20.0GB  400GB   380GB   logical                     raid
 6    400GB   1000GB  600GB   logical                     raid

# mdadm --add /dev/md1 /dev/sda4
# mdadm --add /dev/md2 /dev/sda5
# mdadm --add /dev/md3 /dev/sda6

RAID1 への write 性能は遅いディスクに引っ張られる(と思う)ので、1TB(sda) と 2TB(sdb) のディスクで RAID1 を構成するように変更します。

# mdadm --fail /dev/md1 /dev/sdc4    ☆sdc4 を外すと自動的に sda4 が RAID1 に組み込まれる
# mdadm --remove /dev/md1 /dev/sdc4
# mdadm --add /dev/md1 /dev/sdc4     ☆sdc4 はスペアに

最終構成

余っていた 1TB のパーティションも RAID なしの LVM ボリュームにしました。

# cat /proc/mdstat
md4 : active raid1 sdb6[0]
      976753528 blocks super 1.0 [2/1] [U_]

md3 : active raid1 sda6[2] sdb5[0]
      586048600 blocks super 1.0 [2/2] [UU]

md2 : active raid5 sda5[3] sdc5[1] sdb4[0]
      742358656 blocks super 1.0 level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md0 : active raid1 sdb1[2] sdc1[0]
      498676 blocks super 1.0 [2/2] [UU]

md1 : active raid1 sdc3[0](S) sdb3[2] sda3[3]
      18054072 blocks super 1.0 [2/2] [UU]

unused devices: <none>

# lvs -o +devices
  LV            VG            Attr   LSize   Origin Snap%  Move Log Copy%  Convert Devices
  BeyondRAIDLV0 BeyondRAIDVG0 -wi-ao   1.24t                                       /dev/md2(0)
  BeyondRAIDLV0 BeyondRAIDVG0 -wi-ao   1.24t                                       /dev/md3(0)
  TMPLV0        NoRAIDVG0     -wi-a- 931.50g                                       /dev/md4(0)
  Ubuntu10.04   OSImageVG0    -wi-ao  17.21g                                       /dev/md1(0)

# df -h
ファイルシステム            サイズ  使用 残り 使用% マウント位置
/dev/mapper/OSImageVG0-Ubuntu10.04
                       17G  4.9G   12G  30% /
none                  1.7G  364K  1.7G   1% /dev
none                  1.7G  1.4M  1.7G   1% /dev/shm
none                  1.7G  488K  1.7G   1% /var/run
none                  1.7G     0  1.7G   0% /var/lock
none                  1.7G     0  1.7G   0% /lib/init/rw
/dev/sda1             471M   55M  392M  13% /boot
/dev/mapper/BeyondRAIDVG0-BeyondRAIDLV0
                      1.3T  715G  469G  61% /opt/share
/dev/mapper/NoRAIDVG0-TMPLV0
                      917G  200M  871G   1% /opt/tmplv