プログラミングとかLinuxとかの備忘録

プログラミング、Linuxでハマった箇所や環境構築のメモ

zfs-on-linuxでzfsを試す

スポンサーリンク

ハードウェア

  • CPU: i7-6700k
  • RAM: 16GB
  • HDD: TOSHIBA DT01ACA300 (3TB)

ディスクIO性能ベンチマーク

fioのインストール

$ sudo pacman -S fio

LinuxでもCrystalDiskMarkぽいディスクベンチマークしたい」のfio設定ファイルを若干改変したもを作成(benchmark.fio)してベンチマークする

[global]
ioengine=libaio
iodepth=1
size=3g
direct=1
runtime=10
directory=/mnt/hdd
stonewall

[Seq-Read]
bs=1m
rw=read

[Seq-Write]
bs=1m
rw=write

[Rand-Read-4K]
bs=4k
rw=randread

[Rand-Write-4K]
bs=4k
rw=randwrite

[Rand-Read-4K-QD32]
iodepth=32
bs=4k
rw=randread

[Rand-Write-4K-QD32]
iodepth=32
bs=4k
rw=randwrite

ベンチマークの実行は下のコマンド

$ sudo fio benchmark.fio

ext4

フォーマット&マウント

$ sudo mkfs -t ext4 /dev/sda1
$ sudo mount /dev/sda1 /mnt/hdd

ベンチマーク結果

   READ: bw=174MiB/s (183MB/s), 174MiB/s-174MiB/s (183MB/s-183MB/s), io=1743MiB (1828MB), run=10005-10005msec
  WRITE: bw=154MiB/s (161MB/s), 154MiB/s-154MiB/s (161MB/s-161MB/s), io=1540MiB (1615MB), run=10005-10005msec

   READ: bw=592KiB/s (606kB/s), 592KiB/s-592KiB/s (606kB/s-606kB/s), io=5920KiB (6062kB), run=10004-10004msec
  WRITE: bw=1450KiB/s (1485kB/s), 1450KiB/s-1450KiB/s (1485kB/s-1485kB/s), io=14.3MiB (15.0MB), run=10119-10119msec

   READ: bw=1505KiB/s (1541kB/s), 1505KiB/s-1505KiB/s (1541kB/s-1541kB/s), io=14.9MiB (15.6MB), run=10129-10129msec
  WRITE: bw=1531KiB/s (1567kB/s), 1531KiB/s-1531KiB/s (1567kB/s-1567kB/s), io=15.1MiB (15.8MB), run=10074-10074msec

zfs

インストール

$ yay -S zfs-linux
==> Error: Could not find all required packages:
    zfs-utils=0.8.3 (Wanted by: zfs-linux)

zfs-linuxzfs-utilsのバージョンが追いついていなかったのでzfs-linux-gitで試す。

$ yay -S zfs-linux-git

partedでext4用に作成したパーティションを削除後に下記を実行

$ ls -lh /dev/disk/by-id/ | grep sda
lrwxrwxrwx 1 root root  9  1月 26 16:58 ata-TOSHIBA_DT01ACA300_Z3FGRANGS -> ../../sda
lrwxrwxrwx 1 root root  9  1月 26 16:58 wwn-0x5000039ff4d4c893 -> ../../sda

ZFSプールの作成

$ sudo zpool create -m /mnt/hdd tank ata-TOSHIBA_DT01ACA300_Z3FGRANGS

$ zpool list
NAME   SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
tank  2.72T   596K  2.72T        -         -     0%     0%  1.00x    ONLINE  -

$ df -h | grep tank
tank             2.7T  128K  2.7T    1% /mnt/hdd

ベンチマーク

$ sudo fio benchmark.fio

結果

   READ: bw=112MiB/s (118MB/s), 112MiB/s-112MiB/s (118MB/s-118MB/s), io=1124MiB (1179MB), run=10002-10002msec
  WRITE: bw=290MiB/s (304MB/s), 290MiB/s-290MiB/s (304MB/s-304MB/s), io=2902MiB (3043MB), run=10001-10001msec

   READ: bw=134KiB/s (137kB/s), 134KiB/s-134KiB/s (137kB/s-137kB/s), io=1340KiB (1372kB), run=10001-10001msec
  WRITE: bw=11.1MiB/s (11.7MB/s), 11.1MiB/s-11.1MiB/s (11.7MB/s-11.7MB/s), io=111MiB (117MB), run=10001-10001msec

   READ: bw=168KiB/s (172kB/s), 168KiB/s-168KiB/s (172kB/s-172kB/s), io=1684KiB (1724kB), run=10002-10002msec
  WRITE: bw=11.4MiB/s (11.9MB/s), 11.4MiB/s-11.4MiB/s (11.9MB/s-11.9MB/s), io=114MiB (119MB), run=10001-10001msec

結果まとめ

Readがext4の方が早いのはzfsのキャッシュが効いてないから?

ext4 zfs
Seq-Read 183MB/s 118MB/s
Seq-Write 161MB/s 304MB/s
Rand-Read-4K 606kB/s 137kB/s
Rand-Write-4K 1485kB/s 11.7MB/s
Rand-Read-4K-QD32 1541kB/s 172kB/s
Rand-Write-4K-QD32 1567kB/s 11.9MB/s