SLES Btrfs Snapper のアップデート失敗後のロールバック:安全な復旧ガイド
BtrfsとSnapperを使用して、アップデート失敗後のSLESを復旧します。ロールバックオプションを比較し、スナップショットを安全にテストし、システムを復元し、リポジトリを検証します。
SLESのアップデートが失敗したからといって、必ずしもサーバーを再インストールする必要はありません。ルートファイルシステムにBtrfsを使用し、Snapperが有効になっている標準的なSUSE Linux Enterprise Serverのインストール環境では、アップデート前のスナップショットを起動し、現在のシステムを変更せずにテストを行い、その正常な状態を新しい書き込み可能なルートファイルシステムとして設定できる場合が多くあります。
重要なのは「どのスナップショットが最新か」という単純な判断ではなく、「どの程度ロールバックすべきか」という判断です。アップデートによって複数のパッケージ、ライブラリ、サービス、または構成ファイルが変更され、マシンが正常に動作しなくなった場合は、Snapper システム全体のロールバックが適切です。構成ファイルが 1 つだけ間違っている場合は、そのファイルを復元する方が通常は影響が少なくて済みます。このガイドでは、両方の選択肢について説明し、SUSE が 2026 年 10 月に提供開始予定の SLES 15 SP7 リカバリ モデルに準拠します。
| 状況 | 最適なスタートオプション | 主なトレードオフ |
|---|---|---|
| アップデート後、サーバーが正常に起動しなくなります | GRUBから読み取り専用のBtrfsスナップショットを起動し、テストしてから、snapper rollback | 広範囲にわたる復旧は行われるが、スナップショットされたルートコンテンツのみが復元される。 |
| サーバーは起動するが、複数のパッケージまたはサービスが同時に破損する | 同じブートおよびテストロールバックワークフローを使用する | 再起動は必要だが、どのファイルが問題の原因だったのかを推測する必要がなくなる。 |
既知のファイルのうち 1 つが/etc破損していました | snapper status/を使用して検査しdiff、undochangeそのファイルに対して使用します。 | 影響は少ないが、大規模なパッケージ取引には不向き |
| サービスパックの移行に失敗しました | 移行前のスナップショットを使用して、リポジトリと製品登録を確認します。 | リポジトリの状態は復旧後も重要である |
| ルートファイルシステムがBtrfsではない、Snapperが無効になっている、またはサポートされているルートレイアウトが変更された | バックアップ、レスキューメディア、パッケージ修復、またはその他の復旧プランを使用してください。 | 標準のSLESスナップショットロールバックワークフローは適用されません |
SUSE では、変更の取り消しとシステムロールバックを区別しています。変更の取り消しは、スナップショットを比較し、選択したファイルの変更を元に戻します。ロールバックは、スナップショットの状態を基に新しい書き込み可能なルートファイルシステムを作成します。SUSE は、ルートファイルシステムのロールバックを実行する際には、まず対象のスナップショットを起動することを推奨しています。これは、コミットする前に候補を検証できるためです。詳細については、SLES 15 SP7 管理ガイドを参照してください。
スナップショットを選択する前に、次の 3 つの事項を確認してください。ルートファイルシステムが Btrfs であること、Snapper に という名前の構成があることroot、および Btrfs ルートが単一のデバイス上にあること。SUSE は、デフォルトのルートサブボリュームレイアウトに対するブート可能なロールバックのサポートについて説明しており、ルート Btrfs ファイルシステムは 1 つのデバイスを報告する必要があると述べています。
findmnt /
sudo snapper list-configs
sudo /sbin/btrfs filesystem show /

XFSやExt4などのファイルシステムが報告された場合はfindmnt /停止してください。そのルートではBtrfsスナップショットブートワークフローが利用できません。エントリsnapper list-configsがない場合はroot、自動ルートスナップショットが有効になっていない可能性があります。また、btrfs filesystem show /複数のデバイスが報告された場合も停止してください。SLES 15 SP7のドキュメントでは、そのレイアウトはブート可能なルートロールバックでサポートされているとは記載されていません。
スナップショットの一覧を表示し、日付、種類、スナップショット作成前の関係、および説明を確認してください。
sudo snapper list

デフォルトのSLES設定では、YaSTとZypperのアクティビティによってスナップショットペアが作成されますpre。postスナップpreショットはトランザクション前のファイルシステムの状態を表し、対応するpostスナップショットはトランザクション後の状態を表します。障害発生時よりも古いという理由だけでスナップショットを選択しないでください。スナップショットのタイムスタンプと説明を更新ウィンドウと一致させてください。
変更の失敗がサービスパックの移行であった場合、SUSEのSLES 15 SP7アップグレードガイドでは、管理者に対し、移行直前に作成されたスナップショットを探すよう具体的に指示しており、関連するスナップショットには「重要」というマークが付いていることを明記しています。
現在のシステムが起動する場合は、再起動する前に候補となるスナップショットと現在の状態を比較してください。これにより、アップデートが1つの構成ファイルのみを変更したのか、それとも広範囲のシステムファイルを変更したのかが明らかになります。
sudo snapper status SNAPSHOT_ID..0
sudo snapper diff SNAPSHOT_ID..0 /etc/some-file.conf

