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サポートに提供します。