LPIC2: Linux カーネル

[root@px-lpic1-centos6 ~]# find /lib/modules/`uname -r`/kernel -name "*.ko" | head
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/lockd/lockd.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/squashfs/squashfs.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/udf/udf.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/autofs4/autofs4.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/jffs2/jffs2.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/nfs_common/nfs_acl.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/gfs2/gfs2.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext4/ext4.ko
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/jbd/jbd.ko
[root@px-lpic1-centos6 ~]# modinfo ext4
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext4/ext4.ko
license:        GPL
description:    Fourth Extended Filesystem
author:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion:     74AEE2BDA63AC8482A78F4D
depends:        mbcache,jbd2
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions
[root@px-lpic1-centos6 ~]# lsmod | head
Module                  Size  Used by
autofs4                27000  3
8021q                  20475  0
garp                    7152  1 8021q
stp                     2218  1 garp
llc                     5418  2 garp,stp
ipt_REJECT              2383  2
nf_conntrack_ipv4       9186  2
nf_defrag_ipv4          1483  1 nf_conntrack_ipv4
iptable_filter          2793  1
[root@px-lpic1-centos6 ~]# find /lib/modules/`uname -r`/kernel -name "autofs4.ko"
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/autofs4/autofs4.ko
[root@px-lpic1-centos6 ~]# find /lib/modules/`uname -r`/kernel -name "autofs4.ko" | xargs ls -lh
-rwxr--r--. 1 root root 58K  5月 31 05:07 2017 /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/autofs4/autofs4.ko
[root@px-lpic1-centos6 ~]# cat /proc/modules | head
autofs4 27000 3 - Live 0xffffffffa0578000
8021q 20475 0 - Live 0xffffffffa056e000
garp 7152 1 8021q, Live 0xffffffffa0568000
stp 2218 1 garp, Live 0xffffffffa0564000
llc 5418 2 garp,stp, Live 0xffffffffa055e000
ipt_REJECT 2383 2 - Live 0xffffffffa0533000
nf_conntrack_ipv4 9186 2 - Live 0xffffffffa052c000
nf_defrag_ipv4 1483 1 nf_conntrack_ipv4, Live 0xffffffffa0528000
iptable_filter 2793 1 - Live 0xffffffffa0524000
ip_tables 17895 1 iptable_filter, Live 0xffffffffa051b000
[root@px-lpic1-centos6 ~]# modinfo -a ext4
Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
[root@px-lpic1-centos6 ~]# modinfo -d ext4
Fourth Extended Filesystem
[root@px-lpic1-centos6 ~]# modinfo -l ext4
GPL
[root@px-lpic1-centos6 ~]# modinfo -n ext4
/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext4/ext4.ko
[root@px-lpic1-centos6 ~]# modinfo ext4
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext4/ext4.ko
license:        GPL
description:    Fourth Extended Filesystem
author:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion:     74AEE2BDA63AC8482A78F4D
depends:        mbcache,jbd2
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions
[root@px-lpic1-centos6 ~]# lsmod | grep xfs
[root@px-lpic1-centos6 ~]# modinfo xfs
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/xfs/xfs.ko
license:        GPL
description:    SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled
author:         Silicon Graphics, Inc.
srcversion:     06CA178475DC4F7F5169D42
depends:        exportfs
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions
[root@px-lpic1-centos6 ~]# lsmod | grep exportfs
[root@px-lpic1-centos6 ~]# modinfo exportfs
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
license:        GPL
srcversion:     1CA651A66F2E2EBCEAD08AC
depends:
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions
[root@px-lpic1-centos6 ~]# insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
[root@px-lpic1-centos6 ~]# lsmod | grep exportfs
exportfs                4236  0
[root@px-lpic1-centos6 ~]# rmmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
# xfs カーネルモジュールは exportfs カーネルモジュールに依存しているので先に exportfs カーネルモジュールをロードする必要がある
[root@px-lpic1-centos6 ~]# insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/xfs/xfs.ko
insmod: error inserting '/lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/xfs/xfs.ko': -1 Unknown symbol in module
[root@px-lpic1-centos6 ~]# insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/exportfs/exportfs.ko
[root@px-lpic1-centos6 ~]# insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/xfs/xfs.ko
[root@px-lpic1-centos6 ~]# lsmod | egrep "(exportfs|xfs)"
xfs                  1135639  0
exportfs                4236  1 xfs
[root@px-lpic1-centos6 ~]# rmmod exportfs
ERROR: Module exportfs is in use by xfs
[root@px-lpic1-centos6 ~]# rmmod -s exportfs
[root@px-lpic1-centos6 ~]# tail -n1 /var/log/messages
Jul  7 08:52:00 px-lpic1-centos6 rmmod: ERROR: Module exportfs is in use by xfs

modprobe