既知のファイルのうち1つに問題があり、更新されたシステムの残りの部分は正常である場合、そのファイルだけを復元することで、無関係なシステム変更が元に戻るのを防ぐことができます。SUSEはこの形式について次のように説明しています。
sudo snapper -c root -v undochange SNAPSHOT_ID..0 /etc/some-file.conf
ファイル名を安易に省略しないでください。ファイル名がないと、undochange2つの状態間で変更されたすべてのファイルを元に戻すことができます。SUSEは、完全なルートロールバックを模倣するためにファイル復元を使用することは推奨されないと警告しています。パッケージトランザクションは相互依存する多くのファイルを変更する可能性があるため、更新の失敗がシステム全体にわたる場合は、完全にテストされたロールバックの方が原因究明が容易です。
マシンを再起動します。SLES GRUB 2 メニューで、読み取り専用スナップショットからブートローダーを起動するオプションを選択し、アップデート前の状態に一致するスナップショットを選択します。画面レイアウトはファームウェアやブート構成によって異なる場合がありますが、SLES 15 SP7 ではこの項目を「読み取り専用スナップショットからブートローダーを起動する」と説明しています。

このSLESメカニズムでは、デフォルトのSnapper構成からのスナップショットのみrootが起動可能です。スナップショットメニューが表示されない場合は、ブートエントリを作成しないでください。Snapperが有効になっているか、ルートレイアウトがデフォルトのサポート構造になっているか、インストールされているブートローダーが正常に動作しているかを再確認してください。
スナップショットが起動したら、実際にスナップショットから実行されていること、およびルートファイルシステムが読み取り専用になっていることを確認してください。
findmnt /
mount | grep ' on / '

アップデート後に失敗した項目(サービス起動、ネットワーク構成、認証、アプリケーション起動、カーネル依存動作、その他の関連チェックなど)をテストしてください。読み取り専用のスナップショットを通常の運用環境の起動として扱わないようにしてください。ルートファイルシステムのスナップショットされた部分に書き込みができないという理由だけで、一部の操作が失敗する場合があります。
スナップショットが適切でない場合は、再起動して別の候補を試してください。ロールバックコマンドを実行するまでは、そのスナップショットは新しい書き込み可能なシステムルートにはなりません。
起動したスナップショットが期待どおりに動作したら、それを永続化します。
sudo snapper rollback
後でスナップショットを識別しやすくするために、説明を追加できます。
sudo snapper rollback -d "Rollback after failed update"

SLESの管理ドキュメントによると、Snapperはロールバック前の状態のスナップショットを作成し、書き込み可能な新しいスナップショットを作成してデフォルトのルートにします。これは重要な安全上の特性です。ロールバックによって古いルートが単純に上書きされるわけではありません。
コマンドの実行が完了したら、再起動してください。
sudo reboot
次回の起動時には、古い読み取り専用スナップショットを再度起動するのではなく、通常のデフォルトのSLESエントリを選択してください。
通常起動後、ルートマウントとスナップショットリストを確認してください。
findmnt /
sudo snapper list

最初に失敗した機能チェックを再度実行してください。それでもアプリケーションが失敗する場合は、そのアプリケーションの一部がルートスナップショットに含まれていないディレクトリに存在するかどうかを検討してください。
通常のパッケージ更新の場合は、次の更新を試みる前にリポジトリを更新し、パッケージの依存関係を確認してください。サービスパックのロールバックの場合は、リポジトリと製品登録の確認が特に重要です。リポジトリセットが一致しないと、システムがすぐに不整合な状態に戻ってしまう可能性があるためです。
sudo zypper ref -fs
sudo zypper lr -u
sudo zypper verify

