「LVMを使ってスナップショット」の版間の差分
(同じ利用者による、間の4版が非表示) | |||
2行目: | 2行目: | ||
LVMを使ってスナップショットを取る方法を説明します。ここでは以下の説明をします。 | LVMを使ってスナップショットを取る方法を説明します。ここでは以下の説明をします。 | ||
# スナップショット用LVの作成 | # スナップショット用LVの作成 | ||
16行目: | 17行目: | ||
ここではlv_rootのスナップショットを取る方法を説明します。lv_rootは次のようになっています。 | ここではlv_rootのスナップショットを取る方法を説明します。lv_rootは次のようになっています。 | ||
< | |||
<pre class="bash"> | |||
# lvscan | # lvscan | ||
ACTIVE '/dev/vg_c0/lv_root' [7.74 GiB] inherit | ACTIVE '/dev/vg_c0/lv_root' [7.74 GiB] inherit | ||
27行目: | 29行目: | ||
... | ... | ||
LV Size 7.74 GiB | LV Size 7.74 GiB | ||
</ | </pre> | ||
=== スナップショット用LVを作成 === | === スナップショット用LVを作成 === | ||
35行目: | 35行目: | ||
現在のVGのFree PEを確認します。 | 現在のVGのFree PEを確認します。 | ||
< | |||
<pre class="bash"> | |||
# vgdisplay | # vgdisplay | ||
--- Volume group --- | --- Volume group --- | ||
46行目: | 47行目: | ||
Free PE / Size 82 / 328.00 MiB | Free PE / Size 82 / 328.00 MiB | ||
... | ... | ||
</ | </pre> | ||
PE量で82、サイズで328MiBが利用可能なので、それを全て使いスナップショット用のLVを作成します。 | PE量で82、サイズで328MiBが利用可能なので、それを全て使いスナップショット用のLVを作成します。 | ||
< | |||
<pre class="bash"> | |||
# lvcreate -s -l +82 -n lv_root_snap /dev/vg_c0/lv_root | # lvcreate -s -l +82 -n lv_root_snap /dev/vg_c0/lv_root | ||
Logical volume "lv_root_snap" created | Logical volume "lv_root_snap" created | ||
</ | </pre> | ||
/dev/vg_c0/lv_root_snap が /dev/vg_c0/lv_root のスナップショットとなります。 | /dev/vg_c0/lv_root_snap が /dev/vg_c0/lv_root のスナップショットとなります。 | ||
その時点から、328MiB分の領域を使い切るまでは追加する(正確には領域を使い切るまで)ことが可能です。 | その時点から、328MiB分の領域を使い切るまでは追加する(正確には領域を使い切るまで)ことが可能です。 | ||
< | |||
<pre class="bash"> | |||
# lvscan | # lvscan | ||
ACTIVE Original '/dev/vg_c0/lv_root' [7.74 GiB] inherit | ACTIVE Original '/dev/vg_c0/lv_root' [7.74 GiB] inherit | ||
ACTIVE Snapshot '/dev/vg_c0/lv_root_snap' [328.00 MiB] inherit | ACTIVE Snapshot '/dev/vg_c0/lv_root_snap' [328.00 MiB] inherit | ||
</ | </pre> | ||
=== バックアップ === | === バックアップ === | ||
71行目: | 74行目: | ||
そのような時に、スナップショットを使えば、そのスナップショットを作った時のLVの状態がダンプできます。 | そのような時に、スナップショットを使えば、そのスナップショットを作った時のLVの状態がダンプできます。 | ||
< | |||
<pre class="bash"> | |||
</ | # dump -0 -f /backup/lv_root_snap.dump /dev/vg_c0/lv_root_snap | ||
</pre> | |||
ファイルシステムとしてマウントすることも可能です。この時、読み書き可能としてマウントしてしまうと領域の破壊が発生するので必ずリードオンリーでマウントして下さい。 | ファイルシステムとしてマウントすることも可能です。この時、読み書き可能としてマウントしてしまうと領域の破壊が発生するので必ずリードオンリーでマウントして下さい。 | ||
< | |||
<pre class="bash"> | |||
# mkdir /mnt/lv_root_snap/ | |||
# mount -o ro /dev/vg_c0/lv_root_snap /mnt/lv_root_snap/ | # mount -o ro /dev/vg_c0/lv_root_snap /mnt/lv_root_snap/ | ||
# df | # df | ||
87行目: | 93行目: | ||
/dev/mapper/vg_c0-lv_root_snap | /dev/mapper/vg_c0-lv_root_snap | ||
7992464 2129188 5463652 29% /mnt/lv_root_snap | 7992464 2129188 5463652 29% /mnt/lv_root_snap | ||
</ | </pre> | ||
=== LVの開放 === | === LVの開放 === | ||
スナップショット用に作ったLVの容量を越えてしまうと、オリジナルの領域に書き込みも含め無効(inactive)になり、以降、エラーになります。 | スナップショット用に作ったLVの容量を越えてしまうと、オリジナルの領域に書き込みも含め無効(inactive)になり、以降、エラーになります。 | ||
ですから、スナップショット作業が済んだならば、スナップショット領域を開放しておかなければなりません。 | |||
< | <pre class="bash"> | ||
# lvremove /dev/vg_c0/lv_root_snap | # lvremove /dev/vg_c0/lv_root_snap | ||
Do you really want to remove active logical volume lv_root_snap? [y/n]: y<RET> | Do you really want to remove active logical volume lv_root_snap? [y/n]: y<RET> | ||
Logical volume "lv_root_snap" successfully removed | Logical volume "lv_root_snap" successfully removed | ||
Logical volume vg_c0/lv_root contains a filesystem in use. | Logical volume vg_c0/lv_root contains a filesystem in use. | ||
</ | </pre> | ||
== 脚注 == | == 脚注 == |
2015年7月27日 (月) 17:28時点における最新版
LVM スナップショット
LVMを使ってスナップショットを取る方法を説明します。ここでは以下の説明をします。
- スナップショット用LVの作成
- dumpを使ってのスナップショットのバックアップ
- スナップショットのファイルシステムのマウント
ここでのスナップショットとは、それまでのLVのイメージを保持しつつ、LV自体はそのまま読み書きできる状態にしておくことによってバックアップなどを取ることが可能になる機能です。
現在のLVの状態の確認
ここではlv_rootのスナップショットを取る方法を説明します。lv_rootは次のようになっています。
# lvscan ACTIVE '/dev/vg_c0/lv_root' [7.74 GiB] inherit ... # lvdisplay --- Logical volume --- LV Path /dev/vg_c0/lv_root LV Name lv_root VG Name vg_c0 ... LV Size 7.74 GiB
スナップショット用LVを作成
現在のVGのFree PEを確認します。
# vgdisplay --- Volume group --- VG Name vg_c0 ... VG Size 12.00 GiB PE Size 4.00 MiB Total PE 3072 Alloc PE / Size 2990 / 11.68 GiB Free PE / Size 82 / 328.00 MiB ...
PE量で82、サイズで328MiBが利用可能なので、それを全て使いスナップショット用のLVを作成します。
# lvcreate -s -l +82 -n lv_root_snap /dev/vg_c0/lv_root Logical volume "lv_root_snap" created
/dev/vg_c0/lv_root_snap が /dev/vg_c0/lv_root のスナップショットとなります。
その時点から、328MiB分の領域を使い切るまでは追加する(正確には領域を使い切るまで)ことが可能です。
# lvscan ACTIVE Original '/dev/vg_c0/lv_root' [7.74 GiB] inherit ACTIVE Snapshot '/dev/vg_c0/lv_root_snap' [328.00 MiB] inherit
バックアップ
たとえばdumpコマンドではブロックデバイスをバックアップ中に、その内容が書き換わるとうまくバックアップできません。 そのような時に、スナップショットを使えば、そのスナップショットを作った時のLVの状態がダンプできます。
# dump -0 -f /backup/lv_root_snap.dump /dev/vg_c0/lv_root_snap
ファイルシステムとしてマウントすることも可能です。この時、読み書き可能としてマウントしてしまうと領域の破壊が発生するので必ずリードオンリーでマウントして下さい。
# mkdir /mnt/lv_root_snap/ # mount -o ro /dev/vg_c0/lv_root_snap /mnt/lv_root_snap/ # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_c0-lv_root 7992464 2148300 5444540 29% / .... /dev/mapper/vg_c0-lv_root_snap 7992464 2129188 5463652 29% /mnt/lv_root_snap
LVの開放
スナップショット用に作ったLVの容量を越えてしまうと、オリジナルの領域に書き込みも含め無効(inactive)になり、以降、エラーになります。 ですから、スナップショット作業が済んだならば、スナップショット領域を開放しておかなければなりません。
# lvremove /dev/vg_c0/lv_root_snap Do you really want to remove active logical volume lv_root_snap? [y/n]: y<RET> Logical volume "lv_root_snap" successfully removed Logical volume vg_c0/lv_root contains a filesystem in use.
脚注
目次へ
このページへのショートURL:
http://uc2.h2np.net/i/51.html