第11章 Satellite Server のメンテナンス

本章では、監査レコードの取り扱い、未使用タスクの消去方法、いっぱいになったディスクから Pulp を復元する方法、MongoDB からディスク領域を確保する方法などの Red Hat Satellite Server のメンテナンス方法について説明します。

11.1. 監査レコードの削除

監査レコードは Satellite で自動作成されます。foreman-rake audits:expire コマンドを使うと、監査はいつでも取り消すことができます。また、cron ジョブを使用して、設定した間隔で、監査レコードの削除をスケジューリングすることも可能です。

デフォルトでは、foreman-rake audits:expire コマンドを使用すると 90 日以上経過した監査レコードが削除されます。days オプションに日数を追加して、監査レコードを保持する日数を指定することが可能です。

たとえば、7 日以上経過した監査レコードを削除する場合は、以下のコマンドを実行します。

# foreman-rake audits:expire days=7

11.2. 監査レコードの匿名化

foreman-rake audits:anonymize コマンドを使うと、データベースで監査レコードを保持しつつ、ユーザーアカウントや IP 情報を削除できます。また、cron ジョブを使用して、設定した間隔で、監査レコードの削除をスケジューリングすることも可能です。

デフォルトでは、foreman-rake audits:anonymize コマンドを使用すると 90 日以上経過した監査レコードが匿名化されます。days オプションに日数を追加して、監査レコードを保持する日数を指定することが可能です。

たとえば、7 日以上経過した監査レコードを匿名化する場合は、以下のコマンドを実行します。

# foreman-rake audits:anonymize days=7

11.3. 未使用タスクのクリーニング機能の設定

Satellite はクリーニングを定期的に実行することで、データベース内のディスク領域を削減し、ディスク増加率を制限します。その結果、Satellite のバックアップがより短時間で完了し、全体的なパフォーマンスも向上します。

デフォルトでは、Satellite は毎日 19 時 45 分 にタスクをクリーンアップする cron ジョブを実行します。Satellite は、クリーニング中に以下のタスクを削除します。

  • 正常に実行され、30日を超過したタスク
  • 1 年を超過したすべてのタスク

以前のバージョンからアップグレードされた Satellite の場合

BZ#1788615 が解決されるまで、この機能は Satellite 6.7 以降の新規インストールでのみ機能します。以前のバージョンから Satellite をアップグレードすると、この機能はデフォルトで無効になります。Satellite が定期的なクリーニングを実行できるようにするには、以下のコマンドを入力します。

# satellite-installer --foreman-plugin-tasks-automatic-cleanup true

オプションでこの手順を使用して設定を調整し、ニーズに対応します。

手順

  1. オプション: Satellite が cron ジョブを実行する時刻を設定するには、--foreman-plugin-tasks-cron-line パラメーターを cron 形式で希望する時刻に設定します。たとえば、cron ジョブを毎日 15 時 00 分に実行するようにスケジュールするには、以下のコマンドを入力します。

    # satellite-installer --foreman-plugin-tasks-cron-line "00 15 * * *"
  2. オプション: Satellite がタスクを削除するまでの期間を設定するには、/etc/foreman/plugins/foreman-tasks.yaml ファイルの :rules: セクションを編集します。

11.4. 完全なディスクからのリカバリー

以下の手順では、Pulp データベースのある論理ボリューム (LV) に空き領域がない場合の解決方法について説明します。

完全なディスクからのリカバリー方法

  1. 実行中の Pulp タスクを完了させます。新たなタスクは開始しないでください。ディスクに空きスペースがないため、失敗することになります。
  2. /var/lib/pulp ディレクトリーのある LV に十分な空き領域があることを確認します。以下のような方法があります。

    1. 孤立したコンテンツを削除します:

      # foreman-rake katello:delete_orphaned_content RAILS_ENV=production

      これは 1 週間ごとに実行されるので、多くの領域が解放されるわけではありません。

    2. できるだけ多くのリポートのダウンロードポリシーを 即時 から オンデマンド に変更し、ダウンロード済みパッケージを削除します。手順については、Red Hat カスタマーポータルのナレッジベースのソリューション「How to change syncing policy for Repositories on Satellite from "Immediate" to "On-Demand"」を参照してください。
    3. /var/lib/pulp ディレクトリーのある LV 上のファイルシステムを拡張します。詳細は、『Red Hat Enterprise Linux 7 論理ボリュームマネージャーの管理』の「論理ボリュームのファイルシステムの拡張」を参照してください。

      注記

      (ext3、ext4、または xfs などの) 通常外のファイルシステムを使用している場合は、そのファイルシステムをアンマウントして使用されていない状態にする必要があります。その場合は、以下を実行します。

      1. satellite-maintain サービスを停止します。

        # satellite-maintain service stop
      2. LV 上のファイルシステムを拡張します。
      3. satellite-maintain サービスを起動します。

        # satellite-maintain service start
  3. ディスクに空きスペースがないために Pulp タスクが失敗していた場合は、それらのタスクを再実行します。

