トップページlinux
106コメント48KB

LVMを語らせていただけませんか? その2

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin2010/07/16(金) 11:25:26ID:JcEUPlkg
LinuxのLVM(Logical Volume Manager)について情報交換するスレです。

■LVMの主な機能
ハードディスクのパーティションを物理デバイスでまたがって一つのパーティションにする
既にあるLVMパーティションを増設した物理デバイスを追加することができる
パーティションのスナップショットを作成する
など。

前スレ
LVMを語らせていただけませんか?
http://pc11.2ch.net/test/read.cgi/linux/1024122484/

関連スレ
RAID総合スレッド No.5
http://pc11.2ch.net/test/read.cgi/linux/1253111675/

ファイルシステム総合スレ その11
http://pc11.2ch.net/test/read.cgi/linux/1256639505/
0002login:Penguin2010/07/16(金) 11:27:50ID:JcEUPlkg
973 名前:login:Penguin []: 2010/06/30(水) 17:44:54 ID:FlM5EzIK (2)
lvremoveで削除した論理ボリュームを復活させたいんだけど、
もう無理?

975 名前:login:Penguin [sage]: 2010/06/30(水) 21:12:27 ID:aeXlIJ6f (2)
>>973
VGの構成情報は/etc/lvm/archive/の下に
自動でバックアップされている(LVMを操作するたび)

lvremoveしたあと、LVM関連の変更を行っていないのであれば、
/etc/lvm/archive/の下の一番新しいファイルが
lvremove直前のものだから、vgcfgrestoreで戻せるはず。

つうか、テストしたら普通に戻せた

1.バックアップの中身確認( "-l"オプション )
# vgcfgrestore -f /etc/lvm/archive/testvg_00006.vg -l testvg

File: /etc/lvm/archive/testvg_00006.vg
VG name: testvg
Description: Created *before* executing 'lvremove /dev/mapper/testvg-first'
Backup Time: Wed Jun 30 21:03:38 2010

2.実際の構成情報リストア
# vgcfgrestore -f /etc/lvm/archive/testvg_00006.vg testvg
Restored volume group testvg

3. LVのactivate
# vgchange -ay testvg
0003login:Penguin2010/07/16(金) 11:28:40ID:JcEUPlkg
978 名前:login:Penguin []: 2010/07/05(月) 05:05:53 ID:CEfOH2GT
973の方と同様の過ちをしたのですが、archiveにも残ってない場合は無理でしょうか?

983 名前:login:Penguin [sage]: 2010/07/05(月) 23:38:37 ID:vI6Vt5iG
>>978
ネタだと思うけど一応。
基本的には無理だけど、限定条件下なら可能

1. これまでlvcreate/lvextendでPV,PEを指定するオプションを使ったことが無い
2. LVの縮小や削除をしたことが無い(ミスった1回以外)
3. 削除後、LVMの操作をしていない

上記1-3を満たす場合、PEは先頭から順番に使用され(複数のPVがある場合1個目から)
かつ再利用されていないから、以下のコマンドで使用中のPEを確認し、
歯抜け部分を先頭から順番にくっつければOKのはず
# lvdisplay --maps

歯抜け部分を順番にくっつけるには、以下のいずれか
A. PE指定で、lvcreate→lvextend→lvextend→lvextend…
B. vgcfgbackupで現在のVG情報をテキストに落としたものに、削除してしまったLVの
 エントリを捏造して、vgcfgrestore

テストなら戻せるけど、実環境では2の条件が無理
(歯抜けPEをddで見て、元のLVを判別出来るなら何とかなるかもしんないけど)
0004login:Penguin2010/07/16(金) 11:29:24ID:JcEUPlkg
972 名前:login:Penguin [sage]: 2010/05/13(木) 21:59:39 ID:AnZS7vyd
linuxのLVM2だとLVの作成数の上限は無いとmanページに書いてあるんですけど、
試しに作ってみたら400個程しか作れませんでした。
100GのHDDに4MのLVを作ったので、空き容量はあるんですけど?
metadataが一杯みたいなエラーがでてました。
特別な作成方法があるのでしょうか?

977 名前:login:Penguin [sage]: 2010/06/30(水) 22:02:45 ID:aeXlIJ6f (2)
>>972
PV作成時にmetadataのサイズを指定する

