バックアップ · 4 min read · Nov 05, 2025

LVMスナップショットを使用してLVMパーティションをバックアップ(および復元)する

LVMスナップショットを使用してLVMパーティションをバックアップ(および復元)する

バージョン 1.1
著者: Falko Timme

このチュートリアルでは、LVMスナップショットと呼ばれるLVMの機能を使用してLVMパーティションのバックアップを作成する方法を示します。LVMスナップショットは、スナップショットが作成された時点のLVMボリュームからのすべてのデータを持つLVMパーティションの正確なコピーです。LVMスナップショットの大きな利点は、スナップショットが通常数秒の間に作成されるため、バックアップ中にサービスやデータベースがダウンする時間を大幅に短縮できることです。スナップショットが作成された後、サービスやデータベースが通常通り動作している間にスナップショットをバックアップできます。

このチュートリアルの最後の章では、バックアップからLVMパーティションを復元する方法も示します。

この文書にはいかなる種類の保証もありません!これがあなたにとって機能するという保証はありません!

1 予備ノート

私はこれをIPアドレス192.168.0.100およびホスト名server1.example.comのDebian Etchサーバーでテストしました。ハードディスクは2つあります:

  • /dev/sda (10GB) には小さな /boot パーティション(非LVM)、/ パーティション(LVM、10GB未満)、およびスワップパーティション(LVM)が含まれています。
  • /dev/sdb (60GB)、現在は未使用です。30GBの /backups パーティション(LVM)を作成し、/ パーティションのスナップショットを作成するために使用されます(10GB - これは十分です、なぜなら / パーティションは10GB未満だからです)。

私は、ダウンロードしてVMware ServerまたはVMware Playerで実行できるDebian EtchのVMwareイメージを作成しました(https://www.howtoforge.com/import_vmware_imagesを参照してその方法を学んでください)。それは上記のテストシステムと同じ仕様です。ルートパスワードはhowtoforgeです。そのVMwareイメージを使用して、このチュートリアルで私と同じ手順を実行してLVMスナップショットの使用に慣れることができます。

バックアップから / パーティションを復元するには(このチュートリアルの最後の章で説明します)、LVMをサポートするLinux Live-CDが必要です。たとえば、KnoppixやDebian Etch Netinstall CDなどです。ブートプロンプトでrescueを指定すると、救助CDとして使用できます。この例ではDebian Etch Netinstall CDを使用します(ミラーのリストはここにあります:http://www.debian.org/CD/http-ftp/ - 私はこれをダウンロードしました:http://ftp.de.debian.org/debian-cd/4.0_r0/i386/iso-cd/debian-40r0-i386-netinst.iso)。

/ パーティションのバックアップを作成するには、次の手順を実行します:/ パーティションのスナップショットを作成し、その後、/backups パーティションにスナップショットのバックアップを作成します(もちろん、そのバックアップは好きな場所に保存できます - 追加の /backups LVMパーティションを作成する代わりに、外部USBドライブを使用することもできます)。バックアップは、tarやddなどの好みのバックアップソリューションを使用して行うことができます。その後、スナップショットは不要になるため、破棄します。

スナップショット用に2つ目のHDDは必ずしも必要ではありません - スナップショットを作成するのに十分な空き(未パーティション化)スペースが残っている限り、最初のHDDを使用できます(バックアップしたいパーティションに使用するのと同じスペースをスナップショットに使用する必要があります)。前述のように、USBドライブを使用してスナップショットをバックアップすることもできます。

LVMについて詳しく学ぶには、次のチュートリアルを読むべきです:https://www.howtoforge.com/linux_lvm

2 /backups LVMパーティションを作成する

(バックアップを別の場所、たとえば外部USBドライブに保存したい場合は、これを行う必要はありません。)

現在の状況は次のとおりです:

pvdisplay

server1:~# pvdisplay
— Physical volume —
PV Name /dev/sda5
VG Name server1
PV Size 9.76 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 2498
Free PE 0
Allocated PE 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM

vgdisplay

server1:~# vgdisplay
— Volume group —
VG Name server1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 9.76 GB
PE Size 4.00 MB
Total PE 2498
Alloc PE / Size 2498 / 9.76 GB
Free PE / Size 0 / 0
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC

lvdisplay

server1:~# lvdisplay
— Logical volume —
LV Name /dev/server1/root
VG Name server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV Write Access read/write
LV Status available

LV Size 9.30 GB
Current LE 2382
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0

— Logical volume —
LV Name /dev/server1/swap_1
VG Name server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV Write Access read/write
LV Status available

LV Size 464.00 MB
Current LE 116
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1

fdisk -l

server1:~# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 31 248976 83 Linux
/dev/sda2 32 1305 10233405 5 Extended
/dev/sda5 32 1305 10233373+ 8e Linux LVM

Disk /dev/sdb: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn’t contain a valid partition table

Disk /dev/dm-0: 9990 MB, 9990832128 bytes
255 heads, 63 sectors/track, 1214 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/dm-0 doesn’t contain a valid partition table

Disk /dev/dm-1: 486 MB, 486539264 bytes
255 heads, 63 sectors/track, 59 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/dm-1 doesn’t contain a valid partition table

したがって、/dev/sdaには論理ボリューム/dev/server1/root(/パーティション)と/dev/server1/swap_1(スワップパーティション)、および小さな/bootパーティション(非LVM)が含まれています。

(ちなみに、/dev/server1/rootはDebian Etchの/dev/mapper/server1-rootと同じです。最初は2番目へのシンボリックリンクです。このチュートリアルでは両方の表記を使用します。/dev/server1/swap_1と/dev/mapper/server1-swap_1も同様です。)

これから、/dev/sdb1パーティションを作成し、server1ボリュームグループに追加し、その後、/dev/server1/backupsボリューム(これは/dev/sdbのフル60GBの代わりに30GBになるので、スナップショット用に十分なスペースが残ります)を作成し、/backupsにマウントします:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won’t be recoverable.

The number of cylinders for this disk is set to 7832.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:

  1. software that runs at boot time (e.g., old versions of LILO)
  2. booting and partitioning software from other OSs
    (e.g., DOS FDISK, OS/2 FDISK)
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): <– n
Command action
e extended
p primary partition (1-4)
<– p
Partition number (1-4): <– 1
First cylinder (1-7832, default 1): <– [ENTER]
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-7832, default 7832): <– [ENTER]
Using default value 7832

