- 2012-06-08 19:30〜21:00
- http://atnd.org/events/29114
- http://togetter.com/li/317546
- #FreeBSDStudy
- http://people.allbsd.org/~hrs/FreeBSD/sato-FBSD20120608.pdf
- http://gihyo.jp/news/report/2012/06/1801
五反田駅であわてて入場しようとしたら、むこうから来た出場する人と改札ですれ違い。ゲートは閉らなかったけど、ちゃんと入場できたか心配しながら有楽町で出ようとすると「窓口へ」と表示が。残念ながら入場記録がないようだ。
麹町駅の3番出口からでてすぐ。となりのビルにmozilla japanの文字が。
受付でアカウントが見つけられずちょっと手間取ってしまった。
Jail機構と資源制御 / 佐藤広生
(資源制御の話)
- RACCT/RCTLが新しく導入されたやつ。
- UNIXでファイルじゃないもの: CPU時間、メモリ、IPCなど。ほんとうは全部ファイルにするつもりだった。
- 一台の物理マシンを共有できるようにするのがUNIX: ユーザ/グループが管理単位。
- ユーザ単位で分けられている資源: ユーザランドプロセス空間と使用中のハードウェア(/dev/*)。
- 限界が許すかぎり早い者勝ち。ただしムダが少なくなるようにがんばる。
- 「資源使用量を細かく管理しよう」という考えはとぼしい。人間が細かく指定するとムダがでる→ハードウェアのキャパを大きくすればいいよね!
- Subject--(Action)-->Object
- ルール:{S,A,O}=許可or拒否 という形で記述する。カーネルががんばって監視する。
- アクセス制御リストはファイルの許可属性に書いてあるが、ファイル以外はrootかどうかで判断。
- もっと強力な権限制御はMACをつかう。
- Disc Quotas (Diskではない!)
- S=プロセスのUID
- O=ファイルシステム上の使用量(ブロック・ファイル)
- A=ファイルへの書き込みアクセス
- ACL=quotaファイル
- 資源監視=カーネルがファイルシステムアクセスを監視
- 4.2BSDで追加。
- デフォルトは無効。
- リブートすると使用量を調べなおしという無駄。
- setrlimit
- プロセスが使用可能な共有資源の使用制限
- 4.2BSDで追加。
- POSIXにも採用されたのでだいたいつかえる。
- FreeBSDでは/etc/login.confで設定されている。(ログインクラス)
- ログインクラスはユーザ単位にケーパビリティを定義する仕組。
- setrlimitはプロセス単位なのでログインプロセスを設定することで子孫プロセス全部に制限がかかる。
- 欠点: ユーザ単位でしかできない。複数のユーザ/プロセスの集合に対して最大値を決めたいとか複雑なのはできない。
(環境の分割の話)
- 環境=ユーザプロセスの集合体
- カーネルは要求に応じて資源を分配するだけ。
- 分配に必要な情報はカーネルの外(ディスクとか)にあることがほとんど。
- 複数の環境を1つにまとめてもカーネルはその機能を失わない。
- chroot: 昔からある方法
- unixでは資源をファイルで管理しているので見えるファイルを制限すればいいのでは!
- この種の環境の分割=「名前空間の分離」
- セキュリティ対策として使われることがしばしばだが、抜け道はいつくか存在する。
- できないこと: ファイルとして管理されてないもの(プロセスとか)。別ユーザだけどuidが同じとか。ネットワークとか。
- Jail: もっと分離したい!
- 分離されたもの: sysctl MIB, proc list, PID空間 (pid+jailIDで管理)
- uidは分離されていない。
- rootはファイルシステムは特権ありだが、mountとかファイルシステムの垣根は越えられないように(基本)。
- jail外部環境に影響をあたえるようなものは拒否。
- jailもchrootもプロセスに効くので/etc/rc.confに書いて自動的につくる。
- 作成や環境維持にはsysutils/ezjailが人気。
- jail(2)とjail_attach(2)をつかう。ABI emulationは親プロセスを継承する。CentOS4もだいたいは動くよ。
- Linux版のunameはuname -aの出力にはLinuxとFreeBSDがまざって表示される。
- yumもほぼ動く。
- VIMAGE (VNET)
- さらなる拡張。ネットワークを完全独立でネットワークスタックを用意する。ループバックデバイスとか..
- まだバグがちょっと残っているのでデフォルトではoff。
- KVMのようなカーネルを複数立ちあげるタイプとはちがう。
- Jail単位でつかわれている資源量はカーネルはわかってない!
- setrlimitの欠点
- ユーザ単位での制限がむつかしい
- アクションを変えられない
- 設定後に自由に変更できない。
RACCT
- RACCT:資源使用量をカーネルが把握するためのフレームワーク
- RCT: ACL風のルールで指定
- デフォルトはoffだが特に理由はなくてFreeBSD9.0はゼロだし導入に慎重になっただけ。深刻な不具合報告もない。
- 書き方: subject:subject-id:resoure:action=amount/per
- rctl -huで現在の使用値を表示
- subject=user,process,loginclass,jail がえらべる。
- action=deny,log,devctl,sig*
- amount/perはsubject単位でつかえる資源量を指定する。subjectとperは同じでなくてもよい。
- 1g/userと指定すると1ユーザあたり1Gまで。
- RACCTでプロセス数を制限すれば学生のフォーク爆弾に有効。
- なぜかルールの一覧表示はできない。理由不明。技術的にはむつかしくないはず。
- action=devctlをつかうとdevd経由でいろいろできる。
- メモリリークするプロセス(e.g. postgresql)があった場合、スワップ使用量が閾値を越えたらdevdから再起動するなど。
QA:
- ルールの評価順序は上から順番に。
5分でわかる「開発者支援精度」(とCloudCore VPS) / KDDI 斉藤
- エンジニアがやりたいことをやってみた。
- さくらとちょっとにてる。
- 月額1000円で。嫁を説得できる価格。945円で。嫁に怒られないVPSが完成!
- 申込フォームから申込で3日程度で。
- FreeBSD9.0も簡単にインストールできるよ。
Reborn:FreeBSD勉強会 / 後藤
- KDDIウェブコミュニケーションズ提供
- 月一でサクサクいくよ。
- 第9回は 7/20 18:30-20:30
- 次回テーマは紙にかいて! ハッシュタグをみるのはめんどくさい。