[root@px-lpic1-centos6 ~]# rmmod xfs
[root@px-lpic1-centos6 ~]# rmmod exportfs
[root@px-lpic1-centos6 ~]# modprobe xfs
[root@px-lpic1-centos6 ~]# modprobe -r xfs
[root@px-lpic1-centos6 ~]# lsmod | egrep "(exportfs|xfs)"
[root@px-lpic1-centos6 ~]# modprobe xfs
[root@px-lpic1-centos6 ~]# lsmod | egrep "(exportfs|xfs)"
xfs                  1135639  0
exportfs                4236  1 xfs
[root@px-lpic1-centos6 ~]# modprobe -r xfs
[root@px-lpic1-centos6 ~]# lsmod | egrep "(exportfs|xfs)"
[root@px-lpic1-centos6 ~]# modprobe -lt fs | head
kernel/fs/nfs_common/nfs_acl.ko
kernel/fs/nls/nls_cp737.ko
kernel/fs/nls/nls_cp775.ko
kernel/fs/nls/nls_cp850.ko
kernel/fs/nls/nls_cp852.ko
kernel/fs/nls/nls_cp855.ko
kernel/fs/nls/nls_cp857.ko
kernel/fs/nls/nls_cp860.ko
kernel/fs/nls/nls_cp861.ko
kernel/fs/nls/nls_cp862.ko
[root@px-lpic1-centos6 ~]# modprobe --show-depends ext3
insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/mbcache.ko
insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/jbd/jbd.ko
insmod /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext3/ext3.ko
[root@px-lpic1-centos6 ~]# modinfo ext3
filename:       /lib/modules/2.6.32-696.3.1.el6.x86_64/kernel/fs/ext3/ext3.ko
license:        GPL
description:    Second Extended Filesystem with journaling extensions
author:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion:     CF8EACB0D78355F028912B4
depends:        mbcache,jbd
vermagic:       2.6.32-696.3.1.el6.x86_64 SMP mod_unload modversions

よーし、おじさん iperf3 でネットワークの帯域測定しちゃうぞー(上り編)

iperfの使い方 | CCNA対策から学ぶネットワーク運用ガイド

$ iperf3 -v
iperf 3.1.3
Darwin Wataru-no-MacBook-Air.local 15.6.0 Darwin Kernel Version 15.6.0: Mon Aug 29 20:21:34 PDT 2016; root:xnu-3248.60.11~1/RELEASE_X86_64 x86_64
Optional features available: sendfile / zerocopy

上り側(サーバー)

その前に F/W のポートをあけておく。

別に永続的に開けたいわけではないので --permanent はつけない

firewall-cmd --zone=public --add-port=5201/tcp
# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

iperf3 ではデフォルトリッスンポート 5201/tcp なのだろうか。

下り側(クライアント)

iperf3 -c 192.0.3.4
Connecting to host 192.0.3.4, port 5201
[  4] local 192.168.0.2 port 63051 connected to 192.0.3.4 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.9 MBytes  91.6 Mbits/sec
[  4]   1.00-2.00   sec  11.1 MBytes  93.3 Mbits/sec
[  4]   2.00-3.00   sec  9.70 MBytes  81.4 Mbits/sec
[  4]   3.00-4.00   sec  11.4 MBytes  96.0 Mbits/sec
[  4]   4.00-5.00   sec  11.2 MBytes  93.7 Mbits/sec
[  4]   5.00-6.00   sec  11.3 MBytes  94.7 Mbits/sec
[  4]   6.00-7.00   sec  11.3 MBytes  94.5 Mbits/sec
[  4]   7.00-8.00   sec  11.0 MBytes  92.7 Mbits/sec
[  4]   8.00-9.00   sec  11.4 MBytes  96.0 Mbits/sec
[  4]   9.00-10.00  sec  11.3 MBytes  95.2 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec   111 MBytes  92.9 Mbits/sec                  sender
[  4]   0.00-10.00  sec   110 MBytes  92.5 Mbits/sec                  receiver

iperf Done.

上り側では次のような結果が出ている

-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.0.2.123, port 63050
[  5] local 192.0.3.4 port 5201 connected to 192.0.2.123 port 63051
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  10.4 MBytes  87.2 Mbits/sec
[  5]   1.00-2.00   sec  11.2 MBytes  93.8 Mbits/sec
[  5]   2.00-3.00   sec  9.68 MBytes  81.2 Mbits/sec
[  5]   3.00-4.00   sec  11.3 MBytes  95.1 Mbits/sec
[  5]   4.00-5.00   sec  11.1 MBytes  93.4 Mbits/sec
[  5]   5.00-6.00   sec  11.3 MBytes  95.0 Mbits/sec
[  5]   6.00-7.00   sec  11.3 MBytes  94.5 Mbits/sec
[  5]   7.00-8.00   sec  11.2 MBytes  93.7 Mbits/sec
[  5]   8.00-9.00   sec  11.3 MBytes  94.9 Mbits/sec
[  5]   9.00-10.00  sec  11.3 MBytes  95.0 Mbits/sec
[  5]  10.00-10.01  sec   112 KBytes   102 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.01  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.01  sec   110 MBytes  92.4 Mbits/sec                  receiver

用が済んだら Ctrl+C でプロセス殺す。

ポートも閉じる。

firewall-cmd --zone=public --remove-port=5201/tcp

Server was too busy and OOM Killer fired

昨日からサーバーに繋がりにくくなっていた。
サーバーに繋がらなくなった。
大方 php-fpm のプロセスがたくさん増えて swap 発生しまくってるんだろうと思った。

1vCPU に 512MB しかない VM にそんなに多くを期待してはいけない。

IP アドレスでアクセス制限かけてたからどうせ外出先からじゃアクセスできないし、戻ったら直そうと思っていた。
メールを確認しようとしたらいよいよ認証も通らなくなったので OOM Killer 発動したかと思ってさくらの VPS のコンソール上からシリアルコンソール接続して
今つないでいる IP のアクセス許可して top を見てみた。

