さらに、いったんこの状態にすれば、再インストールしなくてもHDDの容量アップが行える。
既存の160 GBのslave (hdb)を外し、新しい250 GBのslave HDDを接続して、master 160 GBから起動。
mdadmでhdb3をremove。
fdisk -l /dev/hdb で新しいディスクのサイズを確認。
作業前:
LANTANK:/home/admin# fdisk -l /dev/hdb
Disk /dev/hdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 1 30401 244196001 42 SFS
fdsik /dev/hdb でhdb1, hdb2はそれぞれhda1, hda1と同じサイズに。hdb3は残り全部。
ということで、今回の場合には、hdb1=1-250, hdb2=251-267, hdb3=268-20023にセット、
あとは完全複製状態を作るのと同じで、hdb2, hdb3のtypeを設定、テーブル書き込み。MBRとhda1をhdbにコピーにして、mda2をスワップに、hdb3をhotaddして、ミラーリング運用開始まで待つ。
作業後:
LANTANK:/home/admin# fdisk -l dev/hdb
Disk /dev/hdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 1 250 2008093+ 83 Linux
/dev/hdb2 251 267 136552+ 82 Linux swap
/dev/hdb3 268 30401 242051355 fd Linux raid autodetect
いったん電源を切って、250 GBのslave HDDをmasterにして、slaveにも250 GBのHDDを接続して、もう一度完全複製作業を行えば容量アップ完了。(つづく)
何台あるか数えていたら、ARAID99から出てきた2台以外にもWD2500JBが2台あることが判ったので、LAN TANKのHDDを160 GBから250 GBへの容量アップにチャレンジした。
以前にも書いたとおり、LAN TANKをRAID1(mirroring)でセットアップしても、MBRとシステムはmaster HDDにしかなく、master HDD の第3パーティション(hda3)とslave HDDの第1パーティション(最大サイズの唯一のパーティション、hdb1)がRAIDに設定されている状態なので、masterが破損するとかなり面倒なことになる。
また、インストール作業無しでHDD容量アップを行う場合も完全複製状態にしてあることが前提となる。
完全複製状態にする作業(自分用の作業メモ)
adminでログインしてsuする。
(1) mdadmをインストールしてから、mdadmでhdb1をremoveしてmirroringを解除。
apt-get install mdadm
mdadm /dev/md0 -f /dev/hdb1 -r /dev/hdb1
(2) fdiskでhdb1を削除後、hdbのパーティションをhdaと同じサイズのhdb1, hdb2, hdb3に切り直す。
fdisk -l /dev/hda
表示された結果をメモしておく。
Disk /dev/hda: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 250 2008093+ 83 Linux
/dev/hda2 251 267 136552+ 82 Linux swap
/dev/hda3 268 20023 158690070 fd Linux raid autodetect
fdisk /dev/hdb
pで状況確認して、dでhdb1を削除。nでhdb1, hdb2, hdb3をhdaと同じサイズに。tでhdb2を82に、hdb3をfdにセットしてpで確認してwで書き込み。
(3) ddでMBRとhda1をhdbにコピーする。
dd if=/dev/hda of=/dev/hdb bs=446 count=1
dd if=/dev/hda1 of=/dev/hdb1 bs=2k
(4) hdb2をswapにセット。
mkswap /dev/hdb2
(5) /etc/raidtabを編集して、hdb1と書いてある部分をhdb3に編集。
vi /etc/raidtab
編集前:
LANTANK:/etc# cat raidtab
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
chunk-size 32
persistent-superblock 1
device /dev/hda3
raid-disk 0
device /dev/hdb1
raid-disk 1
編集後:
LANTANK:/etc# cat raidtab
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
chunk-size 32
persistent-superblock 1
device /dev/hda3
raid-disk 0
device /dev/hdb3
raid-disk 1
(6) mdadmでhdb3をaddしてミラーリングを再開。
mdadm /dev/md0 -a /dev/hdb3
(7) 自動でmirroring動作が開始され、一定時間経過後ミラーリング運用になる。
この状態では完全複製状態なので、master (hda)、slave (hdb)のどちらが壊れてもOKだし、master/slaveのHDDを入れ替えてもOK。
また、1台が故障したときに同じ容量のHDDと入れ替える必要はなく、将来を見越して大きな容量のものと入れ替えておくことも出来る。その場合、正常なHDDを大容量のHDDに交換するまでは、もともとの小さい方のディスク容量までしか使えないけど。80 GBx2台でスタートして、1台が故障したら次は160 GBに交換しておき、時期を見て2台目も160 GBに交換すれば160 GBのRAID1として使えるようになるし、さらに250, 320にできる。
その場合の問題は電源。LAN TANKの電源は+5V, +12Vともに2A以内なので、大容量モデルではHDDのスピンアップに失敗することもある。HDDとLAN TANKの「相性」と言う情報も多くあるが、基本的には電源の問題と私は理解している。先にも書いたとおり、HDDへの電源供給を別電源から行えば問題ない。(つづく)