2.4. システム管理

このセクションでは、Red Hat Enterprise Linux 6 と Red Hat Enterprise Linux 7 との間でなされたシステム管理ツールおよびプロセスの変更の概要について説明しています。

2.4.1. デフォルトのプロセス最大数 (ulimit)

Red Hat Enterprise Linux 6 において、root 以外のユーザーでは、1 つの PAM セッションあたりのプロセスが 1024 個に制限されていました。Red Hat Enterprise Linux 7 では、デフォルトで、1 つの PAM セッションあたりのプロセスが 4096 個に増えました。
このデフォルト値は /etc/security/limits.d/*-nproc.conf ファイル (通常は、Red Hat Enterprise Linux 7 上の /etc/security/limits.d/20-nproc.conf) で指定します。https://access.redhat.com/solutions/218383 で説明されているように、このファイルが存在しないと、root 以外のユーザーが所有できるプロセスの最大数はプログラムで設定されます。
root 以外のユーザーが、現在の、1 つの PAM セッションあたりに利用できるプロセスの数は、ulimit -u コマンドを実行して確認できます。

2.4.2. 設定ファイルの構文

Red Hat Enterprise Linux 6 では、設定ファイル内に定義した値のエクスポートに export コマンドが使われていました。export コマンドを使用しない変数はエクスポートされず、対応する init スクリプト用の設定値としてのみ使用されました。以下は、/etc/sysconfig/sshd ファイルの例です。
AUTOCREATE_SERVER_KEYS=YES
export SSH_USE_STRONG_RNG=1
export OPENSSL_DISABLE_AES_NI=1
Red Hat Enterprise Linux 6 では、SSH_USE_STRONG_RNG および OPENSSL_DISABLE_AES_NI の値のみが ssh デーモン環境にエクスポートされました。変数 AUTOCREATE_SERVER_KEYS は、RSA と DSA サーバーのプライベートキーおよびパブリックキーを自動的に生成するのを init スクリプトに指示するために使用されました。
Red Hat Enterprise Linux 7 では、export コマンドを使用して、設定対象のサービス環境にこれらの値をエクスポートする必要はなくなりました。このため、以下の例では /etc/sysconfig/sshd ファイルが、これら 3 つの値をすべて ssh デーモンの環境にエクスポートします。
AUTOCREATE_SERVER_KEYS=YES
SSH_USE_STRONG_RNG=1
OPENSSL_DISABLE_AES_NI=1

2.4.3. 新ロギングフレームワーク

Red Hat Enterprise Linux 7 では、systemd への移行の一環として、新ロギングデーモンである journald を導入しています。journald は、全サービスで以下のタイプのメッセージを取り込みます。
  • syslog メッセージ
  • kernel メッセージ
  • initial RAM ディスクおよび初期ブートメッセージ
  • 標準出力および標準エラー出力に送信されるメッセージ
その後、これらのメッセージはネイティブのジャーナルファイルに保存されます。ジャーナルファイルは、構造化されインデックス化されたバイナリーファイルで、有用なメタデータを含み、容易かつスピーディーに検索ができます。
ジャーナルファイルは、デフォルトでは永続的に保存されません。ログに記録されるデータ量は、利用可能な空きメモリーの量によります。メモリーもしくは /run/log/journal ディレクトリーで容量が不足すると、一番古いジャーナルファイルが削除され、ロギングを継続します。
Red Hat Enterprise Linux 7 では、rsyslogjournald が共存しています。journald が収集したデータは rsyslog に転送され、ここでさらなる処理が行われ、テキストベースのログファイルが保存されます。デフォルトでは、rsyslog は、syslog メッセージ用の標準的なジャーナルフィールドのみを保存しますが、journald で利用可能なすべてのフィールドを保存するように設定することもできます。つまり、Red Hat Enterprise Linux 7 は、依然としてrsyslog に依存するアプリケーションおよびシステム設定と互換性を保っています。
ロギングサブシステムの詳細は、Red Hat Enterprise Linux 7 システム管理者のガイドを参照してください。

2.4.4. ローカリゼーション設定

新 init システムである systemd への移行の一環として、ローカリゼーション設定は、/etc/sysconfig/i18n から /etc/locale.conf および /etc/vconsole.conf に移動しました。

2.4.5. ホスト名の定義

Red Hat Enterprise Linux 6 では、ホスト名変数は /etc/sysconfig/network 設定ファイルで定義されていました。Red Hat Enterprise Linux 7 では、新 init システム (systemd) への移行の一環として、hostname 変数は /etc/hostname で定義されます。

2.4.6. Yum の更新

Red Hat Enterprise Linux 7 には更新バージョンの yum が含まれており、これには多くの変更および機能強化が含まれています。このセクションでは、yum を使用して Red Hat Enterprise Linux 6 から Red Hat Enterprise Linux 7 に移行する際に影響を受ける可能性のある変更を一覧表示しています。
  • yum group および yum groups はトップレベルのコマンドとなり、コマンドラインの yum の使用における一貫性が改善されています。たとえば、yum groupinfo コマンドは、yum group info コマンドに変わりました。
  • yum group list には、出力を変更するための新たなオプションのパラメーターが含まれています。新オプションは、language および ids です。
  • /etc/yum.conf 内の group_command パラメーターのデフォルト値が、compat から objects に変更になりました。これまで、yum group install のデフォルト動作は、パッケージグループの全メンバーをインストールし、以前にインストールされたパッケージと以前のアップグレード以降にグループに追加されたパッケージの両方をアップグレードするというものでした。新たなデフォルト動作では、yum が、以前にインストールされたグループの記録を取り、グループの一部としてインストールされたパッケージと、別途インストールされたパッケージを区別します。
  • yum-security プラグインおよび yum-presto プラグインは、yum に統合されました。
  • yum は、複数のパッケージを同時にダウンロードできるようになっています。
  • yum には環境グループのサポートが含まれています。これにより、環境グループ下にリストされている複数のパッケージグループを、単一エンティティーとしてインストール、削除することができます。
  • yum はリポジトリーをパッケージのセットとして扱うことができるようになっているため、リポジトリー内の全パッケージを単一エンティティーとして扱うことが可能です。たとえば、そのリポジトリー内の全パッケージをインストールしたり、削除したりできます。この機能は、repository-packages サブコマンドが提供しています。
  • yum には --disableincludes オプションが含まれており、設定ファイルで定義されている include ステートメントを無効にすることができます。all 値ですべての include ステートメントを無効にするか、特定のリポジトリー ID を提供することで、そのリポジトリーに定義されている include ステートメントを無効にすることが可能です。
  • yum には --assumeno オプションが含まれています。これは yum による質問にすべて 'no' と応答することを想定しています。このオプションは、--assumeyes オプションを無効にしますが、alwaysprompt が規定する動作には従います。
yum についての詳細情報は、man ページを参照してください。
$ man yum

2.4.7. RPM Package Manager (RPM) の更新

Red Hat Enterprise Linux 7 は、RPM Package Manager の更新バージョンを提供します。この更新には、移行に影響を与える可能性のある動作の変更が数多く含まれています。
  • 競合検出はより厳密、正確になっています。競合の感度が高いため、Red Hat Enterprise Linux 6 にインストールされたパッケージがすべて Red Hat Enterprise Linux 7 にインストールされるとは限りません。
  • 該当パッケージの他のバージョンと競合するパッケージを、代替方法を使ってシングルトンとして設定することができます。こうすることで、単一パッケージの複数のバージョンを同時にインストールすることが可能です。
  • インストール済みのパッケージが別のパッケージを廃止予定としてリストしている場合、この 2 番目のパッケージはインストールされません。
  • 廃止ルールには、アーキテクチャーなどの属性に関わらず、すべての適合パッケージが含まれます。
  • 依存計算では、インストールされていないファイルや置き換えられたファイルは勘案されません。たとえば、--nodocs--noconfig、または --force オプションなどで提供されている場合です。
  • パニックとなった (DB_RUNRECOVER) RPM Package Manager データベースを再構築する際に、rm -f /var/lib/rpm/__db. を手動で実行する必要がなくなりました。
  • OpenPGP 3 で作成されたパブリックキーはサポートされません。
  • --info オプションは、行ごとにタグと値の個別のペアを出力し、読みやすさが改善されています。以前の --info フォーマットに依存しているスクリプトはすべて、書き換えが必要です。
  • スペックパーサーはより厳密、正確になっており、これまでは受け入れられたスペックファイルでも、パーサーに失敗するか、警告が発せられる可能性があります。
  • --nodocs が指定されている場合でも、%license を使って、スペックファイルの %files セクションにあるファイルを、インストール必須のライセンスとしてマークすることができます。
  • バージョン比較は dpkg スタイルのチルダ (~) 演算子をサポートし、リリース前のソフトウェアを問題なく処理します。たとえば、foo-2.0~beta1foo-2.0 よりも古いとみなされるため、これら共通のアップストリームバージョンのプラクティスを処理するリリースフィールドに関する裏技の必要性がなくなります。
  • 自動依存関係ジェネレーターは、ビルトインフィルター付きで、拡張可能かつカスタマイズ可能なルールベースのシステムに書き換えられました。
この更新には、以下の機能強化も含まれます。
  • パッケージからインストールされたファイル (INSTFILENAMES)、ファイルへのハードリンクの数 (FILENLINKS)、パッケージバージョンコントロールシステムの詳細 (VCS)、およびフォーマット済みの依存関係文字列のショートカット (PROVIDENEVRSREQUIRENEVRSCONFLICTNEVRSOBSOLETENEVRS) へのクエリーが可能になりました。
  • 以下のものを含む多くのコマンドが新たに提供されました。
    • rpmkeys
    • rpmdb
    • rpmspec
    • rpmsign
  • RPM Package Manager には、ランタイムマクロ拡張やランタイム queryformat 拡張を有効にするスクリプトレットへの新たなスイッチが含まれています。
  • トランザクション前および後のスクリプトレット依存関係は、Requires(pretrans) および Requires(posttrans) で正確に表記されるようになっています。
  • RPM Package Manager には OrderWithRequires タグが含まれており、ユーザーはこれで追加の順序付け情報を供給することができます。この新たなタグは Requires タグと同じ構文を使用しますが、依存関係は生成しません。同一トランザクション内に上記のパッケージが存在する場合は、トランザクションの順序付けを計算する際に、順序付けのヒントが Requires のように扱われます。
  • スペックファイル内の行連結およびマクロ拡張が、指定された長さに制限されることはなくなりました。
  • RPM Package Manager では、ユーザーがアップストリームバージョンコントロールのリポジトリー情報を指定できるようになりました。
  • RPM Package Manager には、パッチ適用のプロセスの自動化を支援する %autosetup マクロが含まれています。

2.4.8. ifconfig の新フォーマット

廃止予定の ifconfig ツールからの出力形式が、Red Hat Enterprise Linux 7 で変更されています。ifconfig 出力を解析するスクリプトはこれらの変更に影響を受ける可能性があり、書き換えが必要な場合があります。
Red Hat では、廃止予定の ifconfig ではなく、ip ユーティリティーとそのサブコマンド (ip addr, ip link) の使用を推奨しています。

2.4.9. コントロールグループの変更

カーネルは、システムリソースを管理する目的で、コントロールグループを使用してプロセスをグループ化します。Red Hat Enterprise Linux 7 では、コントロールグループに多くの変更が導入されています。
  • コントロールグループは、/cgroup ではなく、/sys/fs/cgroup 下にマウントされています。
  • ファイルシステムのなかには、デフォルトでマウントされているものもあります。
  • systemdlibcgroup から systemd への移行を完全にはサポートしていません。したがって、cgred サービスは、systemd が管理していないグループにプロセスを移動する場合にのみ使用してください。cgconfig.conf ファイルは、systemd が管理していないファイルシステムもしくはファイルコントローラーのコントロールグループ階層を設定する場合に使用してください。
これらの変更についての詳細情報は、『Red Hat Enterprise Linux 7 リソース管理ガイド』 を参照してください。http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/ から入手できます 。

2.4.10. カーネルクラッシュ収集 (Kdump) の変更

これまで、カーネルクラッシュ収集ツールである kdump は、kdump キャプチャーカーネル用に、カスタム mkdumprd スクリプトで初期 ramdisk (initrd) を生成していました。Red Hat Enterprise Linux 7 では、初期 ramdisk が dracut で生成されるようになり、初期 ramdisk 生成プロセスの維持が容易になっています。
この結果、kdump とその設定ファイルには以下の変更がなされました。
  • net ディレクティブはサポート対象外となりました。ssh もしくは nfs を明示的に定義する必要があります。
  • blacklist オプションはサポート対象外となりました。代わりに rd.driver.blacklist を、キャプチャーカーネルの /etc/sysconfig/kdump ファイル内のパラメーターとして指定することができます。
  • デフォルトの mount_root_run_init アクションは、対象ターゲットへのダンプが失敗した場合に実行されていましたが、これは dump_to_rootfs アクションに置き換えられました。実際の root ファイルシステムをマウントして init スクリプトを実行し、kdump サービス開始時に vmcore の保存を試みる代わりに、root ファイルシステムをマウントして、即座に vmcore をそこに保存します。
  • 新たなディレクティブである dracut_args は、kdump の設定時に追加の dracut 引数の指定を可能にします。
  • debug_mem_level オプションは kdump に含まれていません。この機能は dracut に移動しました。rd.memdebug をキャプチャーカーネルの /etc/sysconfig/kump ファイルとして指定することで、同じ機能が実行できます。
  • options ディレクティブはこれまで、初期 ram ファイルシステム (initramfs) 内のカーネルモジュール固有のパラメーターを含めるために使用されていました。この方法は、Red Hat Enterprise Linux 7 ではサポートされていません。代わりに、キャプチャーカーネルの /etc/sysconfig/kdump ファイルで関連パラメーターを指定できます。
  • link_delay および disk_timeout パラメーターは不要となり、サポート対象外となりました。今まで、これらのパラメーターが必要とされていたユースケースに対処するudev が、dracut に含まれているためです。
  • ファイルシステムのバックエンドダンプターゲットは、kdump サービスが開始し、初期 ramdisk イメージが作成される前に、クラッシュしたカーネルにマウントする必要があります。これは、このようなターゲットを /etc/fstab に追加して、ブート時に自動的にマウントされるようにすることで行います。
  • パスを指定してもターゲットを指定せず、指定したパス内のディレクトリーが別のデバイスのマウントポイントであった場合、vmcore は、そのパスのどこかにマウントされたデバイスではなく、パスそのものに保存されます。このため、システムが再起動してデバイスがマウントされると、vmcore にはアクセスできなくなります。これは、デバイスがその位置の上にマウントするためです。Red Hat Enterprise Linux 7 は、ターゲットを指定せずにパスを指定した場合、この問題について警告します。
kdump についての詳細情報は、『Red Hat Enterprise Linux 7 カーネルクラッシュダンプガイド』 を参照してください。 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/ から入手できます。

2.4.11. usermod の動作の変更

Red Hat Enterprise Linux  6 では、usermod コマンドの -g オプションではグループの所有者を設定できませんでした。Red Hat Enterprise Linux  7.0 から Red Hat Enterprise Linux  7.2 のリリースでは、-g オプションが、/home ディレクトリーツリーのファイルのグループ所有者を修正しました。Red Hat Enterprise Linux  7.3 以降、usermod は、home ディレクトリーのユーザー ID が、修正したユーザー ID に一致した場合に限り、ユーザーのホームディレクトリーにあるファイルのグループ所有権を変更します。

2.4.12. システムアカウントへの変更

Red Hat Enterprise Linux  7 リリースでは、システムユーザー、および一般ユーザーおよびグループにおいて、デフォルトの ID 範囲が以下のように変更になりました。

表2.4 ID レイアウト

範囲Red Hat Enterprise Linux  6Red Hat Enterprise Linux  7
システムアカウント0-4990-999
ユーザーアカウント500-60,0001,000-60,000
この変更により、既存のユーザーの UID および GID の範囲が 500-999 の場合に Red Hat Enterprise Linux  7 に移行しようとすると問題が発生する場合があります。UID および GID におけるデフォルトの範囲は、/etc/login.defs ファイルで手動で変更できます。