見事に殺されている。
yum-cron のプロセスが死んでるのはいいが、 mysqld (中身は MariaDB )のプロセスまで殺されるのは勘弁してほしい。

[root@mx1 ~]# grep "Out of memory" /var/log/messages
Oct  9 07:10:09 mx1 kernel: Out of memory: Kill process 7192 (yum-cron) score 77 or sacrifice child
Oct  9 08:05:56 mx1 kernel: Out of memory: Kill process 7354 (yum-cron) score 82 or sacrifice child
Oct  9 09:17:09 mx1 kernel: Out of memory: Kill process 7493 (yum-cron) score 73 or sacrifice child
Oct  9 10:07:45 mx1 kernel: Out of memory: Kill process 6905 (mysqld) score 52 or sacrifice child

圧倒的 php-fpm のプロセス数。

OOMKillerTop

圧倒的メモリ不足。

[root@mx1 ~]# vmstat -aS m
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 2  0   1059     70    223    140    0    0  3632    28   19   14  0  1 99  0  0

ひとまず静かにデーモンリスタート

[root@mx1 ~]# systemctl restart php-fpm

余裕が出てきた。

free

[root@mx1 ~]# vmstat -aS m
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 2  0     70    342     87     26    0    0  3632    28   19   14  0  1 99  0  0

おしまい。

Cisco VIRL (Virtual Internet Routing Labo) を VMware Workstation 12.5 にインストールする

これから CCIE 取得を目指しています。
まだ CCENT 認定ですが。。。

Don’t complicate things.

とあるように、自分が何やってんのかわかっている場合を除いて余計なことはすんなよと書いてある。

2016-09-25_19h01_37

Step 1:  Get Started

ちなみに VirtualBox には対応していない。
Vt-x/AMDv が有効になっていることを確認すること。
つまり Vt-x/AMDv の仮想化が有効になっていることが必須です。

2016-09-25_19h25_23

Step 3:  Create and Configure Virtual Networks

5 つネットワークを作成する。

VMnet8 は NAT で VIRL 仮想マシンにホスト PC を通じたインターネット接続を提供する。
その他 4 つのネットワークは VIRL に外部 L2, および L3 のコネクティビティを提供する。
これらは

Flat
Flat1
SNAT
クラスタリング INT

すでに VMnet1 が存在していたらナンバリングを1つずつずらす。
いずれも ホストオンリーネットワーク とする。

VMnet1
172.16.1.0
255.255.255.0
ローカル DHCP サービスを使用して IP アドレスを VM に配布するのチェックが外れていることを確認する。

VMnet2 172.16.2.0/24
VMnet3 172.16.3.0/24
VMnet4 172.16.10.0/24

2016-09-25_19h02_43

2016-09-25_19h03_20

2016-09-25_19h03_44

2016-09-25_19h13_39

2016-09-25_19h15_30

最終的に以下のような感じになればいい。

2016-09-25_19h17_33

Step 4:  Deploy the VIRL OVA

いよいよ Cisco VIRL の OVA (Open Virtualization Format Archive) をインポートする。
事前に VIRL の OVA ファイルとライセンスファイル *.pem ファイルをダウンロードしておくこと。

https://virl.mediuscorp.com/my-account/

ちなみに OVA はアニメの Original Video Animation のことではないので注意。
OVA といいつつハイパーバイザーによってインポートできないことが多々にしてあり、ぜんぜんオープンな気がしないんだよなあ。

virl.1.2.64.pc.ova

2016-09-25_19h34_21

2016-09-25_19h36_58

VIRL 自身の起動やらなんやらの読み込みは速いことに越したことはないので、新しい仮想マシンのストレージパスには
容量が許すなら SSD 領域自身を指定することを強くおすすめする。

2016-09-25_19h40_38

インポートが終わるまで適当に時間を潰す。

2016-09-25_19h42_04

インポート完了、やったね。

2016-09-25_19h44_29

VIRL を起動したい気持ちを抑えて設定を確認・調整する。

2016-09-25_19h45_07

2016-09-25_19h51_00

最初のネットワークアダプタは NAT になっているのを確認したらそのままそっとしておく。
ネットワークアダプタ2~5はインポート直後はブリッジになっているので、さっき作った VMnet1~4 にそれぞれ対応付ける。

2016-09-25_19h59_56

次に Intel VT-x/EPT の仮想化が有効になっていることを確認する。

2016-09-25_20h26_40

そして最後はCPUとメモリ。
潤沢にあればあるほどいい。

最低限のスペックは 2 vCPU、 4GB だが、4 vCPU, 8GB かそれ以上のリソースを割り当てることが要求されている。
VMware Workstation の推奨メモリ容量は無視しろと書いてある。
特に他に立ち上げる VM も今のところ考えていないので私は 8vCPU, 16GB の割当てをおこなった。

2016-09-25_20h30_38

Step 5:  Prepare VIRL for Activation

VM を起動して ID: virl PASS: VIRL でログイン。

2016-09-25_20h34_28

ログイン後に表示される画面。バイオハザードマークが禍々しい。
おもむろに xterm を立ち上げる。

2016-09-25_20h35_27

以下のコマンドを入力して出力が以下のように出ればひとまずここまでの手順は OK 。
KVM (Kernel Based Virtual Machine) のアクセラレーション利用可能の表示が出なければ何かがおかしいので手順に沿ってやったか見直せと書いてある。

