Ubuntu 16.04LTS でZFSを試してみる(1)

みんなが待ち望んでいたUbuntu16.04がリリースされましたね。なんかZFSが載るらしいですよ?ということで試してみました。

はい、Desktop版をインストールしてみました。

ubuntu16.4logon

ブートディスクにZFSは選べませんでしたね(予想通り)。これはライセンス問題(zfsはCDDLで、GPLと衝突します。混ぜるな危険)を回避するためと思われます。
ZFSは最初は入っていないようです。zfsutils をaptから追加インストールすることでライセンスを回避する意図が見られますね。
さて、zpool はどうなってるかな?

# zpool upgrade -v
This system supports ZFS pool feature flags.

The following features are supported:

FEAT DESCRIPTION
-------------------------------------------------------------
async_destroy                         (read-only compatible)
     Destroy filesystems asynchronously.
empty_bpobj                           (read-only compatible)
     Snapshots use less space.
lz4_compress                         
     LZ4 compression algorithm support.
spacemap_histogram                    (read-only compatible)
     Spacemaps maintain space histograms.
enabled_txg                           (read-only compatible)
     Record txg at which a feature is enabled
hole_birth                           
     Retain hole birth txg for more precise zfs send
extensible_dataset                   
     Enhanced dataset functionality, used by other features.
embedded_data                        
     Blocks which compress very well use even less space.
bookmarks                             (read-only compatible)
     "zfs bookmark" command
filesystem_limits                     (read-only compatible)
     Filesystem and snapshot limits.
large_blocks                         
     Support for blocks larger than 128KB.

The following legacy versions are also supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z
 4   zpool history
 5   Compression using the gzip algorithm
 6   bootfs pool property
 7   Separate intent log devices
 8   Delegated administration
 9   refquota and refreservation properties
 10  Cache devices
 11  Improved scrub performance
 12  Snapshot properties
 13  snapused property
 14  passthrough-x aclinherit
 15  user/group space accounting
 16  stmf property support
 17  Triple-parity RAID-Z
 18  Snapshot user holds
 19  Log device removal
 20  Compression using zle (zero-length encoding)
 21  Deduplication
 22  Received properties
 23  Slim ZIL
 24  System attributes
 25  Improved scrub stats
 26  Improved snapshot deletion performance
 27  Improved snapshot creation performance
 28  Multiple vdev replacements

For more information on a particular version, including supported releases,
see the ZFS Administration Guide.

zpool のバージョン28がベースで、いくつか見慣れないフィーチャーが見えますが、これはOpenZFSの成果みたいですね。

では早速zpoolを作りましょう。ブートディスクとは別にディスクを付けて(/dev/sdb)、fdiskでプライマリパーティションを作り(/dev/sdb1)、zpoolを作ります(testpool)。

root@smiyaza-VirtualBox:~# fdisk /dev/sdb 

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9ac20125.

コマンド (m でヘルプ): p
Disk /dev/sdb: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9ac20125

コマンド (m でヘルプ): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
パーティション番号 (1-4, default 1): 1
First sector (2048-16777215, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-16777215, default 16777215): 

Created a new partition 1 of type 'Linux' and of size 8 GiB.

コマンド (m でヘルプ): p
Disk /dev/sdb: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9ac20125

デバイス   起動 Start 最後から セクタ Size Id タイプ
/dev/sdb1        2048 16777215 16775168   8G 83 Linux

コマンド (m でヘルプ): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@smiyaza-VirtualBox:~# fdisk -l /dev/sdb
Disk /dev/sdb: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9ac20125

デバイス   起動 Start 最後から セクタ Size Id タイプ
/dev/sdb1        2048 16777215 16775168   8G 83 Linux
root@smiyaza-VirtualBox:~# zpool create testpool sdb1
root@smiyaza-VirtualBox:~# zpool status 
  pool: testpool
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    testpool    ONLINE       0     0     0
      sdb1      ONLINE       0     0     0

errors: No known data errors

ね、簡単でしょ?
これでストレージプール(zpool)と同時にファイルシステム(zfs)ができます。

root@smiyaza-VirtualBox:~# zfs list
NAME       USED  AVAIL  REFER  MOUNTPOINT
testpool    55K  7.69G    19K  /testpool
root@smiyaza-VirtualBox:~# df -h /testpool/
Filesystem      Size  Used Avail Use% Mounted on
testpool        7.7G     0  7.7G   0% /testpool
root@smiyaza-VirtualBox:~# mount | grep zfs
testpool on /testpool type zfs (rw,relatime,xattr,noacl)

ふむ、zfsファイルシステムはfuseでなく、独立したカーネルモジュールになってるみたいですね。これもライセンス問題回避のためかな?

root@smiyaza-VirtualBox:~# lsmod | grep zfs
zfs                  2813952  4
zunicode              331776  1 zfs
zcommon                57344  1 zfs
znvpair                90112  2 zfs,zcommon
spl                   102400  3 zfs,zcommon,znvpair
zavl                   16384  1 zfs

 

長くなったので、続く。

Follow me!

Leave a Reply