English中文

ドキュメント · 1.0

keelOS とは

keelOS は、家庭や小規模オフィスにある 1 台のサーバーのための仮想化システムです。NAS、ルーター、Windows デスクトップ、数台の Linux サーバーを、それぞれ仮想マシンとして同じ 1 台のマシンで動かせます。FreeBSD、bhyve、OpenZFS をベースにしていて、Web、コマンドライン、HTTPS API で管理します。

他の仮想化システムとの一番の違いは、ホストシステムをアップグレードしたり再起動したりしても、仮想マシンをシャットダウンしなくてよいことです。仮想マシンは約 25 秒だけ一時停止し、そのまま再開します。TCP 接続も切れません。

仕組み

keelOS のホストは 3 つの層でできています。

層 内容 ホスト再起動時
hyp keel のハイパーバイザー。起動時に UEFI が最初に読み込む、約 100 KB の小さなプログラム メモリに残り続け、仮想マシンのメモリ、vCPU の状態、IOMMU を預かる
ホストシステム(root) FreeBSD。ドライバー、ZFS、ネットワーク、bhyve のデバイスモデル、管理プログラム keel を担当する 再起動する。ファームウェアの自己診断は通らない
仮想マシン 皆さんがインストールした各種 OS 一時停止し、新しいホストが起動したあとに再開する

ホストシステムは読み取り専用のイメージです。基本システムはメモリ上で動き、/usr は起動ディスクから読み込みます。ホストの再起動では BIOS/UEFI の自己診断をもう一度通る必要がないため、再起動を始めてからログインできるまで約 50 秒です。ファームウェアを通らないこのホスト再起動を、keelOS では reload と呼び、画面上でもそう表示します。

reload 中の動作は次のとおりです。

  • 仮想マシンは 24~26 秒間一時停止します(開発用サーバーで、仮想マシン内で ping、iperf、fio を同時に動かして実測しました)。再開後もディスクのデータは無事で、時計は補正されます。
  • 仮想マシンにパススルーしたデバイス(ディスクコントローラー、NVMe ディスク、グラフィックスカード)は通常どおり動きます。IOMMU は hyp が管理しており、ホストの再起動の影響を受けないためです。
  • 仮想マシンごとに、reload 時にサスペンドして再開(既定)するかシャットダウンするかを選べます。仮想マシンの管理を参照してください。

hyp 自体をアップグレードするときだけは、マシン全体がファームウェアから再起動するため、仮想マシンをシャットダウンする必要があります。hyp を非常に小さく作っているのは、こうした場合を極力減らすためです。アップグレードと再起動を参照してください。

詳しい背景は、記事「家庭用システムの SLA 99.99% は難しい?」(中国語)をお読みください。

1.0 でできること

  • 仮想マシン:Windows 11(仮想 TPM 2.0 と Secure Boot 対応。チェックの回避は不要)、Windows 10 と Server、Windows XP/2003/7 などの古い OS(SeaBIOS と OS 標準のドライバーを使用)、Linux、FreeBSD などの BSD、各種ルーター OS や NAS OS。仮想マシンの管理を参照してください。
  • 画面の表示:Web 上のグラフィックコンソールとシリアルコンソール。ホストに直接つないだモニターでは、Ctrl-Alt-F2~F12 で各仮想マシンに切り替えられます。どの RDP クライアントからでも仮想マシンの画面に直接接続でき、仮想マシン内には何もインストールする必要がありません。コンソールとリモートデスクトップを参照してください。
  • デバイスパススルー:PCIe デバイス、ディスクリートグラフィックス、Intel 内蔵 GPU、SR-IOV NIC の VF。パススルーしたデバイスは reload をまたいでも通常どおり動きます。デバイスパススルーを参照してください。
  • ストレージ:ミラーと raidz に対応した ZFS ストレージプール。複数のプールを持てます。仮想マシンのディスクは virtio-blk、NVMe、AHCI のいずれかで渡されます。ストレージを参照してください。
  • ネットワーク:仮想スイッチと VLAN。物理ポートを仮想マシンと共用できます。ネットワークを参照してください。
  • アップグレード:起動パーティションには A と B の 2 つのスロットがあります。新しいバージョンは動作していないほうのスロットに書き込み、試用してから確定します。いつでも元に戻せます。アップグレードと再起動を参照してください。
  • スナップショットと移行:スナップショットは仮想マシンのすべてのディスク、設定、UEFI 変数を一度に保存します。仮想マシンは別の keelOS ホストへコールド移行できます。スナップショット、バックアップ、移行を参照してください。
  • 管理ポート:IPMI のないマシンでは、keelRM がホストから独立した管理用 Web ページを提供します。ホストが固まったときや reload 中でも、画面の確認やリセットができます。keelRM 管理ポートを参照してください。
  • 管理方法:Web(中国語、英語、日本語)、コマンドライン keel、HTTPS API。トークンには権限を限定でき、書き込み操作は監査ログに記録されます。アカウント、トークン、権限、コマンドライン keel、HTTP APIを参照してください。

keelNAS、keelAuth、keelMGR、kRDPclient クライアントも 1.0 に含まれます。これらのドキュメントは後日追加します。

1.0 でできないこと

  • AMD CPU:1.0 には Intel CPU が必要です。AMD への対応は開発中です。ハードウェア要件を参照してください。
  • ライブマイグレーション(メモリごと、動作中の仮想マシンを別のホストへ移すこと)と PCI ホットプラグ:1.0 より後に予定しています。1.0 でできるのはコールド移行です。
  • 性能チューニング:1.0 の重点は安定性です。性能は 2.0 の目標です。
  • マルチテナント、SDN、自動スケジューリング、共有ストレージ:keelOS では扱いません。対象は、個人や小規模オフィスの 1 台のマシンです。

よく出てくる用語

用語 意味
ホスト / root keelOS をインストールしたマシン、およびその上で hyp の下で動く FreeBSD ホストシステム
hyp keel のハイパーバイザー。メモリに常駐し、ホスト再起動の影響を受けない
仮想マシン / guest ホスト上で動く各 OS
reload ファームウェアを通らないホストシステムの再起動。仮想マシンは一時停止するだけ
スロット(A、B) 起動パーティション内の 2 つのシステムバージョン。一方が稼働し、もう一方に新バージョンを書き込む
起動ディスク keelOS をインストールしたディスク。先頭が起動パーティション
ストレージプール ZFS プール。仮想マシンのディスク、スナップショット、ISO を置く。既定のプール名は zones
keel keelOS の管理プログラム。Web、API、コマンドライン keel はすべてこれ
トークン API にアクセスするための認証情報。権限を限定できる