virl@virl:~$ sudo kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

2016-09-25_20h40_54

次にインターネットへの接続性を確認する。
VIRL は定期的に Cisco の SaltStack サーバーと通信をしてアクティベーションの妥当性を確認する必要がある。

ping -c 4 www.cisco.com
curl http://curltools.com/get-ip
wget --spider --no-verbose http://www.google.com

2016-09-25_20h45_14

VIRL のインストラクションにはないが、ここでひとつチューニングをしておく。
VIRL の割当メモリを使い果たすまで Swap を使うなという設定を入れる。
別にすぐ VIRL を割当メモリ目いっぱいまで酷使するわけでなければこの手順はすっ飛ばしてかまわない。
公式の手順にも載ってないし。

virl@virl:~$ sudo -i
root@virl:~# cat /proc/sys/vm/swappiness 
60

キーボードが英字配列になっていることに注意をする。
イコールは日本語キーボードの場合チルダ ~ のキーを Shift 無しでタイプした時に出てくる。
また、保存するときのコロン : はセミコロン ; のキーを Shift キー押しながらタイプすると入力できる。
また、 vi は vim でないことに注意する。
とても使いづらい。

root@virl:~# vi /etc/sysctl.conf
vm.swappiness = 0
root@virl:~# sysctl -p
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward = 1
vm.swappiness = 0
root@virl:~# cat /proc/sys/vm/swappiness 
0
root@virl:~# exit

中身をちょっと見るとわかるが、 Ubuntu Linux 14.04 LTS (Trusty) がベースとなっており、 OpenStack がインストールされているようだ。
なるほどなあ。

virl@virl:~$ cat /etc/debian_version 
jessie/sid
virl@virl:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"

Step 6:  Activate VIRL

VIRL の IP アドレスを調べてホスト側のブラウザからその IP にアクセスする。

2016-09-25_21h04_45

Web 管理画面が見えるはず。
圧倒的 Bootstrap 感。

2016-09-25_21h07_23

User Workspace Management を選択し、以下のログイン情報を入力する。

ID: uwmadmin
PASS: password

2016-09-25_21h10_05

2016-09-25_21h12_10

各フィールドを埋める。

Salt ID and domain には pem ファイルの拡張子抜きのファイル名を、
Customer email Address は読んで字のごとく、
List of Cisco salt masters は地理的に近いものを適当に選んで突っ込む。
正直日本の場合 us のほうでとくに問題はないと思われる。

us-1.virl.info, us-2.virl.info, us-3.virl.info, us-4.virl.info
eu-1.virl.info, eu-2.virl.info, eu-3.virl.info, eu-4.virl.info

Master sign public key はドントタッチミー。
Minion private RSA key in PEM format には pem ファイルの中身をまんまコピペする。

そして Reset ボタンクリック。

2016-09-25_21h21_42

どこか 1 つでも Salt サーバーとライセンスの検証ができていれば OK 。

2016-09-25_21h25_35

Step 7:  Customize the VIRL Configuration (Optional)

特筆して変更するところはないが、 16GB より多くのメモリを搭載しているなら RAMdisk オプションが使えるようだ。
インメモリディスクを使用することで、シミュレーションのスタートアップタイムを減らせるらしい。
速いに越したことはないのでここでさらにメモリを 16GB -> 24GB にして RAMdisk をオンにした。

24 * 1024 = 24576 MB

2016-09-25_21h38_20

まずメンテナンスモードを有効にしろとある。
メンテナンスモードを有効にする。
そして Apply 。

2016-09-25_21h40_59

オールグリーンになったらシステムリブートしろやと出てくるので、おとなしく再起動する。
WebUI 上の Reboot ボタンを押すだけで VIRL 仮想マシンをリブートできるみたい。
素晴らしいな・・・。

2016-09-25_21h44_07

リブート終わったら Disable maintenance mode にし、 OK ボタンをクリック

2016-09-25_21h46_21

Step 8:  Validate the VIRL Installation

VIRL が正しくインストール・設定できたことを以下のコマンドで検証せよとある。

OpenStack の Neutron ネットワーキングモジュールの動作確認ですね。
xterm をおもむろに立ち上げる。
alive のところが全部スマイリーマーク :-) になっていれば OK 。

virl@virl:~$ neutron agent-list
+--------------------------------------+--------------------+------+-------+----------------+---------------------------+
| id                                   | agent_type         | host | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+------+-------+----------------+---------------------------+
| 73edf60e-2951-4dfb-8ce7-a2fa58f9199a | DHCP agent         | virl | :-)   | True           | neutron-dhcp-agent        |
| be125ca6-3381-4e8a-95d1-6de54bd99788 | Linux bridge agent | virl | :-)   | True           | neutron-linuxbridge-agent |
| c3195bd1-f054-4a0b-85ae-3935ecbe260f | Metadata agent     | virl | :-)   | True           | neutron-metadata-agent    |
| defeaa84-8b4c-4c5c-b101-b1555520a710 | L3 agent           | virl | :-)   | True           | neutron-l3-agent          |
+--------------------------------------+--------------------+------+-------+----------------+---------------------------+

2016-09-25_21h52_43

そして VIRL STD と UWM サービスがすべて listening ステートになっていることを確認する。
インメモリ KVS である Redis も内部で動いていることが見て取れる。

