Edited at

CentOS6とCentOS7の比較表

More than 1 year has passed since last update.

CentOS6
CentOS7
備考

OSインストール部分

①anacondaの画面フロー変更。
②GUIでのパッケージ選択を廃止
③6.5➡7へのupgradeをサポート
CentOS6.5➡7にupdateするには下記
CentOS6.5 ➡ Centos7にアップグレード
eth0などはそのまま引き継がれる。

サービスは停止するもの(例えばntpなど)があったり、
6.5で動いてたものが正常に動作しなくなる可能性があるので、upgradeは推奨はしません。

デフォルトファイルシステム

ext4
xfs
詳しくはこちら。
Linuxファイルシステムをまとめてみました

カーネルバージョン

2.x / 3.x/ 4.x

パッケージ名:
kernel-lt
kernel-ml (4系はこっち。elrepo-release-6-4.el6.elrepo以降が必要)
3.x / 4.x

パッケージ名:
kernel-ml
kernel-ml,ltがあるのはel6系と競合しないように意図的に分けてます。
lt: long-term
ml: main-line

GNOME

2.x
Classic(デフォルト)
3.x(GNOME Shell
Classicは、GNOME3の技術を使うGNOME2ライクのインターフェイス。
また3.0から取り入れたGNOME SHELLを使う事が出来る。

ブートローダー

GRUB Legacy (+efibootmgr)

設定ファイル: /boot/grub/menu.lst
GRUB2

設定ファイル: /etc/default/grub
/boot/grub.d/配下
/boot/grub/grub.cfg
①BIOS, UEFIの両方へ対応
②RAID, LVMのLinuxでのサポート
(今までは標準パーティションの中に少なくとも
1つのファイルシステムが必要だった。)
③パーティションテーブル:
GPTの正式サポート
MBRを2TiB➡8ZiBまで管理出来るようになった

④ファイルシステムのサポートを追加
(HFS+, NTFS, ZFS)
⑤カーネルのサポートを追加
(XNU(Mac OSXとDarwinカーネル))

⑥GRUB2は、GRUBの/boot/grub/menu.lstで
設定ファイルを直接編集するようなことは出来ず、
/etc/default/grubで設定
➡update-grub2コマンド実行
➡/boot/grub/grub.cfgファイル生成する流れになってます

時間の変更

\$ vim /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=fales

\$ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
\$ timedatectl set-timezone Asia/Tokyo

\$ timedatectl status
centos6までは設定ファイルからしか現状を確認出来なかったが、
centos7からはどういう設定が"反映"されてるかを確認出来ます。
より安全に。便利。

ロケール(言語)の変更

\$ vim /etc/sysconfig/i18n
LANG="ja_JP.utf8"

\$. /etc/sysconfig/i18n
\$ locale
\$ localectl set-locale LANG=ja_JP.utf8

\$ localectl status
コマンド数が少なくなりました。便利。

セキュリティ

iptables
firewalld
+ iptables
firewalldはiptablesと併用出来ない。

デフォルトではfirewalldが有効なので、
iptablesを使うならfirewalldを無効にし、
iptables-serviceをインストールし、iptablesを有効にしなければなりません。

iptablesに慣れてしまってるので、firewalldの学習コストはかかります。。

簡単に設定をしたい+apiで外部サービスと連携したいなら、firewalld。

複雑なことをやりたいなら、iptablesを使う方が良いでしょう。
(firewalldは内部的にiptablesでフィルタリングされてます)
firewalldで複雑な設定をしたい場合のrich-ruleを使うならGUIが設定しやすいのでオススメです。

iscsi周り

\$ tgtadm
\$ targetcli
centos6のパッケージは、scsi-target-utils.x86_64,iscsi-initiator-utils

centos7のパッケージは、targetd.noarch, targetcli.noarch

targetを実際に使っていて、急にサービスfailedになったりと不安定な部分がありました。

ログ周り

\$ journalctl
systemdのログを確認する事が出来る。
サービス再起動時、エラーが起きたら「journalctl -xb ○○でエラーを見ろ」と出力されます。親切かつ便利。

サービスコマンド

\$ service サービス名 start
\$ systemctl start unit名
サービスを起動する

unitの正規名は○○○.serviceだが、serviceを省略して打つ事も可能。

\$ service サービス名 stop
\$ systemctl stop unit名
\$ systemctl restart unit名
\$ systemctl start unit名
サービスを起動、停止、restartする

systemctl系はコマンドが長くて大変。
またunit名がtab補完効かない + unit名が存在しなくても出力されて紛らわしい。
(bash-completionを入れれば補完されますが。)

("Reason: No such file or directory"って文字列で存在してないのが分かりますが、焦ってたら気づかない可能性が。。)

\$ chkconfig script名 on/off
\$ systemctl enable unit名
\$ systemctl disable unit名
サービス自動起動をon, offにする

\$ chkconfig --list
\$ systemctl list-unit-files
全サービス状態を調べる

$ hostname ホスト名
\$ hostnamectl set-hostname ホスト名
\$ hostnamectl status
ホスト名を変更する

[GUI➡CUI]
\$ vim /etc/inittab
id:3:initdefault:
再起動後に切り替わる

[CUI➡GUI]
\$ startx
ログアウト後にCUIに戻る

[GUI➡CUI]
\$ systemctl isolate multi-user.target

[CUI➡GUI]
\$systemctl isolate graphical.target

[デフォルトの設定変更方法]
\$ systemctl set-default graphical.target
もしくは、
\$ systemctl set-default multi-user.target

[現在のデフォルト設定の確認]
\$ systemctl get-default

ネットワーク系コマンド

\$ nmtui
GUIでネットワークを設定出来る。
IPが複数付いた場合は、/etc/sysconfig/network-scripts/ifcfg-ethX に複数IPが記述されてると思うので、必要な部分を削除し、network restartしてください。

nmcli
CUIでネットワークを設定出来る。
コマンドを実行することにより、/etc/sysconfig/network-scripts/ifcfg-ethXを書き換えてくれます。
CentOS7.1からipv4.gatewayオプションが追加されたので、注意してください。

CentOS7.0 : \$ nmcli con mod 'eth0' ipv4.method manual ipv4.addresses "192.168.1.1/24 192.168.1.254"

CentOS7.1 : \$ nmcli con mod 'eth0' ipv4.method manual ipv4.addresses "192.168.1.1/24" ipv4.gateway "192.168.1.254"

\$ route
\$ ip r
ルーティングテーブル表示
r はroute

\$ arp
\$ ip n
ARPテーブル表示
n はneighbor

\$ netstat
\$ ss
ネットワーク接続、インターフェイスの状態などを表示。

しかし2014/10/10現在では、ssコマンドを使うのは推奨しません。
「UDPの開放ポートがTCPと報告される」というバグががあるそうです。
http://d.hatena.ne.jp/ozuma/20140915/1410774381

\$ netstat -i
\$ ip -s l
ネットワークインターフェースの統計情報を表示
l はLink。

\$ ifup eth0
\$ ifdown eth0
\$ nmcli c up eno0
\$ nmcli c down eno0
インターフェイスをup / downする

\$ nmcli device
管理されてるネットワークインターフェイスを表示

ネットワーク周りの変更点
①NICの設定は、NetworkManagerで行う。インターフェイスでNM_CONTROLLED="yes"にしないと、/etc/resolv.confの設定が初期化される。
インターフェイスにDNS1="8.8.8.8"を書いて、resolvに反映させるか、
/etc/NetworkManager/NetworkManager.confにdns=noneを書いて、直接resolv.confを編集するかを選択。
②WiFi, Infiniband, VPN, Bonding, Bridge, VLANなどの設定を統合。
③今まで/etc/sysconfig/network-scriptsや、ifupコマンドなどネットワーク周りのコマンドも統合。
なので、ifconfigなどが含まれてたnet-toolsはデフォルトでインストールされなくなった。(centos7からはiproute2)
④40GbE対応。
⑤eth0➡eno0に変更
⑥6➡7に移行出来るように、/etc/sysconfig/network-scripts/配下のコンフィグは有効となっている。

DB

MySQL
MariaDB
MySQLからフォークしてきたものなので、あまり違いはない。
InnoDB➡XtraDBに置き換わる
MariaDBとMySQLのレプリケーションは可能でした。

NTP

6.5よりサポート
PTP(Precision Time Protocol)v2
6.5でも採用しているがNTPより高精度で、PTP対応NICでパケット送信時にタイムスタンプを付与して誤差を削減。

PTP対応ドライバはbnx2x, tg3, e1000e, igb, ixgbe, sfc。

chrony
ntpdに代わりデフォルトになった。
一応ntpdもデフォルトで入ってますが、バージョンが上がるにつれてchronyに移行するのではないかと思います
同期時間の短縮や、
設定ファイルは /etc/chrony.conf

NTP vs Chrony速度測定

Memory

freeコマンドと/proc/meminfoにavailableが表示されるようになった

パスワードを忘れたときの対処

①grubメニュー画面で矢印でOSを選び、eボタン
②kernelを選んでeボタン
③最後尾にsingleを入力し、Enter
④passwdで変更してください⑤再起動
\$ reboot
①grubメニュー画面で矢印でOSを選び、eボタン
②linux16と書いている部分の最後尾にrd.breakを追加する
③ctrl+xで起動
④sysrootをrwで再マウントする
\$ mount -o remount,rw /sysroot
⑤ルートディレクトリを/sysrootに変更
\$ chroot /sysroot
⑥パスワードを変更\$ passwd
⑦selinuxを使ってるなら、再起動後、自動でラベリングを付け直すようにファイルを作成する。
\$ touch /.autorelabel
⑧再起動
\$ reboot

fstabの記述ミスで起動しなくなったときの対処

①Give root passwrd for maintenance
(or type Control-D to continue):
と表示されるのでパスワードを入力し、メンテナンスモードに入る
②ファイルシステムがReadOnlyでマウントされてるので、rwでマウントし直す
\$ mount -o remount,rw /
③\$ mount -aで、エラーを見て、適宜/etc/fstabを書き換え、reboot
①grubメニュー画面で矢印でOSを選び、eボタン
②linux16と書いている部分の最後尾にsystemd.unit=emergency.targetを追加する
③ctrl+xで起動
④passwordを入力しメンテナンスモードでログイン
⑤ファイルシステムがReadOnlyでマウントされてるので、rwでマウントし直す
\$ mount -o remount,rw /
⑥\$ mount -aで、エラーを見て、適宜/etc/fstabを書き換え、reboot


所感


  • 意外にNTP周りが進化してました。爆速に。

  • 「設定ファイルをいじる」より「コマンドで設定を変更する」という方式に倒そうとしてる感じがします

  • コマンドの統合が全体的に見受けられました。特にsystemctl。
    コマンド統合によって設定ファイルの場所を覚えなくて済みますし、
    設定時に打つ文字も減って便利。
    ただ、$ systemctl list-unit-filesを打つのはめんどくさい。。

  • コマンドの統合➡新しいコマンドを覚えなければならないという学習コスト。

  • targetcli不安定すぎる。時間が経つと急にservice failedになったり。

  • systemctlコマンドで、サービス名のtab補完が効かないのが本当に辛い。デフォルトで入れて欲しい。