#author("2018-12-01T14:23:27+09:00","default:nowsky","nowsky")
#author("2019-08-18T13:59:43+09:00","default:nowsky","nowsky")
*CentOS [#n225b85f]
[[CentOS:+http://www.centos.org/]]
RHELのクローン。2014/07/07に7系統の初版が公開。
CentOS7は今までのCentOS6系統と比べて、色々とお作法が変わっている。
~
*変更点メモ [#x1a98ab5]
&size(16){&font(b){●iptables};};
処理がもの凄く高速化している。
今までは、新しいpermit/denyルールを追加する際には全ルールを再適用する必要があったが、
CentOS7搭載の物からはダイナミックにルール変更が可能な為、
必要な箇所のみ追記/削除が可能になっている。
~

&size(16){&font(b){●tmpfiles [/var/run]};};
今までは、/var/runにディレクトリを作成して再起動をかけても、作成したディレクトリが残っていたのだが、
CentOS7からは、再起動すると/var/runが初期化される様になった。
独自に作成した/var/run内ディレクトリを残す場合、&font(b){/usr/lib/tmpfiles.d};内に設定を追加する。
詳しい書式は[[こちら:+http://www.freedesktop.org/software/systemd/man/tmpfiles.d.html]]参照
 ・書式
 [d:ディレクトリ] [作成するディレクトリ] [4桁パーミッション] [所有ユーザ] [所有グループ] [-:最後に付ける]
 
 =====
 
 ・zabbix用PIDディレクトリを作成する場合
 [root@hoge tmpfiles.d]# cat zabbix.conf 
 ---
 # zabbix runtime directory
 d /var/run/zabbix 0750 zabbix zabbix -
~

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

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

こちらのサイト様が詳しくまとめてある -> [[とみぞーノート:+http://wiki.bit-hive.com/tomizoo/pg/systemd%20%26%20systemctl]]

-コマンド対応表
|&font(b){CentOS7};|&font(b){CentOS6};|
|# 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|
~
*ロケール設定 [#uffbc26c]
systemd採用ディストリではロケール設定が従来の方法から大きく変更されている。
標準でロケール設定用のコマンドが用意されているので基本はコマンドで設定する。
どうしてもテキストで直書きする場合、&font(b){/etc/locale.conf};を編集する。
|現在のロケール確認|# localectl status|
|システムロケール一覧|# localectl list-locales|
|ロケールの変更|# localectl set-locale LANG=ja_JP.utf8|
~
*kdump停止 [#sf179879]
メモリ搭載量が少ない環境でCentOSを稼働させるとメモリが足りなくなる場合がある。
そのような環境でメモリを確保する場合、kdumpを停止させる事でkdump確保分のメモリをOSで利用する事が出来る。
ただし、本来はkdumpを動かす方が良いので停止リスクも考えて停止させる。
#region(&color(#ff0000){設定内容};)
&size(14){&font(b){サービス停止};};
 # systemctl stop kdump
 # systemctl disable kdump
 # systemctl list-unit-files -t service | grep kdump
 ===
 kdump.service    disabled
 
&size(14){&font(b){GRUB修正};};
 # diff /etc/default/grub /etc/default/grub.org 
 ===
 6c6
 < GRUB_CMDLINE_LINUX="rd.lvm.lv=lvm_lyra/root rhgb quiet"
 ---
 > GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=lvm_lyra/root rhgb quiet"
 
&size(14){&font(b){GRUB再生成};};
 # grub2-mkconfig -o /boot/grub2/grub.cfg
 # reboot
#endregion
~
*乱数生成器 [#i1c6c4fd]
乱数を取得する際に使用する&font(b){/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リダイレクト防止 [#p03dc19a]
- [[【CentOS7】起動スクリプトを実行すると勝手にsystemctlを使う件:+http://zacodesign.net/blog/?p=1976]]
- [[systemdを使用しないで起動するスクリプトを作る:+https://qiita.com/calcabrina/items/d0cae378e7b2d49f6ae6]]

CentOSでSysVinit用スクリプトを実行してもSystemdにリダイレクト実行されるが、
以前と同様にSysVinitとして実行したい場合、スクリプトで&color(#ff0000){『/etc/init.d/functions』をインポートする前};に
&color(#ff0000){『$SYSTEMCTL_SKIP_REDIRECT=1』を追記};する事でSystemdへのリダイレクトを防止する事が出来る
~
*Systemd起動時のタイムアウト時間 [#ja59967f]
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