virl@virl:~$ sudo virl_health_status | grep listening
...
(snip)
virl-vis-webserver listening on port 19402
ank-cisco-webserver listening on port 19401
STD server on url http://localhost:19399 is listening, server version 0.10.27.8
UWM server on url http://localhost:19400 is listening, server version 0.10.27.8
Webmux server on url http://localhost:19403 is listening
Redis server on 127.0.0.1:6379 is listening

2016-09-25_21h56_55

Display the VIRL license configuration

以下の点を確認する。

‘hostid’ が pem ファイルのファイル名部分と同じになっていること
‘product-capacity’ がライセンス上で許可されているノード数(私の場合は 30 )になっていること
‘product-expires’ ‘7’ となっていること。(7 日で切れるということ。切れたらまたソルトサーバーにバリデートしにいく)

virl@virl:~$ sudo virl_health_status | grep -A 4 -e hostid -e product
...
(snip)
hostid : ********.virl***.info
product-license : [u'us-1.virl.info', u'us-2.virl.info', u'us-3.virl.info', u'us-4.virl.info']
product-capacity : 30
product-expires : 7
features : [u'Cariden.MATE.import', u'Cariden.MATE.export']
product-usage : 0
uwm-url : http://192.168.200.128:19400/admin/salt/

2016-09-25_22h06_04

Step 8:  Install and Configure VM Maestro

ネットワークのトポロジを作成、シミュレーションするツール、 VM Maestro をインストールする。
Maestro とは芸術家、専門家、音楽の指揮者等の意味があるようだ。

というか、 VM Maestro のスプラッシュに指揮者のシルエットが出るようになっている。 最近はスプラッシュが出なくなったようだ。

2016-09-25_22h38_53

ブラウザで VIRL Server の WebUI にアクセスして、 VM Maestro クライアントをインストールするプラットフォームに応じたバイナリをダウンロードする。
ここでは Windows x64 アーキテクチャと仮定する(たぶんそんなに変わらない)。

2016-09-25_22h09_41

2016-09-25_22h11_30

ダウンロードしたやつを普通にインストール。

これもベースは Eclipse となっている。
オープンソース活用しまくりだな。

VM Maestro を立ち上げてライセンスアグリーメントに同意して、匿名のレポート送るか聞かれるので、チェックを入れてやめろとしておく。
文字化けしてるし。

こいつはクライアントなので、先程 VMware Workstation 上にインストールした VIRL サーバーなしには生きていけない。
接続先を VIRL サーバーに変えてやる必要がある。

2016-09-25_22h14_41

ID, パスワードは以下でよい、 IP アドレスはさっき調べた VIRL サーバーの IP アドレスを入力。

ID: guest
PASS: guest

そしてサービスへの接続チェックがオールグリーンになれば OK 。

2016-09-25_22h20_33

なんか Eclipse の Secure Storage にマスターパスワードが保存されたらしいので、リカバリ用の秘密の質問を入力するか聞かれるのでとりあえず Yes としておいた。

2016-09-25_22h21_49

2016-09-25_22h23_30

最後にやること

以下の手順で Node Subtype の一覧をデフォルトにリセットして、 VIRL ホストで利用可能な node sub-types をすべて再取得する必要がある。

File -> Preferences を開く。
まずは Restore Defaults でリセットする。

2016-09-25_22h30_49

そして VIRL サーバーからサブタイプの一覧を取得する。

2016-09-25_22h32_45

シミュレーションをちょっとやってみよう

RAMdisk を enable にした状態。
8 vCPU
24 GB

すべてのノードが起動するまでに要した時間はおよそ 1 分程度。

(INFO) [Sep/25/2016 13:43:37] simulation "topology-97p7fh": nodes can start
(INFO) [Sep/25/2016 13:43:43] Starting node "~mgmt-lxc"
(INFO) [Sep/25/2016 13:43:44] Starting node "iosv-1"
(INFO) [Sep/25/2016 13:43:49] Starting node "iosv-2"
(INFO) [Sep/25/2016 13:43:54] Starting node "iosv-3"
(INFO) [Sep/25/2016 13:44:00] Starting node "iosvl2-1"
(INFO) [Sep/25/2016 13:44:07] Starting node "server-1"
(INFO) [Sep/25/2016 13:44:07] Node "iosv-1" state changed from ABSENT to ACTIVE
(INFO) [Sep/25/2016 13:44:07] Node "iosv-2" state changed from ABSENT to ACTIVE
(INFO) [Sep/25/2016 13:44:07] Node "iosv-3" state changed from ABSENT to ACTIVE
(INFO) [Sep/25/2016 13:44:07] Node "iosvl2-1" state changed from ABSENT to BUILDING
(INFO) [Sep/25/2016 13:44:07] Node "~mgmt-lxc" state changed from ABSENT to ACTIVE
(INFO) [Sep/25/2016 13:44:12] Starting node "server-2"
(INFO) [Sep/25/2016 13:44:17] Starting node "server-3"
(INFO) [Sep/25/2016 13:44:36] Node "iosvl2-1" state changed from BUILDING to ACTIVE
(INFO) [Sep/25/2016 13:44:36] Node "server-1" state changed from ABSENT to ACTIVE
(INFO) [Sep/25/2016 13:44:36] Node "server-2" state changed from ABSENT to ACTIVE
(INFO) [Sep/25/2016 13:44:36] Node "server-3" state changed from ABSENT to ACTIVE

ルーター右クリックでコンソールポートに接続できる。

