LVMをいじる

 ZFSに期待していた機能がなかったので結局ファイル置き場には使い慣れたDebian GNU/Linuxを採用した。家に余っていた120GBのハードディスクを3台使って360GBのボリュームグループを作成し、ここにファイルを貯めていこうという算段だ。
 さて、oshikojiはハードディスクをRatocのリムーバブルケースに入れて、必要に応じて交換できるようにしている。古いものは容量が200GBクラスなので、順次500GBを買ってきて2個の200GBを1個にまとめる、といった作業をやっている。これをファイル置き場を使って行おうと考えた。
 まず、200GBのハードディスクからファイル置き場に内容を移動する。
次に、空になった200GBをファイル置き場に結合する。

# pvscan
  PV /dev/hde1   VG lvmpool0   lvm2 [111.79 GB / 0    free]
  PV /dev/hdf1   VG lvmpool0   lvm2 [111.79 GB / 0    free]
  PV /dev/hdg1   VG lvmpool0   lvm2 [111.79 GB / 0    free]
  Total: 3 [335.36 GB] / in use: 3 [335.36 GB] / in no VG: 0 [0   ]

# pvcreate /dev/hdh1
  Physical volume "/dev/hdh1" successfully created

# vgextend -v lvmpool0 /dev/hdh1
    Checking for volume group "lvmpool0"
    Archiving volume group "lvmpool0" metadata (seqno 4).
    Adding physical volume '/dev/hdh1' to volume group 'lvmpool0'
    Wiping cache of LVM-capable devices
    Volume group "lvmpool0" will be extended by 1 new physical volumes
    Creating volume group backup "/etc/lvm/backup/lvmpool0" (seqno 5).
  Volume group "lvmpool0" successfully extended

# pvscan
  PV /dev/hde1   VG lvmpool0   lvm2 [111.79 GB / 0    free]
  PV /dev/hdf1   VG lvmpool0   lvm2 [111.79 GB / 0    free]
  PV /dev/hdg1   VG lvmpool0   lvm2 [111.79 GB / 0    free]
  PV /dev/hdh1   VG lvmpool0   lvm2 [186.30 GB / 186.30 GB free]
  Total: 4 [521.66 GB] / in use: 4 [521.66 GB] / in no VG: 0 [0   ]

取り外すハードディスクの中身を移動する。

# pvmove -v /dev/hdg1
    Wiping cache of LVM-capable devices
    Finding volume group "lvmpool0"
    Archiving volume group "lvmpool0" metadata (seqno 5).
    Creating logical volume pvmove0
    Moving 28617 extents of logical volume lvmpool0/LV_monooki
    Found volume group "lvmpool0"
    Updating volume group metadata
    Creating volume group backup "/etc/lvm/backup/lvmpool0" (seqno 6).
    Found volume group "lvmpool0"
    Found volume group "lvmpool0"
    Suspending lvmpool0-LV_monooki (254:0)
    Found volume group "lvmpool0"
    Creating lvmpool0-pvmove0
    Loading lvmpool0-pvmove0 table
    Resuming lvmpool0-pvmove0 (254:1)
    Found volume group "lvmpool0"
    Loading lvmpool0-pvmove0 table
    Resuming lvmpool0-pvmove0 (254:1)
    Loading lvmpool0-LV_monooki table
    Resuming lvmpool0-LV_monooki (254:0)
    Checking progress every 15 seconds
  /dev/hdg1: Moved: 0.2%
  /dev/hdg1: Moved: 0.4%

ハードディスクにがりがりアクセスがある。ムーブ作業をやっているのだろう。
終了したらボリュームグループから取り外す。

# vgreduce -v lvmpool0 /dev/hdg1
    Finding volume group "lvmpool0"
    Using physical volume(s) on command line
    Archiving volume group "lvmpool0" metadata (seqno 8).
    Removing "/dev/hdg1" from volume group "lvmpool0"
    Creating volume group backup "/etc/lvm/backup/lvmpool0" (seqno 9).
  Removed "/dev/hdg1" from volume group "lvmpool0"

# pvscan
  PV /dev/hde1   VG lvmpool0   lvm2 [111.79 GB / 0    free]
  PV /dev/hdf1   VG lvmpool0   lvm2 [111.79 GB / 0    free]
  PV /dev/hdh1   VG lvmpool0   lvm2 [186.30 GB / 74.52 GB free]
  PV /dev/hdg1                 lvm2 [111.79 GB]
  Total: 4 [521.66 GB] / in use: 3 [409.88 GB] / in no VG: 1 [111.79 GB]

# pvremove /dev/hdg1
  Labels on physical volume "/dev/hdg1" successfully wiped

論理ボリュームを拡張する。ハードディスクを交換して増えた容量を使えるようにしておこう。

# lvextend -L+74G -v /dev/lvmpool0/LV_monooki
    Finding volume group lvmpool0
    Archiving volume group "lvmpool0" metadata (seqno 9).
  Extending logical volume LV_monooki to 409.36 GB
    Creating volume group backup "/etc/lvm/backup/lvmpool0" (seqno 10).
    Found volume group "lvmpool0"
    Found volume group "lvmpool0"
    Loading lvmpool0-LV_monooki table
    Suspending lvmpool0-LV_monooki (254:0)
    Found volume group "lvmpool0"
    Resuming lvmpool0-LV_monooki (254:0)
  Logical volume LV_monooki successfully resized
# umount /monooki

ちなみに、ここまでファイルシステムをうっかりマウントしたまま行っていた。

# ext2resize -v /dev/lvmpool0/LV_monooki 409G

あとは電源を切ってハードウェア的に取り外したらおしまい。