# pvcreate --metadatasize 512m /dev/sda
0005login:Penguin2010/07/16(金) 11:50:49ID:afJNPWu8
スナップショットとかどうでもいいから、
ボリューム管理+RAIDみたいな感じになると最強だな。
0006login:Penguin2010/07/21(水) 14:57:11ID:i6kku1G9
ホームサーバーのデータをミラーリングしたいと思ってLVM + RAID1の構成を作ろうと思っているのですが、
こちら(ttp://kimitakeblog.net/item/688)などで紹介されているようにLVM自体にもミラーリングの機能があるのでしょうか?
そうだとすると、LVMを使う前提ではRAIDとLVMをまぜて使うよりもLVM単体でミラーリングを行った方がいいですか?
0007login:Penguin2010/07/21(水) 15:01:08ID:XKAU9pDW
やめたほうがいいいです
0008login:Penguin2010/07/21(水) 15:32:51ID:hIKh9GY1
>>6
LVMを利用しようと思った理由は何?
RAID1を利用しようと思った理由は何?
LVM単体でミラーリングを利用しようと思った理由は何?

的確なアドバイスを求めるのなら手を抜かずに質問内容を書いたほうがいいよ。
答える義理もないが。
0009login:Penguin2010/07/21(水) 15:37:03ID:7TSKaWMD
それ聞いてもしょうがなくね。
0010login:Penguin2010/07/21(水) 17:04:08ID:78gYz+x1
>>9
まあ暇だし。
0011login:Penguin2010/07/22(木) 18:19:00ID:wVGumxk7
>>6
LVMは絶対に止めたほうがいい。
0012login:Penguin2010/07/22(木) 18:21:08ID:7AkYmN+C
それとAppleも絶対に止めたほうがいい
0013login:Penguin2010/08/05(木) 05:21:43ID:1N6W7PYp
SSDとHDD混在のVolume Groupを作ったとき、
アクセス頻度の高いPEをHDDからSSD側に動的に移動してくれるなんて機能はありませんかね?

0014login:Penguin2010/08/06(金) 17:57:20ID:pj+IPmpV
同じことやろうとしたけどなかった。
かろうじて近いのがMDの--write-mostly構成くらいだった。

たぶん改造するしかない。
0015login:Penguin2010/08/06(金) 18:28:32ID:G0jfrpzG
>>14
なるほど。
PEのアクセス頻度を調べて、移動させるぐらいなら何とか改造できるかな。

あと、もうひとつ考えたんだけど、LVMでミラーリング(PE単位でミラー)機能はあるけど、RAID5を実装させたい。
mdadmでRAID5とか組むとディスク単位になるから、リビルドとかにものすごい時間かかるんだよね。
これをPE単位でRAID5が組めれば、使用しているPE分だけのリビルドで復旧でき、時間短縮になるかなーと思った。
0016login:Penguin2010/08/06(金) 18:34:53ID:UJHSfvGI
>mdadmでRAID5とか組むとディスク単位
え?
0017login:Penguin2010/08/06(金) 22:55:22ID:/rCWQr4f
>>13
階層ストレージ管理ってやつ?
ググったらそれっぽいのあるけど

Online Hierarchical Storage Manager
ttp://ohsm.sourceforge.net/
0018login:Penguin2010/08/11(水) 12:09:38ID:8a0dkGZE
LVMのメリットの多くは HDDが活線挿抜できないと意味が無いので
LVMを使うメリットは無い
0019login:Penguin2010/08/11(水) 12:32:21ID:+yx0x51g
また阿呆が来やがった
0020login:Penguin2010/08/11(水) 14:29:57ID:utUc9ZtP
いやまあ LVM mirror を試したときはそう思ったけどな。
そのあたりが整理されないと MD vs DM は永久に平行線。
0021login:Penguin2010/08/13(金) 17:24:33ID:k9PCnCwC
確かにHot-Add + online resize出来るとすげえ便利だ。
0. ディスクあふれやがった…
1. HDD追加してpvcraete -> vgextend
2. あふれた所をlvextend
3. ext4だったのでそのままresize2fs
4. 空きができた

なんて事が再起動なしであっさり出来てしまったので、感動のあまり書き残してみる。
0022login:Penguin2010/08/13(金) 20:45:07ID:jD76iLIx
冗長化してないPVにVGなんて砂の上の城
0023login:Penguin2010/08/13(金) 22:46:52ID:K1+AsWv2
>>21
resize2fs サイズ指定しないでコマンド打つと、MAXまで広げてくれるんだよな。
うっかりやってしまって、後でCDブートで直すはめに。
0024login:Penguin2010/08/14(土) 01:50:12ID:Xrpk5Ovx
>>22
阿呆もうくんなよw
0025login:Penguin2010/09/21(火) 17:41:48ID:Q2mMeOhU
LVの縮小ってのは、そもそもデータの保持は保証しておらず
作業前のデータのバックアップ、作業後の復元を前提にしているのですか?
umount
fsck
resize2fs
lvreduce
の順でやって何度やっても、ぶっ壊れるのですが。
実データ量はわずかで、縮小後もサイズには余裕があります。
0026login:Penguin2010/09/21(火) 18:03:37ID:PeiRL3xD
>>25
俺も何度もその作業やったけど壊れなかったよ
lvreduceの前後でlvdisplay -mでマップを表示してみたら?
0027login:Penguin2010/09/21(火) 18:28:43ID:Q2mMeOhU
>>26
ありがとうございます。
そういうこともあるんですね。
0028login:Penguin2010/09/24(金) 20:04:22ID:sfMghyA7
物理ドライブ /dev/sda と /dev/sdb とで作成し
/home として システムA にマウントさせていた論理ボリューム LV-A を、
システムB に物理的に接続し直し、同じようにマウントさせるには、
どのような手順を踏めば良いのでしょうか?
0029login:Penguin2010/09/24(金) 20:14:14ID:ryx61Mvs
まず服を脱ぎます
0030login:Penguin2010/09/24(金) 20:14:42ID:Gmh/hqYx
>>28
http://tldp.org/HOWTO/LVM-HOWTO/recipemovevgtonewsys.html
0031login:Penguin2010/09/24(金) 20:40:37ID:sfMghyA7
>>30 ありがとうございます。頑張ります。
0032login:Penguin2010/10/07(木) 22:27:49ID:OH2WVtPq
lvcreate -mNで作れるミラーって微妙だな
0033login:Penguin2010/10/12(火) 15:58:48ID:qk+JPpfn
/dev/sda1 (500GB) + /dev/sdb1 (500GB) = /dev/VolGroup00/LogVol01 (1TB)

という VG, LV を作って使っていたのですが、/dev/sda1 に不良が発生したらしく、
正しく読めなくなってしまいました。交換用に購入した HDD は単発で 2TB のもので、
こいつを /dev/sdc1 2TB として物理接続し、

ddrescue -r3 /dev/VolGroup00/LogVol01 /dev/sdc1 をやってみたところ、
数回のエラーは出たものの、どうやら無事 rescue できた様子。

なんですが、さてこれ、元の /dev/VolGroup00/LogVol01 とは、
どうやって完全に置き換えればいいんでしょうか。

いちおう、希望としては、2TB 単発ではなく、やはり2台の 2TB HDD を用いて、
4TB な LV を作りたいと思っているのですが。
0034login:Penguin2010/10/12(火) 16:01:51ID:15EZKIQj
阿呆発見
0035login:Penguin2010/10/12(火) 19:22:21ID:xJMmfz7u
>>33
普通、ddrescueで吸い出さないといけないのは、LogVol01じゃなくて、
異常の発生した物理DISK(/dev/sda1)だよ

> ddrescue -r3 /dev/VolGroup00/LogVol01 /dev/sdc1 をやってみたところ、
> 数回のエラーは出たものの、どうやら無事 rescue できた様子。

"無事に"って本当?/dev/sdc1はマウント出来て、中身もちゃんとある?
0036login:Penguin2010/10/12(火) 20:02:00ID:qk+JPpfn
>>35 どうも。そうなんですか。
もう一回やってみます。ありがとうございます。
0037login:Penguin2010/10/13(水) 20:31:46ID:1gdWnNce
ディスクを全部交換したいときってどうしたらいいの?
0038login:Penguin2010/10/13(水) 21:31:06ID:ILOgZpW1
>>37
1. 新しいDISKを既存のボリュームグループに追加(vgextend)
2. 古いDISK上の使用中の領域を新しいDISKに移動(pvmove)
3. 古いDISKをボリュームグループから削除(vgreduce)

古いDISKが無くなるまで繰り返し
0039login:Penguin2010/10/14(木) 10:09:29ID:bAKxU1Ms
>>38 その古いDISKのうちのどれかに不良が発生してても基本的に同じ?
0040login:Penguin2010/10/14(木) 17:50:17ID:qfPDR+5Z
>>36
もう一度試す前に/dev/sdc1の中身を調べてみろって
間違いなくデータは救出できてるから
もちろんマウント前にfsckは忘れずに
0041login:Penguin2010/10/14(木) 19:21:37ID:Y2Afx2kz
>>39
1. ddrescueで不良DISKのデータ吸い出し
2. vgcfgrestore
3. vgchange -ay
4. fsck

>>38は、小さいDISKで作ったボリュームグループを、
データを載せたまま大きいDISKに移行したい、って場合を想定してたんだけど
(すべての新旧DISKを同時接続できるなら、普通にコピーした方が楽)

>>33,37,39 って同じ人?
0042login:Penguin2010/10/14(木) 20:48:59ID:bAKxU1Ms
>>41 ども。 >>33 >>39 は同じ人です。 >>37 の人は違います。
>>40 の人は意地悪さんなのか、それとも親切さんなのでしょうか?
0043login:Penguin2010/10/14(木) 21:15:41ID:Y2Afx2kz
>>42
>>40は親切さんだよ
>>35の物理ボリュームを吸うってのは一般的には正しいが、
もし物理DISKの異常が軽度だったら、LogVol01をddrescueで吸い出したものが
ファイルシステムのイメージとして有効な可能性もある

異常があると言いつつ、VGの活動化は出来ているみたいだから、
軽度の異常である可能性は十分ある
/dev/sdc1のfsck & mountを試みるべき
0044422010/10/21(木) 09:46:30ID:gD42Njcj
なかなかまとまった時間が取れず、未だにきちんと通して試せてないです。
せっかく教えていただいてるのにどうもすみません。
間違えるとエラいことになるかと思うと、落ち着きと集中力とが必要で。。

もう一度情報を整理してみました。

1). 古いHDD2台を物理接続しただけでマウントしてない状態です。
# pvscan
PV /dev/sda1 VG VolGroup00 lvm2 [465.75 GB / 0 free]
PV /dev/sdb1 VG VolGroup00 lvm2 [465.75 GB / 64.00 MB free]
Total: 2 [931.50 GB] / in use: 2 [931.50 GB] / in no VG: 0 [0 ]
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2
# lvscan
ACTIVE '/dev/VolGroup00/LogVol00' [931.44 GB] inherit
これが現状です。
これまでの経験から、エラーが出るのは /sda1 ではなく sdb1 だったので、
不良があるのはどうも /dev/sdb1 の方らしい。
0045422010/10/21(木) 09:47:11ID:gD42Njcj
2). 一旦シャットダウンし、救出先のHDDを新たに追加物理接続して起動。やはりマウントしてない状態です。
これまでに ddrescue した /sdc が、/sda の代わりに認識されているようなので、
# vgchange -a n VolGroup00
# vgremove VolGroup00
# fdisk /dev/sdc
でパーティションを抹消、
# vgchange -a y VolGroup00
で古い方を再活性化した状態からの再スタートになります。
不安なので、上記 1). の状態に戻っているか一行ずつチェックし、完全に 1). 通りであることを確認。

3). ここで再度以下を試します。
# ddrescue -r3 --force /dev/VolGroup00/LogVol00 /dev/sdc /var/log/`date +%Y%m%d`_ddrescue.log
巨大サイズ故にかなり時間がかかることは経験済みなので、この状態で外出します。
まとまった時間が取れないのは、ボリュームがデカすぎて、時間を取ったつもりが、
それでも全然終わらんから、というのは冗談抜きに深刻な問題です。
戻って来るのは夕方すぎですが、はたしてその頃に終わっているかどうか。。。
0046422010/10/21(木) 21:56:06ID:gD42Njcj
4). 帰ってきました。終わってました。上記 3).で取ったログは以下の内容でした。

# Rescue Logfile. Created by GNU ddrescue version 1.13
# Command line: ddrescue -r3 --force /dev/VolGroup00/LogVol00 /dev/sdc /var/log/20101021_ddrescue.log
# current_pos current_status
0xE438006E00 +
# pos size status
0x00000000 0xE438006000 +
0xE438006000 0x00001000 -
0xE438007000 0x4A3FF9000 +

以上。この + とか - とかになんか意味があるんでしょうが、分かりません。
■ このスレッドは過去ログ倉庫に格納されています