mdadmとlvmでディスク管理
復習
64bit版 Debianで構築したサーバー君が容量不足でupdate出来ないなど困ったことが多かったので意を決してパーティーションの変更作業。
 扱うデータの量が多いので失敗時が恐いけど、一応バックアップもあるし最悪消えることは・・無い。
まず現状。下記のようなパーティーションとした1GBのディスクが4台。
 Device Boot      Start         End      Blocks   Id  System
 /dev/sda1   *           1          33      265041   fd  Linux raid autodetect
 /dev/sda2              34      121601   976494960    5  Extended
 /dev/sda5              34         457     3405748+  82  Linux swap / Solaris
 /dev/sda6             458      121601   973089148+  fd  Linux raid autodetect
sd[abcd]1はmd0を構成し、/マウント
 sd[abcd]5はswap
 sd[ab]6はmd1,sd[cd]6はmd2を構成。
 アレイmd0,md1,md2はいずれもRAID1で、md1+md2をlvmでvg00としている。
logical volumeはVolume group目一杯で構成してしまっていたので、ディスクのやりくりが心配だったが、運良く縮小すればmd1 or md2で収まる範囲だった。(これ重要だな
 $ sudo lvdisplay  -C
 homelv vg00 -wi-ao  28.00g
 optlv  vg00 -wi-ao   3.72g
 srvlv  vg00 -wi-ao   1.73t
 tmplv  vg00 -wi-ao 360.00m
 usrlv  vg00 -wi-ao  10.00g
 varlv  vg00 -wi-ao   6.00g
/dev/md0 on / type ext3
 /dev/mapper/vg00-homelv on /home type ext3
 /dev/mapper/vg00-optlv on /opt type ext4
 /dev/mapper/vg00-tmplv on /tmp type ext4
 /dev/mapper/vg00-usrlv on /usr type ext3
 /dev/mapper/vg00-varlv on /var type ext3
 /dev/mapper/vg00-srvlv on /srv type ext3
変更手順。
 2台ずつ変更していくために、まずvg00からmd2を外したい。
 巨大なパーティーションとしている/srvを800GB以下にすることでmd1以内の容量となるようにする。
 $ lvdisplay -m
 でマッピングを確認すると、vgでpvのどれが利用されているか解る。
パーティーションの縮小作業
 $ sudo umount /srv
 $ sudo fsck.ext3 -f /dev/mapper/vg00-srvlv
 $ sudo resize2fs /dev/mapper/vg00-srvlv 730G
 $ sudo mount /srv
中身が小さくなったので、lvを小さくする。
 $ sudo lvreduce -L 730G /dev/mapper/vg00-srvlv
続いて、md2側を利用しているデータをmd1に移動。
 $ sudo pvmove /dev/md2
 このコマンドは凄く時間がかかるらしいのだが、ほぼ使っていなかったらしく一瞬だった。
md2をvgから外す
 $ sudo vgreduce vg00 /dev/md2
sdc,sddのswapパーティーションを利用解除
 $ sudo swapoff -v UUID=
 $ sudo swapoff -v UUID=
アレイの解除
 $ sudo mdadm -S /dev/md2
 $ sudo mdadm /dev/md0 -f /dev/sdc6
 $ sudo mdadm /dev/md0 -f /dev/sdd6
 $ sudo mdadm /dev/md0 -r /dev/sdc6
 $ sudo mdadm /dev/md0 -r /dev/sdd6
 これでsdc, sddはフリーになった。
新しくパーティーションを設定。
 $ sudo fdisk /dev/sdc
 新しく下記のように編集。
 /dev/sda1   *           1         132     1060258+  fd  Linux raid autodetect
 /dev/sda2             133      121601   975699742+   5  Extended
 /dev/sda5             133         525     3156741   82  Linux swap / Solaris
 /dev/sda6             526      121601   972542938+  fd  Linux raid autodetect
sdcに設定したパーティーションをsddに複写
 $ sudo sfdisk -d /dev/sdc | sudo sfdisk /dev/sdd
アレイを再作成
 $ sudo mdadm –create /dev/md2 –level=1 –raid-disks=2 missing /dev/sdd6
初期化してリビルド
 $ sudo mkfs.ext3 /dev/md2
 $ sudo mdadm /dev/md2 -a /dev/sdc6
 時間がかかるので待つ。今回は3時間近くかかった。
 $ watch cat /proc/mdstat
vgに追加
 $ sudo vgextend vg00 /dev/md2
md0にもsdc1,sdd1を追加
 $ sudo mdadm /dev/md0 -a /dev/sdc1
 $ sudo mdadm /dev/md0 -a /dev/sdd1
 容量が小さいので比較的短時間で終わる。
swapも作り直し
 $ sudo mkswap /dev/sdc5
 $ sudo mkswap /dev/sdd5
 fstabの設定も修正
 $ sudo vim /etc/fstab
 $ sudo swapon -v UUID=
 $ sudo swapon -v UUID=
md2側完了。
 同じようにmd1側のパーティーションも変更するために、
 md1側からmd2側利用に切り替える。
 $ sudo pvmove /dev/md1 &
 かなり時間がかかるからバックグラウンドで動かしておくといいかも。
sda,sdbも同じように作業を繰り返す。
 md0からsda1,sdb1を外し、vg00からmd1を分離してmd1アレイを解除。
 swapも利用解除してsda,sdbをフリーにしてからパーティーション切り直し。
$ sudo sfdisk -d /dev/sdc | sudo sfdisk /dev/sda
 $ sudo sfdisk -d /dev/sdc | sudo sfdisk /dev/sdb
 これですべてのディスクが同じ設定になったと。
md0へsda1,sdb1を追加
 sda6,sdb6でmd1を作成、フォーマット。
 md1をvg00へ追加(lvの拡張は後でいつでも出来るから後回し)
 sda5,sdb5でswapを作成、fstab修正。swapon
大事なポイントはここからで、md0にマウントしている/をどうするのか。
 今回知ったポイントで一番大きいところはext3の拡張はマウントした状態で行えると言うこと。
今までの作業でmd0のsd[abcd]1パーティーションは1GBとなっているので、
 まずアレイのサイズを拡張する。
 $ sudo mdadm –grow /dev/md0 -z max
 リビルドが行われるが、これも1GBなのですぐ終わる。
ここです、ext3ファイルシステムはマウントしたまま拡張可能。安心
 $ sudo resize2fs /dev/md0
これにて万事解決。
 容量不足で実行できなかったlinux-imageのupdateを実行したところ気になるwarningが。
W: mdadm: the array /dev/md2 with UUID 958d14c4:ce08bb4b:26636c8b:317bbf90
 W: mdadm: is currently active, but it is not listed in mdadm.conf. if
 W: mdadm: it is needed for boot, then YOUR SYSTEM IS NOW UNBOOTABLE!
 W: mdadm: please inspect the output of /usr/share/mdadm/mkconf, compare
 W: mdadm: it to /etc/mdadm/mdadm.conf, and make the necessary changes.
 W: mdadm: the array /dev/md1 with UUID d84d2821:b6365b56:4c31cd24:6521e64d
 W: mdadm: is currently active, but it is not listed in mdadm.conf. if
 W: mdadm: it is needed for boot, then YOUR SYSTEM IS NOW UNBOOTABLE!
 W: mdadm: please inspect the output of /usr/share/mdadm/mkconf, compare
 W: mdadm: it to /etc/mdadm/mdadm.conf, and make the necessary changes.
そうだ、アレイを構築し直したのでUUID等情報を修正しないとなりません。
 $ sudo mdadm –detail –scan
 これで表示されるARRAY表示をmdadm.confに記載する。
 $ sudo vim /etc/mdadm/mdadm.conf
起動できなくなったりしたら恐いので、再度インストールしてみる。
 $ sudo aptitude reinstall linux-image-2.6.32-5-amd64
もしかしたら
 update-initramfs だけでいいのかな。
またもう一つ調べなきゃ行けないことを思いだした。
 initramfsについて。
 
  
  
 
長いよ(−_−#)
意味わかんないし(・・?)
最近ゴハンネタないジャーン(>_<)
書くのにも結構時間かかりました。
これでも途中はしょっていますけど
ごはんは先週1週間グラタンだったんで。。(汗
今週末は何を作ろうか思案中。簡単かつ2,3日食べられるもの。