-
20101130
001794
Linux box の HDD 容量追加に挑戦するシリーズの第一弾。 まずは RAID1 のミラーリング機能を利用して、オンラインで HDD の中身を移行するまでの手順です。 ただし、普通の PC 筐体なのでさすがにホットスワップはできず、新規 HDD の接続時と、既存 HDD の取り外し時に合計二回の再起動が必要となりました。 完全にオンラインではない点だけ、ご注意ください。
新規ディスクの接続Linux box を停止し、新規ディスクを追加します。 今回使用したのは HITACHI 0S02602 (2TB) を二本です。
既存ディスクのパーティション設定を確認以降の手順で、新規ディスクの /dev/sdc および /dev/sdd に既存ディスクと同じサイズのパーティションを作成します。 念のため、既存のパーティションを確認しましょう。
$ sudo fdisk /dev/sda Command (m for help): p Disk /dev/sda: 320.0 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 33 265041 fd Linux raid autodetect /dev/sda2 34 38913 312303600 fd Linux raid autodetect
新規追加ディスク /dev/sdc のパーティションを切る先ほど確認した /dev/sda と同じ構成になるように、/dev/sdc のパーティションを設定します。
$ sudo fdisk /dev/sdc # 念のため、デバイスの現在の設定を確認します Command (m for help): p Disk /dev/sdc: 2000.3 GB, 2000398934016 bytes 255 heads, 63 sectors/track, 243201 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System # 新しいパーティション /dev/sdc1 を作成します Command (m for help): n. Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-243201, default 1): [ENTER] Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-243201, default 243201): 33 # パーティション ID を "Linux raid autodetect" に変更します Command (m for help): t Selected partition 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect) # もうひとつのパーティション /dev/sdc2 を作成します Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (34-243201, default 34): Using default value 34 Last cylinder or +size or +sizeM or +sizeK (34-243201, default 243201): 38913 # 同様にパーティション ID を "Linux raid autodetect" に変更します Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): fd Changed system type of partition 2 to fd (Linux raid autodetect) # ブータブル・フラグを設定します Command (m for help): a Partition number (1-4): 1
二つのパーティションが作成されました。 念のため、現在の設定を確認しましょう。
Command (m for help): p Disk /dev/sdc: 2000.3 GB, 2000398934016 bytes 255 heads, 63 sectors/track, 243201 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 * 1 33 265072 fd Linux raid autodetect /dev/sdc2 34 38913 312303600 fd Linux raid autodetect問題がないようであれば、パーティション・テーブルに書き込みます。
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.以上で /dev/sdc のパーティションの設定は完了です。
新規追加ディスク /dev/sdd のパーティションを切るもう一枚の追加ディスク /dev/sdd に対しても、前工程と同様にパーティションを切ります。
既存の /dev/md0 に /dev/sdc1 と /dev/sdd1 を追加するまずは現在の /dev/md0 の設定を確認します。
$ mdadm --detail /dev/md0 /dev/md0: Version : 0.90 Creation Time : Sun Dec 3 02:22:14 2006 Raid Level : raid1 Array Size : 264960 (258.79 MiB 271.32 MB) Used Dev Size : 264960 (258.79 MiB 271.32 MB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Thu Nov 25 21:27:45 2010 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 UUID : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Events : 0.660 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1"Raid Devices" が 2 になっています。 この値は RAID を構成するデバイスの数です。
/dev/md0 に /dev/sdc1 と /dev/sdd1 を追加します。
$ sudo mdadm /dev/md0 --add /dev/sdc1 /dev/sdd1 mdadm: added /dev/sdc1 mdadm: added /dev/sdd1状況を確認します。
$ mdadm --detail /dev/md0 /dev/md0: Version : 0.90 Creation Time : Sun Dec 3 02:22:14 2006 Raid Level : raid1 Array Size : 264960 (258.79 MiB 271.32 MB) Used Dev Size : 264960 (258.79 MiB 271.32 MB) Raid Devices : 2 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Thu Nov 25 22:40:46 2010 State : clean Active Devices : 2 Working Devices : 4 Failed Devices : 0 Spare Devices : 2 UUID : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Events : 0.678 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 2 8 33 - spare /dev/sdc1 3 8 49 - spare /dev/sdd1二つのパーティションが追加されていますが、ステータスが spare となっています。 これは、既存の二つのディスクのいずれかに障害が発生した際に利用されることを意味します。 つまり、この時点ではまだミラーリングは開始されていません。 ミラーリングを開始するためには、利用するデバイスの数をこの場合は 4 に設定する必要があります。
$ sudo mdadm --grow /dev/md0 --raid-device=4 $ mdadm --detail /dev/md0 /dev/md0: Version : 0.90 Creation Time : Sun Dec 3 02:22:14 2006 Raid Level : raid1 Array Size : 264960 (258.79 MiB 271.32 MB) Used Dev Size : 264960 (258.79 MiB 271.32 MB) Raid Devices : 4 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Thu Nov 25 22:42:20 2010 State : clean, degraded, recovering Active Devices : 2 Working Devices : 4 Failed Devices : 0 Spare Devices : 2 Rebuild Status : 60% complete UUID : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Events : 0.680 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 4 8 49 2 spare rebuilding /dev/sdd1 5 8 33 3 spare rebuilding /dev/sdc1
ステータスが spare rebuilding になしました。 バックグラウンドで sync が行われています。 sync 中はパフォーマンスが低下する可能性がありますが、通常通りの機能が使えます。
既存の /dev/md1 に /dev/sdc2 と /dev/sdd2 を追加するこれも /dev/md0 に対する手順と同様です。
$ sudo mdadm /dev/md1 --add /dev/sdc2 /dev/sdd2 $ sudo mdadm --grow /dev/md1 --raid-device=4
RAID1 デバイスのステータス確認Linux Software RAID のデバイスは /proc/mdstat からステータスを確認することができます。
$ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdd1[2] sdc1[3] sdb1[1] sda1[0] 264960 blocks [4/4] [UUUU] md1 : active raid1 sdd2[4] sdc2[5] sdb2[1] sda2[0] 312303488 blocks [4/2] [UU__] [>....................] recovery = 0.1% (495744/312303488) finish=94.3min speed=55082K/sec unused devices: <none>md0 と md1 がそれぞれ四本のディスクで構成されていて、md1 の再構築は 0.1% の進捗状況だということがわかります。 再構築が終わるまでしばらく待ってください。
新規 HDD へ GRUB をインストールディスクのミラーリングが完了しただけでは、システム全体の可用性という観点からは不十分です。 新規ディスクの MBR には何も書かれていないので、これらのディスクから Linux を起動することができません。 新規ディスクから起動することができるように、これらにも GRUB をインストールします。
今回、/boot は 独立したパーティション /dev/sdc1, /dev/sdd1 としてそれぞれのディスク上に存在しているので、以下のような手順でインストールできます。
grub> device (hd0) /dev/sdc grub> root (hd0,0) Filesystem type is ext2fs, partition type 0xfd grub> install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf grub> device (hd1) /dev/sdd grub> root (hd1,0) Filesystem type is ext2fs, partition type 0xfd grub> install /grub/stage1 (hd1) /grub/stage2 p /grub/grub.conf grub> quit
それぞれのディスクのみを接続して起動してみるなど、動作確認を行うべきでしょう。 ただし、ブートストラップの途中でディスクをマウントするところまで進めてしまうと、RAID1 の再構築が必要になってしまいます。 grub が正常に動作することを確認できたら Ctrl + Alt + Delete などで再起動をかけて電源を落としましょう。
既存 HDD を取り外すミラーリングが完了し、起動が確認できたら、既存ディスクを取り外すことができます。
$ sudo mdadm --grow /dev/md0 --raid-device=2 $ sudo mdadm --grow /dev/md1 --raid-device=2
そののち、電源を落として物理的に切り離してしまいましょう。
以上の手順で、RAID1 のミラーリングを利用して HDD をオンラインのまま移行することができました。 環境を動作させたままそのまま新規 HDD に移すことができるので、環境をイチから再構築する手間が不要です。
引き続き、ディスクの残りの部分 (今回使用した 320GB よりも後ろの部分)を利用する手順にはいります。
[ permalink ] [ 0 comment(s) ] [ 0 trackback(s) ] -
001793
今月、止むなき事情で Linux Box を一旦停止することになりましたが、これといったトラブルもなく無事に再始動することができました。 そこで、これ幸いと HDD の容量追加に踏み切ることにしました。 普段順調に動いているマシンは、再起動するだけでも「もしかすると上がってこないんじゃないか」と躊躇するんだけれど、今回はそこはクリアしているので、多少は安心して作業にとりかかることができます。
HDD の容量追加と言っても、常時稼動しているマシンなので、メンテナンスやランニング・コストを考えるとあまり部品点数を増やしたくありません。 また、最近では TB 級の大容量 HDD が手頃な値段で手に入ります。 そこで、HDD を追加するのではなく、新規の大容量 HDD で既存の HDD をリプレースすることにしました。
というわけで、久しぶりの秋葉原へ。 当初は 1TB 3.5" を二枚でいいかなと考えていたのだけれど、2TB との価格差があまりないんですな。 最安値は 1TB で 5,000 円台中盤、2TB で 8,000 円弱といったところ。 数千円の追加で容量が二倍になるなら、ということで 2TB に狙いを定めることにします。 ちなみに 3TB の商品もあるけれど、価格が一気に 20,000 円台に跳ね上がるので、これは対象から除外。
2TB 3.5" で最安値は Western Digital の WD20EARS でした。 価格は大体 7,700 円前後。 しかし、こいつは 4KB セクターのもの。 Linux で使えないこともないのですが、ハードウェア側で仮想的に 512B セクターをエミュレートする必要があるそうです。 結果として、パフォーマンスに影響が出る場合もあるとのこと。 正直なところ、パフォーマンスを気にするような用途ではないのだけれど、パフォーマンス以外の何かが起きたら面倒なので敬遠しました。
続いて安かったのは Seagate の Barracuda PL でした。 8,000 円前後。 こちらは 512B セクターとのことなので何も気にせず使えます。 値段も Western Digital とそれほど変わらないし、妙なオーバーヘッドを抱えるよりはこっちのほうがいいかなーと思いましたが、残念ながらどこも売り切れでした。
そして、残る候補は HITACHI 0S02602 のリテール。 10,000円とちょっと。 うーん、Western Digital に比べるとさすがに高い。 4KB セクターでまだ見ぬトラブルを抱えるのが面倒か、安いディスクを買うためにもう一度秋葉原まで出てくるのが面倒か、色々と悩んだ挙句、高いけれど今すぐ買って帰ることができる HITACHI 0S02602 を選びました。
さて、HDD を手に入れたはいいけれど、ここで問題となるのは移行手順。 先程も書いたとおり、常時稼動しているマシンなので、あまり長い時間止めたくはありません。 通常の移行手順だと、1)データのバックアップ 2)HDD のリプレース 3) OS のインストール 4)環境の再構築 5)データのリストア というステップを踏んで、やっと環境を再度立ち上げることができます。 これはダウンタイムが大きいし、なにより非常に手間がかかります。 そこで検討したのが、RAID1 を利用したオンライン移行です。
RAID1 は複数のディスクに同一の情報を書き込むことで、耐障害性の向上を図るモードです。 パーソナル・ユースでは二枚のディスクを用いることが一般的なんじゃないかと思います。 ぼくの環境も二枚で運用されていました。 この場合、片方のディスク・ドライブに障害が発生しても、もう一方のディスクには完全なデータが残っています。 このため、例えば障害が発生したディスクを新たなものに交換し、残ったデータを再び新規ディスクにコピーすることで再び二枚の RAID1 の状態に復旧することができます。 この際、データのコピーを含む大部分の作業をオンラインで行うことが出来ます。 データをオンラインのままディスク間でコピーできるのであれば、これをハード・ディスクの移行に使えるんじゃないか、というのが今回の基本アイディアです。
RAID1 のディスク枚数は何も二枚に限る必要はなく、RAID コントローラー次第で三昧以上のディスクにミラーリングすることが可能です。 ぼくが使っている Linux Software RAID (MD devices) では少なくとも四枚のミラーリング構成は可能なので、既存の [320GB, 320GB] に二枚追加して一時的に [320GB, 320GB, 2TB, 2TB] という構成をとり、すべてのデータの同期がとれた段階で最終的な [2TB, 2TB] という構成に持っていく手順を踏むことにします。
ちょっと長くなってきたので、以降の手順は大きく三つのフェーズに分けて書いていきたいと思います。
- RAID1 を利用して既存の 320GB HDD を 2TB HDD にミラーリング
- RAID1 にディスクを二つ追加し sync
- GRUB を新規ディスクに設定
- RAID1 から既存のディスクを削除
- 残った領域に新規 RAID デバイスの作成
- LVM にて新規 RAID デバイスを既存 PV に追加
- RAID1 を利用して既存の 320GB HDD を 2TB HDD にミラーリング
-
001792
- 巨峰ルビーエール
先日、六本木の ant'n bee にて、おみやげに貰ったものを。
-
001791
- ベアード ライジングサン ペールエール
自宅の冷蔵庫に入っていたものを。
-
001790
- ベアレンクラシック
- 伊勢角屋 メープルシナモン
六本木の ant'n bee にて。 オフィスの近所にまたもいいお店が。
-
001789
本日は 1123 パブクロールの日。 湘南新宿ラインを攻めるということで、池袋スタート。 ターゲットには横浜も含まれているわけですが、さて、辿りつけるのかどうか。
- ライジングサン ペールエール
- ISP
- ハーベストムーン IPA
池袋の vivo! にて、総勢10名強でスタート!
- BALLAST POINT SCULPIN IPA
タクシーに分乗し、新宿御苑の BEER PUB BAMBOO へ。
- アサヒスーパードライ 黒
なぜか勢い余って、話題の HOOTERS へ。 アサヒスーパードライの黒という謎なビールを飲むも、多分アサヒ黒生か何かだよね。
- ロンドン プライド
- ?
こちらが本来の目的地。 BIERVANA へ。 ここ、以前赤坂見附で働いていたときに一度来たことがあるなー。 二杯目は、写真をみるとダークな何かを飲んだんだけれど、銘柄失念。
-
001788
- ひでじ レッドラガー
- Woodwork Series - base
- Cream Ale
- ハーベストムーン レモネール
- Colonad Islander IPA
- 月のダークラガー
新橋 DRY-DOCK にて、会社同僚と前職同僚と。
-
001787
とうとう念願の札幌 pub crawl。 北海道には18才までしかいなかったから、最近のビール屋さん事情が羨ましくて。 弟の結婚式、その二次会、そして三次会と、散々飲んだ後に行ってきました。
- アウグス エクストラピルス
higurashi にて。
その後向かった Beer Bar NORTH ISLAND は、残念ながら貸切で入れず。 実は一番行きたかったお店だったので、大変残念。
- エーデルピルス
麦酒停 にて。
-
001786
- ハーベストムーン IPA
- ミヤマブロンド
- おれの黒 '08
- 城山 レモングラス
- 箕面 カベルネ
- 八丁味噌ラガー
新橋 DRY-DOCK にて、会社同僚と前職同僚と。
- toshi's IPA
- オイスタースタウト
帰りに barBAR Tokyo にて。
-
001785
- サンクトガーレン ペールエール
- サザンティアー パーキングパンプキンエール
- サザンティアー ハーベスト ESB
- サンクトガーレン XPA
- Kostriser
新橋 DRY-DOCK にて。