目次
概要
Linuxでファイルシステムのスナップショットを作成し、ロールバックできるようにすることは、過去に要望の多かった機能です。Snapperを、BtrfsファイルシステムまたはシンプロビジョンのLVMボリュームと併用することによって対応できます。
Btrfsは、Linux用の新しい書き込み時コピー方式のファイルシステムで、サブボリューム(各物理パーティション内の1つまたは複数の個別にマウント可能なファイルシステム)のファイルシステムスナップショット(特定時点におけるサブボリュームの状態のコピー)をサポートします。Snapperを使用してこれらのスナップショットを管理できます。Snapperには、コマンドラインおよびYaSTインタフェースがあります。
デフォルトで、SUSE Linux Enterprise ServerのSnapperおよびBtrfsは、YaSTおよびzypperによるシステム変更を「元に戻すツール」として設定されます。YaSTモジュールまたはzypperの実行前と実行後にスナップショットが作成されます。Snapperを使用して、2つのスナップショットを比較し、その変更を元に戻すことができます。また、このツールは、システムのサブボリュームに対して毎時のスナップショットを作成することにより、システムのバックアップとしても機能します。
SUSE Linux Enterprise ServerではBtrfsがスナップショットに対応した唯一のファイルシステムであるため、「スナップショット」を利用したいすべてのパーティションまたはサブボリュームで、このファイルシステムが必要です。
スナップショットを作成すると、スナップショットとスナップショット元のファイルは、 いずれもファイルシステム内の同じブロックを指します。そのため、最初は、スナップショットが余分にディスク容量を占めることはありません。元のファイルシステムのデータが変更されると、変更されたデータブロックがコピーされ、古いデータブロックはスナップショットのように保持されます。このため、スナップショットは、変更されたデータと同じ容量を占めます。こうして、時間が経過するにつれて、スナップショットの領域は大きくなっていきます。その結果、スナップショットを含むBtrfsファイルシステムからファイルを削除しても、ディスクの空き容量が増えないことがあります。
![]() | スナップショットの場所 |
|---|---|
スナップショットは常に、「スナップショット作成元」と同じパーティションまたはサブボリュームに保存されます。別のパーティションまたはサブボリュームにスナップショットを保存することはできません。 | |
その結果、スナップショットを含むパーティションは、「通常の」パーティションよりも大きくする必要があります。具体的な容量は、保持するスナップショット数やデータの変更頻度によって異なります。一般的には、通常のファイルシステムの2倍程度を検討してください。
![]() | 容量を空ける/ディスクの使用率 |
|---|---|
スナップショットを含む
Btrfsファイルシステムでは あるサービスパックから別のサービスパックにアップグレードすると、多くのデータが変更される(パッケージのアップデート)ので、スナップショットにより、システムのサブボリュームで多くのディスク容量が使用されます。これらのスナップショットが不要になった場合は、手動で削除することをお勧めします。 | |
Snapperを使用して、ext3またはXFSでフォーマットされたシンプロビジョンのLVMボリュームでもスナップショットを作成および管理できます(4.6項 「シンプロビジョンLVMボリュームでのSnapper使用」を参照)。
SUSE Linux Enterprise ServerのSnapperは、zypperやYaSTで行った変更を取り消すことができるツールとしてあらかじめ設定されています。 このために、Snapperは、zypperおよびYaSTの実行前後に1対のスナップショットを作成します。また、Snapperを使用して、誤って削除または変更したシステムファイルを復元することもできます。このために、毎時のバックアップが作成されます。
上記の自動スナップショットは、デフォルトでルートパーティションとそのサブボリュームに対して設定されます。カスタム設定を作成すれば、/homeなど、他のパーティションに対してスナップショット機能を利用できます。
インストール時にルートパーティションをBtrfsで設定すると、Snapper(YaSTまたはzypperによる変更のロールバックがあらかじめ設定されている)が自動的にインストールされます。YaSTモジュールまたはzypperトランザクションを開始するたびに、2つのスナップショットが作成されます。モジュール開始前のファイルシステムの状態をキャプチャした「事前スナップショット」と、モジュール完了後の状態をキャプチャした「事後スナップショット」です。
YaSTのSnapperモジュールまたはsnapperコマンドラインツールを使用して、「事前スナップショット」からファイルを復元し、YaST/zypperによる変更を元に戻すことができます。また、2つのスナップショットを比較して、どのファイルが変更されているか調べることができます。2つのバージョンのファイルの違いを表示することもできます(diff)。
Linuxはマルチタスクシステムなので、事前スナップショットと事後スナップショットの間に、YaSTまたはzypper以外のプロセスがデータを変更してしまう場合があります。この場合、事前スナップショットに戻してしまうと、他のプロセスによる変更も取り消されてしまいます。多くの場合、これは望ましくありません。このため、ロールバックを開始する前に、2つのスナップショットの間の変更点をよく確認してください。他のプロセスによる変更を維持したい場合は、ロールバックするファイルを選択してください。
![]() | 制限 |
|---|---|
Snapperのロールバック機能を使用する前に、Snapperの制限について理解しておいてください。詳細については、4.4項 「制限」を参照してください。 | |
![]() | スナップショットの保存期間 |
|---|---|
デフォルトで、YaSTおよびzypperのスナップショットは、新しいものから100個が保持されます。この数を超えると、もっとも古いスナップショットが削除されます。 | |
手順4.1 YaSTのモジュールによる変更の取り消し¶
YaSTのセクションにあるモジュールを起動するか、yast2 snapperと入力します。
がになっていることを確認します。 独自のSnapper設定を手動で追加していない限り、常にそのようになっています。
リストから事前スナップショットと事後スナップショットのペアを選択します。YaSTのスナップショットペアもzypperのスナップショットペアも、種類はです。YaSTのスナップショットの場合は[説明]に「yast 」と表示され、zypperのスナップショットの場合は「モジュール名zypp (zypper)」と表示されます。
![]() |
をクリックすると、2つのスナップショット間のファイルの差異がリスト表示されます。下の図は、ユーザtesterを追加した後に変更されたファイルのリストです。
![]() |
ファイルのリストを確認します。事前と事後のファイル間の「「差異」」を表示するには、リストからファイルを選択します。下の図は、ユーザtesterを追加した後の/etc/passwdの変更を示しています。
![]() |
ファイルのセットを復元するには、該当するチェックボックスをオンにして、ファイルまたはディレクトリを選択します。をクリックし、をクリックして操作を確認します。
![]() |
単一のファイルを復元する場合は、ファイル名をクリックして差分を表示します。をクリックし、をクリックして操作を確認します。
手順4.2 snapperコマンドによる変更の取り消し¶
snapper list -t pre-postを実行すると、YaSTおよびzypperのスナップショットリストが表示されます。YaSTのスナップショットの場合は[説明]に「yast 」と表示され、zypperのスナップショットの場合は「モジュール名zypp (zypper)」と表示されます。
~ # snapper list -t pre-post
Pre # | Post # | Pre Date | Post Date | Description
------+--------+--------------------------+--------------------------+----------------------+
4 | 5 | Tue Jan 10 14:39:14 2012 | Tue Jan 10 14:39:33 2012 | yast system_settings
65 | 66 | Thu Jan 12 17:18:10 2012 | Thu Jan 12 17:18:23 2012 | zypp(zypper)
68 | 69 | Thu Jan 12 17:25:46 2012 | Thu Jan 12 17:27:09 2012 | zypp(zypper)
73 | 74 | Thu Jan 12 17:32:55 2012 | Thu Jan 12 17:33:13 2012 | yast system_settings
75 | 76 | Thu Jan 12 17:33:56 2012 | Thu Jan 12 17:34:42 2012 | yast users
77 | 92 | Thu Jan 12 17:38:36 2012 | Thu Jan 12 23:13:13 2012 | yast snapper
83 | 84 | Thu Jan 12 22:10:33 2012 | Thu Jan 12 22:10:39 2012 | zypp(zypper)
85 | 86 | Thu Jan 12 22:16:58 2012 | Thu Jan 12 22:17:09 2012 | zypp(zypper)
88 | 89 | Thu Jan 12 23:10:42 2012 | Thu Jan 12 23:10:46 2012 | zypp(zypper)
90 | 91 | Thu Jan 12 23:11:40 2012 | Thu Jan 12 23:11:42 2012 | zypp(zypper)
108 | 109 | Fri Jan 13 13:01:06 2012 | Fri Jan 13 13:01:10 2012 | zypp(zypper)
スナップショットのペア間で変更されたファイルのリストを取得するには、以下を実行します。snapper status PREPOST. 内容が変更されたファイルにはのマーク、追加されたファイルにはのマーク、削除されたファイルにはのマークが付いています。 下の例は、パッケージncftpのインストール前後のスナップショットペアです。
~ # snapper status 108..109
+... /usr/bin/ncftp
+... /usr/bin/ncftpbatch
+... /usr/bin/ncftpget
+... /usr/bin/ncftpls
[...]
+... /usr/share/man/man1/ncftpspooler.1.gz
c... /var/cache/zypp/solv/@System/cookie
c... /var/cache/zypp/solv/@System/solv
c... /var/lib/rpm/Basenames
c... /var/lib/rpm/Dirnames
c... /var/lib/rpm/Filemd5s
c... /var/lib/rpm/Group
c... /var/lib/rpm/Installtid
c... /var/lib/rpm/Name
c... /var/lib/rpm/Packages
c... /var/lib/rpm/Providename
c... /var/lib/rpm/Provideversion
c... /var/lib/rpm/Requirename
c... /var/lib/rpm/Requireversion
c... /var/lib/rpm/Sha1header
c... /var/lib/rpm/Sigmd5
c... /var/lib/zypp/SoftLocks
特定のファイルの差異を表示するには、以下を実行します。snapper diff PRE..POST ファイル名ファイル名を指定しない場合は、すべてのファイルの差異が表示されます。
~ # snapper diff 108..109 /var/lib/zypp/SoftLocks
--- /.snapshots/108/snapshot/var/lib/zypp/SoftLocks 2012-01-12 23:15:22.408009164 +0100
+++ /.snapshots/109/snapshot/var/lib/zypp/SoftLocks 2012-01-13 13:01:08.724009131 +0100
@@ -1,4 +1,2 @@
-# zypp::SoftLocksFile generated Thu Jan 12 23:10:46 2012
-#
-ncftp
-#
+# zypp::SoftLocksFile generated Fri Jan 13 13:01:08 2012
+##
1つまたは複数のファイルを復元するには、以下を実行します。snapper -v undochange PRE..POST ファイル名 ファイル名を指定しない場合は、変更されたすべてのファイルが復元されます。
~ # snapper -v undochange 108..109
create:0 modify:16 delete:21
undoing change...
deleting /usr/share/man/man1/ncftpspooler.1.gz
deleting /usr/share/man/man1/ncftpput.1.gz
[...]
deleting /usr/bin/ncftpls
deleting /usr/bin/ncftpget
deleting /usr/bin/ncftpbatch
deleting /usr/bin/ncftp
modifying /var/cache/zypp/solv/@System/cookie
modifying /var/cache/zypp/solv/@System/solv
modifying /var/lib/rpm/Basenames
modifying /var/lib/rpm/Dirnames
modifying /var/lib/rpm/Filemd5s
modifying /var/lib/rpm/Group
modifying /var/lib/rpm/Installtid
modifying /var/lib/rpm/Name
modifying /var/lib/rpm/Packages
modifying /var/lib/rpm/Providename
modifying /var/lib/rpm/Provideversion
modifying /var/lib/rpm/Requirename
modifying /var/lib/rpm/Requireversion
modifying /var/lib/rpm/Sha1header
modifying /var/lib/rpm/Sigmd5
modifying /var/lib/zypp/SoftLocks
undoing change done
YaSTおよびzypperのスナップショット以外に、Snapperは、システムパーティション(/)の毎時スナップショットを作成します。このバックアップ用スナップショットを使用して、誤って削除または変更したファイルを復元できます。Snapperの差分抽出機能を使用して、ある時点でどのファイルが変更されたのか調べることもできます。
毎時バックアップのスナップショットは、種類がSingleで、timelineという説明が付いています。これらのスナップショットからファイルを復元したい場合は、手順4.1「YaSTのモジュールによる変更の取り消し」または手順4.2「snapperコマンドによる変更の取り消し」の手順に従ってください。
![]() | スナップショットの保存期間 |
|---|---|
デフォルトで、最近10日間、10カ月間、10年間の最初のスナップショットが保持されます。詳細については、例4.1「タイムラインの設定例」を参照してください。 | |
Snapperの動作は、各パーティションまたはBtrfsサブボリュームに固有の設定ファイルで定義できます。これらの設定ファイルは、/etc/snapper/configs/に保存されます。/ディレクトリに対してSnapperでインストールされるデフォルトの設定ファイルがrootです。このファイルは、YaSTとzypperのスナップショットを作成し管理するほか、/に対する毎時のバックアップスナップショットも作成および管理します。
Btrfsでフォーマットされたその他のパーティションやBtrfsパーティション上の既存のサブボリュームに対して、独自の設定ファイルを作成できます。以下の例では、/srv/wwwにマウントされたBtrfsフォーマットのパーティションに保存されたWebサーバデータをバックアップするSnapper設定を作成します。
snapper自体またはYaSTのモジュールを使用して、これらのスナップショットからファイルを復元できます。YaSTの場合はを選択する必要があります。snapperの場合は、グローバルスイッチ-cを使用して設定を指定する必要があります(例:snapper -c myconfig list)。
新しいSnapper設定を作成するには、snapper create-configを実行します。
snapper -c www-datacreate-config /srv/www
このコマンドにより、新しい設定ファイル/etc/snapper/config-templates/www-dataが作成され、/etc/snapper/config-templates/defaultから取得されたデフォルト値が使用されます。
![]() | 設定のデフォルト |
|---|---|
新しい設定ファイルのデフォルト値は snapper -c www-data create-config -t my_defaults /srv/www | |
設定ファイルを調整するには、エディタで変更します。設定ファイルには、の形式でキーと値のペアが含まれています。 変更できるのはキー=値値だけです。
SUBVOLUME
スナップショットを作成するパーティションまたはサブボリュームのマウントポイント。変更しません。
FSTYPE
パーティションのファイルシステムタイプ。変更しません。
NUMBER_CLEANUP
合計スナップショット数がNUMBER_LIMITで指定した数を超え、かつNUMBER_MIN_AGEで指定した保存期間を超えた場合に、古いスナップショットを自動的に削除するかどうか定義します。有効な値:yes(はい)、no(いいえ)
![]() | 制限と保存期間 |
|---|---|
| |
NUMBER_LIMIT
NUMBER_CLEANUPがyesに設定されている場合に、保持するスナップショットの数を定義します。
NUMBER_MIN_AGE
スナップショットが自動削除の対象となるまでの最短期間を秒単位で定義します。
TIMELINE_CREATE
yesに設定されている場合、毎時のスナップショットが作成されます。現時点では、これがスナップショットを自動的に作成する唯一の方法なので、yesに設定することを強くお勧めします。有効な値:yes(はい)、no(いいえ)
TIMELINE_CLEANUP
スナップショット数がオプションで指定した数を超え、かつTIMELINE_LIMIT_*TIMELINE_MIN_AGEで指定した保存期間を超えた場合に、古いスナップショットを自動的に削除するかどうか定義します。 有効な値:yes(はい)、no(いいえ)
TIMELINE_MIN_AGE
スナップショットが自動削除の対象となるまでの最短期間を秒単位で定義します。
TIMELINE_LIMIT_HOURLY、TIMELINE_LIMIT_DAILY、TIMELINE_LIMIT_MONTHLY、TIMELINE_LIMIT_YEARLY
1時間、1日、1カ月間、1年間に保持するスナップショット数です。
例4.1 タイムラインの設定例¶
TIMELINE_CREATE="yes"
TIMELINE_CLEANUP="yes"
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"
この設定例では、毎時スナップショットが自動的に削除されます。TIMELINE_MIN_AGEとTIMELINE_LIMIT_*は常に両方が評価されます。この例では、スナップショットが削除対象となるまでの最短期間が30分(180秒)に設定されています。毎時のスナップショットを作成するので、最新のスナップショットだけが保持されることになります。TIMELINE_LIMIT_DAILYをゼロ以外に設定すると、1日の最初のスナップショットが保持されることになります。
保持されるスナップショット
1時間ごと:最新の10個のスナップショットが保持されます。
1日ごと:それぞれの日の最初のスナップショットが、直近の10日分保持されます。
1カ月ごと:それぞれの月の最後の日に作成された最初のスナップショットが、直近の10カ月分保持されます。
1年ごと:それぞれの年の最後の日に作成された最初のスナップショットが、直近の10年分保持されます。
デフォルトでは、rootしかSnapperを使用できません。しかし、以下のような場合、特定のグループまたはユーザがスナップショットを作成したり、スナップショットを使って変更を取り消したりできる必要があります。
Webサイトの管理者が/srv/wwwのスナップショットを作成する
データベース管理者がデータベースのスナップショットを作成する
ユーザが自分のホームディレクトリのスナップショットを作成する
このような場合、ユーザやグループにパーミッションを与えるSnapper設定を作成できます。この設定変更だけでなく、指定されたユーザが、対応する.snapshotsディレクトリを読み取ることができ、このディレクトリにアクセスできる必要があります。
手順4.3 通常ユーザによるSnapper使用の有効化
以下のすべての手順をrootとして実行してください。
ユーザがSnapperを使用するパーティションまたはサブボリュームにSnapper設定がない場合は、作成します。手順については、4.2.3項 「Snapper設定の作成と変更」を参照してください。例:
snapper --config web_data create /srv/www
/etc/snapper/configs/に設定ファイルを作成します。NAMEは、上記の手順でNAME-c/--configを使用して指定される値です(/etc/snapper/configs/web_dataなど)。 必要に応じて設定ファイルを調整します。詳細は4.2.3.1項 「設定ファイルの調整」を参照してください。
ALLOW_USERSとALLOW_GROUPS、またはその一方の値を設定し、ユーザやグループにパーミッションを与えます。複数のエントリはSpaceで区切ってください。たとえば、ユーザwww_adminにパーミッションを与えるには、次のように入力します。
ALLOW_USERS="www_admin"
スナップショットディレクトリPATH/.snapshotsの読み取りおよびアクセスパーミッションを与えます。PATHは、この手順の最初のステップで指定したサブボリュームに置き換えてください。例:
chmod a+rx /srv/www/.snapshots
これで、指定されたユーザやグループが特定のSnapper設定を使用できます。以下のようにlistコマンドを使ってテストできます。
www_admin:~ > snapper -c web_data list
インストール時にBtrfsでルートパーティションを設定すると、Snapperは自動的にシステムの毎時スナップショットを作成するほか、YaSTおよびzypperの処理の前後にスナップショットを作成します。それぞれのタスクを無効にするには、以下の手順を実行します。
/etc/snapper/configs/rootを編集し、TIMELINE_CREATEをnoに設定します。
TIMELINE_CREATE="no"
snapper-zypp-pluginパッケージをアンインストールします。
/etc/sysconfig/yast2を編集し、USE_SNAPPERをnoに設定します。
USE_SNAPPER="no"
Snapperは設定によって自動的にスナップショットを作成および管理するだけのものではありません。コマンドラインツールまたはYaSTモジュールを使用して、手動でスナップショットのペア(「事前および事後」)や単一のスナップショットを作成することもできます。
Snapperのすべての操作は既存の設定に対して実行されます(詳細は4.2.3項 「Snapper設定の作成と変更」を参照)。スナップショットを作成するには、対象のパーティションまたはボリュームに対して設定が存在する必要があります。デフォルトで、システム設定(root)が使用されます。独自の設定に対してスナップショットを作成または管理する場合は、明示的にその設定を選択する必要があります。YaSTのドロップダウンメニューを使用するか、コマンドラインで-cを指定します(snapper -c MYCONFIG COMMAND)。
各スナップショットには、スナップショット自体とメタデータが含まれています。スナップショットを作成する場合は、メタデータも指定する必要があります。スナップショットを修正すると、メタデータが変更されます。コンテンツを修正することはできません。各スナップショットについて、以下のメタデータを利用できます。
Type(種類):スナップショットの種類です。詳細は4.3.1.1項 「スナップショットの種類」を参照してください。このデータは変更できません。
Number(番号):スナップショットの一意の番号。このデータは変更できません。
Pre Number(前番号):対応する事前スナップショットの番号を指定します。事後スナップショットにのみ適用されます。このデータは変更できません。
Description(説明):スナップショットの説明です。
Userdata(ユーザデータ):カンマ区切りの「キー=値」のリスト形式でカスタムデータを指定できる、拡張用の項目です。(例:reason=testing_stuff, user=tux)。
Cleanup-Algorithm(クリーンアップアルゴリズム):スナップショットのクリーンアップアルゴリズムです。詳細は4.3.1.2項 「クリーンアップアルゴリズム」を参照してください。
Snapperには、事前(pre)、事後(post)、および単一(single)の3種類のスナップショットがあります。これらは物理的には同じものですが、Snapperでは別のものとして扱われます。
pre(事前)
変更前のファイルシステムのスナップショットです。各pre(事前)スナップショットには、対応するpost(事後)スナップショットがあります。自動YaST/zypperスナップショットなどに使用されます。
post(事後)
変更後のファイルシステムのスナップショットです。各post(事後)スナップショットには、対応するpre(事前)スナップショットがあります。自動YaST/zypperスナップショットなどに使用されます。
single(単一)スタンドアロンのスナップショットです。自動毎時スナップショットなどに使用されます。これは、スナップショットを作成する際のデフォルトの種類です。
Snapperには、古いスナップショットのクリーンアップアルゴリズムが3種類あります。このアルゴリズムは、日次のcronジョブとして実行されます。クリーンアップの頻度は、パーティションまたはサブボリュームのSnapper設定で定義されます(詳細は4.2.3.1項 「設定ファイルの調整」を参照)。
スナップショットが特定の数に達すると、古いスナップショットを削除します。
特定の期間が経過したスナップショットを削除しますが、毎時、毎日、毎月、および毎年のスナップショットを一定数保持します。
事前と事後のスナップショットに差分がない場合、そのペアを削除します。
スナップショットを作成するには、snapper createを実行するか、YaSTモジュールのでをクリックします。以下は、コマンドラインを使ってスナップショットを作成する場合の例です。YaSTインタフェースを使用する場合、簡単に採用できるはずです。
![]() | Snapshot Description |
|---|---|
後で識別しやすくするため、わかりやすい説明を指定しておいてください。ユーザデータオプションを使って、さらに情報を指定することもできます。 | |
--description "Snapshot for week 2 2013"
説明付きのスタンドアロンのスナップショット(種類はsingle)を、デフォルト(root)設定で作成します。クリーンアップアルゴリズムは指定されていないので、自動的にスナップショットが削除されることはありません。
--config home create --description "Cleanup in ~tux"
説明付きのスタンドアロンのスナップショット(種類はsingle)を、カスタム設定homeで作成します。クリーンアップアルゴリズムは指定されていないので、自動的にスナップショットが削除されることはありません。
--config home create --description "Daily data backup" --cleanup-algorithm timeline
説明付きのスタンドアロンのスナップショット(種類はsingle)を、カスタム設定home設定で作成します。設定のタイムライン(time line)クリーンアップアルゴリズムで指定された条件が満たされると、ファイルが自動的に削除されます。
--type pre--print-number--description "Before the Apache config cleanup"
種類がpreのスナップショットを作成し、スナップショット番号を出力します。「事前」と「事後」の状態を保存するために使用されるスナップショットペアを作成するために必要な、最初のコマンドです。
--type post--pre-number 30--description "After the Apache config cleanup"
番号30のpreスナップショットとペアになるpostスナップショットを作成します。「事前」と「事後」の状態を保存するために使用されるスナップショットペアを作成するために必要な、2番目のコマンドです。
--command COMMAND--description "Before and after COMMAND"
COMMANDの実行前後に自動的にスナップショットを作成します。このオプションを使用できるのは、コマンドラインでsnapperを使用する場合のみです。
Snapperでは、説明、クリーンアップアルゴリズム、およびスナップショットのユーザデータを修正できます。それ以外のメタデータは変更できません。以下は、コマンドラインを使ってスナップショットを修正する場合の例です。YaSTインタフェースを使用する場合、簡単に採用できるはずです。
コマンドラインでスナップショットを修正するには、スナップショットの番号がわかっている必要があります。snapperlistを実行すると、すべてのスナップショットとその番号が表示されます。
YaSTのモジュールでは、すでにすべてのスナップショットがリスト表示されています。リストからスナップショットを選択し、をクリックします。
--cleanup-algorithm "timeline" 10
デフォルト(root)設定のスナップショット10番のメタデータを修正します。クリーンアップアルゴリズムがtimelineに設定されます。
--config home modify --description "daily backup" -cleanup-algorithm "timeline"120
カスタム設定homeのスナップショット120番のメタデータを修正します。新しい説明が設定され、クリーンアップアルゴリズムを無しに設定します。
YaSTのモジュールを使用してスナップショットを削除するには、リストからスナップショットを選択してをクリックします。
コマンドラインツールを使ってスナップショットを削除するには、スナップショットの番号が分かっている必要があります。snapper listを実行して番号を調べます。スナップショットを削除するには、snapper delete NUMBERを実行します。
![]() | スナップショットペアの削除 |
|---|---|
| |
デフォルト(root)設定のスナップショット65番を削除します。
-c home delete 89 90
カスタム設定homeのスナップショット89番および90番を削除します。
![]() | 古いスナップショットほどディスク容量を使用 |
|---|---|
ハードディスクの容量を空けるためにスナップショットを削除する場合(詳細は4.1.1項 「スナップショットとディスク容量」を参照)は、古いスナップショットから削除します。古いスナップショットほど、多くの容量を使用します。 | |
スナップショットは、日次のcronジョブでも自動的に削除されます。詳細については、4.3.1.2項 「クリーンアップアルゴリズム」を参照してください。
BtrfsおよびSnapperは本番環境で使用可能な製品ですが、引き続き開発が行われています。現時点で以下の制限があります。これらの問題は、将来のリリースで解決される予定です。
スナップショットを作成する際に、データの整合性を確保するメカニズムがありません。スナップショットを作成するのと同時にファイルが書き込まれると(データベースなど)、ファイルが破損したり、ファイルへの書き込みが部分的になります。このようなファイルを復元すると、問題が発生することがあります。このため、必ず変更されたファイルとその差分をよく確認してください。どうしてもロールバックが必要なファイルのみ復元してください。
通常、/homeは別のパーティションにあります。このような別のパーティションは、YaSTのロールバックのデフォルト設定に含まれません。このため、Snapperを使用してユーザの追加を取り消しても、ユーザのホームパーティションは削除されません。YaSTのツールを使用してユーザを削除することを強くお勧めします。
/bootやブートローダの変更をロールバックできない¶
現時点で、SUSE Linux Enterprise ServerはBtrfsパーティションからブートできません。このため、システムパーティションにBtrfsを使用してインストールすると、/boot用に個別のパーティションが作成されます。/bootはスナップショットに対応していないため、YaST/zypperのロールバックについて以下の制限が適用されます。
ロールバックできるファイルは、/etc内のブートローダ設定ファイルのみです。メインの設定ファイルは/bootの下に保存され、ロールバックできません。
カーネル自体とinitrdは、/bootパーティションにインストールされますが、カーネルモジュールとソースコードはそれぞれ/var/libおよび/usr/srcにインストールされます。 また、カーネルをインストールすると/bootのブートローダ設定も変更されます。このため、カーネルのインストールを元に戻す作業を含むロールバックを行う場合は、/bootからカーネルとそのinitrdを手動で削除し、カーネルのブートエントリを削除してブートローダ設定を調整する必要があります。
/var/log、/tmpなどのディレクトリの変更が表示されませんが、なぜですか?
一部のディレクトリについては、「スナップショット」を無効にしています(/var/logなど)。これは、ログを削除してしまうと問題の調査が難しくなるためです。「スナップショット」からパスを除外するため、これらのパス用にサブボリュームを作成しています。SUSE Linux Enterprise Serverでは、以下のマウントポイントが「スナップショット」の対象外です。
/opt
/srv
/tmp
/var/crash
/var/log
/var/run
/var/spool
/var/tmp
現時点ではできません。SUSE Linux Enterprise Serverのブートローダは、現時点で、Btrfsパーティションからのブートに対応していません。
Snapperは、Btrfsファイルシステムのスナップショット作成だけでなく、ext3またはXFSでフォーマットされたシンプロビジョンLVMボリュームの「スナップショット作成」にも対応しています(通常のLVMボリュームのスナップショットには対応していません)。詳細および設定の手順については、項 「LVMの設定」 (第15章 高度なディスクセットアップ, ↑導入ガイド)を参照してください。
シンプロビジョンLVMボリュームでSnapperを使用するには、そのようにSnapper設定を作成する必要があります。LVMで、--fstype=lvm(を使用してファイルシステムを指定する必要があります。現在ext3およびXFSがサポートされているので、FILESYSTEM)ext3またはxfsがFILESYSTEMの有効な値です。例:
snapper -c lvm create-config --fstype="lvm(xfs)" /thin_lvm
4.2.3.1項 「設定ファイルの調整」で説明したように、必要に応じてこの設定を調整できます。これで、Snapperを使用して、スナップショットの作成と管理、ファイルの復元、変更の取り消しができるようになりました。