运行 Ubuntu 13.10 服务器。从 Ubuntu ppa 安装并设置 zfs。如果我手动执行“sudo zfs mount -a”,重启后一切似乎都正常工作,但读取常问问题在 zfsonlinux.org 上,我似乎应该期望它自动挂载。我不确定在哪里可以找到调试。我没有看到任何与/var/log/syslog
zfs 或挂载相关的错误。
$ sudo zfs get all zp
NAME PROPERTY VALUE SOURCE
zp type filesystem -
zp creation Sat Mar 16 17:14 2013 -
zp used 464G -
zp available 449G -
zp referenced 13.3M -
zp compressratio 1.00x -
zp mounted no -
zp quota none default
zp reservation none default
zp recordsize 128K default
zp mountpoint /zp default
zp sharenfs off default
zp checksum on default
zp compression off default
zp atime on default
zp devices on default
zp exec on default
zp setuid on default
zp readonly off default
zp zoned off default
zp snapdir hidden default
zp aclinherit restricted default
zp canmount on default
zp xattr on default
zp copies 1 default
zp version 5 -
zp utf8only off -
zp normalization none -
zp casesensitivity sensitive -
zp vscan off default
zp nbmand off default
zp sharesmb on local
zp refquota none default
zp refreservation none default
zp primarycache all default
zp secondarycache all default
zp usedbysnapshots 25.3K -
zp usedbydataset 13.3M -
zp usedbychildren 464G -
zp usedbyrefreservation 0 -
zp logbias latency default
zp dedup off default
zp mlslabel none default
zp sync standard default
zp refcompressratio 1.00x -
zp written 13.3M -
zp snapdev hidden default
答案1
你需要/etc/default/zfs
用你最喜欢的编辑器编辑该文件,例如:nano、vim 或其他,然后更改行
ZFS_MOUNT='no'
ZFS_UNMOUNT='no'
到
ZFS_MOUNT='yes'
ZFS_UNMOUNT='yes'
另一个选项是mountall
从apt-get install mountall
ZFS Stable PPA
,它会帮你搞定一切。第一个选项更可取,也更快。
答案2
对于我来说,在 Ubuntu 14.04 LTS 上,我必须设置以下内容
要自动导入 zpools,请将值从 更改1
为0
:
文件: /etc/init/zpool-import.conf
modprobe zfs zfs_autoimport_disable=0
要自动挂载 zfs 挂载点,请添加以下行:
文件: /etc/rc.local
zfs mount -a
重新启动后,zpool ZFS 挂载点已自动挂载。
答案3
使用 Ubuntu 16.04 zfs,我发现有些东西可以修复在启动时安装 zfs 共享的问题,而无需创建rc.local
脚本,也不需要在每次启动后systemd
手动运行。zfs set sharesmb=on
总结一下:zfs mount -a
和zfs share -a
不起作用,但使用zfs set sharesmb=on
可以。运行sudo /etc/init.d/zfs-share restart
也可以。此外,mountall
16.04 中的程序不支持 zfs,无论出于什么原因。
我认为问题是,当您设置时sharesmb=on
,它会根据poolname/sharename创建一个共享名称,如下所示:poolname_sharename
但这个共享名似乎太长了。我读到过,你应该将 netbios 名称限制在 14 个字符或更少,并且也要限制注释字段中的字符数。
因此,我创建了一个新的文件系统,其总长度小于 14 个字符,包括下划线:
sudo zfs create -o casesensitivity=mixed -o nbmand=on pool/share
然后编辑/etc/default/zfs
并禁用 smb 挂载/共享:(我认为一个是用于 NFS,但我将其全部禁用)
ZFS_MOUNT='no'
ZFS_UNMOUNT='no'
ZFS_SHARE='no'
ZFS_UNSHARE='no'
最后,启用sharesmb
新的文件系统:
sudo zfs set sharesmb=on pool/share
我还确保该/ect/hostid
文件存在。(谷歌如何创建)
现在,当我重新启动时,我无需执行任何其他操作即可运行此命令,并且会出现我的共享:
smbclient -U guest -N -L localhost (or use smbclient -L localhost)
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (my server (Samba, Ubuntu))
pool_share Disk Comment: /pool/share
是的,我知道 samba 支持长度超过 14 个字符的名称,但它似乎在启动时搞砸了安装 zfs 共享。
我很想知道这是否对其他人有用,或者这是否只是我的系统上的一些怪癖......
答案4
我发现即使mountall
这样有时也无法正常工作。我实际上构建了两个相同的服务器,在每个服务器上放置了相同型号的硬盘,并从相同的源同时安装了 Ubuntu 和 ZFS PPA。一个会自动挂载,另一个则不会。即使按照额外的常见问题解答说明在文件中添加 sleepmountall.conf
等,它也永远不会在启动时挂载。我最终mountall
在 中输入了一个命令/etc/rc.local
。