Division By Zero

ゼロで割る

LVMのスナップショットを使ってみた

仮想化ソフトウェアのスナップショット機能はとても便利で、特定の状態にいつでも戻れると思うと検証作業も楽しいが、物理サーバーでの検証が必要な場合も多々ある。特殊な外付け装置が必要な場合や、仮想化ソフトウェア自体を含むシステムの検証などである。

ある物理サーバー(OS:RHEL 5.5 x64)を少しいじる必要に迫られたので、あまり利用したことのないLVMスナップショットを使ってみる。ただし、標準のLVMには「スナップショットの状態に戻す」機能はない。戻すには、dump等でバックアップをとり、それをrestoreする必要がある。

対象となるサーバーはRHELをデフォルトでインストールしたらしく、LVMがすでに導入されていたが、スナップショット領域を作成する容量がない。そこで、論理ボリュームを縮小することから始める。

1. インストールDVDでrescueモードで起動
2. LVMを起動

# lvm vgchange -a y

3. 整合性チェック

# fsck.ext3 -f /dev/VolGroup01/LogVol00

4. ファイルシステムのリサイズ

# resize2fs /dev/VolGroup01/LogVol00 100G

5. 論理ボリュームのリサイズ

# lvm lvresize -L 100G /dev/VolGroup01/LogVol00

6. rescueモードからexitして再起動

なるほど、今度Linuxをインストールするときは、スナップショットのための領域をあらかじめ用意しておこう。

スナップショットをとるには、

# lvcreate -s -L 10G -n LogVol00_snap /dev/VolGroup01/LogVol00

とする。

# lvdisplay /dev/VolGroup01/LogVol00_snap
  --- Logical volume ---
  LV Name                /dev/VolGroup01/LogVol00_snap
  VG Name                VolGroup01
  LV UUID                XXXXX
  LV Write Access        read/write
  LV snapshot status     active destination for /dev/VolGroup01/LogVol00
  LV Status              available
  # open                 0
  LV Size                100.00 GB
  Current LE             3200
  COW-table size         10.00 GB
  COW-table LE           320
  Allocated to snapshot  0.45%
  Snapshot chunk size    4.00 KB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

これでAllocated to snapshotがあふれないことに注意しておけば、スナップショットの状態に戻れるはずだ。もちろんディスク障害が起きた場合は、全部あきらめることになるが、今回の装置に関してはOK。少し安心できたので終了!