Litestream Writable VFS  
→ **Litestream の書き込み可能な VFS**

2026/02/05 8:03

Litestream Writable VFS → **Litestream の書き込み可能な VFS**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Litestreamは現在、SQLiteがS3スタイルのオブジェクトストレージから直接読み書きできる新しい仮想ファイルシステム(VFS)層を備えており、Fly.io の Sprites プラットフォームがすべてのディスク書き込みを耐久性付きで維持しつつ、極めて高速なコールドスタート (< 1 s) を実現できるようになっています。

元々の設計では、Litestream は SQLite のオープンソースバックアップ/リストアツールであり、データベースとオブジェクトストレージを同期させます。Fly.io では、組織ごとのグローバルオーケストレーターが Litestream を介して同期された専用 SQLite DB を保持し、またすべての Sprite のディスクスタックも同様に依存しています。

VFS は当初読み取り専用アクセスをサポートしていましたが、

LITESTREAM_WRITE_ENABLED=true
を設定すると書き込みモードが有効になります。書き込みモードでは、書き込みはローカルでバッファリングされ、1 秒ごとまたはシャットダウン時に S3 に同期されます。また、新しい LTX ファイルのポーリングは無効化され、マルチライター競合を回避します。LTX ファイルに保存されたページインデックスにより、各起動時にクラウドストレージからブロックマップ全体を再構築することなく高速な検索が可能です。

「Hydration」はバックグラウンドで完全なデータベースをローカルファイル (

LITESTREAM_HYDRATION_PATH
) にプルし、読み取りはオブジェクトストレージに対して継続的に行われますが、ハイドレーション完了まで待機します。水化されたファイルは一時的なもので、VFS が終了すると破棄され、Sprite の頻繁なディスクバウンス設計と一致します。

Sprite の 100 GB 耐久性ストレージを 1 秒未満で起動できる環境下では、VFS はオブジェクトストレージの blob に対して直接 SQLite クエリをポイントインタイムで実行し、コールドスタート性能を劇的に向上させつつ、すべてのディスク書き込みの耐久性を保持します。将来的な拡張としては、マルチライターシナリオ向けのよりスマートなポーリングと競合解決ロジックが含まれる可能性がありますが、核心的メリットは変わりません:Fly.io のグローバルオーケストレーターおよび各 Sprite ディスクスタックに緊密に統合された軽量でクラウドネイティブなバックアップ戦略です。

本文

著者

  • 名前: ベン・ジョンソン
  • ハンドル: @benbjohnson

画像提供: Annie Ruygt


私はベン・ジョンソンです。Fly.ioでLitestreamを開発しています。LitestreamはSQLite用の「欠けていたバックアップ/リストアシステム」です。無料でオープンソース、どこでも動くように設計されており、詳細はこちらをご覧ください。

毎回記事を書くたびに、Litestreamを簡潔に説明するスキルが向上しています。いかがでしょうか:

Litestream は、SQLite データベースを S3 互換オブジェクトストレージと同期させる Unix ライクなツールです。SQLite の高速さとシンプルさを享受しつつ、データ損失の恐怖から解放します。アプリ側は存在を意識する必要もなく、バックグラウンドでツールとして走らせるだけです。

ここ数週間は非常に忙しく過ぎました!

最近 Sprites を公開しました。Sprites が何かご存知でない方はぜひチェックしてみてください。私たちが今まで出した中でもっともクールな製品の一つです。今回はそれを販売する時間はありません。ただ言うと、Sprites は大きな話題であり、Litestream がそのロードバリアングコンポーネントとして機能していることは私にとって重要です。

Sprites で Litestream を使う方法

Sprites は Litestream に直接依存しています。主に次の二点です。

  1. グローバル Sprites オーケストレーター

    • Fly Machines(PostgreSQL クラスターを前提とした製品)とは異なり、Elixir で書かれた Sprites オーケストレーターは S3 対応オブジェクトストレージから直接稼働します。
    • Sprites に登録された各組織には、Litestream が同期する専用 SQLite データベースが割り当てられます。
  2. ディスクストレージスタック

    • Sprites は 1 秒以内に起動し、100 GB の耐久ストレージをブート時に確保します。
    • ストレージの根幹は S3 対応オブジェクトストレージです。NVMe をリードスルーキャッシュとして活用した「使用中ブロック」のデータベースで高速化しています(システム名:JuiceFS)。
    • 「ブロックマップ」データベースは BoltDB に基づく再実装メタデータストアで、もちろん Litestream SQLite です。

Sprite のストレージは厳格

Sprite 内のすべては高速起動を前提に設計されています。Fly Machine が落ちた場合、ブロックマップをオブジェクトストレージから再構築する必要があります。ブロックマップは大きくありませんが、数十メガバイトには達します。

この作業は Sprite の起動中に行われます—すなわちウェブリクエストへの応答として発生し得ることです。時間的余裕は極めて限られています。

