CentOS6とCentOS7の比較表

| CentOS6 |CentOS7|備考|
|:-----------|:------------|:------------|
|<b>OSインストール部分</b>|||
||①anacondaの画面フロー変更。<br>②GUIでのパッケージ選択を廃止<br>③6.5➡7へのupgradeをサポート|CentOS6.5➡7にupdateするには下記<br>[CentOS6.5 ➡ Centos7にアップグレード](http://qiita.com/sion_cojp/items/609f7de9f1d8ffbeb35d)<br>eth0などはそのまま引き継がれる。 <br><br>サービスは停止するもの（例えばntpなど）があったり、<br>6.5で動いてたものが正常に動作しなくなる可能性があるので、upgradeは推奨はしません。|
|<b>デフォルトファイルシステム</b>|||
|ext4|xfs|詳しくはこちら。<br>[Linuxファイルシステムをまとめてみました](http://qiita.com/sion_cojp/items/c8e015db39ddbf43012e)|
|<b>カーネルバージョン</b>|||
|2.x / 3.x/ 4.x<br><br>パッケージ名：<br>kernel-lt<br>kernel-ml (4系はこっち。elrepo-release-6-4.el6.elrepo以降が必要)|3.x / 4.x<br><br>パッケージ名：<br>kernel-ml|kernel-ml,ltがあるのはel6系と競合しないように[意図的に分けてます。](http://elrepo.org/tiki/kernel-ml)<br>lt: long-term<br>ml: main-line|
|<b>GNOME</b>|||
|2.x|Classic（デフォルト）<br>3.x（GNOME Shell|Classicは、GNOME3の技術を使うGNOME2ライクのインターフェイス。<br>また3.0から取り入れたGNOME SHELLを使う事が出来る。 |
|<b>ブートローダー</b>|||
|GRUB Legacy (+efibootmgr)<br><br>設定ファイル:  /boot/grub/menu.lst|GRUB2<br><br>設定ファイル:  /etc/default/grub<br>/boot/grub.d/配下<br>/boot/grub/grub.cfg|①BIOS, UEFIの両方へ対応<br>②RAID, LVMのLinuxでのサポート<br>（今までは標準パーティションの中に少なくとも<br>１つのファイルシステムが必要だった。）<br>③パーティションテーブル：<br>GPTの正式サポート<br>MBRを2TiB➡8ZiBまで管理出来るようになった<br><br>④ファイルシステムのサポートを追加<br>（HFS+, NTFS, ZFS） <br>⑤カーネルのサポートを追加<br>（XNU(Mac OSXとDarwinカーネル)） <br><br>⑥GRUB2は、GRUBの/boot/grub/menu.lstで<br>設定ファイルを直接編集するようなことは出来ず、<br>/etc/default/grubで設定<br>➡update-grub2コマンド実行<br>➡/boot/grub/grub.cfgファイル生成する流れになってます|
|<b>時間の変更</b>|||
|\$ vim /etc/sysconfig/clock<br>ZONE="Asia/Tokyo"<br>UTC=fales<br><br>\$ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime|\$ timedatectl set-timezone Asia/Tokyo<br><br>\$ timedatectl status|centos6までは設定ファイルからしか現状を確認出来なかったが、<br>centos7からはどういう設定が"反映"されてるかを確認出来ます。<br>より安全に。便利。 |
|<b>ロケール（言語）の変更</b>|||
|\$ vim /etc/sysconfig/i18n<br>LANG="ja_JP.utf8"<br><br>\$. /etc/sysconfig/i18n<br>\$ locale|\$ localectl set-locale LANG=ja_JP.utf8<br><br>\$ localectl status|コマンド数が少なくなりました。便利。|
|<b>セキュリティ</b>|||
|iptables|firewalld<br>+ iptables|firewalldはiptablesと併用出来ない。<br><br>デフォルトではfirewalldが有効なので、<br>iptablesを使うならfirewalldを無効にし、<br>iptables-serviceをインストールし、iptablesを有効にしなければなりません。<br><br> iptablesに慣れてしまってるので、firewalldの学習コストはかかります。。<br><br>簡単に設定をしたい+apiで外部サービスと連携したいなら、firewalld。<br><br>複雑なことをやりたいなら、iptablesを使う方が良いでしょう。<br>（firewalldは内部的にiptablesでフィルタリングされてます)<br>firewalldで複雑な設定をしたい場合のrich-ruleを使うならGUIが設定しやすいのでオススメです。|
|<b>iscsi周り</b>|||
|\$ tgtadm|\$ targetcli|centos6のパッケージは、scsi-target-utils.x86_64,iscsi-initiator-utils<br><br>centos7のパッケージは、targetd.noarch, targetcli.noarch<br><br>targetを実際に使っていて、急にサービスfailedになったりと不安定な部分がありました。|
|<b>ログ周り</b>|||
||\$ journalctl|systemdのログを確認する事が出来る。<br>サービス再起動時、エラーが起きたら「journalctl -xb ○○でエラーを見ろ」と出力されます。親切かつ便利。 |
|<b>サービスコマンド</b>|||
|\$ service サービス名 start|\$ systemctl start unit名|サービスを起動する<br><br>unitの正規名は○○○.serviceだが、serviceを省略して打つ事も可能。 |
|\$ service サービス名 stop|\$ systemctl stop unit名<br>\$ systemctl restart unit名<br>\$ systemctl start unit名|サービスを起動、停止、restartする<br><br>systemctl系はコマンドが長くて大変。<br>またunit名がtab補完効かない + unit名が存在しなくても出力されて紛らわしい。<br>（bash-completionを入れれば補完されますが。）<br><br>（"Reason: No such file or directory"って文字列で存在してないのが分かりますが、焦ってたら気づかない可能性が。。）|
|\$ chkconfig script名 on/off|\$ systemctl enable unit名<br>\$ systemctl disable unit名 |サービス自動起動をon, offにする|
|\$ chkconfig --list|\$ systemctl list-unit-files|全サービス状態を調べる|
|$ hostname ホスト名|\$ hostnamectl set-hostname ホスト名<br>\$ hostnamectl status|ホスト名を変更する|
|[GUI➡CUI]<br>\$ vim /etc/inittab<br>id:3:initdefault:<br>再起動後に切り替わる<br><br>[CUI➡GUI]<br>\$ startx<br>ログアウト後にCUIに戻る<br>|[GUI➡CUI]<br>\$ systemctl isolate multi-user.target<br><br>[CUI➡GUI]<br>\$systemctl isolate graphical.target<br><br>[デフォルトの設定変更方法]<br>\$ systemctl set-default graphical.target<br>もしくは、<br>\$ systemctl set-default multi-user.target<br><br>[現在のデフォルト設定の確認]<br>\$ systemctl get-default||
|<b>ネットワーク系コマンド</b>|||
||\$ nmtui|GUIでネットワークを設定出来る。<br>IPが複数付いた場合は、/etc/sysconfig/network-scripts/ifcfg-ethX に複数IPが記述されてると思うので、必要な部分を削除し、network restartしてください。 |
||nmcli|CUIでネットワークを設定出来る。<br>コマンドを実行することにより、/etc/sysconfig/network-scripts/ifcfg-ethXを書き換えてくれます。<br>CentOS7.1からipv4.gatewayオプションが追加されたので、注意してください。<br><br><b>CentOS7.0 : </b>\$ nmcli con mod 'eth0' ipv4.method manual ipv4.addresses "192.168.1.1/24 192.168.1.254"<br><br><b>CentOS7.1 : </b>\$ nmcli con mod 'eth0' ipv4.method manual ipv4.addresses "192.168.1.1/24" ipv4.gateway "192.168.1.254"|
|\$ route|\$ ip r|ルーティングテーブル表示<br>r はroute|
|\$ arp|\$ ip n|ARPテーブル表示<br>n はneighbor|
|\$ netstat|\$ ss|ネットワーク接続、インターフェイスの状態などを表示。<br><br>しかし2014/10/10現在では、ssコマンドを使うのは推奨しません。<br>「UDPの開放ポートがTCPと報告される」というバグががあるそうです。<br>http://d.hatena.ne.jp/ozuma/20140915/1410774381 |
|\$ netstat -i|\$ ip -s l|ネットワークインターフェースの統計情報を表示<br>l はLink。 |
|\$ ifup eth0<br>\$ ifdown eth0 |\$ nmcli c up eno0<br>\$ nmcli c down eno0|インターフェイスをup / downする |
||\$ nmcli device|管理されてるネットワークインターフェイスを表示|
||ネットワーク周りの変更点|①NICの設定は、NetworkManagerで行う。インターフェイスでNM_CONTROLLED="yes"にしないと、/etc/resolv.confの設定が初期化される。<br>インターフェイスに<b>DNS1="8.8.8.8"</b>を書いて、resolvに反映させるか、<br>/etc/NetworkManager/NetworkManager.confに<b>dns=none</b>を書いて、直接resolv.confを編集するかを選択。<br>②WiFi, Infiniband, VPN, Bonding, Bridge, VLANなどの設定を統合。<br>③今まで/etc/sysconfig/network-scriptsや、ifupコマンドなどネットワーク周りのコマンドも統合。<br>なので、ifconfigなどが含まれてたnet-toolsはデフォルトでインストールされなくなった。（centos7からはiproute2）<br>④40GbE対応。<br>⑤eth0➡eno0に変更<br>⑥6➡7に移行出来るように、/etc/sysconfig/network-scripts/配下のコンフィグは有効となっている。|
|<b>DB</b>|||
|MySQL|MariaDB|MySQLからフォークしてきたものなので、あまり違いはない。<br>InnoDB➡XtraDBに置き換わる<br>MariaDBとMySQLのレプリケーションは可能でした。|
|<b>NTP</b>|||
|6.5よりサポート|PTP(Precision Time Protocol)v2|6.5でも採用しているがNTPより高精度で、PTP対応NICでパケット送信時にタイムスタンプを付与して誤差を削減。<br><br>PTP対応ドライバはbnx2x, tg3, e1000e, igb, ixgbe, sfc。|
||chrony|ntpdに代わりデフォルトになった。<br>一応ntpdもデフォルトで入ってますが、バージョンが上がるにつれてchronyに移行するのではないかと思います<br>同期時間の短縮や、<br>設定ファイルは /etc/chrony.conf<br><br>[NTP vs Chrony速度測定](http://qiita.com/sion_cojp/items/e1272a057189727dbf83)|
|<b>Memory</b>|||
||freeコマンドと`/proc/meminfo`にavailableが表示されるようになった|
|<b>パスワードを忘れたときの対処</b>|||
|①grubメニュー画面で矢印でOSを選び、eボタン<br>②kernelを選んでeボタン<br>③最後尾にsingleを入力し、Enter<br>④passwdで変更してください⑤再起動<br>\$ reboot|①grubメニュー画面で矢印でOSを選び、eボタン<br>②linux16と書いている部分の最後尾にrd.breakを追加する<br>③ctrl+xで起動<br>④sysrootをrwで再マウントする<br>\$ mount -o remount,rw /sysroot<br>⑤ルートディレクトリを/sysrootに変更<br>\$ chroot /sysroot<br>⑥パスワードを変更\$ passwd<br>⑦selinuxを使ってるなら、再起動後、自動でラベリングを付け直すようにファイルを作成する。<br>\$ touch /.autorelabel<br>⑧再起動<br>\$ reboot||
|<b>fstabの記述ミスで起動しなくなったときの対処</b>|||
|①Give root passwrd for maintenance<br>(or type Control-D to continue):<br>と表示されるのでパスワードを入力し、メンテナンスモードに入る<br>②ファイルシステムがReadOnlyでマウントされてるので、rwでマウントし直す<br>\$ mount -o remount,rw /<br>③\$ mount -aで、エラーを見て、適宜/etc/fstabを書き換え、reboot|①grubメニュー画面で矢印でOSを選び、eボタン<br>②linux16と書いている部分の最後尾にsystemd.unit=emergency.targetを追加する<br>③ctrl+xで起動<br>④passwordを入力しメンテナンスモードでログイン<br>⑤ファイルシステムがReadOnlyでマウントされてるので、rwでマウントし直す<br>\$ mount -o remount,rw /<br>⑥\$ mount -aで、エラーを見て、適宜/etc/fstabを書き換え、reboot||

#所感
* 意外にNTP周りが進化してました。爆速に。
* 「設定ファイルをいじる」より「コマンドで設定を変更する」という方式に倒そうとしてる感じがします
* コマンドの統合が全体的に見受けられました。特にsystemctl。<br>コマンド統合によって設定ファイルの場所を覚えなくて済みますし、<br>設定時に打つ文字も減って便利。<br>ただ、$ systemctl list-unit-filesを打つのはめんどくさい。。
* コマンドの統合➡新しいコマンドを覚えなければならないという学習コスト。
* targetcli不安定すぎる。時間が経つと急にservice failedになったり。
* systemctlコマンドで、サービス名のtab補完が効かないのが本当に辛い。デフォルトで入れて欲しい。<br>