古いコンパクトなデスクトップマシンを「遊び用サーバ」として使っていたのですが、ほら、よくあるじゃないですか。「遊びのつもりが、本気になっちゃう」ってこと。誰ですか?オトナな世界の想像をしたのは。私、子どもらのケンカをイメージしてたんですけど。
ともかく、その「自称サーバ」のHDDが窮屈になってきました。 40GB のディスクを、ダマシダマシ容量を空けて使ってきたのですが、常に残り容量数百メガバイトという状態に、すっかり疲れてしまい、HDDを交換することに。古いマシンなので IDE ですが、結構手に入りにくいんですね、今は。 売られているのは SATA がメイン。
ということで、40GB, 5400rpm から、320GB, 7200rpm へと交換しました。「ディスクの中身を丸ごとコピーして、容量を拡大する」という方針で行いました(OS再インストールしてひとつひとつ設定するのではなく。
以下、その作業メモです。作業にあたっては特に以下のページをとても参考にさせていただきました。特にキムラデービーの @meijik さんには 5月のとある日記で「続きはまた後日」のまま「続き」が見つからないと連絡したら、速攻で続きを書いてくださって、どうもありがとうございました。
http://blog.kimuradb.com/?day=20100531
http://www.nipr.ac.jp/~kazue/linuxformat.html
http://www.yuknak.com/main/useful/HowtoHDD/diskcopy/diskcopy1.html
作業の概要
おおざっぱな手順として以下のようになります。
(1)新しいHDDを買ってきた
(2)EASEUS DiskCopy というツールをダウンロードしブータブルなCDに焼いた
(3)CD付、新旧2台のHDDを接続可能なマシンにHDDを接続して DiskCopy CDで起動、コピー
(4)新HDDで起動
(5)fdiskで、HDDの未使用領域に 拡張領域として LVS エリアを作成
(6)pvcreate/vgextend/lvextend のコマンドを使用して ボリウムグループに LVSを追加
(7)resize2fs で ファイルシステムとして認識させた
以下各手順についてなるべく簡潔(当社比)に。
(1)新しいHDDを買ってきた
手に入りやすいHDDがほとんど SATA になっている中、IDEのHDDを見つけました。SATAに比べて割高感がありますが、仕方ないですね。 320GB で 8,957円でした。(もっと安いのもありますが「当日届く」amazonで注文したので)
(2)EASEUS DiskCopy というツールをダウンロードしブータブルなCDに焼いた
以下のURLから DiskCopy というツールをダウンロードして、(zipファイルなので展開後出てきた)iso ファイルを CD に焼きます。
http://www.easeus.com/disk-copy/download.htm
(3)CD付、新旧2台のHDDを接続可能なマシンにHDDを接続して DiskCopy CDで起動、コピー
新旧2台のHDDとCD-ROMドライブをマシンに接続して、(2)で焼いた DiskCopy のCDでブートします。
ソースとディスティネーションのディスクの指定を間違わないように注意しながら、画面の指示通りに進めます。
コピー時間は 40GB(画面の表示による)で1時間5分かかりました。
(4)新HDDで起動
旧HDDを外して、新HDDをマスタにして(私はここで不要なのでCDも外しちゃいましたが)、起動。
ちゃんと立ち上がるかドキドキしますが、無事起動しました。
(5)fdiskで、HDDの未使用領域に 拡張領域として LVS エリアを作成
root で fdisk コマンドを実行。対話型のツールなので、以下のコマンドを駆使。
p: 現在の設定状況の表示
n: 領域を作成
ディスク自体は 320GB あるけど、hda1, hda2 で 約40GBしか使われていないことがわかります。
Disk /dev/hda: 320.0 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 4865 38973690 8e Linux LVM
hda2 は LVM なので、新しい領域を作って、それをこのボリウムグループに追加していく作戦をとります(special thanks @meijik さん!)
n(領域作成) → e(拡張領域) → [enter](デフォルトの開始シリンダ) → [enter](デフォルトの終了シリンダ)
の操作で、残り全領域をまず 拡張領域として確保します(hda3 になります)
デバイス Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 4865 38973690 8e Linux LVM /dev/hda3 4866 38913 273490560 5 拡張領域
この拡張領域の中に、論理領域を作って行きます。全部まとめても良いかもしれませんが、ここは @meijik さんの「取り扱いしやすいように分けておく」に従って 40GB ごとに分けることにしました。こまんどはこんな感じ。
n(領域作成) → l(論理領域) → [enter](デフォルトの開始シリンダ) → +40960M(終了シリンダとして40GBぶんを指定)
これを繰り返していって(最後の領域は全シリンダを使うように指定)、確認すると、こうなりました。
デバイス Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 4865 38973690 8e Linux LVM /dev/hda3 4866 38913 273490560 5 拡張領域 /dev/hda5 4866 9846 40009851 83 Linux /dev/hda6 9847 14827 40009851 83 Linux /dev/hda7 14828 19808 40009851 83 Linux /dev/hda8 19809 24789 40009851 83 Linux /dev/hda9 24790 29770 40009851 83 Linux /dev/hda10 29771 34751 40009851 83 Linux /dev/hda11 34752 38913 33431233+ 83 Linux
通常の Linux 領域になっているので(83)、これを LVM (8e) に変更します。コマンドは:
t (タイプID変更) → 5(領域番号) → 8e (Linux LVM)
t (タイプID変更) → 6(領域番号) → 8e (Linux LVM)
t (タイプID変更) → 7(領域番号) → 8e (Linux LVM)
: : :
デバイス Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 4865 38973690 8e Linux LVM /dev/hda3 4866 38913 273490560 5 拡張領域 /dev/hda5 4866 9846 40009851 8e Linux LVM /dev/hda6 9847 14827 40009851 8e Linux LVM /dev/hda7 14828 19808 40009851 8e Linux LVM /dev/hda8 19809 24789 40009851 8e Linux LVM /dev/hda9 24790 29770 40009851 8e Linux LVM /dev/hda10 29771 34751 40009851 8e Linux LVM /dev/hda11 34752 38913 33431233+ 8e Linux LVM
すべて上記のとおり変更されたことを確認したら
w (書き込み)
コマンドで、書き込みします。以下のメッセージが出るのでサーバを再起動します。
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。
気になったので一応、再起動後にも fdisk の p コマンドで、設定が上記のものと変わっていないことを確認しました。OK。
(6)pvcreate/vgextend/lvextend のコマンドを使用して ボリウムグループに LVSを追加
この段階では df で見ても空き領域は増えていません。ボリウムグループに追加する必要があります。
# pvcreate -v /dev/hda5 Set up physical volume for "/dev/hda5" with 80019702 available sectors Zeroing start of device /dev/hda5 Physical volume "/dev/hda5" successfully created # vgextend VolGroup00 /dev/hda5 Volume group "VolGroup00" successfully extended
現在の状況を見てみる。
# vgdisplay --- Volume group --- VG Name VolGroup00 : Alloc PE / Size 1189 / 37.16 GB Free PE / Size 1220 / 38.12 GB ←★ここのサイズを次の作業で使う
# lvextend -l +1220 /dev/VolGroup00/LogVol00 ←★ここに先ほどのサイズを指定する Extending logical volume LogVol00 to 74.53 GB Logical volume LogVol00 successfully resized
(7)resize2fs で ファイルシステムとして認識させた
そしてここまでで指定したボリウムの変更を、ファイルシステムとして認識させます。
# resize2fs /dev/VolGroup00/LogVol00 resize2fs 1.39 (29-May-2006) Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required Performing an on-line resize of /dev/VolGroup00/LogVol00 to 19218432 (4k) blocks. The filesystem on /dev/VolGroup00/LogVol00 is now 19218432 blocks long.
処理には数分かかりましたが、終了後 df を見てみると、領域増えました\(^O^)/
同様に他の領域も投入。 こんな感じでまとめて lextend/resize2fs できます。
pvcreate -v /dev/hda7
pvcreate -v /dev/hda8
pvcreate -v /dev/hda9
vgextend VolGroup00 /dev/hda7
vgextend VolGroup00 /dev/hda8
vgextend VolGroup00 /dev/hda9
vgdisplay ←★ここで見たサイズを
lvextend -l +3660 /dev/VolGroup00/LogVol00 ←★ここで指定する
resize2fs /dev/VolGroup00/LogVol00
最終結果。
# df -h Filesystem サイズ 使用 残り 使用% マウント位置 /dev/mapper/VolGroup00-LogVol00 287G 32G 241G 12% / ←★ここっ!ここっ!! /dev/hda1 99M 36M 59M 38% /boot tmpfs 502M 0 502M 0% /dev/shm
いやぁ、嬉しい嬉しい。成金ってこういう気分なんだろうなぁと思いました(笑)。
一気にディスク領域を手に入れて、どうやって使って良いか困っちゃって、不思議な使い方をしちゃう、みたいな(笑)。
その後 MySQL の InnoDB 領域を 2GB * 10個追加して起動したのですが、、、貧弱なマシンのこと。起動完了まで(領域作成まで)22分もかかりました orz。
番外編:ハマったところ
この「自称サーバー」。実はCDドライブがついていないので、HDDをはずして他のマシンで作業しようと考えていました。 そのマシンをあけてびっくり。SATA。。。orz
IDEな他のマシンを用意してみるも、こんどは何故かCDドライブが開かない。。 更に古いマシンからCDドライブだけ抜いて接続してみると、マシンが貧弱なせいかツールがうまく起動しない(途中で止まる)。役たたずめ!
CDドライブを最初の「自称サーバー」に付ければ良いと気づき作業を開始するも、もともとがコンパクトなデスクトップマシンなので、電源コネクタが不足することが判明。。 そんなわけで「役立たず」なマシンには電源係になってもらい、なんとか作業を続行できたのでした(実はIDEケーブルもコネクタの少ない短いやつだったので他から引っこ抜いてきた)。 今回の作業の中で一番たいへんだったのがこの「接続する」ところだったなー。みなさんも「CDドライブ」「IDE等のケーブルコネクタの数」「電源コネクタの数」は事前にしっかりとご確認ください。
そんな作業だったので、ケーブルとか置き方とかがひどい状態に(+_+)。 一時的なので許して!!と自分で言い訳をしながら(笑)。
.