さらに高速化するため、Litestream VFS を統合して起動時間を短縮しています。

使い方例

sqlite> .open file:///my.db?vfs=litestream
sqlite> PRAGMA litestream_time = '5 minutes ago';
sqlite> SELECT * FROM sandwich_ratings ORDER BY RANDOM() LIMIT 3;
22 | Veggie Delight   | New York     | 4
30 | Meatball         | Los Angeles  | 5
168| Chicken Shawarma Wrap | Detroit | 5

Litestream VFS は、オブジェクトストレージのバイナリから直接ポイント‑イン‑タイムの SQLite クエリを実行できるため、データベース全体をダウンロードする前にクエリ結果が返ります。

これは良いですが完璧ではありません。2 つの問題点があります:

  1. 読み取りのみで書き込みができない。Sprite のディスクは書き込み対象です。
  2. オブジェクトストレージから直接クエリを実行することは、冷却起動時にデータベース全体をダウンロードしなくても済むという恩恵がありますが、常時運用では十分高速とは言えません。

書き込み可能な VFS

最初の取り組みとして、VFS を読み書き可オプションにしました。これは微妙で興味深い機能ですが、必ずしも汎用的というわけではありません。

  • VFS はオブジェクトストレージ内の各ページを
    (file, offset, size)
    でインデックス化します。このインデックスは LTX ファイルに格納され、VFS 起動時に迅速に再構築できるよう設計されています。
  • 読み取り専用モードでは、リモートライターが作成した新しい LTX ファイルをポーリングで検知します。
  • 書き込みモードでは複数書き手は許可せず、VFS はポーリングを無効化します。単一の書き手のみを想定し、追加バックアップの監視も行いません。
  • 書き込みはローカルテンポラリバッファ(「書き込みバッファ」)へ送られます。1 秒ごとまたはクリーンシャットダウン時に、このバッファをオブジェクトストレージと同期します。VFS 経由で書き込まれたデータは、同期が完了するまで実質的に耐久性を持ちません。

この書き込みモードにより、Sprite は起動後数ミリ秒で書き込みを受け付けることができ、10 MB のブロックマップの完全コピーを保持せずとも「最終的な耐久性」を実現します。Litestream VFS で書き込みを有効にするには

LITESTREAM_WRITE_ENABLED=true
を設定してください。


水和(Hydration)

Sprite ストレージスタックは SQLite を VFS モードで使用しています。当初の VFS 設計では、ほとんどのデータが S3 に保持されるため、冷却起動時には便利ですが、常時運用では不十分です。

そこで、dm‑clone などから取り入れた「バックグラウンド水和」を採用しました。

LITESTREAM_HYDRATION_PATH
を設定して VFS を起動すると、水和処理が開始されます。

  • 水和は各ページの最新バージョンのみを書き込み(LTX 圧縮を通じて)します。
  • 読み取りは水和中でもブロックストレージから即座に提供され、準備完了次第水和ファイルへ切り替わります。
  • 水和ファイルはデータベースの完全コピーです。
    litestream restore
    を実行したときと同じ状態になります。

Sprites のような頻繁に再起動する環境を想定しているため、データベースは一時ファイルに書き込まれます。終了時には水和ファイルを破棄します。この挙動は VFS に組み込まれています。


まとめ

これら二つの大規模変更は、Sprites のストレージスタックが抱える問題に特化したものです。もしご自身で有用だと感じたらぜひ教えてください。

通常の読み書きワークロードでは、この仕組みを使う必要はありません。Litestream は VFS を介さずにサイドカーとして動作させても十分に機能します。VFS の主目的は、データベース全体が書き込み可能な状態であることを効率的に保つことです。

しかし、私にとってこの一連の実装は、Litestream が比較的複雑かつ要求の高いドメインでどのように活用できるかを示す貴重なケーススタディです。Sprites は本当にクールで、Sprite 上で発生するすべてのディスク書き込みが Litestream を経由していることは非常に満足感があります。


前回の記事 →
The Design & Implementation of Sprites

同じ日のほかのニュース

一覧に戻る →

2026/02/05 0:08

「Voxtral Transcribe 2」(ボクセトラル・トランスクライブ 2)

