LXDデータベースについて#

サーバーの設定と状態を保管するためにLXDは分散データーベースを使用します。 これにより(例えば、LXCでそうされているように)設定が各インスタンスのディレクトリ内に保管される場合より高速に問い合わせができます。

利点を理解するため、全てへのインスタンスに「どのインスタンスがbr0を使用しているか?」のような問い合わせをすることを考えてみましょう。 データベースが無ければ、この問いに答えるためには、設定を読み込んで解釈し、どのネットワークデバイスが設定上に定義されているかの確認を、ひとつひとつのインスタンスに対して行う必要があります。 データベースがあれば、この情報を得るためにデータベースにシンプルな問い合わせを実行できます。

Dqlite#

LXDクラスタ内では、クラスタの全てのメンバーが同じデータベースの状態を共有する必要があります。 このため、LXDはSQLIteの分散版であるDqliteを使用しています。 Dqliteはレプリケーション、冗長性、外部のデータベースプロセスを必要としない自動フェールオーバーの機能を提供します。

LXDをクラスタではなく単一マシンとして使用する場合は、Dqliteのデータベースは実質的には通常のSQLiteデータベースのように振る舞います。

ファイルの保管場所#

データベースはLXDのデータディレクトリ(snapの場合/var/snap/lxd/common/lxd/database/、それ以外は/var/lib/lxd/database/)のdatabaseサブディレクトリに保管されます。

LXDを新しいバージョンにアップグレードする際はデータベーススキーマの更新が必要かもしれません。 この場合、LXDは自動的にデータベースのバックアップをしてから更新を実行します。 詳細はLXDをアップグレードするを参照してください。