サービスパックの復旧については、公式のSLESアップグレードガイドに記載されているチェック手順に従ってください。このガイドでは、ロールバック後にリポジトリ構成と製品登録を確認することが明示的に求められています。
これは、本番サーバーでロールバックを使用する前に理解しておくべき最も重要な制限事項です。デフォルトの SLES ルート スナップショットでは、揮発性データやユーザー またはアプリケーション データが予期せず復元されないように、いくつかのサブボリュームが除外されます。製品固有のリストには、、、、、、、、およびアーキテクチャ固有のブートローダー パスが含まれる場合があります。/home現在のリストと理由については、SUSE のSnapperの基本概念に関するドキュメントを参照してください。/opt/usr/local/srv/tmp/var/run
この設計はデータを保護する一方で、トレードオフを生み出します。除外されたサブボリューム内のデータは最新の状態のままであるにもかかわらず、システムコードが以前の状態に戻ってしまう可能性があるのです。SUSEは、サードパーティ製ソフトウェアの/opt互換性が損なわれたり、アクセス許可が変更されたり、スナップショット取得後に書き込まれたデータ形式をアプリケーションが理解できなくなったりするなど、いくつかの潜在的な影響を指摘しています。
これは特にデータベースやサーバーアプリケーションにとって重要です。アップデートにスキーマの移行や、/varまたはの下にあるアプリケーションデータの変更が含まれていた場合/srv、ルートロールバックではそのデータ変更が元に戻らない可能性があります。システムスナップショットだけで十分だと判断する前に、アプリケーション独自のダウングレードまたは復元手順を確認してください。
undochangeパッケージ全体のトランザクションに使用します。これは特定のファイルに対して有効ですが、SUSEは完全なルート復旧にはブートアンドロールバック方式を推奨しています。/varデフォルト/homeのサブボリューム除外は意図的なものです。SLES はトランザクション サーバー ロールでインストールすることもできます。これは異なる動作モデルで、更新はスナップショットに適用され、再起動時にアクティブ化されます。これらのシステムでは、SUSE はtransactional-update rollbackスナップショットをデフォルトのルートとして設定する機能を提供しています。システム ロールを事前に特定せずに、トランザクション サーバー リカバリ レシピを従来の読み書き SLES インストールに混在させないでください。公式の動作については、SLES 15 SP7 トランザクション アップデートのドキュメントに記載されています。
/Btrfsであることを確認し、 rootSnapperの設定が存在し、ルートBtrfsファイルシステムが1つのデバイス上にあることを確認します。snapper status、これを使用してください。snapper diffundochange明確に分離されたファイルに対してのみ、選択的処理を優先してください。snapper rollback候補者が正しく行動した後でのみ実行してください。最も重要なトレードオフは、精度と一貫性です。選択的なファイル復元では変更は少なくなりますが、何が破損したのかを正確に把握する必要があります。テスト済みのシステムロールバックでは変更は多くなりますが、一貫性のあるスナップショットのルート状態を復元するため、複数のコンポーネントに影響を与えた更新の失敗に適しています。SLES では、候補を検証する前にロールバックを不可逆的にするのではなく、読み取り専用のスナップショットブートを判断基準として使用するのが最も安全なワークフローです。
BtrfsとSnapperを使用して、アップデート失敗後のSLESを復旧します。ロールバックオプションを比較し、スナップショットを安全にテストし、システムを復元し、リポジトリを検証します。
LiderahenkとAhenkを使用して、カスタムのPardus GNOME壁紙をステージングし、dconfで選択した設定をロックし、テスト済みのパイロットを通じて他のクライアントポリシーを展開します。
Ubuntu Serverが緊急モードに入った原因を診断し、一般的な/etc/fstabとマウントの問題を安全に修復し、ファイルシステムをチェックし、正常な再起動を確認します。
Ubuntu 24.04 で GTK テーマを無視する Flatpak アプリのトラブルシューティングを行います。テーマ拡張機能、GTK ポータル、ライトモードとダークモードの設定、およびアプリツールキットの制限を確認してください。
Pardus上でLIDER AHENKを品質重視の設定で構成します。前提条件を確認し、Liderをデプロイし、Ahenkクライアントを登録し、管理を検証します。
Pardus NVIDIAドライバーインストーラーを使用して、Pardus 23でNVIDIAドライバーを有効にします。GPUの互換性を確認し、安全に再起動し、ドライバーを検証し、一般的な問題のトラブルシューティングを行います。
再現可能なベンチマーク方法を用いて、Ubuntu Server 24.04の最小インストールと標準インストールにおけるディスク使用量、メモリ使用量、起動時間、サービス、および実際のワークロードのパフォーマンスを比較します。
SLESにおけるZypperのロックエラーを安全に解決します。プロセスを特定し、待機するか停止するかを選択し、トランザクションロックとパッケージロックを区別します。
RustDeskを使用して、Pardus Linux上で安全なリモートデスクトップアクセスを設定します。Debianパッケージをインストールし、ワンタイムサポートのために接続し、無人アクセスを安全に構成します。
Pardus XFCEとGNOMEのメモリ使用量を公平に比較します。公式の25.2ソースコードで確認できる内容、利用可能なRAMの測定方法、そしてどちらのエディションがあなたのPCに適しているかをご覧ください。