English中文

機能

土台は ZFS

できること

  • VM ごとに 1 つのデータセットで、SmartOS と同様の構成です。構成はディスクの隣にある 1 つの config.json です。
  • ディスクは raw ファイル(標準)または zvol で、シンプロビジョニングと lz4 圧縮を使います。
  • VM からは virtio-blk、NVMe、AHCI として見えます。古いシステムは IDE も使えます。
  • VM ごとに UEFI ファームウェアのコピーを持つため、復元した VM が、知らないうちに変わったファームウェアで起動することはありません。
  • TRIM は端から端まで機能し、ゲストが解放した領域はプールに戻ります。

スナップショット

スナップショットは、VM のデータセットツリーに対する zfs snapshot -r です。ZFS はこれをアトミックに取得するため、複数のディスク、構成、ファームウェア変数がすべて同じ瞬間のものになります。データのコピーは発生せず、VM は動き続けます。実行中の VM のスナップショットはクラッシュ整合性、つまり電源を抜いたときと同じ状態です。最近のファイルシステムは復旧でき、データベースはログを再生することがあります。

ZFS には再帰的なロールバックがないため、ロールバックはデータセットごとに行います。テストでは rollback -r だけでは zvol が元に戻りませんでした。keelOS はそれぞれをロールバックします。

計測結果

  • レコードサイズ 16K の raw ファイルは zvol と同等の性能で、ランダム読み書きの差は約 10% 以内。
  • virtio-blk と NVMe の差は約 10% 以内で、NVMe を選んでも損はない。
  • 最も効くのはレコードサイズ:128K では 4K ランダム書き込みが約 4,000 IOPS に落ち、16K では 10,000〜16,000。
  • TRIM:ゲストで 4 GiB を書き込んで削除し、fstrim を実行すると、ホスト上のディスクイメージは 1.5 MB 未満に戻った。ファイルか zvol か、virtio-blk か NVMe か、4 通りの組み合わせすべてで同じ。
  • スナップショットを取り、データを変更してロールバック:ルートディスクと追加の zvol の両方がスナップショット時点に戻った。

未対応のこと

  • スナップショットはディスクのみです。VM の状態をそのまま再開できる、メモリを含むスナップショットは予定しています。そのためのチェックポイントは、ホストの再起動用にすでにあります。
  • パススルーデバイスを持つ VM では、スナップショットの対象は keelOS が管理するディスクだけです。ホストは手放したコントローラーの先にあるディスクをロールバックできず、デバイスの状態はメモリと一緒に保存できません。
  • zfs send による別のマシンへの VM の移行と、スケジュールバックアップは予定段階で、まだ実装していません。

記事を読む(中国語) →

← 機能一覧