2016-09-25_22h57_16

10.1.0.0/24 のマルチアクセスネットワークを想定して IP アドレスをルーターに設定して ping を打ってみたところ。

2016-09-25_22h54_57

お疲れ様でした。

Tips

あとの普段のシミュレーション自体は VIRL の仮想マシンが立ち上がっていればよいので、とくに Linux にログインする必要もなければ、 WebUI にログインする必要もない。

参考サイト

  1. VIRL via VMware Workstation
  2. VIRL | CCIEおじさん日記

Ubuntu 16.04 LTS に open-vm-tools をインストールする(VMware Workstation)

VMware Workstation に VMware Tools をいつものようにインストールしようとしたら今は open-vm-tools 入れるのが普通やで?あんちゃん正気か?というメッセージが出てきた。

wnoguchi@pgubuntu1604:~/vmware-tools-distrib$ sudo ./vmware-install.pl 
[sudo] wnoguchi のパスワード: 
open-vm-tools are available from the OS vendor and VMware recommends using 
open-vm-tools. See http://kb.vmware.com/kb/2073803 for more information.
Do you still want to proceed with this legacy installer? [no] no

前から open-vm-tools を入れるのが最近のトレンドと知ってはいたが、何度目かこう聞かれたので簡単な手順をメモ。
URL だけ書いてあってどうやってインストールするとか書いてなかったから、open とかいうぐらいだからどうせパッケージとしてあるだろうと思って検索したらあった。

wnoguchi@pgubuntu1604:~/vmware-tools-distrib$ sudo apt-cache search open-vm-tools
open-vm-tools - Open VMware Tools for virtual machines hosted on VMware (CLI)
open-vm-tools-dev - Open VMware Tools for virtual machines hosted on VMware (development)
open-vm-tools-desktop - Open VMware Tools for virtual machines hosted on VMware (GUI)
open-vm-tools-dkms - Open VMware Tools vmxnet kernel module (deprecated)

私の入れてるのはデスクトップ版の Ubuntu なので open-vm-tools-desktop 入れれば良さそう。

sudo apt-get -y install open-vm-tools-desktop

これで再起動すればおわり。

Ubuntu に open-vm-tools を入れる(VMware Workstation)

VMware Tools 入れようと思ったら open-vm-tools 入れろって言われた。
VMware Tools のオープンソース実装らしい。
だったら VMware Tools の tarball 展開する前に言えって思ったけど、入れてみる。

URL に飛んでみたらダウンロードページらしきものが見当たらないので apt を検索してみたらあった。
それを入れる。
Linux 系は gcc やら他のものいろいろ入れないといけないので、コンパイル済みのバイナリを提供しているらしい。
デスクトップ環境なら -desktop を、 Server 環境の場合は無印(CLI版)を入れる。

sudo apt-get -y install open-vm-tools-desktop
  1. vmware/open-vm-tools: Official repository of VMware open-vm-tools project
  2. Linux仮想マシンでVMware Toolsではなくopen-vm-toolsを使う | 仮想(VMware & Hyper-V)/クラウド・エンジニア技術ブログ
  3. open-vm-tools – Google 検索

GNOME のディレクトリ名を日本語から英語に直す

もう何回同じこと検索しているのかわからないので記す。
RedHad 系(RHEL, Fedora, CentOS)、 Ubuntu であろうがなかろうが GTK 使ってるディスプレイマネージャはこの方法で修正できる。


LANG=C xdg-user-dirs-gtk-update

特に日本語ディレクトリ名にしょっちゅう里心がつく人でなければ二度と聞くなチェックボックスにチェックを入れる。
これで完了。

ホームディレクトリのフォルダ名を日本語から英語に変更するには - @IT

Ubuntu Server 14.04 LTS から 16.04 LTS にアップグレードした

最初はプレーンな Jenkins しか入っていないからクリーンインストールしたかったんだけど、
サーバマシンが古すぎるからなのか 16.04 のインストールイメージは NIC を認識しない。
ドライバを探してきて入れるのがだるいのでアップグレードすることに決めた。

まず以下のアップグレードマネージャを入れる。

$ sudo apt-get install update-manager-core

ここで一つ注意。

sudo vim /etc/update-manager/release-upgrades

Prompt=normal にする必要がある。

# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting behavior, valid options:
#
#  never  - Never check for a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the release that immediately succeeds the currently-running
#           release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that this option should not be
#           used if the currently-running release is not itself an LTS
#           release, since in that case the upgrader won't be able to
#           determine if a newer release is available.
#Prompt=lts
Prompt=normal
wnoguchi@phy2:~$ sudo do-release-upgrade
Checking for a new Ubuntu release
Get:1 Upgrade tool signature [198 B]
Get:2 Upgrade tool [1230 kB]
Fetched 1230 kB in 0s (0 B/s)
authenticate 'wily.tar.gz' against 'wily.tar.gz.gpg'
extracting 'wily.tar.gz'
[screen is terminating]

Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?

Continue [yN] N
=== Command terminated with exit status 1 (Thu May  5 13:20:06 2016) ===

まあ、 screen が立ち上がっているようなので、大丈夫みたいだが。

