SSブログ

LVMのトラブルShooting☆Star(チガウ その2 [Linux(LVM/RAID/Storage)]

●mixiからの転記(&編集&追記)

 LVMを構成しているディスクのうちの1本が壊れそうだ!という場合の対応方法について基本的なところを記載しておきます。
 LVMを構成して運用しているディスクには、何らかのデータが書き込まれているはずですが、これをそのまま引っこ抜いてしまうと、データを失ってしまいますので…

 ① 引っこ抜きたいディスク上のデータを他のディスク(同じボリュームグループ内の他のディスク)にデータを移動する
 ↓
 ② ディスクを引っこ抜く(交換する)

 という手順が必要です。

 「同じボリュームグループ内の他のディスク」と記述してはいますが、例えばRAIDのように同じ容量のディスクをもう一つ用意しなければならないという訳ではありません。LVMの場合は抜き取りたいディスクが持っている物理エクステント同じだけの空き物理エクステント(Free PE)があればよいのです。
 その辺の確認方法を以下に示します。

 例えば、ここでは例として「/dev/sdn1」のディスクを交換(抜き取り)したいと想定します。vgdisplayコマンドに「-v」オプションを付けて実行しますと…

# vgdisplay -v
    Finding all volume groups
    Finding volume group "vgtera"
  --- Volume group ---
  VG Name               vgtera
  System ID
  Format                lvm2
  Metadata Areas        8
  (途中省略)
  VG Size               4.55 TB
  PE Size               4.00 MB
  Total PE              1193228
  Alloc PE / Size       1193228 / 4.55 TB
  Free  PE / Size       0 / 0
  VG UUID               RBEJZT-k2Vo-AKtl-OIYq-imHx-gnca-RDbvUU

  --- Logical volume ---
  LV Name                /dev/vgtera/lva
  VG Name                vgtera
  (途中省略)

  --- Physical volumes ---
  (途中省略)

  PV Name               /dev/sdn1
  PV UUID               Pp0EZz-2dNy-y5G3-Y92a-UZ7H-5pMA-RyM9rA
  PV Status             allocatable
  Total PE / Free PE    59841 / 0


  (以下略)


 このLVMの場合、ボリュームグループ全体で1193228個のPEを保有し、全部使っています。一方で交換対象としたいディスクは59841個のPEがあります。
 というわけで、このディスクを交換するためには少なくとも59841個の空きPEを捻出しなければならないということが判ります。

 で、ここがLVMの良いところなんですが、普通、ディスク交換というと壊れたディスクを抜く新しいディスクを差し込むリビルドなり設定なりという手順を踏む訳ですが、LVMだったら、新しいディスクを差し込む設定変更・データ移動壊れたディスクを抜く という手順で実施することができます。これでほぼオンラインで交換作業ができちゃったりする訳ですよ奥さん。
 また、交換作業中の一時的な対応と割り切るなら、容量(物理エクステントの個数)のつじつまさえあればディスクの種類やら接続方法やらを全く問いません。

 では、ディスクを交換する操作を追ってみましょう。


ステップ1:新しいディスクを接続する。
 ここでは約320GBのUSB接続なディスクを用意してUSBのポートにざくっと接続してみました。
 dmesgで接続されたことが確認できます。

usb 3-1: new high speed USB device using ehci_hcd and address 3
usb 3-1: configuration #1 chosen from 1 choice
scsi7 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 3
usb-storage: waiting for device to settle before scanning
  Vendor: I-O DATA  Model: HDC-U             Rev: 1.09
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sdp: 625142448 512-byte hdwr sectors (320073 MB)
  (以下略)

 sdpってw

 で、これをLVMの構築時と同様に物理ボリュームを作成し、ボリュームグループに追加する手順を踏みます。

# fdisk /dev/sdp
# pvcreate /dev/sdp1
  Physical volume "/dev/sdp1" successfully created
# vgextend vgtera /dev/sdp1
  Volume group "vgtera" successfully extended

 これで交換準備は整いました。vgdisplayコマンドでボリュームグループの状態を見てみると…

# vgdisplay -v
  (ばっさり省略)
  VG Size               4.84 TB
  PE Size               4.00 MB
  Total PE              1269538
  Alloc PE / Size       1193228 / 4.55 TB
  Free  PE / Size       76310 / 298.09 GB
  VG UUID               RBEJZT-k2Vo-AKtl-OIYq-imHx-gnca-RDbvUU

  (ばっさり省略)

  PV Name               /dev/sdn1
  PV UUID               Pp0EZz-2dNy-y5G3-Y92a-UZ7H-5pMA-RyM9rA
  PV Status             allocatable
  Total PE / Free PE    59841 / 0

  PV Name               /dev/sdp1
  PV UUID               Q002wj-0dsD-rf42-Q0gF-xXRg-iTK8-6yeW6Z
  PV Status             allocatable
  Total PE / Free PE    76310 / 76310

 と、ボリュームグループ内に76310個の空き物理エクステントが追加されました。



ステップ2:交換対象となるディスク上のデータを移動する

 これから引っこ抜きたいディスクの上のデータを、ボリュームグループ内に確保された空き物理エクステントにコピーする処理を行います。使用するコマンドは pvmove です。引数として「引っこ抜きたいディスクのデバイス名」(ここでは/dev/sdn1)を指定します。

# pvmove /dev/sdn1

 なお、ここで「 mirror: Required device-mapper target(s) not detected in your kernel」とかエラーが出たら、dm-mirrorドライバを組み込んでやる必要があります。

# modprobe dm-mirror
# pvmove /dev/sdn1
  /dev/sdn1: Moved: 0.1%
  /dev/sdn1: Moved: 0.2%
  /dev/sdn1: Moved: 0.4%
  /dev/sdn1: Moved: 0.5%
  /dev/sdn1: Moved: 0.6%

 こんな感じ。
 コピーしたいデータの量によってはコピーに時間がかかりますので気長に待ちましょう。



ステップ3:交換対象となるディスクをボリュームグループから除外する

 ここまでの操作で、ボリュームグループ内に登録されている物理ボリュームは、こんな状態になっています。sdn1が、今回交換対象としたディスク。参考までに、sdm1も表示していますが、これはsdn1と全く同じディスクで交換はしないディスクです。また、sdp1はsdn1の代わりに今回追加したディスクです。

  --- Physical volume ---
  PV Name               /dev/sdm1
  VG Name               vgtera
  PV Size               233.76 GB / not usable 2.90 MB
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              59841
  Free PE               0
  Allocated PE          59841
  PV UUID               UjFfgA-XQgx-6xvl-PJ1m-aalI-HkIo-pv2kBB

  --- Physical volume ---
  PV Name               /dev/sdn1
  VG Name               vgtera
  PV Size               233.76 GB / not usable 2.90 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              59841
  Free PE               59841
  Allocated PE          0
  PV UUID               Pp0EZz-2dNy-y5G3-Y92a-UZ7H-5pMA-RyM9rA

  --- Physical volume ---
  PV Name               /dev/sdp1
  VG Name               vgtera
  PV Size               298.09 GB / not usable 2.81 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              76310
  Free PE               16469
  Allocated PE          59841
  PV UUID               Q002wj-0dsD-rf42-Q0gF-xXRg-iTK8-6yeW6Z

 sdn1のFree PEがTotal PEと同じ数値になっていることから、すでにこのディスクは使われていない(ボリュームグループに所属しているだけの)状態になっていることが確認できます。

 このような状態になったディスクをボリュームグループから除外するには、 vgreduce コマンドを使用します。

# vgreduce vgtera /dev/sdn1
  Removed "/dev/sdn1" from volume group "vgtera"

 ちゃんと除外されたかどうか、確認してみましょう。

# vgdisplay -v
    Finding all volume groups
    Finding volume group "vgtera"
  --- Volume group ---
  VG Name               vgtera
  (途中省略)
  VG Size               4.61 TB
  PE Size               4.00 MB
  Total PE              1209697
  Alloc PE / Size       1193228 / 4.55 TB
  Free  PE / Size       16469 / 64.33 GB

  (途中省略)

  PV Name               /dev/sdm1
  PV UUID               UjFfgA-XQgx-6xvl-PJ1m-aalI-HkIo-pv2kBB
  PV Status             allocatable
  Total PE / Free PE    59841 / 0

  PV Name               /dev/sdp1
  PV UUID               Q002wj-0dsD-rf42-Q0gF-xXRg-iTK8-6yeW6Z
  PV Status             allocatable
  Total PE / Free PE    76310 / 16469

 sdn1がいなくなっていることが判ります。
 これで、sdn1をいつでも引っこ抜ける状態になりました。

 ちなみに、今回追加したsdp1が「一時しのぎ用」みたいなケースで、本番運用のためには別のディスクを戻して使いたいという場合は、交換した新しいディスクに、物理ボリュームを作成→ボリュームグループに追加→「一時しのぎ用ディスク」のデータを空き物理エクステントに移動→「一時しのぎ用ディスク」をボリュームグループから除外→「一時しのぎ用ディスク」を引っこ抜く…というような、今回と同じような操作をもう一度やればOKです。

 なお、この辺の一連の作業はオンライン状態のまま実施できます。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。