Ubuntu 16.04LTS でZFSを試してみる(1)
みんなが待ち望んでいたUbuntu16.04がリリースされましたね。なんかZFSが載るらしいですよ?ということで試してみました。
はい、Desktop版をインストールしてみました。
ブートディスクに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
長くなったので、続く。