以非 root 身份运行 ZFS

amr*_*bcl 5 zfs mount fstab zfsonlinux

我在 VM 中运行 Debian 10(使用 KVM),并且想以非 root 用户身份使用 ZFS。这就是我所做的。

我将此行添加到我的sources.list 文件中

deb http://deb.debian.org/debian buster-backports main contrib non-free
Run Code Online (Sandbox Code Playgroud)

这是我完整的sources.list 文件

deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free

deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb-src http://deb.debian.org/debian-security/ buster/updates main contrib non-free

deb http://deb.debian.org/debian buster-updates main contrib non-free
deb-src http://deb.debian.org/debian buster-updates main contrib non-free

deb http://deb.debian.org/debian buster-backports main contrib non-free
Run Code Online (Sandbox Code Playgroud)

我安装了ZFS

sudo apt install zfs-dkms zfsutils-linux -y
Run Code Online (Sandbox Code Playgroud)

然后在安装过程中出现以下错误

Failed to start Mount ZFS filesystems
Run Code Online (Sandbox Code Playgroud)

我通过运行解决了我的问题

sudo /sbin/modprobe zfs
sudo apt upgrade -y
Run Code Online (Sandbox Code Playgroud)

我将以下行添加到/etc/modules

zfs
Run Code Online (Sandbox Code Playgroud)

有 2 个磁盘连接到我的虚拟机:

  • /dev/sdb
  • /dev/vda

我创建了一个池

sudo zpool create -f mypool mirror /dev/vda /dev/sdb
Run Code Online (Sandbox Code Playgroud)

看我的zpool list

$ sudo zpool list
NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
mypool  9.94G   291K  9.94G         -     0%     0%  1.00x  ONLINE  -
Run Code Online (Sandbox Code Playgroud)

和我的zpool status

$ sudo zpool status
  pool: mypool
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    mypool      ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        vda     ONLINE       0     0     0
        sdb     ONLINE       0     0     0

errors: No known data errors
Run Code Online (Sandbox Code Playgroud)

然后我尝试委派ZFS权限。所以我添加了一个新用户:

sudo adduser zfsuser
Run Code Online (Sandbox Code Playgroud)

我更改了权限/mypool/

sudo chown zfsuser:zfsuser /mypool -R
sudo chmod u+rwx /mypool -R
sudo chmod go-rwx /mypool -R
Run Code Online (Sandbox Code Playgroud)

然后我给了权限

sudo zfs allow -u zfsuser create,destroy,mount mypool
Run Code Online (Sandbox Code Playgroud)

这是结果zfs allow mypool

$ sudo zfs allow mypool
---- Permissions on mypool -------------------------------------------
Local+Descendent permissions:
    user zfsuser create,destroy,mount
Run Code Online (Sandbox Code Playgroud)

但是当我登录为zfsuser

su zfsuser
Run Code Online (Sandbox Code Playgroud)

即使我在上一个命令中授予了权限,用户也无法挂载

$ /sbin/zfs create mypool/test
filesystem successfully created, but it may only be mounted by root
Run Code Online (Sandbox Code Playgroud)

我缺少什么?我应该编辑 fstab 文件以允许 zfsuser 挂载吗?我该怎么做呢?

谢谢

小智 2

请参阅“Linux 下无法以非 root 身份挂载的可能解决方法#10648”

zfs create并且zfs clone现在无法工作。