IDCFクラウドでubuntu16.04のzfsを試してみる


* この記事を元に試してみます。

https://insights.ubuntu.com/2016/02/16/zfs-is-the-fs-for-containers-in-ubuntu-16-04/


* IDCFクラウドの準備

まずは、ubuntu16.04用のISOを作成します。

ISOイメージはここのURLをダウンロード先として指定しています。
http://cdimage.ubuntu.com/ubuntu-server/daily/current/xenial-server-amd64.iso

![2016221-8.50.50.png](https://qiita-image-store.s3.amazonaws.com/0/18391/9b314de1-6bc4-34de-58b2-01789656e3de.png)

ISOの場合は、ルートディスクを指定する必要があります。
標準テンプレートの場合は15GBが自動で選択されます。
ここでは15GBを指定します

![2016221-8.56.21.png](https://qiita-image-store.s3.amazonaws.com/0/18391/32c26b24-bf97-48dc-189e-4060f77c2a94.png)

ISOをダウンロード中の画面
![2016221-8.44.19.png](https://qiita-image-store.s3.amazonaws.com/0/18391/806529dd-a5bc-140e-021c-543d899e14c5.png)

ISOをインストール中の画面
![2016221-8.46.36.png](https://qiita-image-store.s3.amazonaws.com/0/18391/569c0882-21bb-1704-4e64-fbf2b54aa2da.png)

ISOインストールが成功した画面
![2016221-8.49.27.png](https://qiita-image-store.s3.amazonaws.com/0/18391/cf6e0ba3-df6e-4af3-b114-e9179c2cb9b6.png)

* VMを起動させ、インストーラ起動画面になるので、インストールを開始します。

![2016221-8.58.35.png](https://qiita-image-store.s3.amazonaws.com/0/18391/971ce3a0-c258-4c10-36d2-373d68b05ec5.png)

* もろもろ設定し、デフォルトで選択されている standard system utilities のほか、OpenSSH server を選択

![2016221-9.6.29.png](https://qiita-image-store.s3.amazonaws.com/0/18391/e15ebcd3-11ba-f74a-5362-e6a4d3b1f721.png)

* インストールが完了したら、再起動

* 再起動後、VMに対してファイアフォール、ポートフォワーディング等の設定を行い、作成したVMにSSHする。

* zfsモジュールがあるのを確認

```$ locate zfs.ko
/lib/modules/4.4.0-6-generic/kernel/zfs/zfs/zfs.ko```

ロードはされていない。。

```$ lsmod | grep zfs
$```

* modprobeでロードする
※次回、再起動後も起動時にロードされるようになる。

```$ sudo modprobe zfs```

* ロードされた

```$ lsmod | grep zfs
zfs                  2801664  4
zunicode              331776  1 zfs
zcommon                57344  1 zfs
znvpair                90112  2 zfs,zcommon
spl                   102400  3 zfs,zcommon,znvpair
zavl                   16384  1 zfs```

バージョン確認

```$ head -n1 /etc/issue
Ubuntu Xenial Xerus (development branch) \n \l```

lxdとzfs関連のパッケージをインストール

```$ sudo apt install lxd zfsutils-linux```

初期設定

```$ sudo lxd init
Name of the storage backend to use (dir or zfs): zfs
Create a new ZFS pool (yes/no)? yes
Name of the new ZFS pool: lxd
Would you like to use an existing block device (yes/no)? no
Size in GB of the new loop device (1GB minimum): 2
Would you like LXD to be available over the network (yes/no)? no 
LXD has been successfully configured.```

zfsとして認識されているか確認

```$ sudo zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
lxd   1.98G   470K  1.98G         -     0%     0%  1.00x  ONLINE  -```

zpoolステータス確認

```$ sudo zpool status
  pool: lxd
 state: ONLINE
  scan: none requested
config:

	NAME                    STATE     READ WRITE CKSUM
	lxd                     ONLINE       0     0     0
	  /var/lib/lxd/zfs.img  ONLINE       0     0     0

errors: No known data errors```

lxd確認

```$ sudo lxc config get storage.zfs_pool_name
storage.zfs_pool_name: lxd```


lxdグループを新規作成

```$ newgrp lxd```

lxdイメージを作成

```$ lxd-images import ubuntu --alias ubuntu
Downloading the GPG key for http://cloud-images.ubuntu.com
Validating the GPG signature of /tmp/tmp1mgm39av/download.json.asc
Downloading the image.
Image manifest: http://cloud-images.ubuntu.com/server/releases/trusty/release-20160217.1/ubuntu-14.04-server-cloudimg-amd64.manifest
Image imported as: 7336a7a1ae64878292ba7ea1905a2e98438a4894c3257504a32244bedf809feb
Setup alias: ubuntu
```

3コンテナ作成してみる

```$ for i in $(seq 1 3); do lxc launch ubuntu; done
Creating undisgusted-mercedez
Starting undisgusted-mercedez
Creating thermionic-dilan
Starting thermionic-dilan
Creating fluviomarine-irving
Starting fluviomarine-irving
```

作成されたか確認

```$ lxc list
+----------------------+---------+-------------------+------+-----------+-----------+
|         NAME         |  STATE  |       IPV4        | IPV6 | EPHEMERAL | SNAPSHOTS |
+----------------------+---------+-------------------+------+-----------+-----------+
| fluviomarine-irving  | RUNNING | 10.0.3.239 (eth0) |      | NO        |         0 |
+----------------------+---------+-------------------+------+-----------+-----------+
| thermionic-dilan     | RUNNING | 10.0.3.237 (eth0) |      | NO        |         0 |
+----------------------+---------+-------------------+------+-----------+-----------+
| undisgusted-mercedez | RUNNING | 10.0.3.162 (eth0) |      | NO        |         0 |
+----------------------+---------+-------------------+------+-----------+-----------+
```