Command (m for help): <– t
Selected partition 1
Hex code (type L to list codes): <– 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): <– w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

pvcreate /dev/sdb1
vgextend server1 /dev/sdb1
lvcreate –name backups –size 30G server1
mkfs.ext3 /dev/mapper/server1-backups
mkdir /backups

さて、/dev/server1/backupsボリュームを/backupsにマウントしましょう:

mount /dev/mapper/server1-backups /backups

このボリュームをシステム起動時に自動的にマウントするには、/etc/fstabを編集し、次のような行を追加する必要があります:

vi /etc/fstab

| [...] /dev/mapper/server1-backups /backups ext3 defaults,errors=remount-ro 0 1 |

さて、私たちの新しい状況は次のようになります:

pvdisplay

server1:~# pvdisplay
— Physical volume —
PV Name /dev/sda5
VG Name server1
PV Size 9.76 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 2498
Free PE 0
Allocated PE 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM

— Physical volume —
PV Name /dev/sdb1
VG Name server1
PV Size 59.99 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 15358
Free PE 7678
Allocated PE 7680
PV UUID cvl1H5-cxRe-iyNg-m2mM-tjxM-AvER-rjqycO

vgdisplay

server1:~# vgdisplay
— Volume group —
VG Name server1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 69.75 GB
PE Size 4.00 MB
Total PE 17856
Alloc PE / Size 10178 / 39.76 GB
Free PE / Size 7678 / 29.99 GB
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC

lvdisplay

server1:~# lvdisplay
— Logical volume —
LV Name /dev/server1/root
VG Name server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV Write Access read/write
LV Status available

LV Size 9.30 GB
Current LE 2382
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0

— Logical volume —
LV Name /dev/server1/swap_1
VG Name server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV Write Access read/write
LV Status available

LV Size 464.00 MB
Current LE 116
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1

— Logical volume —
LV Name /dev/server1/backups
VG Name server1
LV UUID sXq2Xe-y2CE-Ycko-rCoE-M5kl-E1vH-KQRoP6
LV Write Access read/write
LV Status available

LV Size 30.00 GB
Current LE 7680
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:2

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。