目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise Serverマニュアル / 管理ガイド / 共通のタスク / トランザクション更新
適用項目 SUSE Linux Enterprise Server 15 SP6

13 トランザクション更新

トランザクション更新は、ルートファイルシステムが読み込み専用のときにSLESを更新するためにSUSE Linux Enterprise Serverで利用できます。トランザクション更新はアトミックであり(すべての更新が成功した場合にのみすべての更新が適用されます)、ロールバックをサポートします。システムが再起動されるまで変更は有効にならないため、実行中のシステムには影響しません。再起動は中断を伴うので、管理者は、再起動の方が実行中のサービスを妨害するよりもコストがかかるかどうかを判断する必要があります。再起動でコストがかかりすぎる場合は、トランザクション更新を使用しないでください。

トランザクションの更新は、transactional-updateスクリプトによって、毎日実行されます。スクリプトは使用可能な更新をチェックします。更新がある場合は、ルートファイルシステムの新しいスナップショットをバックグラウンドで作成し、リリースチャネルから更新をフェッチします。新しいスナップショットが更新された後で、アクティブとマークされ、システムの次の再起動後に新しいデフォルトのルートファイルシステムになります。transactional-updateが自動的に実行するように設定されている場合(これはデフォルトの動作です)、システムも再起動します。更新を実行する時刻と再起動の保守時間枠の両方が設定可能です。

ルートファイルシステムのスナップショットの一部であるパッケージのみを更新できます。パッケージにスナップショットの一部ではないファイルが含まれている場合、更新は失敗するか、システムが破損する可能性があります。

ライセンスを受諾する必要があるRPMは更新できません。

13.1 制限

現在、トランザクション更新の機能には一定の制限があります。次のパッケージはtransactional-updateコマンドでは動作しません。

  • nginxのデフォルトのindex.htmlページは使用できない場合があります

  • tomcat-webapps および tomcat-admin-webapps

  • phpMyAdmin

  • sca-appliance-*

  • mpi-selector

  • emacsはEmacsゲームを除いて機能します

  • bind および bind-chrootenv

  • docbook*

  • sblim-sfcb*

  • texlive*

  • iso_ent

  • openjade

  • opensp

  • pcp

  • plymouth

  • postgresql-server-10

  • pulseaudio-gdm-hooks

  • smartmontools

システムインストーラのアップデータコンポーネントは、トランザクションの更新をサポートしていないため、読み込み専用ファイルシステムでは動作しません。

その他の考慮事項:

  • システムを更新してから、マシンを再起動するまでの時間を最小限に抑えることをお勧めします。

  • 1つの更新のみを一度に適用できます。更新後、および次の更新が適用される前に必ず再起動してください。

  • update-alternativesは、トランザクション更新後、マシンが再起動されるまで、実行しないでください。

  • トランザクション更新後、再起動後まで新しいシステムユーザまたはシステムグループを作成しないでください。通常のユーザおよびグループを作成することは許容されます (UID > 1000、GID > 1000)。

  • YaSTはまだトランザクション更新を認識していません。YaSTモジュールで追加のパッケージをインストールする必要がある場合、これは機能しません。/etcの設定ファイルを変更する通常のシステム動作は機能します。

  • php7-fastcgiの場合、/srv/www/cgi-bin/phpを示すシンボリックリンク/usr/bin/php-cgiを手動で作成する必要があります。

  • ntpは、古いSLESバージョンのレガシモジュールの一部です。ntpは新しいSUSE Linux Enterprise Serverインストールでサポートされておらず、chronyに置き換えられました。ntpを引き続き使用する場合は、トランザクション更新で正しく機能させるために、新規インストールが必要です。

  • sblim-sfcb: エコシステム全体がトランザクション更新と互換性がありません。

  • btrfsmaintenanceパッケージのbtrfs-defragは、読み込み専用ルートファイルシステムでは機能しません。

  • btrfs-balanceの場合、/etc/sysconfig/btrfsmaintenanceの変数BTRFS_BALANCE_MOUNTPOINTS/から/.snapshotsに変更する必要があります。

  • btrfs-scrubの場合、/etc/sysconfig/btrfsmaintenanceの変数BTRFS_SCRUB_MOUNTPOINTS/から/.snapshotsに変更する必要があります。

13.2 transactional-update有効化

システムのインストール時にトランザクショナルサーバモジュールを有効にし、トランザクショナルサーバシステム役割を選択する必要があります。実行しているシステムで後でトランザクショナルサーバモジュールからパッケージをインストールすることはサポートされておらず、システムが破損する可能性があります。

ルートパーティションのサブボリュームレイアウトを変更すること、またはルートパーティションのサブディレクトリまたはサブボリュームをそれぞれのパーティション(/home/var/srv、および/optを除く)に配置することはサポートされておらず、システムが破損する可能性があります。

13.3 自動更新の管理

自動更新は、1日1回実行するsystemd.timerによって制御されます。これは、すべての更新に適用され、マシンが再起動する必要があることをrebootmgrdに知らせます。更新が実行される時刻を調整できます。systemd.timer(5)を参照してください。rebootmgrdがシステムを再起動するときのメンテナンス期間を調整するには、rebootmgrd(8)を参照してください。

