「LVM によるルートファイルシステムのスナップショット作成」の版間の差分
(一部翻訳) |
(→Setup: 翻訳) |
||
14行目: | 14行目: | ||
[[LVM#スナップショット|LVM スナップショット]] の前提条件が正しく設定されていることを確認してください。 |
[[LVM#スナップショット|LVM スナップショット]] の前提条件が正しく設定されていることを確認してください。 |
||
− | == |
+ | == セットアップ == |
+ | システムの起動時にルートボリュームのクリーンなスナップショットを作成するために systemd サービスを使用します。 |
||
− | Use a systemd service to create a clean snapshot of the root volume during system startup. |
||
− | + | {{ic|/etc/systemd/system/mk-lvm-snapshots.service}} を作成します。 |
|
{{bc|1= |
{{bc|1= |
||
37行目: | 37行目: | ||
}} |
}} |
||
+ | ルートボリュームグループとボリューム名に合わせて、{{ic|lvcreate}} コマンドを適応させます。 |
||
− | Adapt the {{ic|lvcreate}} command to match your root volume group and volume name. |
||
+ | 必要であれば、スナップショットサイズを調整します。追加のファイルシステムをスナップショットする必要がある場合 |
||
− | Adjust the snapshot size if necessary. If additional filesystems should be snapshotted |
||
+ | 起動時に {{ic|ExecStart}} プロパティを拡張して、lvcreate コマンドを追加することができます。 |
||
− | during startup you may extend the {{ic|ExecStart}} property with addtional lvcreate commands, |
||
− | + | {{ic| ; }} で区切られた (セミコロンの前後にスペースがあることに注意してください。詳しくは [https://www.freedesktop.org/software/systemd/man/systemd.service.html#Command%20lines systemd サービスマニュアル] を参照してください)。 |
|
+ | {{Note|実行中のシステムで {{ic|lvcreate}} コマンドが思い通りに動くまでテストする必要があります。 |
||
− | {{Note|You should test the {{ic|lvcreate}} command in the running system until it works as desired. |
||
+ | テスト用のスナップショットは {{ic|lvremove}} で削除してください。実行中のシステムから取得したスナップショットは、シングルユーザーモードや起動中に取得したスナップショットほど一貫性がありません。}} |
||
− | Remove the test snapshots with {{ic|lvremove}}. The snapshots taken from a running system are not as consistent as snapshots taken in single user mode or during startup.}} |
||
− | + | 新しい systemd ターゲット {{ic|/etc/systemd/system/make-snapshots.target}} を作成します。 |
|
{{bc|1= |
{{bc|1= |
||
53行目: | 53行目: | ||
}} |
}} |
||
+ | {{ic|multi-user.target}} がデフォルトターゲットでない場合、ベースターゲットを適応させます。デスクトップに入りたい場合は、{{ic|graphical.target}} に変更する必要があります。 |
||
− | Adapt the base target, if {{ic|multi-user.target}} is not your default target. If you want to get into your desktop, you need to change it to {{ic|graphical.target}}. |
||
− | + | {{ic|mk-lvm-snapshots.service}} を [[有効化]] |
|
+ | 新しいターゲットでシステムを起動すると、ローカルファイルシステムをマウントした直後に LVM snapshot(s) が作成されます。 |
||
− | If the system is started with the new target, LVM snapshot(s) are created just after mounting the local filesystems. |
||
− | + | このターゲットで起動する [[GRUB]] メニューエントリを取得するには、{{ic|/boot/grub/custom.cfg}} をベースに作成します。 |
|
+ | {{ic|grub.cfg}} は通常のスタートアップ用エントリです。カーネルコマンドラインを拡張して、新しく起動する |
||
− | {{ic|grub.cfg}} entry for your normal startup. The kernel command line is extended to start the new |
||
− | {{ic|make-snapshots.target}} |
+ | {{ic|make-snapshots.target}} です。 |
{{bc|1= |
{{bc|1= |
||
73行目: | 73行目: | ||
}} |
}} |
||
+ | {{ic|grub.cfg}} が変更された場合は、{{ic|custom.cfg}} を調整することを忘れないでください。 |
||
− | Remember to adjust {{ic|custom.cfg}} if {{ic|grub.cfg}} changes. |
||
+ | この grub エントリでシステムを再起動すると、{{ic|lvs}} に新しく作成されたスナップショットが表示されるはずです。 |
||
− | After restarting the system with this grub entry {{ic|lvs}} should show up the newly created snapshot. |
||
− | {{Tip| |
+ | {{Tip|新しいサービスのメッセージを取得するには、root で {{ic|journalctl -u mk-lvm-snapshots.service}} を実行してください}} |
== Usage == |
== Usage == |
2022年2月14日 (月) 18:58時点における版
この記事では、システム起動時にルートファイルシステムの LVM スナップショットを作成する設定方法について説明します。このようなスナップショットは、ダウンタイムを最小限に抑えた フルシステムバックアップ や、システムの更新をテストして元に戻すオプションに使用することができます。
必要なもの
LVM ルートファイルシステムと systemd を搭載したシステムが必要です。 LVM スナップショット の前提条件が正しく設定されていることを確認してください。
セットアップ
システムの起動時にルートボリュームのクリーンなスナップショットを作成するために systemd サービスを使用します。
/etc/systemd/system/mk-lvm-snapshots.service
を作成します。
[Unit] Description=make LVM snapshots Requires=local-fs-pre.target Wants=local-fs.target DefaultDependencies=no Conflicts=shutdown.target After=local-fs-pre.target Before=local-fs.target [Install] WantedBy=make-snapshots.target [Service] Type=oneshot ExecStart=/usr/sbin/lvcreate -L10G -n snap-root -s lvmvolume/root
ルートボリュームグループとボリューム名に合わせて、lvcreate
コマンドを適応させます。
必要であれば、スナップショットサイズを調整します。追加のファイルシステムをスナップショットする必要がある場合
起動時に ExecStart
プロパティを拡張して、lvcreate コマンドを追加することができます。
;
で区切られた (セミコロンの前後にスペースがあることに注意してください。詳しくは systemd サービスマニュアル を参照してください)。
新しい systemd ターゲット /etc/systemd/system/make-snapshots.target
を作成します。
[Unit] Description=Make Snapshots Requires=multi-user.target
multi-user.target
がデフォルトターゲットでない場合、ベースターゲットを適応させます。デスクトップに入りたい場合は、graphical.target
に変更する必要があります。
mk-lvm-snapshots.service
を 有効化
新しいターゲットでシステムを起動すると、ローカルファイルシステムをマウントした直後に LVM snapshot(s) が作成されます。
このターゲットで起動する GRUB メニューエントリを取得するには、/boot/grub/custom.cfg
をベースに作成します。
grub.cfg
は通常のスタートアップ用エントリです。カーネルコマンドラインを拡張して、新しく起動する
make-snapshots.target
です。
### make snapshots ### menuentry 'Arch GNU/Linux, make snapshots' --class arch --class gnu-linux --class gnu --class os { ... echo 'Loading Linux core repo kernel ...' linux /boot/vmlinuz-linux root=/dev/lvmvolume/root ro systemd.unit=make-snapshots.target echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux.img }
grub.cfg
が変更された場合は、custom.cfg
を調整することを忘れないでください。
この grub エントリでシステムを再起動すると、lvs
に新しく作成されたスナップショットが表示されるはずです。
Usage
Backup
To use this functionality for a full system backup, restart your system with the snapshot creation target.
Mount the snapshot volume (and further volumes, if required), preferably using the read only (-o
) option.
Then backup your system, for example with tar as described in Full system backup with tar.
During backup you can continue to use your system normally, since all changes to your regular volumes are invisible in the snapshots. Do not forget to delete the snapshot volume after the backup – changes to your regular volume will use up space in the snapshot due to the copy-on-write operations. If the snapshot space becomes fully used, and LVM is not able to automatically grow the snapshot, LVM will deny further writes to your regular volumes or drop the snapshot, which should be avoided.
Revert updates
Another use for LVM snapshots is testing and reverting of updates. In this case create a snapshot for the system in a known good state and perform updates or changes afterwards.
If you want to permantly stick to the updates just drop the snapshot with lvremove. If you want to revert to the snapshotted
state issue a lvconvert --merge
for the snapshot. During the next restart of the system (use the default target) the snapshot
is merged back into your regular volume. All changes to the volume happened after the snapshot are undone.
Known issues
Due to bug 681582 shutting down the system with active
snapshots may hang for some time (currently 1...3 minutes). As a workaround a shorter job timeout can be set.
Create a copy of /usr/lib/systemd/system/dmeventd.service
in /etc/systemd/system
and insert
JobTimeoutSec=10
:
[Unit] Description=Device-mapper event daemon Documentation=man:dmeventd(8) Requires=dmeventd.socket After=dmeventd.socket DefaultDependencies=no JobTimeoutSec=10 [Service] Type=forking ExecStart=/usr/sbin/dmeventd ExecReload=/usr/sbin/dmeventd -R Environment=SD_ACTIVATION=1 PIDFile=/run/dmeventd.pid OOMScoreAdjust=-1000