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の場合、 - /usr/bin/php-cgiを示すシンボリックリンク- /srv/www/cgi-bin/phpを手動で作成する必要があります。
- 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を再度実行して忘れたパッケージをインストールしてから再起動する必要があります。再起動せずに、スナップショットにさらに変更を追加するために- transactal-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 remove 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 grub.cfg
- reboot
- このパラメータは、アクションが完了した後に再起動をトリガーします。 - #- transactional-update dup reboot
- --help
- これにより、オプションとサブコマンドを含むヘルプ画面が印刷されます。 - #- transactional-update --help
13.5 トラブルシューティング #
   アップグレードが失敗する場合は、supportconfigを実行して、ログデータを収集します。/var/log/transactional-update.logを含む結果のファイルをSUSEサポートに提供します。