Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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) で指定します。このファイルが存在しない場合、root 以外のユーザーが所有できるプロセスの最大数は、Red Hat Enterprise Linux で nproc (ulimit -u) のデフォルト値を決定するものは何ですか? で説明されているように、プログラムで決定されます。

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 に依存するアプリケーションおよびシステム設定と互換性を保っています。

ロギングサブシステムの詳細については、システム管理者ガイドを参照してください。

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

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

2.4.5. ホスト名の定義

Red Hat Enterprise Linux 6 では、hostname 変数は /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 には、出力を変更するための新たなオプションのパラメーターが含まれています。この新たなオプションは、languageids です。
  • /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 形式に依存するスクリプトは、書き換える必要があります。
  • スペックパーサーはより厳密、正確になっており、これまでは受け入れられたスペックファイルでも、パーサーに失敗するか、警告が発せられる可能性があります。
  • %license は、ライセンスとしてスペックファイルの %files セクションのファイルをマークするのに使用できるようになりました。このラインセスは、--nodocs が指定されたときでさえインストールする必要があります。
  • バージョン比較は dpkg スタイルのチルダ (~) 演算子をサポートし、リリース前のソフトウェアを問題なく処理します。たとえば、foo-2.0~beta1foo-2.0 よりも古いとみなされるため、これら共通のアップストリームバージョンのプラクティスを処理するリリースフィールドに関する裏技の必要性がなくなります。
  • 自動依存関係ジェネレーターは、ビルトインフィルター付きで、拡張可能かつカスタマイズ可能なルールベースのシステムに書き換えられました。

この更新には、以下の機能強化も含まれます。

  • パッケージからインストールされたファイル (INSTFILENAMES)、ファイルへのハードリンクの数 (FILENLINKS)、パッケージバージョンコントロールシステムの詳細 (VCS)、およびフォーマット済みの依存関係文字列のショートカット (PROVIDENEVRSREQUIRENEVRSCONFLICTNEVRSOBSOLETENEVRS) へのクエリーが可能になりました。
  • 以下のものを含む多くのコマンドが新たに提供されました。

    • rpmkeys
    • rpmdb
    • rpmspec
    • rpmsign
  • RPM Package Manager には、ランタイムマクロ拡張やランタイムクエリー形式の拡張を有効にするスクリプトレットへの新たなスイッチが含まれています。
  • トランザクション前および後のスクリプトレット依存関係は、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 addrip link) の使用を推奨しています。

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

カーネルは、システムリソースを管理する目的で、コントロールグループを使用してプロセスをグループ化します。Red Hat Enterprise Linux 7 では、コントロールグループに多くの変更が導入されています。

  • コントロールグループは、/cgroup ではなく、/sys/fs/cgroup 下にマウントされています。
  • ファイルシステムのなかには、デフォルトでマウントされているものもあります。
  • systemd は、libcgroup から systemd への移行を完全にはサポートしていません。したがって、cgred サービスは、systemd が管理していないグループにプロセスを移動する場合にのみ使用してください。cgconfig.conf ファイルは、systemd が管理していないファイルシステムもしくはファイルコントローラーのコントロールグループ階層を設定する場合に使用してください。

これらの変更の詳細については、リソース管理ガイドを参照してください。

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 に移動しました。ユーザーは、キャプチャーカーネルの /etc/sysconfig/kump ファイルのパラメーターとして rd.memdebug を指定することで、同じ機能が実行できます。
  • 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の詳細については、カーネル管理ガイドを参照してください。

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-499

0-999

ユーザーアカウント

500-60,000

1,000-60,000

この変更により、既存のユーザーの UID と GID に 500 ~ 999 を使用している場合に Red Hat Enterprise Linux 7 に移行すると、問題が発生する場合があります。UID および GID におけるデフォルトの範囲は、/etc/login.defs ファイルで手動で変更できます。

2.4.13. hwclock の動作の変更

Red Hat Enterprise Linux 6 では、ハードウェアクロックにアクセスするための hwclock コマンドが、システムのシャットダウンまたは再起動のたびに自動的に実行されていました。この動作は、Red Hat Enterprise Linux 7 の登場で変わります。システムクロックが Network Time Protocol (NTP) または Precision Time Protocol (PTP) で同期される場合は、カーネルが 11 分ごとに自動的にハードウェアクロックをシステムクロックに同期します。

NTPPTP の設定、およびハードウェアクロックの設定の詳細については、システム管理者ガイドを参照してください。