freebsd vpsでlive migration
TRANSCRIPT
本日私のハイライト
コンテナ勉強会初参加だけどせっかくだから LT しよう
VPS の話ならまぁ誰もやらないよな~
_人人人人人人人人人人_> まさかの同じネタ <
 ̄ Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
FreeBSD VPS でLive Migration
@spg_games第 8 回 コンテナ型仮想化の情報交換会@東京
自己紹介
• 仕事 インフラエンジニア
• 社会人 2 年目• 学生時代から FreeBSD ユーザ
名前 spg( 初心者pg)@spg_games
FreeBSD VPS とは
ではなく
VPS(Virtual Private Systems) とは
• FreeBSD の jail を Live Migration を可能にした実装
• カーネルベースで動作するため高速– LXD に相当
• VPS で作成したコンテナを VPS インスタンスと言います
• EuroBSDCon 2010 で発表– http://news.mynavi.jp/articles/2010/10/18/eurobsdcon201
0-vps/
参考 ) jail process
Jail の Live Migration で必要な事
• プロセステーブルをホストで 1 つずつ持っている。– ps の STAT に J が付くプロセス
• 他ホストへ Migration するとプロセス番号が衝突する可能性
• コンテナ毎にプロセステーブルを分離– Namespace(Linux)– VPS(FreeBSD)
VPS install• カーネルにパッチ当てる– パッチサイズ 1MB 超え & 約 5 万行パッチ
• VPS 管理用バイナリのインストール– vpsctl, rsync_vps 等
• 対応 OS バージョン ( 公式 )– FreeBSD 9.0-RELEASE– FreeBSD 9.1-RELEASE– FreeBSD 10.0-RELEASE
もうすべて EoL…
FreeBSD 10.1-RELEASE by spgVPS パッチ作成!!
https://github.com/spg-games/vps
VPS インスタンスの操作
VPSCTL(8)で操作可能
vpsctl start <id> <file> stop <id> <file> list show <id> execin <id> <cmd> [args ...] execwt <id> <cmd> [args ...] shell <id> console <id> ifmove <id> <ifname> [ifnewname] suspend <id> resume <id> snapshot <id> <file> abort <id> restore <id> <file> migrate <id> <remote-host> [norsync|onersync|tworsync]
argshow <id> ipnet <id> add <address/network, ...> ipnet <id> rem <address/network, ...> priv <id> allow <privilege number, ...> priv <id> deny <privilege number, ...> priv <id> nosys <privilege number, ...> limit <id> <resource:soft:hard,...>
showdump <file> (attention: loads of output !)
FreeBSD 10.1Live Migration
DEMO
まとめ
• VPS とは FreeBSD の jail コンテナをLive Migration する実装
• VPS の中でプロセステーブルをコンテナ毎に持つように実装
• ソースにマージされていないため、パッチを当てる必要がある
• FreeBSD 10.1 のパッチ作りました
オチ
最後に• フィーリングでパッチ書いたら build 通っ
て動いた–実際マイナーアップデートでも vnet 系の変
更が結構あり、カーネルデバッグ力なく苦戦…というか今でも…
• Clang 最高!• vSphere DRS の様に負荷均等化したい• ダウンタイムなしの kernel security
update で脆弱性対策の PoC したい