## Japanese Translation: Voxtral は次世代の音声認識モデルを 2 つリリースしました:**Mini Transcribe V2**(バッチ)と **Realtime**(ライブ)。RealtimはApache 2.0 ライセンスで Hugging Face 上で入手可能で、サブ 200 ms のレイテンシーを設定でき、480 ms まで下げられます。480 ms の遅延で字幕用に 2.4 秒のディレイがあり、WER(単語誤り率)が 1–2% 内に収まります。両モデルとも **13 言語**(英語、中国語、ヒンディー語、スペイン語、アラビア語、フランス語、ポルトガル語、ロシア語、ドイツ語、日本語、韓国語、イタリア語、オランダ語)をサポートします。 Mini Transcribe V2 は FLEURS ベンチマークで約 **4 % WER** を達成し、ElevenLabs の Scribe v2 より音声処理速度が約 3 倍速く、API 経由で **$0.003/min** のコストです。Realtime は同等の精度を **4‑B パラメータ** のフットプリントで実現し、エッジデプロイが可能です。また、そのストリーミングアーキテクチャは音声が到着した時点で文字起こしを行い、他の API で一般的なチャンクベースの処理を回避します。 企業向け機能には、スピーカー分離(開始/終了タイムスタンプ付き)、単語レベルのタイムスタンプ、最大 100 語・フレーズまでのコンテキストバイアシング(英語最適化)、ノイズ耐性、および **3 時間** までの録音サポートがあります。Mistral Studio のオーディオプレイグラウンドでは、両モデルを最大 10 ファイル(各ファイル ≤1 GB)でテストでき、スピーカー分離、タイムスタンプ粒度、およびコンテキストバイアシングのオプションがあります。 ユースケースは **会議インテリジェンス、音声エージェント/仮想助手、コールセンター自動化、メディア/放送字幕、コンプライアンスポータル** など多岐にわたり、すべて GDPR/HIPAA 対応のオンプレミスまたはプライベートクラウドデプロイでサポートされます。Voxtral は、GPT‑4o mini Transcribe、Gemini 2.5 Flash、Assembly Universal、Deepgram Nova を上回る最高の価格対性能を誇る転写 API と主張しています。 同社は開発者にチームへの参加を呼びかけており、世界クラスの音声 AI の構築と継続的な製品拡大・将来機能リリースを示唆しています。

2026/02/01 21:43

**Claude Code** クォータが尽きたらローカルモデルに接続します。

## Japanese Translation: **概要:** より安価な Anthropic Claude プランを利用しているユーザーは、コーディング中に日次または週次のクォータ制限に直面することが多いです。この記事では、Claude Code を Anthropic の API ではなくローカルのオープンソースモデルに接続することでこれらの制約を回避する方法について説明しています。実際的な2つの手法を紹介します: 1. **LM Studio v0.4.1** を使用する方法 ― モデルは検索インターフェイス経由でインストール(推奨コンテキストサイズ > 25k トークン)、`lms server start --port 1234` でサーバーを起動し、環境変数 `export ANTHROPIC_BASE_URL=http://localhost:1234` と `export ANTHROPIC_AUTH_TOKEN=lmstudioc` を設定します。次に Claude Code を `claude --model openai/gpt‑oss‑20b` で起動し、Claude 内で `/model` コマンドを使ってモデルの確認または切替えを行います。 2. **Llama.CPP** を直接使用する方法 ― これにより Claude Code はローカルエンドポイントを指すことも可能です。 推奨されるモデルとしては、Z.AI の **GLM‑4.7‑Flash** と **Qwen3‑Coder‑Next** が挙げられています。また、小型で量子化されたバージョンを使用するとディスク容量と GPU メモリを節約できますが、その代償として品質や速度が若干低下する可能性があります。ローカル OSS モデルは遅く、コード生成の質が低下することもありますが、クォータ制限やコストが問題になる際に有効なバックアップ手段となります。最後に、読者にはこの設定を試し、さまざまなモデルをテストして経験を共有するよう奨励しています。

2026/02/05 3:34

インフラ向け Claude コード

## Japanese Translation: > Fluid は、AI エージェントが本番インフラストラクチャのサンドボックス化されたクローンを安全に探索し、その後、自動的に実際のサーバー用の Infrastructure‑as‑Code(IaC)―たとえば Ansible プレイブック ― を生成できる軽量ターミナルエージェントです。 > LLM 単体ではライブシステムの挙動を予測することが難しいため、サンドボックスは実際的なコンテキストを提供します。コマンドはホストと同一 OS、パッケージ、ツールを鏡映した隔離された VM またはクラスター上で実行されます。 > Fluid には安全性が組み込まれています:本番環境への直接 SSH は許可せず、一時的な証明書のみを使用し、すべてのサンドボックスコマンドは監査可能に完全ログ記録され、高リソースまたはインターネット依存の操作は人間の承認が必要です。 > インストールはワンライナー(`curl -fsSL https://fluid.sh/install.sh | bash`)で、ホスト環境を自動的に検出します。 > 提供された例では、AI エージェントがサンドボックス(ID `SBX-demo1234`、IP `192.168.122.50`)に Apache をインストールし、curl で確認した後、`httpd‑setup` プレイブックを生成します。このプレイブックは 4 件のタスク(apt キャッシュ更新、Apache インストール、カスタム `index.html` 作成、サービス起動/有効化)から構成され、任意の Ubuntu サーバーで実行して同じ設定を再現できます。 > コントロールされた監査可能なワークフローをチームに提供することで、Fluid はデプロイリスクを低減し、コンプライアンスを向上させ、AI 主導のインフラ変更を効率化します。