有馬総一郎のブログ

(彼氏の事情)

2016年10月04日 01:34:00 JST - 4 minute read - Linux

Ubuntu16.04でお手軽になったZFSを使ってみる

Ubuntu 16.04

折角、Ubuntu 16.04になって、zfsが導入しやすくなったのだから、この度Windosの内蔵HDDとして使っていたのを取り外して、UbuntuのNASとして活用することにした。で、毎回のことながら、どうでもいい前置きが長い。

とりあえず、 KURO-DACHI/CLONE/U3 に元から使っていた3TBの WD30EZRX と、この度、WindowsからUbuntuのzfsとして新生する8TBの ST8000AS0002 の二台を差して、Ubuntu起動。

が、なんか起動に失敗。 /etc/fstabから WD30EZRX のマウントの記述をコメントアウトして再起動。どうも、ディスクの認識ができていない… ls -lR /dev/diskで探すも見当らず…

トピック: ディスクを認識しません | 玄人志向フォーラムな情報をゲットしたので、まずは一台( WD30EZRX )だけ差す。

LINK、POWER、HDD1のランプが青くなったので、再度確認。すると、認識されてる。

arimasou16@ubuntu:~$ ls -lR /dev/disk/
・・・省略・・・
lrwxrwxrwx 1 root root  9 10月  3 21:55 usb-WDC_WD30_EZRX-00DC0B0_ATMM220U3000000001-0:0 -> ../../sdb
・・・省略・・・

調子に乗って、そのまま ST8000AS0002 を差す。デバイスファイル名が変わったりしたが、暫く待つとLINK、POWER、HDD1、HDD2全てのブルーランプが灯った。

arimasou16@ubuntu:~$ ls -lR /dev/disk
・・・省略・・・
lrwxrwxrwx 1 root root  9 10月  3 22:01 usb-ST8000AS_0002-1NA17Z_ATMM220U3000000001-0:1 -> ../../sdd
lrwxrwxrwx 1 root root 10 10月  3 22:01 usb-ST8000AS_0002-1NA17Z_ATMM220U3000000001-0:1-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 10月  3 22:01 usb-ST8000AS_0002-1NA17Z_ATMM220U3000000001-0:1-part2 -> ../../sdd2
lrwxrwxrwx 1 root root  9 10月  3 22:01 usb-WDC_WD30_EZRX-00DC0B0_ATMM220U3000000001-0:0 -> ../../sdc
・・・省略・・・

まあ、将来、ちゃんとしたNASキット?を買うとして、このままzfsを導入することにした。以下、参考にさせていただいたサイト

zfsモジュールを有効化。

arimasou16@ubuntu:~$ sudo modprobe zfs

カーネルの出力情報、カーネルのモジュールリストを確認。

arimasou16@ubuntu:~$ dmesg | grep -i zfs
[10062.735623] ZFS: Loaded module v0.6.5.6-0ubuntu10, ZFS pool version 5000, ZFS filesystem version 5
arimasou16@ubuntu:~$ lsmod | grep zfs
zfs                  2813952  0
zunicode              331776  1 zfs
zcommon                57344  1 zfs
znvpair                90112  2 zfs,zcommon
spl                   102400  3 zfs,zcommon,znvpair
zavl                   16384  1 zfs

次回から起動時にzfsが有効化(ロード)されるようにカーネルモジュールリストに追記する。

arimasou16@ubuntu:~$ sudo echo "zfs" >> /etc/modules
-bash: /etc/modules: 許可がありません
arimasou16@ubuntu:~$ sudo su
root@ubuntu:/home/arimasou16# echo "zfs" >> /etc/modules

/etc/modules の中身

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
zfs

ZFS関連ユーティリティをインストール

arimasou16@ubuntu:~$ sudo apt-get install -y zfsutils-linux

ストレージプールの作成。(-o以下はなくても構わない。オプションは参考サイトなどで参照)。

