Ubuntu 16.04上でZFSでストレージプールを作成し、NFS/SMBでネットワーク共有します。
Table of Contents
1 zfsutils-linuxのインストール
ユーザランドのツールであるzfsutils-linuxをインストールします。
$ sudo apt-get install -y zfsutils-linux
2 zfs.koのロード
デバイスドライバのzfs.koをロードします。
$ sudo modprobe zfs
3 ストレージプールの作成
/dev/vdbを用いてtankという名前のストレージプールを作成します。
$ sudo zpool create -f tank /dev/vdb $ sudo zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT tank 79.5G 50K 79.5G - 0% 0% 1.00x ONLINE -
/tankが作成されます。
$ ls / bin dev initrd.img lost+found opt run srv tmp vmlinuz boot etc lib media proc sbin sys usr cdrom home lib64 mnt root snap tank var $ df -h /tank Filesystem Size Used Avail Use% Mounted on tank 78G 0 78G 0% /tank
この時点で/tank配下を通常のファイルシステム同様に扱うことができます。
RAID等の機能はOracle社のマニュアルを参照してください。
4 NFS共有
NFSサーバをインストールします。
$ sudo apt-get install -y nfs-kernel-server
ストレージプールをNFSで共有します。以下の例では省いてますが、NFSマウントのオプションは192.168.11.0/24,rw,sync等のように指定します。
$ sudo zfs set sharenfs="rw=@192.168.11.0/24" tank
192.168.11.0/24のマシンからZFSのマシンに対してNFSマウントします。ここでは192.168.11.67がZFSのマシンです。
$ sudo mount -t nfs 192.168.11.67:/tank /mnt
5 SMB共有
sambaをインストールします。
sudo apt-get install -y samba
NFS共有で/etc/exportsの編集が不要であったのとは異なり、こちらは/etc/samba/smb.confの編集が必要です。
ここではguestアクセスを禁止し、pdbeditで追加したユーザのみアクセスできるようにします。
/var/lib/samba/usersharesはzfsコマンドで作成される共有用の設定ファイルが格納されるディレクトリです。
$ diff -uprN /etc/samba/smb.conf{.org,} --- /etc/samba/smb.conf.org 2016-04-30 20:46:35.778323625 +0900 +++ /etc/samba/smb.conf 2016-04-30 20:48:23.866009451 +0900 @@ -177,13 +177,14 @@ # Setup usershare options to enable non-root users to share folders # with the net usershare command. + usershare path = /var/lib/samba/usershares # Maximum number of usershare. 0 (default) means that usershare is # disabled. -; usershare max shares = 100 + usershare max shares = 100 # Allow users who've been granted usershare privileges to create # public shares, not just authenticated ones - usershare allow guests = yes + usershare allow guests = no #======================= Share Definitions =======================
sambaのみの場合と同様、pdbeditでユーザを追加します。
$ sudo pdbedit -a hiroom2 new password: retype new password:
ストレージプールをSMBで共有します。なお、このままでは/tank配下にアクセスできるだけでファイル追加はできないので、/tank配下のアクセス権限を適時設定してください。
$ sudo zfs set sharesmb=on tank
Windowsから\\[Host Name]\tankへアクセスするとpdbeditで作成したユーザ名とパスワードを求められます。
画像のubuntu-16.04-zfs.hiroom2.comはZFSのマシンのホスト名です。