次のコマンドで自動トランザクション更新を無効にできます。

# systemctl --now disable transactional-update.timer

13.4 transactional-updateコマンド

transactional-updateコマンドでは、更新のアトミックなインストールまたは削除が可能です。すべてが正常にインストールされている場合にのみ更新が適用されます。transactional-updateは、更新が適用される前にシステムのスナップショットを作成し、このスナップショットを復元できます。再起動後にのみ、すべての変更がアクティブになります。

--continue

--continueオプションは、再起動せずに既存のスナップショットに複数の変更を行うためのものです。

デフォルトのtransactional-update動作は、現在のルートファイルシステムから新しいスナップショット作成することです。新しいパッケージのインストールなど、何かを忘れた場合は、再起動して以前の変更を適用し、transactional-updateを再度実行して忘れたパッケージをインストールしてから再起動する必要があります。再起動せずに、スナップショットにさらに変更を追加するためにtransactional-updateコマンドを複数回実行できません。これは、以前のスナップショットからの変更を含まない独立したスナップショットが作成されるためです。

--continueオプションを使用して、再起動せずに必要なだけ変更を行います。別個のスナップショットが毎回作成され、各スナップショットには、以前のスナップショットで作成されたすべての変更、および新しい変更が含まれます。このプロセスを必要な回数だけ繰り返します。最終スナップショットに必要なものがすべて含まれている場合は、システムを再起動すると、最終スナップショットが新しいルートファイルシステムになります。

--continueオプションのもう1つの便利な機能は、既存のスナップショットを新しいスナップショットのベースとして選択できることです。次の例では、transactional-updateを実行して、スナップショット13に基づいてスナップショットに新しいパッケージをインストールしてから、もう一度実行して別のパッケージをインストールする方法を示しています。

# transactional-update pkg install package_1
# transactional-update --continue 13 pkg install package_2

--continue [num]オプションはsnapper create --fromを呼び出します。10.6.2項 「スナップショットの作成」を参照してください。

cleanup

現在のルートファイルシステムがアクティブなルートファイルシステムと同一である場合(再起動後、transactional-updateが更新を含む新しいスナップショットを作成する前)、クリーンアップアルゴリズムのないすべての古いスナップショットはクリーンアップアルゴリズムセットを取得します。これにより、古いスナップショットがSnapperによって確実に削除されます。(snapper(8)のクリーンアップアルゴリズムに関するセクションを参照してください。)これにより、/var/lib/overlay内の参照されていない(つまり未使用の)/etcオーバーレイディレクトリもすべて削除されます。

# transactional-update cleanup
pkg in/install

zypper installコマンドを使用して、使用可能なチャネルから個々のパッケージをインストールします。このコマンドは、Program Temporary Fix (PTF) RPMファイルをインストールするために使用することもできます。

# transactional-update pkg install package_name

あるいは、

# transactional-update pkg install rpm1 rpm2
pkg rm/remove

zypper removeコマンドを使用してアクティブなスナップショットから個々のパッケージを削除します。このコマンドは、PTF RPMファイルを削除するために使用することもできます。

# transactional-update pkg remove package_name
pkg up/update

zypper updateコマンドを使用してアクティブなスナップショットから個々のパッケージを更新します。ベースファイルシステムのスナップショットの一部であるパッケージのみを更新できます。

# transactional-update pkg update package_name
up/update

使用可能な新しい更新がある場合、新しいスナップショットが作成され、zypper up/updateがスナップショットを更新します。

# transactional-update up
dup

使用可能な新しい更新がある場合、新しいスナップショットが作成され、zypper dup –no-allow-vendor-changeがスナップショットを更新します。スナップショットは後で有効にされ、再起動後に新しいルートファイルシステムになります。

# transactional-update dup
patch

使用可能な新しい更新がある場合、新しいスナップショットが作成され、zypper patchがスナップショットを更新します。

# transactional-update patch
rollback

これはデフォルトのサブボリュームを設定します。読み書き可能なファイルシステムを備えたシステムでは、snapper rollbackが呼び出されます。読み込み専用ファイルシステムで引数を指定しない場合、現在のシステムは新しいデフォルトのルートファイルシステムに設定されます。数値を指定する場合、スナップショットがデフォルトのルートファイルシステムとして使用されます。読み込み専用ファイルシステムでは、追加のスナップショットは作成されません。

# transactional-update rollback snapshot_number
grub.cfg

これは、新しいGRUB2設定を作成します。カーネルパラメータの追加など、ブート設定の調整が必要になる場合があります。/etc/default/grubを編集し、transactional-update grub.cfgを実行してから再起動し、変更を有効にします。すぐに再起動する必要があります。そうしないと、新しいGRUB2設定が次のtransactional-updateの実行によってデフォルトで上書きされます。

# transactional-update grub.cfg
reboot

このパラメータは、アクションが完了した後に再起動をトリガします。

# transactional-update dup reboot
--help

これにより、オプションとサブコマンドを含むヘルプ画面が印刷されます。

# transactional-update --help

13.5 トラブルシューティング

アップグレードが失敗する場合は、supportconfigを実行して、ログデータを収集します。/var/log/transactional-update.logを含む結果のファイルをSUSEサポートに提供します。