Ubuntu Weekly Recipe

第571回 LXD 3.0のストレージ設定

この記事を読むのに必要な時間:およそ 6 分

第521回ではLXD 3.0の基本的な使い方を,第535回ではネットワークの設定方法を紹介しました。今回はLXD 2.0から3.0にかけて非常に便利になったストレージ関連の設定について紹介しましょう。

LXDにおけるコンテナストレージ

LXDはシステムコンテナである以上,コンテナのベースイメージや,インスタンスであるルートファイルシステムをどこかに保存しなくてはなりません。LXDにおいてこれは「ストレージプール」と呼ばれています。また,ストレージプールを管理するシステムは「ストレージバックエンド」です。

LXD 2.0ではストレージプール・ストレージバックエンドはシステム上に1つしか設定できませんでした。実際には初期設定時にバックエンドを選択してそれで完了だったのです。

この状況はLXD 2.9で大きく変わることになります。1つのシステム上で複数のストレージプールを設定できるようになったのです。ストレージプールごとに異なるストレージバックエンドを選択可能です。さらにlxd storageコマンドが実装され,ストレージに関する様々な設定を操作できるようになりました。

これにより,たとえばワークロードの大きなインスタンスはSSD上に構築したストレージプールを利用し,サイズが重要なインスタンスはHDD上に構築したストレージプールを利用するといった使い分けが可能になります。

さらにはストレージプールを利用して,コンテナに対して追加のストレージボリュームをかんたんに追加・削除できるようになりました。これはDockerで言うところのVolumeコンテナをイメージすれば良いでしょう。

さて,LXDのインストール直後はストレージプールは何も作られていません。最初のストレージプールはlxd initコマンドで作成します。第521回にも出ている実行例から抜粋すると,次の部分です。

$ sudo lxd init
Do you want to configure a new storage pool? (yes/no) [default=yes]:
  => ストレージプール(コンテナの保存先)を作成するかどうか
Name of the new storage pool [default=default]:
  => 作成するストレージプールの名前
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]:
  => ストレージバックエンドの選択
     速度・利便性の両方においてbtrfsを選ぶのが無難です
     ホストのファイルシステムがbtrfsである必要はありません
Create a new BTRFS pool? (yes/no) [default=yes]:
  => btrfsのプールを作成するかどうか
Would you like to use an existing block device? (yes/no) [default=no]:
  => 既存のブロックデバイスを利用するかどうか
     利用しない場合はbtrfsでフォーマットしたイメージファイルを作成します
Size in GB of the new loop device (1GB minimum) [default=15GB]: 5
  => ストレージプールのサイズ

設定を変更しなければ「default」という名前のストレージプールが「btrfsバックエンド」を利用して作成されます。

LXD 3.0でサポートしているバックエンドは次の5つです。

  • Dir
  • Btrfs
  • LVM
  • ZFS
  • CEPH

Dirはディレクトリツリーをそのままコンテナとして見せる方式です。古式ゆかしいchrootをLXD再現しているようなものです。どんなシステムでも確実に動くという強みはあるものの,性能的にも容量的にも非常に効率が悪い上に,LXDのコンテナ操作に関するさまざまな便利機能をサポートしていません。よっぽどのことがない限りは,これを選ぶことはないでしょう。

BtrfsとLVM,ZFSはいずれも十分なパフォーマンスを発揮しますので,どれを選んでも良いでしょう。これらのバックエンドを使用するためには,それぞれbtrfs-progs,lvm2,zfsutils-linuxパッケージがインストールされていなくてはなりません。Ubuntuのクラウドイメージだとzfsutils-linuxは初期インストールされていないため,上記のlxd initではZFSでは表示されていないのです。

Btrfsを選んでおくと,LXDの中でLXDを使う場合に便利です。どれにするか迷ったのなら,UbuntuであればBtrfsを選んでおけば良いでしょう。

分散型計算機向けのオブジェクトストレージシステムであるCephはLXD 2.16からサポートされるようになりました。LXDそのものをクラスタ化する際には,Cephは十分な選択肢となってくるでしょう。

その他,バックエンドごとの機能比較やストレージプールの容量増加方法,注意点などは公式のドキュメントを参照してください。

ちなみに今回の記事も,Ubuntu 18.04 LTS/LXD 3.0を前提としています。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。