如何在ZFS数据集中创建卷并附加到LXD容器?

时间:2017-10-11 14:45:11

标签: ubuntu zfs lxd

我想在zfs数据集中创建一个卷:

sudo zfs create mypool/maildir
sudo lxc storage volume create mypool/maldir custom1

得到了

error: not found

我的创作肯定是错的,我打算做的是:

  1. 创建zfs数据集
  2. 将数据集用作磁盘并装入容器
  3. 所以,如果我重新安装系统,我可以创建一个容器并将相同的数据集附加到新容器,

    这可能吗?感谢

1 个答案:

答案 0 :(得分:1)

您的帖子并未真正显示您的游戏池或数据集的外观,但这是您可以采用的一种方式。

一般来说,你想要:

  1. 直接使用ZFS创建ZFS池,就像您(可能)使用zpool create ...命令一样;
  2. 为LXD创建一个数据集,作为其分配的池,就像您使用zfs create ...一样,使用lxd init步骤进行此分配;
  3. 使用LXC在LXD池中创建;
  4. 使用attach-profile子命令将卷分配给容器配置文件
  5. 我没有足够的信息来使用您的数据作为示例,因此我将使用LXD / LXC 3.0向您展示我的工作方式:

    创建ZFS池和数据集

    $ sudo zpool create -m /mnt/tank tank raidz3 <vdev1> <vdev2> ...
    $ sudo zfs create tank/lxd
    $ sudo zfs list
    NAME       USED  AVAIL  REFER  MOUNTPOINT
    tank       954M  1.31T  41.7K  /mnt/tank
    tank/lxd   953M  1.31T  41.7K  /mnt/tank/lxd
    

    将LXD数据集作为池

    $ lxd init
    ...
    Name of the new storage pool [default=default]: lxd-pool
    Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]:
    Create a new ZFS pool? (yes/no) [default=yes]: no
    Name of the existing ZFS pool or dataset: tank/lxd
    ...
    

    使用LXC创建卷

    以下命令在我们上面指定的名为dev-volume的池中创建一个名为lxd-pool的新卷,并设置512GB的大小。 (你可以使用你需要的任何数字。)

    $ lxc storage volume create lxd-pool dev-volume size=512GB
    

    如果您正在获得error: not found,那么您需要确保正确使用这些命令,这些参数的顺序正确,以便您引用实际的内容存在,等等。使用lxc help <subcommand>非常有帮助。

    将卷附加到容器配置文件

    您希望将卷分配给容器将使用的配置文件。为此,只需依赖以下命令:

    $ lxc storage volume attach-profile lxd-pool dev-volume dev-profile tank /mnt/tank
    

    上面的命令将dev-volume中的卷lxd-pool附加到名为dev-profile的配置文件中,作为名为tank的设备,该设备将挂载到文件系统路径{{1}在容器内。

    我希望这会有所帮助。