gami のすべての投稿

systemd.nspawn

 仮想環境にsystemd-nspawnを使うにあたって、systemd-nspawan@machineを編集していたのだが、nspawnファイルを使うほうが良いらしい。

/etc/systemd/nspawn/machine.nspawnを作ればそれを読み取ってくれるらしい。読み取らせるオプションがsystemd-nspawnの–settings=override だった。

 プロセスを見ると–network-veth とか -U とかついているんだけどoverrideでちゃんとnspawnファイルを読み込んでいるらしくそちらが有効になっているようだ。

 一番怖かったのは-Uで、やけに起動に時間がかかるな、と思ったら全部のUIDをprivate用に変更してくれやがって修正が大変でした。
これを外す方法がわからなかったのでsystemctl edit したと言っても過言ではない。
PrivateUsers=0 がその設定。

/etc/systemd/machine.nspwan

[Exec]
Boot=true
Hostname=machine
LinkJournal=try-guest
PrivateUsers=0

[Network]
Bridge=bridge0

[Files]
Bind=/home

systemctl edit systemd-nspawn@machine.service
するのとどっちがいいかというと、一応用意されている.nspawnファイルの方が良いのかなーということで全部.nspawnに置き換えた。
とりあえず問題は出ていない。

 あと、mount -o bind で共有するより、Bindで指定するほうが、host0で余計なマウントが出てこない(cgroupでnamespaceが分けられている?)ので良さそうだ。まあhomeぐらいしかないんだけど。
/var/cache/apt/archivesとか共有してもいいかもしんない。

 ちなみにネットワークを分けずにhost0のネットワークそのまま使う場合には、[Network]にPrivate=false でOK。

遅いSSD

xenをやめてsystemd-nspawnにしてから約1か月。

異常に重い。何かするとあっという間にload average 30とか50とか。ひどい時は200とか。
kworkerが異常発生していたりするんだけど状況がよくわからず困っていた。

何となくHDDが重い気がしていたんだけど調べる方法がわからず我慢していた。
ふとベンチマークしてみようと、hdparm使ってみた。

sudo hdparm -tT --direct /dev/sd[a-d]

/dev/sda:
Timing O_DIRECT cached reads: 496 MB in 2.00 seconds = 247.44 MB/sec
Timing O_DIRECT disk reads: 380 MB in 3.00 seconds = 126.58 MB/sec

/dev/sdb:
Timing O_DIRECT cached reads: 912 MB in 2.00 seconds = 455.98 MB/sec
Timing O_DIRECT disk reads: 454 MB in 3.01 seconds = 150.90 MB/sec

/dev/sdc:
Timing O_DIRECT cached reads: 264 MB in 2.00 seconds = 131.71 MB/sec
Timing O_DIRECT disk reads: 392 MB in 3.00 seconds = 130.59 MB/sec

/dev/sdd:
Timing O_DIRECT cached reads: 528 MB in 2.00 seconds = 263.75 MB/sec
Timing O_DIRECT disk reads: 436 MB in 3.01 seconds = 144.72 MB/sec

ちなみにsdcがSSD。
なんでやねん。一番遅い。

SSDだから、とlvm_cacheにしていたのだが、実は一番遅いメディアだった!そんな馬鹿な orz
昔はカーネルがちゃんとSSDだと認識していた気がするんだが、/sys/block/sdc/queue/rotational = 1 だった。

とりあえずlvm_cacheやめた。
適当にhddに負荷かけてみたが、高負荷にはならなかった & kworker 増えなかったので、とりあえずはlvm_cacheのせいにしておこう。

ssh と dns

ssh の VerifyHostKeyDNS を使ってみようと思い、DNSにsshfpを登録してみた。

結論から言うと失敗で、DNSSECでadフラグが立つ(=ルートからの信頼チェーンが成功する)必要があり、オレオレ認証のDNSではinsecureなkeyとして扱われるらしい。

デバッグオプション付けると以下のようなメッセージが出る

debug1: found 2 insecure fingerprints in DNS
matching host key fingerprint found in DNS

一応、DNSからhostkey 入手してマッチング成功ではあるのだが、信頼できないのでknown_hostsに登録しないとダメっぽい。

信頼できるキーの場合はknown_hostsになくても大丈夫らしいのだが、試す環境がないので不明。

まあせっかく作ったからこのままにするか

やり方としては

ssh-keygen -r hostName でSSHFPのキーが出てくるのでそれをDNSに登録するだけ。keyを指定するなら
ssh-keygen -r hostName -f /etc/ssh/ssh_host_algorithm_key.pub

 

レイコップその2

前回買ったレイコップに引き続き、またまた中古屋で見つけたので再度購入。1,780円。
今度は収納台付きだった。が。化粧箱は無し。いらんけどw

こっちはブラシがついてパワーモードがあった。威力はあるが布団が吸い付いてくるレベルなので微妙。でも基本的に吸引力弱めな感じなのでこれはこれでいいのかも。

どっちかを自分用、もう一つを両親用として使う予定。

毎日吸い取ってたら最近やっと取れる量が減ってきた。
毎回ゴミパック掃除がめんどいと言えばめんどいがよく寝れること考えたらそう手間でもないかなと。

さよなら xen

どうにもxenが不安定になってきたのでsystemd-nspawnに移行することにした。

まあxenが不安定なのかハードウェアが不安定なのかは怪しいんだけど・・・

xen:grant_table: xen/grant-table: max_grant_frames reached cur=32 extra=1 limit=32 gnttab_free_count=1 req_entries=12

ディスクに負荷をかけるとこんなカーネルログがガシガシ出るのでxenのせいかなと勝手に決めた。

(パーティション切りすぎてるという気がモリモリするがスルー(汗

移行自体は昔やったことがあるのでそんなに手間ではない。
/var/lib/machines/server 以下にサーバのファイルシステムをマウントしてmachinectl start server で基本的にはOK

ネットワークの関係もあってsystemctl edit system-nspawn@server.serviceで編集する

[Unit]
RequiresMountsFor=/var/lib/machines/%i

[Service]
ExecStart=
ExecStart=/usr/bin/systemd-nspawn --keep-unit --boot --link-journal=try-guest --network-bridge xenbr0 --settings=override --machine=%i --bind=/home

前はxen上のサーバで/homeをnfs exportしていたが、nspawn上でnfs-kernel-server動くのか不安になったので全部host0に任せることにする。
nfsクライアントでのサーバー名が変わるのが痛いが・・・

前から同一マシン上のファイルをnfs共有するのが不満だったというのもあるが、結局全部bindで共有することにした。
リモートサーバーはnfsしかないけど・・・
sambaもnfsも何かあると不安定になるのでイマイチなんだよなぁ。ソフトが不安定というよりハード側の問題な気がするけど・・・