Debian サーバ量産工場~ ISO install から量産への道~           第 0 回 福岡 Debian 勉強会             @tyamadajp
本日の目標明日から   『それ、ぽちっとな』で何台でもシステム作れる人になる!       ※ ただし Debian に限る(嘘
禁則事項   『それ、クラウドででき( ry 』1.ただ使うのと、何ができるか知って  使うのは全然別の話2.「よいパッケージ・システム」を作る  知識の集大成なので応用できる3.面白いは正義
まず質問1.(半)自動構築、してますか?2.何ベースで、してますか? ・ dd/tar 系 ・ kickstart/preseeding/jumpstart 系 ・ vm/container 系 ・ XaaS 系
今日の主題1.いかに速く「構築」できるか  →高速な「展開」  →高速な「稼動」2.いかに楽に「構築」できるか  →作業の自動化  →作業の不要化3.いかに楽に「再現」できるか  →構成のデータ化  →構成の非データ化
今日の全体像多重化手法の輪                  ファイルシステム関連             ブロックデバイス関連           aufs          initramfs unionfs           NFS  ...
今日の概要1.メディアベースのインストールから、  量産工場化まで順を追って要素を  足し引きしてゆく2.「導入手法」としての評価とは別に  その知識が Debian 等のシステムの  一般的な理解に繋がることを示す
ここで一呼吸
ブート、インストール、稼動   メモリ空間         メモリ空間                   kernel +                  initramfs   boot loader   boot loader   メモ...
ブート、インストール、稼動   メモリ空間             メモリ空間                       kernel +                      initramfs   boot loader       ...
ブート、インストール、稼動   メモリ空間                      メモリ空間                                kernel +                               ini...
netboot & netinst      メモリ空間                    netboot=                    ローダやシステムを        kernel +       initramfs     ...
ここで一呼吸
netboot - 基本形   DHCP        TFTP                    DHCP         TFTP       1. DHCP DISCOVER                1.   DHCP   DI...
余談: DHCP OPTION について     ____________    ヾミ || || || || || || || ,l,,l,,l 川〃彡 |      V~~- 山┴ ""~   ヾニニ彡 |        設定できる・・・・...
ここで一呼吸( また後で netboot に戻ります )
netinst と debian installer (d-i)1.中身: menu 付き apt-get2.つまり、 netinst だから何が特別、  という違いは一切ない3.「インストーラ」アプリというよりも  「ただのパッケージ」の集合...
debian package のライフサイクル#実コードの抜粋でもなく、実行内容のイメージです#前後のフック処理と依存解析が注目ポイント。install() {  install $(find_depends $package)  tar xf...
debconf - d-i & package の中の人 パッケージインストールのフロー          *.(preinst|postinst)          *.(prerm|postrm)                debcon...
debconf によって実現されること1. UI 独立  → frontend を「 gtk 」や「 readline 」と   指定するだけでデスクトップ用や   リモート管理用インストーラに。  2.構成情報のパラメタライズ  → DB に...
debconf の使い方# apt-get install debconf-utils# debconf-get-selections | less# debconf-get-selections –installer | less
debconf の使い方# apt-get install debconf-utils# debconf-get-selections | less# debconf-get-selections –installer | less   あれ?...
debconf の使い方# apt-get install debconf-utils# debconf-get-selections | less# debconf-get-selections –installer | less   あれ?...
debconf configuration…tzdata tzdata/Zones/Etc        select UTC# Generate a new configuration file for OpenSSH?openssh-ser...
using debconf, harderdebconf DB へのインポートdebconf-set-selections < configdebconf DB へのアクセス#!/bin/sh. /usr/share/debconf/confm...
using debconf, harderdebconf を使ってコマンドを自動実行# debconf -o dbname cmd...            # 呼び方# debconf -o d-i /usr/bin/main-menu  ...
debian preseeding「 debconf DB を外部から流し込んで d-i を実行する」作り方# debconf-get-selections -–installer > myseed.cfg# debconf-get-selec...
d-i [+ preseeding] の中身1. initramfs 環境として起動2. init は /sbin/debian-installer* を  実行(これ+ rescue console 用意)3. /sbin/d-i は pre...
まとめ1. Debian の d-i もパッケージも同じ   *.deb + debconf という枠組みで、  見せ方が違うだけ2. debconf を活用することで、対話  インストーラも自動インストーラも  (勝手?に)実現される3. d...
ここで一呼吸
残念なお知らせpreseeding はオワコン
残念なお知らせな、なんだってー
・・・と煽ってみましたが、つまり・ preseeding や kickstart のような 固有方式は使わなくなった(自分)・特に Debian は環境作るだけなら はるかに軽量な方式が多数・本格的なほうだと fai (…は 10 年前 からあ...
FAI: Fully Automatic Install        メモリ空間                        メモリ空間         プロセス         インストーラ          プロセス          ...
FAI の3本柱1.どの機材を FAI NFSroot 環境で  起動させるかの PXE 構成の切替2. NFSroot 後に構築スクリプトを  どう走らせるか、という規約3.自動パーティションツールなどの  支援ツール(パッケージングではなく...
余談: chef+crowbar について・最近出てきた自動構築・運営ツール・概ね fai++++- = chef + crowbar → crowbar = PXE 起動管理 → chef = 導入・更新管理・簡潔になるよう、記述方法などまで...
ここで一呼吸
残念なお知らせ  fai もオワコン
残念なお知らせな、なんだってー
・・・と煽ってみましたが、つまり「特に Debian は環境作るだけなら はるかに軽量な方式が多数」・本当にインストールしたいですか?・↓をするだけなら、他の方法もある 1.いかに速く「構築」できるか 2.いかに楽に「構築」できるか 3.いかに...
debootstrap: 超手軽 chroot 構築ツール# debootstrap sid sid64 http://cdn.debian.or.jp/debian# chroot ./sid64 /bin/sh応用:1.常に Debian ...
multistrap - better debootstrapdebootstrap の弱点1.リポジトリ指定が1つだけ2.パッケージ指定ができないそこで multistrap : # multistrap -a i386 -d sid32 -...
ここで一呼吸
sid.conf[general]              #   セクション名は case-insensitivecleanup=true           #   構築ツリー中の *.deb cache を残すnoauth=true  ...
しかし残念なお知らせそんな装備で   大丈夫か?
つまり…・手軽だけど、結局分単位の時間が・真に手軽というなら秒単位で欲しい→ 使い捨て環境を量産したい→ 実験実験実験→ 構成固まったら、またそれを量産
インストール、しなくてよくね?「コピー」が欲しいのか、「環境」が欲しいのか、の問題→ そこで多重化技術                       環境 C   差分 C   差分 B           環境 B   差分 A        ...
多重化方式での量産方法#1# qemu-img -f qcow2 -o backing_file=sys.img copy.img# kvm -hda clone.img方法#2# btrfs sub snap sys copy# kvm -h...
まだまだあります方法#4# mkdir -p copy/rw# ln -s ../sys copy/ro# mount -t aufs -o br:copy/rw:copy/ro=ro none copy# kvm -virtfs local,...
ここで一呼吸(デモできます)
ここまでの流れ1.ブート、インストール、稼動の  正統的な流れをまとめた2.正統的な自動導入・展開方法を  まとめた。 initrd 式とフル環境式が。3. Debian では日常のパッケージングで  自動導入や多様な環境への対応が  できるよ...
ここまでの流れ4.正統的な方法は 10 分単位の時間が  かかり、現代のインストール厨には  とても耐えられないこと5.軽量構築ツール、 debootstrap の  素晴らしさと組み込み由来の   multistrap お勧めな話6.それでも...
ここまでの流れ7.多重化技術を使うと RTT が秒単位に  短縮して幸せなこと
しかし残念なお知らせそんな装備で   大丈夫か?
まだまだ改良点はある1.環境が秒単位で用意できるのに、  起動が 30s とかほとんどの待ち時間を  占めるのは我慢できないなぁ2.多重化って IO が元環境に戻るから、  性能が欲しい時は使いにくいなぁ
もっと高速な起動を!待ち時間の内容は? 1. BIOS 2. kernel 3. init
BIOS は20世紀のオワコンBIOS→ LinuxBIOS(coreboot) へようこそ・ BIOS が Linux なら最初から Linux・ハードウェアもオープンにしよう!・実績としては 10s 以下で X まで上がる・オモチャではなく...
init も20世紀のオワコンinit→ parallel init, upstart, systemd・要は並列で /etc/rc*.d/* 実行・ systemd はさらにアグレッシブ  → デマンドベース並列起動  → init + in...
そもそも起動しなければよいkernel→ kexec boot・カーネルで kernel+initrd をロード・当然超速い( coreboot とペアで使う 事例がある)・ nfsroot=sv1:/foo から sv2:/bar に 渡り鳥...
コピーせずにコピーが欲しい方向#1・バックグラウンド同期・要は md/raid1 over network 。 裏でアイドルタイムにコピーが進む方向#2・ブロック分散・ 100GB のコピーも、 1GB ずつ分散して 保持すれば 100 並列な...
Why Debian?    今日の内容のほとんどは Debian に    標準で入っている機能で実現できる・元々サーバー構築・運用関係が充実・マルチアーキテクチャなのでクロス 環境構築ツールという面でも強い →別環境を生産するという意味で共...
Upcoming SlideShare
Loading in …5
×

Infinite Debian - Platform for mass-producing system every second

2,295 views
2,210 views

Published on

Starting from standard install and various "Debian internal" for mass-installation system, the talk goes on to describe generic "instant system generation" which shortens turnaround time from 10s of minutes to seconds. All based on Debian.

Prepared for kickstart meetup of FukuokaDebian.

Published in: Technology
1 Comment
8 Likes
Statistics
Notes
No Downloads
Views
Total views
2,295
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
9
Comments
1
Likes
8
Embeds 0
No embeds

No notes for slide

Infinite Debian - Platform for mass-producing system every second

  1. 1. Debian サーバ量産工場~ ISO install から量産への道~ 第 0 回 福岡 Debian 勉強会 @tyamadajp
  2. 2. 本日の目標明日から   『それ、ぽちっとな』で何台でもシステム作れる人になる! ※ ただし Debian に限る(嘘
  3. 3. 禁則事項   『それ、クラウドででき( ry 』1.ただ使うのと、何ができるか知って  使うのは全然別の話2.「よいパッケージ・システム」を作る  知識の集大成なので応用できる3.面白いは正義
  4. 4. まず質問1.(半)自動構築、してますか?2.何ベースで、してますか? ・ dd/tar 系 ・ kickstart/preseeding/jumpstart 系 ・ vm/container 系 ・ XaaS 系
  5. 5. 今日の主題1.いかに速く「構築」できるか  →高速な「展開」  →高速な「稼動」2.いかに楽に「構築」できるか  →作業の自動化  →作業の不要化3.いかに楽に「再現」できるか  →構成のデータ化  →構成の非データ化
  6. 6. 今日の全体像多重化手法の輪 ファイルシステム関連 ブロックデバイス関連 aufs initramfs unionfs NFS iSCSI nbd btrfs qcow2 snapshot virtfs etc, etc AoE etc, etc dm lvm 統合管理の輪 Debian 方面の輪 ブートロード手法の輪 debootstrap chef crowbar PXE inetboot preseeding netinst fai kexec coreboot media debconf install ランタイムの輪 dump 正直バラバラだが、 dd container: lxc, etc tar vm: kvm, xen, ... 様々な組み合わせで原始手法の輪 hardware 各手法が実現される
  7. 7. 今日の概要1.メディアベースのインストールから、  量産工場化まで順を追って要素を  足し引きしてゆく2.「導入手法」としての評価とは別に  その知識が Debian 等のシステムの  一般的な理解に繋がることを示す
  8. 8. ここで一呼吸
  9. 9. ブート、インストール、稼動 メモリ空間 メモリ空間 kernel + initramfs boot loader boot loader メモリ空間 メモリ空間 kernel + kernel + initramfs initramfs boot loader boot loader
  10. 10. ブート、インストール、稼動 メモリ空間 メモリ空間 kernel + initramfs boot loader boot loader メモリ空間 メモリ空間 プロセス kernel + / kernel + initramfs initramfs boot loader boot loader
  11. 11. ブート、インストール、稼動 メモリ空間 メモリ空間 kernel + initramfs boot loader boot loader メモリ空間 メモリ空間 プロセス インストーラ プロセス kernel + / kernel + initramfs initramfs boot loader boot loader
  12. 12. netboot & netinst メモリ空間 netboot= ローダやシステムを kernel + initramfs ネットワークの先から取得する boot loader netinst= インストーラが構築システムを ネットワークの先から取得する メモリ空間 インストーラ 当然、 netboot した後で local media install することも可能。 kernel + 意味なさそうだが、一部だけ initramfs ローカルメディア依存にする boot loader 方法は応用できる。
  13. 13. ここで一呼吸
  14. 14. netboot - 基本形 DHCP TFTP DHCP TFTP 1. DHCP DISCOVER 1. DHCP DISCOVER 2. ( サーバ応答 ) 2. DHCP OFFER 3. DHCP REQUEST bootpc 3. DHCP REQUEST bootpc 4. (サーバ応答) /w PXE 4. DHCP ACK /w PXEDHCP OPTIONS DHCP TFTP1: subnet mask (=1,255.255.255.0)3: default router (=3,10.254.8.2) TFTP GET6: DNS server (=6,10.254.8.2)...66: tftp server (=66,"1.2.3.4") bootpc67: tftp bootfile (=67,"pxelinux.0") /w PXE...
  15. 15. 余談: DHCP OPTION について     ____________    ヾミ || || || || || || || ,l,,l,,l 川〃彡 |      V~~- 山┴ ""~   ヾニニ彡 |        設定できる・・・・・・!     /  二ー― 二      ヾニニ┤       できるが・・・    <-.,    ̄ ̄     _,,,..-‐ 、 〉ニニ |        今回 まだ それが使用される時と    /"- ニ ,‐l    l`__ ニ -‐""` / ニ二 |        使用方法の指定まではしていない    |   == =、 !    ` = ==== 、   l = lべ =|.     | ` ー゚‐ /    ` ー‐゚―    l.=l へ |~|       そのことを    |` ー‐ /      ` ー――   H<, 〉 |=|        どうか諸君らも    |    /     、          l|__ ノー |         思い出していただきたい.     | / ` ー  ~  ′   \    .| ヾ . ニ | ヽ    | l 下王 l 王 l 王 l 王 l ヲ|    |  ヾ _,|  \   つまり・・・・.     |     ≡          |    `l    \ __    インプリがその気になれば     ! 、           _,,..-′ / l      |   ~  設定が本当に利用されるのは‐"  ̄ |   `i ー -..,,, _ ,,,,,....-‐"     /  |       |   10 年後  20 年後ということも  -―|    | \          /    |       |     可能だろう・・・・・・・・・・ということ・・・・!    |    |   \      /      |       | PXE ブート位は問題ないですが、その他の多くは クライアント側はデフォルトでスルーなので、各種の 設定配信に使うなら DHCP client script を書いて 自分ですり合わせになる…はず(書ける実装だとして)
  16. 16. ここで一呼吸( また後で netboot に戻ります )
  17. 17. netinst と debian installer (d-i)1.中身: menu 付き apt-get2.つまり、 netinst だから何が特別、  という違いは一切ない3.「インストーラ」アプリというよりも  「ただのパッケージ」の集合体4.つまり、 apt-get/dpkg の自動処理  =自動インストーラの実現
  18. 18. debian package のライフサイクル#実コードの抜粋でもなく、実行内容のイメージです#前後のフック処理と依存解析が注目ポイント。install() { install $(find_depends $package) tar xf mypackage.meta.tar -C / $package.preinst (install|upgrade|...) tar xf mypackage.data.tar -C / $packge.postinst (configure|...)}remove() { $package.prerm (remove|...) rm … $package.postrm (remove|...) if (autoremove) remove $(find_unused $package)}
  19. 19. debconf - d-i & package の中の人 パッケージインストールのフロー *.(preinst|postinst) *.(prerm|postrm) debconf frontendパラメータをdebconf API で参照すると… パラメータに debconf API/script 基づいて ファイルの配置や 設定生成を行うDB になければ debconfUI 確認が出て… database もしこれが全部データ登録済みの 状態で apt-get/dpkg したならば・・・?
  20. 20. debconf によって実現されること1. UI 独立  → frontend を「 gtk 」や「 readline 」と   指定するだけでデスクトップ用や   リモート管理用インストーラに。  2.構成情報のパラメタライズ  → DB に入っている情報こそが    パッケージレベルでの設定3.日常利用から自動インストールまで  すべて同じコードで実現される
  21. 21. debconf の使い方# apt-get install debconf-utils# debconf-get-selections | less# debconf-get-selections –installer | less
  22. 22. debconf の使い方# apt-get install debconf-utils# debconf-get-selections | less# debconf-get-selections –installer | less あれ?見たことがあるような・・・?
  23. 23. debconf の使い方# apt-get install debconf-utils# debconf-get-selections | less# debconf-get-selections –installer | less あれ?見たことがあるような・・・?# dpkg –-get-selections# dpkg --set-selections前者は「どのパッケージがどういう構成で入れられたか」後者は「どのパッケージが導入されているか」前者の debconf レベルの情報を加味することで、インストーラレベルでの同一構成を再現する
  24. 24. debconf configuration…tzdata tzdata/Zones/Etc select UTC# Generate a new configuration file for OpenSSH?openssh-server ssh/new_config boolean true# New certificates to activate:# Choices:ca-certificates ca-certificates/new_crts multiselect# for internal usex11-common x11-common/xwrapper/actual_allowed_users string console# Do you want to risk killing active SSH sessions?openssh-server ssh/use_old_init_script boolean true
  25. 25. using debconf, harderdebconf DB へのインポートdebconf-set-selections < configdebconf DB へのアクセス#!/bin/sh. /usr/share/debconf/confmoduledb_get mypackage/paramdb_set mypackage/param "value"db_input foo/bar || true...API は sh/confmodule(3) と perl/Debconf::Client::ConfModule(3)ただし激しく undocumented なので /var/lib/dpkg/info/ 見るともっと参考にはよい( mysql-server のが勉強になった)。
  26. 26. using debconf, harderdebconf を使ってコマンドを自動実行# debconf -o dbname cmd... # 呼び方# debconf -o d-i /usr/bin/main-menu # 例: d-i の本体対応コマンドは DebianPolicy の stdio ベースの debconfprotocol をサポートすることで、自分のクエリに debconf が応答してくれるようになる。 debconf は DB になければ指定のフロントエンド UI で対話確認をする。
  27. 27. debian preseeding「 debconf DB を外部から流し込んで d-i を実行する」作り方# debconf-get-selections -–installer > myseed.cfg# debconf-get-selections > myseed.cfg使い方(ブートロード時に指定)kernel …/linuxinitrd …/initrd.gz (debian installer 用 initrd)append auto=true url=http://.../path/to/myseed.cfg ※ パスワードなどは保存されてないので、多少編集は必要
  28. 28. d-i [+ preseeding] の中身1. initramfs 環境として起動2. init は /sbin/debian-installer* を  実行(これ+ rescue console 用意)3. /sbin/d-i は preseeding file を  同梱ファイルや指定 URL からロード4. initrd 同梱 +DL したパッケージの  「普通」の apt-get/dpkg 処理をする ※ 「普通」といっても initrd 同梱分はサイズ削減のため udeb というサイズ縮小された deb ベース
  29. 29. まとめ1. Debian の d-i もパッケージも同じ   *.deb + debconf という枠組みで、  見せ方が違うだけ2. debconf を活用することで、対話  インストーラも自動インストーラも  (勝手?に)実現される3. d-i/preseed を使わないとしても、   debconf はパッケージ開発者として  押さえるべき知識 
  30. 30. ここで一呼吸
  31. 31. 残念なお知らせpreseeding はオワコン
  32. 32. 残念なお知らせな、なんだってー
  33. 33. ・・・と煽ってみましたが、つまり・ preseeding や kickstart のような 固有方式は使わなくなった(自分)・特に Debian は環境作るだけなら はるかに軽量な方式が多数・本格的なほうだと fai (…は 10 年前 からありますが)やその後継的な クロスアーキテクチャなものが
  34. 34. FAI: Fully Automatic Install メモリ空間 メモリ空間 プロセス インストーラ プロセス kernel + / kernel + initramfs initramfs boot loader boot loaderこちらが d-i/preseeding 方式。 こちらが FAI &仲間の方式。initramfs の中で頑張る。  インストーラが頑張るよりコンパクト化しつつ多様な  インストール済みの環境で環境に対応するため、  頑張ればいいじゃないDebian の仕組みをフル活用している(が、それが仇となる) 的に NFSroot して好きにする
  35. 35. FAI の3本柱1.どの機材を FAI NFSroot 環境で  起動させるかの PXE 構成の切替2. NFSroot 後に構築スクリプトを  どう走らせるか、という規約3.自動パーティションツールなどの  支援ツール(パッケージングではなく)起動環境の制御、というメタレベルで管理するので、 OS に関係なく構築できる。もちろん、中で apt-get + debconf にリレーして協調もできる。
  36. 36. 余談: chef+crowbar について・最近出てきた自動構築・運営ツール・概ね fai++++- = chef + crowbar → crowbar = PXE 起動管理 → chef = 導入・更新管理・簡潔になるよう、記述方法などまで 踏み込んでいる。 Ruby で書くので 記述力も高い。・でも使ってないので言及に留め省略
  37. 37. ここで一呼吸
  38. 38. 残念なお知らせ fai もオワコン
  39. 39. 残念なお知らせな、なんだってー
  40. 40. ・・・と煽ってみましたが、つまり「特に Debian は環境作るだけなら はるかに軽量な方式が多数」・本当にインストールしたいですか?・↓をするだけなら、他の方法もある 1.いかに速く「構築」できるか 2.いかに楽に「構築」できるか 3.いかに楽に「再現」できるか
  41. 41. debootstrap: 超手軽 chroot 構築ツール# debootstrap sid sid64 http://cdn.debian.or.jp/debian# chroot ./sid64 /bin/sh応用:1.常に Debian USB 環境を持ち歩く2. mkfs /dev/sda13. mount /dev/sda1 /target4. debootstrap sid /target5. chroot sid apt-get install linux-   image ...6. extlinux-install /dev/sda
  42. 42. multistrap - better debootstrapdebootstrap の弱点1.リポジトリ指定が1つだけ2.パッケージ指定ができないそこで multistrap : # multistrap -a i386 -d sid32 -f sid.conf ※ 複数リポジトリを CLI 指定するのは大変なので、設定ファイル方式になっている元々は emdebian という組込向けの構成を自動構築するために作られたdebian+α のカスタム版作成に強力
  43. 43. ここで一呼吸
  44. 44. sid.conf[general] # セクション名は case-insensitivecleanup=true # 構築ツリー中の *.deb cache を残すnoauth=true # キーサインのチェックをするかどうかbootstrap=sid local # 構築に使うリポジトリaptsources=sid local # /etc/apt/sources.list.d/* に残す[sid]suite=sidsource=http://my.repo.local:9999/debiankeyring=debian-archive-keyring[local]suite=sidcomponents=local # dists/(suite)/(components)/ を使うsource=http://my.repo.local/debianpackages=lx-image-3.2.5-tai-4f364f2e # このパッケージも入れる
  45. 45. しかし残念なお知らせそんな装備で   大丈夫か?
  46. 46. つまり…・手軽だけど、結局分単位の時間が・真に手軽というなら秒単位で欲しい→ 使い捨て環境を量産したい→ 実験実験実験→ 構成固まったら、またそれを量産
  47. 47. インストール、しなくてよくね?「コピー」が欲しいのか、「環境」が欲しいのか、の問題→ そこで多重化技術 環境 C 差分 C 差分 B 環境 B 差分 A 環境 A ベース環境 ブロックレベル・スナップショット、 ファイルシステム・スナップショット、 非スナップショット、の3方式がある
  48. 48. 多重化方式での量産方法#1# qemu-img -f qcow2 -o backing_file=sys.img copy.img# kvm -hda clone.img方法#2# btrfs sub snap sys copy# kvm -hda clone.img方法#3# mkdir -p copy/rw# ln -s ../sys copy/ro# mount -t aufs -o br:copy/rw:copy/ro=ro none copy# lxc-start … -slxc.rootfs=”/to/copy”
  49. 49. まだまだあります方法#4# mkdir -p copy/rw# ln -s ../sys copy/ro# mount -t aufs -o br:copy/rw:copy/ro=ro none copy# kvm -virtfs local,path=/to/copy,mount_tag=foo, security_model=none #まだ微妙だけど期待中・・・ていうか、「クローン環境の名前が初登場なら、自動で作って起動すればよくね?」→やってみた方法#5678# lxc-ex-clone sd32 sd32-a# kvm-nfs /n/sid32{a,b,c,d,e,f,g}# kvm-virtfs /n/sid64{a,b,c,d,e,f,g}まだ完全自動でない部分を残してますが、一行コマンドで30 秒くらいで環境量産などができる>実験に便利
  50. 50. ここで一呼吸(デモできます)
  51. 51. ここまでの流れ1.ブート、インストール、稼動の  正統的な流れをまとめた2.正統的な自動導入・展開方法を  まとめた。 initrd 式とフル環境式が。3. Debian では日常のパッケージングで  自動導入や多様な環境への対応が  できるような設計が採用されてること
  52. 52. ここまでの流れ4.正統的な方法は 10 分単位の時間が  かかり、現代のインストール厨には  とても耐えられないこと5.軽量構築ツール、 debootstrap の  素晴らしさと組み込み由来の   multistrap お勧めな話6.それでも分単位の時間で、我々の  ニーズには応えられない事(誰?)
  53. 53. ここまでの流れ7.多重化技術を使うと RTT が秒単位に  短縮して幸せなこと
  54. 54. しかし残念なお知らせそんな装備で   大丈夫か?
  55. 55. まだまだ改良点はある1.環境が秒単位で用意できるのに、  起動が 30s とかほとんどの待ち時間を  占めるのは我慢できないなぁ2.多重化って IO が元環境に戻るから、  性能が欲しい時は使いにくいなぁ
  56. 56. もっと高速な起動を!待ち時間の内容は? 1. BIOS 2. kernel 3. init
  57. 57. BIOS は20世紀のオワコンBIOS→ LinuxBIOS(coreboot) へようこそ・ BIOS が Linux なら最初から Linux・ハードウェアもオープンにしよう!・実績としては 10s 以下で X まで上がる・オモチャではなく、意外に組込みから ハイエンドボードまでサポート 起動後に「自分の Linux 環境」をさらにロードするので その時間はかかるが、 PXE BIOS より圧倒的に速い
  58. 58. init も20世紀のオワコンinit→ parallel init, upstart, systemd・要は並列で /etc/rc*.d/* 実行・ systemd はさらにアグレッシブ → デマンドベース並列起動 → init + inetd + cron + udev 位個人的に systemd はかなり期待中。が、クロスプラットフォーム性も必要な Debian だとデフォルトになるのは現状だと難しい(パッケージはある)
  59. 59. そもそも起動しなければよいkernel→ kexec boot・カーネルで kernel+initrd をロード・当然超速い( coreboot とペアで使う 事例がある)・ nfsroot=sv1:/foo から sv2:/bar に 渡り鳥するような荒業ができる本来はカーネルメモリダンプを採取するためのツールとして開発された
  60. 60. コピーせずにコピーが欲しい方向#1・バックグラウンド同期・要は md/raid1 over network 。 裏でアイドルタイムにコピーが進む方向#2・ブロック分散・ 100GB のコピーも、 1GB ずつ分散して 保持すれば 100 並列なので 1/100 の 時間で完了 ※ このあたりは各所で開発途上
  61. 61. Why Debian? 今日の内容のほとんどは Debian に 標準で入っている機能で実現できる・元々サーバー構築・運用関係が充実・マルチアーキテクチャなのでクロス 環境構築ツールという面でも強い →別環境を生産するという意味で共通・最近 Ubuntu/Debian で先に出る ケースが増えてる、ような? なので、 Debian オススメ。 とりあえず ls 位の気軽さで量産すると 気持ちいいのは保証できます。

×