Ubuntu Weekly Recipe

第521回 入門システムコンテナマネージャーLXD 3.0

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

LXDの初期設定

LXDを利用する前に,一度だけLXDサービスの初期設定を行う必要があります。特にこだわりがなければ,次のように初期値をそのまま設定すると良いでしょう。

$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
  => 異なるマシンに存在するLXDサービスと連携したいかどうか
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=21GB]:
  => ストレージプールのサイズ
Would you like to connect to a MAAS server? (yes/no) [default=no]:
  => MAASサーバーに接続するかどうか
Would you like to create a new network bridge? (yes/no) [default=yes]:
  => LXD用にネットワークブリッジI/Fを作成するかどうか
What should the new bridge be called? [default=lxdbr0]:
  => ネットワークブリッジのデバイス名
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
  => コンテナインスタンス向けIPv4アドレスの設定
     autoにすると適当なサブネットマスクを割り当てます
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
  => コンテナインスタンス向けIPv6アドレスの設定
Would you like LXD to be available over the network? (yes/no) [default=no]:
  => LXDサービスをネットワーク上の他のマシンから見えるようにするか
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
  => 取得したコンテナベースイメージを自動的に更新するか
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
  => 上記設定情報をYAML形式で出力するか

ちなみにLXD 2.10からは,LXDを利用している状態でも再度sudo lxd initを実行することで設定を変更できるようになっています。

おそらく初期設定のうちもっとも利用に影響しそうなのがストレージプールの設定でしょう。ストレージプールは,LXDで作成するコンテナを保存する領域です。バックエンドとしてbtrfs,LVM,ZFS,Ceph,それにディレクトリをそのまま保存する方法の5つから選択できます。ただしディレクトリ以外を使いたい場合は,別途パッケージのインストールなどが必要です。サーバー版をインストール直後のパッケージ構成ならbtrfs,LVM,ディレクトリが使えます。デスクトップ版のパッケージ構成ではディレクトリのみが使えます。

ストレージバックエンドによって,LXD上で利用できる機能に違いがあります。詳しい各バックエンドの違いはLXDドキュメントのStorage Backends and supported functionsを参照してください。

デスクトップ上で試す場合など,環境による指定がないのであればbtrfsを選ぶと良いでしょう。ただしデスクトップ版でbtrfsを使いたいなら,あらかじめbtrfs-progsパッケージもインストールしておいてください。

btrfsを使う場合,以前は空のブロックデバイスを用意する必要があったのですが,最近はループバックイメージファイルを使った設定が可能になっています。これによりお手軽にLXDのほぼすべてのストレージ関連の機能を使えるようになります。

$ lxc storage list
+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| default |             | btrfs  | /var/lib/lxd/disks/default.img | 1       |
+---------+-------------+--------+--------------------------------+---------+

$ sudo file /var/lib/lxd/disks/default.img
/var/lib/lxd/disks/default.img: BTRFS Filesystem label "default", (後略)

しかしながらbtrfsやZFSのループバックイメージファイルをプロダクション用途で使うのは推奨されていないようです。もし本格的に使用する予定であれば,専用のブロックデバイスを用意しましょう。

たとえばbtrfsの場合,あらかじめ未フォーマットの/dev/sdb2などを用意しておきます。lxd init時の「Would you like to use an existing block device? (yes/no) [default=no]:」「yes」と回答すれば,⁠Path to the existing block device:」が表示されるのでそこで/dev/sdb2と回答します。lxd init完了後に/dev/sdb2がbtrfsでフォーマットされ,専用のストレージプールとして利用できます。

$ lxc storage show default
config:
  source: 7d555893-d8a9-4c42-a609-f4f40900ee7b
  volatile.initial_source: /dev/sdb2
description: ""
name: default
driver: btrfs
used_by:
- /1.0/profiles/default
status: Created
locations:
- none

$ lxc storage info default
info:
  description: ""
  driver: btrfs
  name: default
  space used: 16.62MB
  total space: 1.36TB
used by:
  profiles:
  - default

著者プロフィール

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

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

コメント

コメントの記入