Misc/LVMの使い方
2017-06-14 (水) 06:49:17 (2678d)
セットアップ †wget ftp://ftp.sistina.com/pub/LVM/1.0/lvm_1.0.8.tar.gz cd LVM/1.0.8 ./configure make sudo make install vgscan //ディスクごとに必要 //8eでフォーマット fdisk /dev/hde pvcreate /dev/hde1 //ディスクグループに追加 vgcreate jp_vg /dev/hde1 //容量を確認 vgdisplay 順番が違うかも //パーティションを作成 lvcreate -l ??? jp_vg mkfs.ext3 /dev/hde1 起動時に必要なコマンドがあるので起動スクリプトを作成 vgchange -a y jp_vg 起動用スクリプト作成(/etc/init.d/lvm) #!/bin/bash RETVAL=0 start() { /sbin/vgchange -a y jp_vg /bin/mount /dev/jp_vg/lvol1 /mnt1 } stop() { /bin/umount /mnt1 /sbin/vgchange -a n jp_vg } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" RETVAL=1 esac exit $RETVAL ln -s ../init.d/lvm S99lvm Tips †LVMディスクの移動 †マシン No 1 で、 vgchange -a n vg01 vgexport vg01 マシン No 2 で、 vgimport vg01 /dev/sda1 /dev/sdb1 vgchange -a y vg01 ディスクの増加 †# fdisk /dev/hde 8eでフォーマット # pvcreate /dev/hde1 -ff オプションが必要なときもあり # vgchange -a y storage_vg # vgextend storage_vg /dev/hde1 # umount /dev/storage_vg/lvol1 // umountしてなければいらない? そうでもない # lvextend -l+size /dev/storage_vg/... Vineのlvextendはバグ持ちで駄目なのでどこからか修正ソースを持ってきてrpm再インストール http://search.luky.org/vine-users.7/msg07261.html # e2fsadm -l+624 /dev/storage_vg/lvol1 Fedora Core 6 では最後 # resize2fs /dev/storage_vg/lvol1 もしくはオンラインなら # ext2online /dev/storage_vg/lvol1 となる ディスク間データ移動 †pvmoveの前はその上のvgとかを全部アンマウントしておくこと。pv吹っ飛ぶ可能性あり。 umount /dev/.../vg vgchange -a n vg pvmove /dev/hde1 /dev/hdi1 pvmove /dev/hde1 で hde1のPVを他に追い出す 失敗したときには(戻せているかどうかは未確認) †pvmove中に ここ のような状態になって失敗した場合。 device-mapper: create ioctl failed: Peripherique ou ressource occupe Loading aya-kvms table device-mapper: reload ioctl failed: Argument invalide Checking progress every 10 seconds WARNING: dev_open(/dev/sdd1) called while suspended WARNING: dev_open(/dev/sda2) called while suspended WARNING: dev_open(/dev/hdb3) called while suspended WARNING: dev_open(/dev/sdd1) called while suspended WARNING: dev_open(/dev/sda2) called while suspended WARNING: dev_open(/dev/hdb3) called while suspended WARNING: dev_open(/dev/sdd1) called while suspended WARNING: dev_open(/dev/sda2) called while suspended WARNING: dev_open(/dev/hdb3) called while suspended /dev/sdd1: Moved: 100,0% Found volume group "aya" Found volume group "aya" Found volume group "aya" Found volume group "aya" Suspending aya-pvmove0 (253:6) with device flush Found volume group "aya" Creating aya-pvmove0 device-mapper: create ioctl failed: Peripherique ou ressource occupe Unable to reactivate logical volume "pvmove0" この場合メタデータの更新だけ行われてしまったと思われるのでメタデータを戻せば復活できる(はず、というかそうでないと自分のストレージもダメージ受けてるorz) /etc/lvm/backup or /etc/lvm/archive に設定ファイル(storage_vg)が残っているか確認して残っていれば可能性あり。 pvmoveの場合、メタデータの segmentxx って処の stripes って処が書き換えられてかつ中身も移動するという作りだと思う。なので今回の失敗のようにメタデータだけ書き換えられた場合はその部分を修復してみる。 segment11 { start_extent = 47095 extent_count = 3726 # 232.875 Gigabytes type = "striped" stripe_count = 1 # linear stripes = [ "pv7", 0 <- ここを修正 "pv指定", 開始extent みたいなもんだと思う ] } pvmoveなので start_extent, extent_count 等は修正されないはずなのでほっておく(同じ数のextentを消費するはずだから)。archiveに過去のものが入っていればその設定ファイルをそのまま利用した方が無難だしよいと思います(自分はそのあとにLVM操作してたので無理でしたがorz)。 修正が終わったらその設定ファイルでメタデータを書き換える。 vgcfgrestore storage_vg -f storage_vg_rec storage_vg_rec は修正した設定ファイル あとはpvmoveをやり直す。 ちなみにこれはURL先の記述を見る限りバグらしい。 pvの削除 †vgreduce vg_name /dev/hdp1 pvremove /dev/hdp1 間違って消してしまったら vgreduce --removemissing VG_XenStorage-xxxx LVMディスクのPC間移動 †同バージョンのLVMを導入さえすればすべてのHDDをもってきて vgscan をすれば使えるみたいである # /sbin/vgscan 環境 †
参考 †
この参考ページの方が役に立つような気がする(ぉ LVM
|