Ign http://us.archive.ubuntu.com trusty/main Translation-en_US
Ign http://us.archive.ubuntu.com trusty/multiverse Translation-en_US
Ign http://us.archive.ubuntu.com trusty/restricted Translation-en_US
Ign http://us.archive.ubuntu.com trusty/universe Translation-en_US
Fetched 5,083 kB in 6s (13.6 MB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
Building data structures... Done

Updating repository information

Third party sources disabled

Some third party entries in your sources.list were disabled. You can
re-enable them after the upgrade with the 'software-properties' tool
or your package manager.

To continue please press [ENTER]

(snip)

Reading package lists... Done
Building dependency tree
Reading state information... Done
Building data structures... Done

Calculating the changes

Calculating the changes

Do you want to start the upgrade?


1 installed package is no longer supported by Canonical. You can
still get support from the community.

6 packages are going to be removed. 131 new packages are going to be
installed. 411 packages are going to be upgraded.

You have to download a total of 317 M. This download will take about
3 minutes with your connection.

Installing the upgrade can take several hours. Once the download has
finished, the process cannot be canceled.

 Continue [yN]  Details [d]y

ちょっと時間がかかる。

「libpam, libc, libssl とかのパッケージのインストール中はいくつかのサービスをリスタートする必要があるけど、なんにも聞かずにリスタートしてもいい?」と聞かれる。

 ┌────────────┤ Configuring libc6 ├──────────────┐
 │                                                                           │
 │ There are services installed on your system which need to be restarted    │
 │ when certain libraries, such as libpam, libc, and libssl, are upgraded.   │
 │ Since these restarts may cause interruptions of service for the system,   │
 │ you will normally be prompted on each upgrade for the list of services    │
 │ you wish to restart.  You can choose this option to avoid being           │
 │ prompted; instead, all necessary restarts will be done for you            │
 │ automatically so you can avoid being asked questions on each library      │
 │ upgrade.                                                                  │
 │                                                                           │
 │ Restart services during package upgrades without asking?                  │
 │                                                                           │
 │                    <Yes>                       <No>                       │
 │                                                                           │
 └──────────────────────────────────────┘

(snip)
Unpacking psmisc (22.21-2build1) over (22.20-1ubuntu2) ...
Preparing to unpack .../ubuntu-release-upgrader-core_1%3a15.10.14.4_all.deb ...
Unpacking ubuntu-release-upgrader-core (1:15.10.14.4) over (1:0.220.8) ...
Preparing to unpack .../python3-distupgrade_1%3a15.10.14.4_all.deb ...
Unpacking python3-distupgrade (1:15.10.14.4) over (1:0.220.8) ...
Preparing to unpack .../python3-update-manager_1%3a15.10.3_all.deb ...
Unpacking python3-update-manager (1:15.10.3) over (1:0.196.14) ...
Preparing to unpack .../update-manager-core_1%3a15.10.3_all.deb ...
Unpacking update-manager-core (1:15.10.3) over (1:0.196.14) ...
Preparing to unpack .../python3-gi_3.16.2-1build1_amd64.deb ...
Unpacking python3-gi (3.16.2-1build1) over (3.12.0-1ubuntu1) ...
Preparing to unpack .../rsync_3.1.1-3ubuntu0.15.10.1_amd64.deb ...
Unpacking rsync (3.1.1-3ubuntu0.15.10.1) over (3.1.0-2ubuntu0.2) ...
Preparing to unpack .../shared-mime-info_1.3-1_amd64.deb ...
Unpacking shared-mime-info (1.3-1) over (1.2-0ubuntu3) ...
Preparing to unpack .../tcpdump_4.7.4-1ubuntu1_amd64.deb ...
(snip)

いいよー。と答える。
すごく時間がかかる。


(snip)
Setting up command-not-found (0.3ubuntu15.10.1) ...
Installing new version of config file /etc/zsh_command_not_found ...
Setting up plymouth-theme-ubuntu-text (0.9.0-0ubuntu9) ...
update-initramfs: deferring update (trigger activated)
Setting up python3-distupgrade (1:15.10.14.4) ...
Setting up python3-update-manager (1:15.10.3) ...
Setting up ubuntu-release-upgrader-core (1:15.10.14.4) ...

Configuration file '/etc/update-manager/release-upgrades'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** release-upgrades (Y/I/N/O/D/Z) [default=N] ?N

パッケージのメンテナからのリリースのディストリバージョンに上げるかどうか聞かれる。
LTS から変えたくないので N と答える。


Remove obsolete packages?


25 packages are going to be removed.

 Continue [yN]  Details [d]y
Fetched 0 B in 0s (0 B/s)

(snip)

Processing triggers for man-db (2.7.4-1) ...
Processing triggers for libc-bin (2.21-0ubuntu4.1) ...

System upgrade is complete.

Restart required

To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.

Continue [yN] y

システム再起動しろやと出るので再起動する。
なんか途中で 15.10 とかプロンプト出たんだけど大丈夫かな、心配だなあ・・・・。
16.04 にしたかったんだけど・・・。
英語読み間違えたか?


➜  ~ ssh phy2
Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-35-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Thu May  5 14:40:07 JST 2016

  System load:  1.76             Processes:           174
  Usage of /:   8.0% of 1.78TB   Users logged in:     0
  Memory usage: 5%               IP address for eth0: 172.16.216.2
  Swap usage:   0%               IP address for p7p1: 172.17.1.1

  Graph this data and manage this system at:
    https://landscape.canonical.com/

Last login: Thu May  5 13:22:30 2016
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

あかん、、、

Normal なの確認してもう一発あげる。


wnoguchi@phy2:~$ sudo vim /etc/update-manager/release-upgrades
wnoguchi@phy2:~$ sudo do-release-upgrade

うまくいった。

Samba ファイルサーバーの構築 (CnetOS7.2)

認証無しで共有サーバーに書き込めるのがいいと思っていたけど、しゃべる NetBIOS のプロトコルのバージョンが下がって遅くなるんだよね。
なので pdbedit で認証されているユーザじゃないと書き込めないようになっています。
ちなみに Samba のバージョンは 4 系なので Active Directory ドメインコントローラとして動作させようと思えば構築できる。

[root@phy3 samba]# yum info samba
(snip)
名前                : samba
アーキテクチャー    : x86_64
バージョン          : 4.2.10
リリース            : 6.el7_2
容量                : 1.8 M
リポジトリー        : installed
提供元リポジトリー  : updates
要約                : Server and Client software to interoperate with Windows machines
URL                 : http://www.samba.org/
ライセンス          : GPLv3+ and LGPLv3+
説明                : Samba is the standard Windows interoperability suite of programs for Linux and Unix.

Samba のインストール

sudo yum -y install samba
sudo mkdir /var/samba

自分の共有フォルダを作成

mkdir ~/samba

既存のユーザを追加

こいつで認証を通す。

sudo pdbedit -a wnoguchi
new password:
retype new password:
Unix username:        wnoguchi
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-3726826207-3823386518-2277225043-1000
Primary Group SID:    S-1-5-21-3726826207-3823386518-2277225043-513
Full Name:            Wataru Noguchi
Home Directory:       \\phy3\wnoguchi
HomeDir Drive:
Logon Script:
Profile Path:         \\phy3\wnoguchi\profile
Domain:               PHY3
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    水, 04  5月 2016 10:11:26 JST
Password can change:  水, 04  5月 2016 10:11:26 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

共有フォルダの所有者変更

自分しか使わないけどね。。。

sudo chown nobody:nobody /var/samba

Samba の設定

  • 設定ファイルバックアップ
sudo cp -rp /etc/samba{,.orig}
  • /etc/samba/smb.conf
[global]
unix charset = UTF-8
dos charset = CP932

workgroup = MYGROUP
↓
workgroup = PG1X

アクセス許可設定

;    hosts allow = 127. 192.168.12. 192.168.13.
↓
    hosts allow = 127. 172.16. 172.17. 172.18.

プリンタ使わない
    load printers = yes
    disable spoolss = yes

[homes]
    comment = Home Directories
    path = %H/samba

    vfs objects = recycle
    recycle:repository = .recycle
    recycle:keeptree = no
    recycle:versions = yes
    recycle:touch = no
    recycle:maxsize = 0
    recycle:exclude = *.tmp ~$*

[public]
    comment = Public Stuff
    path = /var/samba
    public = yes
    writable = yes
    only guest = yes
    vfs objects = recycle
    recycle:repository = .recycle
    recycle:keeptree = no
    recycle:versions = yes
    recycle:touch = no
    recycle:maxsize = 0
    recycle:exclude = *.tmp ~$*

smb, nmb 起動

sudo systemctl start smb
sudo systemctl start nmb
sudo systemctl enable smb
sudo systemctl enable nmb

ごみ箱を定期的に空にするスクリプトを作成

1ヶ月間 = 30 日 = 30 * 24 時間 = 720 時間 アクセスのないものは完全に削除する

sudo cat <<'EOF' >/etc/cron.weekly/recyclewatch
#!/bin/bash
for user in `ls /home/`
do
  if [ -d /home/$user/.recycle ]; then
    tmpwatch -f 720 /home/$user/.recycle/
  fi
done
if [ -d /var/samba/.recycle ]; then
  tmpwatch -f 720 /var/samba/.recycle/
fi
EOF
sudo chmod 744 /etc/cron.weekly/recyclewatch

ファイアウォールの穴を開ける

sudo firewall-cmd --permanent --zone=public --add-service=samba
sudo firewall-cmd --reload

接続の仕方

認証聞かれます。

Windows の場合

\\72.16.216.3
\\72.16.216.3\public\

Mac, Linux の場合

smb://172.16.216.3/
smb://172.16.216.3/public/

トラブルシューティング

認証は通るみたいだが接続はできない。

[root@phy3 samba]# tailf /var/log/samba/log.macbookair-d7e0
[2016/05/04 11:00:01.995083,  0] ../source3/smbd/service.c:798(make_connection_snum)
  canonicalize_connect_path failed for service public, path /home/samba
[2016/05/04 11:00:01.997818,  0] ../source3/smbd/service.c:798(make_connection_snum)
  canonicalize_connect_path failed for service public, path /home/samba
[2016/05/04 11:01:04.905785,  0] ../source3/smbd/service.c:798(make_connection_snum)
  canonicalize_connect_path failed for service public, path /home/samba

Oops… 書き間違い。
そもそも存在しないディレクトリを指定していたりするとこんなエラーになる。
修正する。

[public]
    comment = Public Stuff
    path = /home/samba
↓
[public]
    comment = Public Stuff
    path = /var/samba

そしてリスタート。

sudo systemctl restart smb
sudo systemctl restart nmb

参考サイト

  1. Windowsファイルサーバー構築(Samba) – CentOSで自宅サーバー構築
  2. CentOS7にSambaをインストール | 俺的備忘録 〜なんかいろいろ〜