CentOS

CentOS
RHELのクローン。2014/07/07に7系統の初版が公開。
CentOS7は今までのCentOS6系統と比べて、色々とお作法が変わっている。

変更点メモ

●iptables
処理がもの凄く高速化している。
今までは、新しいpermit/denyルールを追加する際には全ルールを再適用する必要があったが、
CentOS7搭載の物からはダイナミックにルール変更が可能な為、
必要な箇所のみ追記/削除が可能になっている。

●tmpfiles [/var/run]
今までは、/var/runにディレクトリを作成して再起動をかけても、作成したディレクトリが残っていたのだが、
CentOS7からは、再起動すると/var/runが初期化される様になった。
独自に作成した/var/run内ディレクトリを残す場合、/usr/lib/tmpfiles.d内に設定を追加する。
詳しい書式はこちら参照

・書式
[d:ディレクトリ] [作成するディレクトリ] [4桁パーミッション] [所有ユーザ] [所有グループ] [-:最後に付ける]

=====

・zabbix用PIDディレクトリを作成する場合
[root@hoge tmpfiles.d]# cat zabbix.conf 
---
# zabbix runtime directory
d /var/run/zabbix 0750 zabbix zabbix -


●tmpfiles [/tmp]
/tmpに一定時間アクセスが無い場合、systemd-tmpfiles-clean.timerで自動的に削除される。
自動削除させない場合には、残すディレクトリの指定ファイルを、/etc/tmpfiles.dに作成する。
個別に作成するのが面倒な場合は、/usr/lib/tmpfiles.dにシンボリックリンクを張る

cd /etc/tmpfiles.d
ln -s /usr/lib/tmpfiles.d/*.conf .


●systemctl
プロセスの起動が、initからsystemdに変更された。
また、プログラムの自動起動(chkconfig)もsystemdで一元管理出来るようになった。
よって、使用するコマンドがsystemctlに変更になった(´・ω:;.:...
※initとchkconfigは残っているが、非推奨らしい

こちらのサイト様が詳しくまとめてある -> とみぞーノート

  • コマンド対応表
    CentOS7CentOS6
    # systemctl enable zabbix_agentd.service# chkconfig zabbix_agentd on
    # systemctl disable zabbix_agentd.service# chkconfig zabbix_agentd off
    # systemctl load zabbix_agentd.service# chkconfig --add zabbix_agentd
    # systemctl -l# chkconfig --list
    # systemctl start zabbix_agentd.service# /etc/init.d/zabbix_agentd start
    # systemctl stop zabbix_agentd.service# /etc/init.d/zabbix_agentd stop
    # systemctl restart zabbix_agentd.service# /etc/init.d/zabbix_agentd restart

ロケール設定

systemd採用ディストリではロケール設定が従来の方法から大きく変更されている。
標準でロケール設定用のコマンドが用意されているので基本はコマンドで設定する。
どうしてもテキストで直書きする場合、/etc/locale.confを編集する。

現在のロケール確認# localectl status
システムロケール一覧# localectl list-locales
ロケールの変更# localectl set-locale LANG=ja_JP.utf8


kdump停止

メモリ搭載量が少ない環境でCentOSを稼働させるとメモリが足りなくなる場合がある。
そのような環境でメモリを確保する場合、kdumpを停止させる事でkdump確保分のメモリをOSで利用する事が出来る。
ただし、本来はkdumpを動かす方が良いので停止リスクも考えて停止させる。

 設定内容


乱数生成器

乱数を取得する際に使用する/dev/randomは、
デバイスドライバ等から収集した乱数エントロピーが溜まらないとReadLock状態になる。
VPS・仮想環境の場合エントロピー不足に陥りやすい為、HAVEGEを導入して対処する。

・CentOS7
---
# yum install haveged
# systemctl enable haveged
# systemctl start haveged

・CentOS6
---
# yum install haveged
# chkconfig haveged on
# /etc/init.d/haveged start

・エントロピープールの確認
---
# cat /proc/sys/kernel/random/entropy_avail


SysVinitのSystemdリダイレクト防止

CentOSでSysVinit用スクリプトを実行してもSystemdにリダイレクト実行されるが、
以前と同様にSysVinitとして実行したい場合、スクリプトで『/etc/init.d/functions』をインポートする前
『$SYSTEMCTL_SKIP_REDIRECT=1』を追記する事でSystemdへのリダイレクトを防止する事が出来る

Systemd起動時のタイムアウト時間

Systemdでは各サービスファイルのタイムアウトがデフォルト90秒で設定されている。
90秒経過してもdaemonが起動しない時はプロセスをkillした上で再起動を行う為、
起動時間が必要なdaemonだと起動が完了する前にsystemdでkillされて無限ループする事がある。
この場合、サービスファイルにタイムアウトを設定するか、Systemd全体のタイムアウト時間を変更する。

  • daemon.service
    "TimeoutStartSec/StopSec"を一括設定する時は"TimeoutSec"でも定義可能
    --
    [Service]
    TimeoutStartSec=5min
    TimeoutStopSec=5min
  • system.conf
    DefaultTimeoutStartSec=5min
    DefaultTimeoutStopSec=5min