proxmox4でzfsを使う時に注意する点

# 参考

* [Storage: ZFS - Proxmox VE](https://pve.proxmox.com/wiki/Storage:_ZFS)
    * [KVMを使う（ディスク性能編その2） « さくらインターネット研究所](http://research.sakura.ad.jp/2010/04/21/kvm-diskperf2/)
    * [Etsukata blog: qemu cache mode まとめ](http://blog.etsukata.com/2013/02/qemu-cache-mode.html)
* [ストレージ（ZFS） - JUSTPLAYERインターネットサービス](http://www.justplayer.ne.jp/manual_vps_solaris11_zfs.html)

## zfsが超遅い場合

* [Poor performance with ZFS](http://forum.proxmox.com/threads/21568-Poor-performance-with-ZFS)

```bash:sync=disabledにすると10倍くらい早くなる
zfs set sync=disabled rpool
```

```bash:sync=enabled(初期値)
# pveperf
CPU BOGOMIPS:      22347.96
REGEX/SECOND:      1314685
HD SIZE:           440.39 GB (rpool/ROOT/pve-1)
FSYNCS/SECOND:     42.32
DNS EXT:           146.05 ms
DNS INT:           13.54 ms
```

```bash:sync=disabled(変更後)
# pveperf
CPU BOGOMIPS:      22347.96
REGEX/SECOND:      1381188
HD SIZE:           440.39 GB (rpool/ROOT/pve-1)
FSYNCS/SECOND:     18952.28
DNS EXT:           14.35 ms
DNS INT:           2.19 ms
```


# /をzfsにした場合、compressionが有効になっている

```bash:compressionの確認
# zfs get compression
NAME                      PROPERTY     VALUE     SOURCE
rpool                     compression  lz4       local
rpool/ROOT                compression  lz4       inherited from rpool
rpool/ROOT/pve-1          compression  lz4       inherited from rpool
rpool/swap                compression  lz4       inherited from rpool
tank1a                    compression  off       default
```

```bash:dedupの確認(念の為)
# zfs get dedup
NAME                      PROPERTY  VALUE          SOURCE
rpool                     dedup     off            default
rpool/ROOT                dedup     off            default
rpool/ROOT/pve-1          dedup     off            default
rpool/swap                dedup     off            default
tank1a                    dedup     off            default
```

```bash:compressionの無効化
zfs set compression=off rpool
```

```bash:確認
# zfs get compression
NAME                      PROPERTY     VALUE     SOURCE
rpool                     compression  off       local
rpool/ROOT                compression  off       inherited from rpool
rpool/ROOT/pve-1          compression  off       inherited from rpool
rpool/swap                compression  off       inherited from rpool
tank1a                    compression  off       default
```

# VMのDISK Cacheを変更すること

* VM作成した直後だけなぜかVM起動失敗するが、2回目からは起動する(不思議)
* `Default(No Cache)`だとVMが起動しない
  * `Write Back`か`Write Through`に設定すること。[QEMU tuning](https://pve.proxmox.com/wiki/Storage:_ZFS)

# KVM

* kvmはcache=writeback か writethroughにする必要がある。

# LVMのPVを縮小したい場合

* [proxmox - LVMパーティションを縮小 - Qiita](http://qiita.com/tukiyo3/items/10454c08dc351b004689)

# ZFSのキャッシュをSSDにしたい

* [/homeをzfs利用(RAID1+SSDをrwのキャッシュに使う)L2ARC - Qiita](http://qiita.com/tukiyo3/items/8b3eaf4fc0602742422a)を参考に /dev/sdc4, sdc5 をlog, chache に割り当てて利用できた。

# ZFSプールの認識に失敗する場合

```
zpool create rpool mirror /dev/sda1 /dev/sdb1
```

をしてOS再起動すると、rpoolが見当たらないと言われた。

```bash:
zpool status -v
```

## 解決方法

`zpool create 〜`した後、ProxmoxのWebUIからZFSストレージの割り当てをすれば
OS再起動後も認識してくれる。

# ZFSボリュームの作成

* [/homeをzfs利用(RAID1+SSDをrwのキャッシュに使う)L2ARC - Qiita](http://qiita.com/tukiyo3/items/8b3eaf4fc0602742422a)

* /dev/sdcが119.2GB余っていたため
  * log 1GB
  * cache 29G 割り当てた。

```bash:poolの作成
zpool create tank1a /dev/sda -f
zpool create tank1b /dev/sdb -f
zpool create tank2t /dev/sde -f
```

```bash:
zpool add rpool log /dev/sdc1
zpool add rpool cache /dev/sdc5
zpool add tank1a log /dev/sdc2
zpool add tank1a cache /dev/sdc6
zpool add tank1b log /dev/sdc3
zpool add tank1b cache /dev/sdc7
zpool add tank2t log /dev/sdc4
zpool add tank2t cache /dev/sdc8
```

## 確認

```bash:
zpool iostat -v
```

## zfsファイルシステムの削除

* リカバリを途中でやめた場合ゴミが残るので削除したい。

```bash:
# zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
tank1b/subvol-100-disk-1    22K  8.00G    22K  /tank1b/subvol-100-disk-1
tank1b/vm-365-disk-1      82.5G   668G  4.00G  -
tank1b/vm-365-disk-2      82.5G   645G  27.3G  -
```

```bash:削除
zfs destroy tank1b/subvol-100-disk-1
zfs destroy tank1b/vm-365-disk-1
zfs destroy tank1b/vm-365-disk-2
```