CentOS 7設定メモ

サーバにCentOS 7をインストールしたので、メモを残しておく。

ネットワーク

あぁ、インタフェース名がenp6s0とかenp7s0になっているね。それぞれのPCI IDは06:00.0と07:00.0。

管理ツールはNetwork Administration Toolがなくなり、Network Managerに一本化されたそうな。今まではインストール後速攻に削除していたけど、使ってみるか。Network Managerではネットワーク設定をコネクションという概念で抽象化しているけど、一番単純なケースはインタフェース=コネクション。

設定ファイル自体は/etc/sysconfig/network-scripts/ifcfg-<コネクション名>なのは一緒。ターミナルから使えるコマンドは、nmtuiとnmcli。

$ nmcli c sh  # コネクション一覧表示
$ nmcli d sh enp6s0  # デバイスenp6s0の情報表示

SSH

sshd_configを編集して、サービスを有効にしておく。

$ sudo systemctl start sshd.service
$ sudo systemctl enable sshd.service

ファイアウォール

iptablesサービスの代わりにfirewalldが導入されている。内部的にはiptablesコマンドでnetfilterの設定を行っている。

ゾーンってのがあるね。デフォルトはpublic。/usr/lib/firewalld/zones以下にゾーン毎の設定が記述されたXMLファイルがある。これによるとsshとdhcpv6-clientだけ許可するようだ。

$ sudo firewall-cmd --get-default-zone
public
$ sudo firewall-cmd --get-active-zone
public
  interfaces: enp6s0

例えば、80番ポートを通すために、ゾーンにサービスを追加する場合は、こんな感じ(--permanentオプションを付けると再起動後も有効になる)。

$ sudo firewall-cmd --add-service=http --zone=public --permanent

クラスタを作るには、外部用をexternal、内部用をinternalにするとよいかな。externalにはデフォルトでmasqueradeの設定が入っている。

Rich rulesという感じで、iptablesの記法で指定することもできるとのこと。

NFS

/homeをクラスタ内で共有する。まずはNFSサーバ側の設定。

$ cat /etc/exports
/home 192.168.0.0/24(rw)

systemdの設定。nfs-server.serviceとnfs-lock.serviceを起動する。

$ sudo systemctl enable nfs-server.service nfs-lock.service
$ sudo systemctl start nfs-server.service nfs-lock.service

デフォルトではNFS関係のパケットはファイアウォールを通過できないので、ルールを変更する。

$ sudo firewall-cmd --add-service=nfs --permanent 
$ sudo firewall-cmd --add-service=mountd --permanent          
$ sudo firewall-cmd --add-service=rpc-bind --permanent        
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all
public (default, active)
  interfaces: enp5s0 enp6s0 virbr0
  sources: 
  services: dhcpv6-client mdns mountd nfs rpc-bind ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

あとはクライアント側の/etc/fstabを修正する。

172.168.0.1:/home       /home   nfs     rw,hard,intr,rsize=32768,wsize=32768,async      0 0

このままではmountできない。SELinuxの設定が必要なようだ。ということで、/etc/selinux/configを編集して無効化。。。

QEMU/KVM

CentOS 7で採用されているバージョンは、QEMU/KVMが1.5.3、libvirtが1.1.1。

vagrantとか使っていると、面倒くさいなと感じてしまうが、ISOイメージをダウンロードして、virt-installでゲストOSをインストールする。CLIで済ます。

$ sudo yum install qemu-kvm libvirt virt-install
$ sudo systemctl enable libvirtd.service
$ sudo systemctl start libvirtd.service
$ qemu-img create -f qcow2 /data/images/guest1-centos7.img 8G
$ sudo virt-install --name=guest1-centos7 --hvm --virt-type=kvm \
--disk path=/data/images/guest1-centos7.img,format=qcow2 --graphics none \
--vcpus=2 --ram=2048 --location=/data/iso/CentOS-7.0-1406-x86_64-Minimal.iso \
--network bridge=virbr0 --os-type=linux --os-variant=rhel7 \
--extra-args='console=tty0 console=ttyS0,115200n8'

久々にやったらパラメータ間違えて途中で止まって中途半端な状態に。その場合は、

$ sudo virsh undefine guest1-centos7

で消去してやり直す。

以下はオプショナルな設定。

Nested VMXを実行する場合は、次のファイルを用意して、kvm_intelモジュールをリロードする。

$ cat /etc/modprovbe.d/kvm-nested.conf
options kvm_intel nested=1

libvirtの方は、最低限VMXのfeature bitだけを立てればいいが、CPUモードをhost-passthroughにしてもOK。ただ、host-passthroughは安定している雰囲気ではないので、お勧めしない。

  <cpu mode='host-passthrough'/>