11.5. Satellite Server のベースオペレーティングシステムでのパッケージの管理

Satellite のベースオペレーティングシステムでパッケージをインストールして更新するには、satellite-maintain packages コマンドを入力する必要があります。

Satellite は、yum を使用したパッケージのインストールと更新はできません。理由は、yum は、Satellite 関連のパッケージを更新し、システムの不整合が発生する可能性があるためです。

重要

Satellite Server で、パッケージのインストール後に satellite-installer --upgrade コマンドが実行されるため、satellite-maintain packages コマンドは Satellite Server のサービスの一部を再起動します。

手順

  • Satellite Server でパッケージをインストールするには、以下のコマンドを入力します。

    # satellite-maintain packages install package_1 package_2
  • Satellite Server でパッケージを更新するには、以下のコマンドを入力します。

    # satellite-maintain packages update package_1 package_2

yum を使用したパッケージ更新の確認

yum を使用して更新を確認する場合は、コマンドを入力して手動でパッケージをインストールおよび更新してから、yum を使用して更新を確認できます。

# satellite-maintain packages unlock
# yum check update
# satellite-maintain packages lock

パッケージを個別に更新すると、Satellite でパッケージの不整合が発生する可能性があります。Satellite でのパッケージの更新の詳細については、「Satellite Server のアップデート」を参照してください。

Satellite のパッケージ管理での yum の有効化

yum を使用して直接システムにパッケージをインストールして更新し、システムの安定性をご自身で管理する場合は、以下のコマンドを入力します。

# satellite-maintain packages unlock

パッケージ管理のデフォルト設定への復元

デフォルト設定を復元し、Satellite を有効にしてユーザーが yum を使用してパッケージをインストールおよび更新できないようにし、システムの安定性を確保する必要がある場合は、以下のコマンドを入力します。

# satellite-maintain packages lock

11.6. MongoDB スペースの確保

MongoDB データベースは、特に負荷の高いデプロイメントにおいて、大容量のディスク領域を使用できます。この手順を使用して、Satellite でこのディスク領域の一部を確保します。

前提条件

手順

  1. Pulp サービスを停止します。

    # satellite-maintain service stop --only \
    pulp_celerybeat.service,pulp_resource_manager.service,pulp_streamer.service,pulp_workers.service,httpd
  2. MongoDB シェルにアクセスします。

    # mongo pulp_database
  3. 修復前の MongoDB のディスク領域の使用量を確認します。

    > db.stats()
  4. 現在の MongoDB データベースに 2 GB を足したサイズに相当する空のディスク領域があることを確認します。MongoDB データベースを含むボリュームに十分な領域がない場合、別のボリュームをマウントし、これを修復に使用することができます。
  5. 修復コマンドを入力します。データベースのサイズによっては、修復コマンドは、その他すべての操作をブロックし、完了までに時間がかかる場合があることに注意してください。

    > db.repairDatabase()
  6. 修復後の MongoDB のディスク領域の使用量を確認します。

    > db.stats()
  7. MongoDB シェルを終了します。

    > exit
  8. Pulp サービスを開始します。

    # satellite-maintain service start

11.7. PostgreSQL 領域の確保

PostgreSQL データベースは、特に負荷の高いデプロイメントにおいて、大容量のディスク領域を使用できます。この手順を使用して、Satellite でこのディスク領域の一部を確保します。

手順

  1. postgresql サービス以外の全サービスを停止します。

    # satellite-maintain service stop --exclude postgresql
  2. postgres ユーザーに切り替えてデータベースの領域を確保します。

    # su - postgres -c 'vacuumdb --full --dbname=foreman'
  3. Vacuum が完了したら、他のサービスを開始します。

    # satellite-maintain service start