arimasou16@ubuntu:~$ sudo zpool create -f tank /dev/sdd -o ashift=12 -o autoexpand=on

ストレンジプールはルート直下にできるようだ。ちなみに元々、HDDにはデータがあったが、特に確認なく全削除された。

arimasou16@ubuntu:~$ df -h /tank
Filesystem      Size  Used Avail Use% Mounted on
tank            7.1T     0  7.1T   0% /tank

ストレージプールの確認

arimasou16@ubuntu:~$ sudo zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
tank  7.25T   276K  7.25T         -     0%     0%  1.00x  ONLINE  -

ストレージプールの削除

arimasou16@ubuntu:~$ sudo zpool destroy tank
arimasou16@ubuntu:~$ sudo zpool list
no pools available

ストレージプールのマウント/アンマウント

arimasou16@ubuntu:~$ sudo zfs mount tank
arimasou16@ubuntu:~$ sudo zfs unmount tank

圧縮モードのon/off

arimasou16@ubuntu:~$ sudo zfs set compression=on tank
arimasou16@ubuntu:~$ sudo zfs get compression
NAME  PROPERTY     VALUE     SOURCE
tank  compression  on        local
arimasou16@ubuntu:~$
arimasou16@ubuntu:~$ sudo zfs set compression=off tank
arimasou16@ubuntu:~$ sudo zfs get compression
NAME  PROPERTY     VALUE     SOURCE
tank  compression  off       default

マウントポイントの設定

arimasou16@ubuntu:~$ sudo mkdir /mnt/zfs
arimasou16@ubuntu:~$ sudo zfs set mountpoint=/mnt/zfs tank

zfsの設定ファイル /etc/default/zfs

# ZoL userland configuration.
# Wait this many seconds during system start for pool member devices to appear
# before attempting import and starting mountall.
ZFS_AUTOIMPORT_TIMEOUT='30'
# Run `zfs share -a` during system start?
# nb: The shareiscsi, sharenfs, and sharesmb dataset properties.
ZFS_SHARE='no'
# Run `zfs unshare -a` during system stop?
ZFS_UNSHARE='no'
# Build kernel modules with the --enable-debug switch?
ZFS_DKMS_ENABLE_DEBUG='no'
# Build kernel modules with the --enable-debug-dmu-tx switch?
ZFS_DKMS_ENABLE_DEBUG_DMU_TX='no'
# Keep debugging symbols in kernel modules?
ZFS_DKMS_DISABLE_STRIP='no'

samba共有対象として設定

arimasou16@ubuntu:~$ sudo vi /etc/samba/smb.conf

/etc/samba/smb.conf 以下の内容を追記。

# add 2016/10/03 start
[zfs_disk]
browseable = yes
writeable = yes
path = /mnt/zfs
force create mode = 664
force directory mode = 775
force user = arimasou16
force group = sambashare
valid users = arimasou16
# add 2016/10/03 end

samba再起動

arimasou16@ubuntu:~$ sudo service smbd restart

Windowsからアクセスできることを確認。

でもって、robocopyでバックアップ開始。するといきなり失敗したみたいで、即終了

2016/10/03 23:41:35 ERROR 5 (0x00000005) Creating Destination Directory Z:\backup\色々
アクセスが拒否されました。

sambaユーザー用のディレクトリを挟んでおくの忘れてた…

arimasou16@ubuntu:~$ sudo mkdir /mnt/zfs/backup
arimasou16@ubuntu:~$ sudo chown arimasou16:sambashare /mnt/zfs/backup
arimasou16@ubuntu:~$ ls -ld /mnt/zfs/backup
drwxr-xr-x 2 arimasou16 sambashare 2 10月  3 23:44 /mnt/zfs/backup

で、再実行。うまく行ってるっぽい。

Tags: Ubuntu Server

Let's Encryptの証明書更新 起動時のZFSプールのインポート処理を止めさせたい