51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2491|回复: 0
打印 上一主题 下一主题

LXD 2.15 中的存储管理

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-11-15 14:55:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


    长久以来 LXD 已经支持多种存储驱动。用户可以在 zfs、btrfs、lvm 或纯目录存储池之间进行选择,但他们只能使用单个存储池。一个被频繁被提到的需求是不仅支持单个存储池,还支持多个存储池。 -- Christian Brauner
    本文导航

      -创建存储池 …… 11%
      -创建更多的存储池 …… 17%
      -在默认存储池上创建容器 …… 27%
      -在特定存储池上创建容器 …… 37%
      -创建自定义存储卷 …… 46%
      -连接自定义卷到容器中 …… 53%
      -在容器之间共享自定义存储卷 …… 61%
      -总结 …… 83%
    编译自: https://insights.ubuntu.com/2017/07/12/storage-management-in-lxd-2-15/
    作者: Christian Brauner
    译者: geekpi

    长久以来 LXD 已经支持多种存储驱动。用户可以在 zfs、btrfs、lvm 或纯目录存储池之间进行选择,但他们只能使用单个存储池。一个被频繁被提到的需求是不仅支持单个存储池,还支持多个存储池。这样,用户可以维护一个由 SSD 支持的 zfs 存储池用于 I/O 密集型容器,另一个简单的基于目录的存储池用于其他容器。幸运的是,现在这是可能的,因为 LXD 在几个版本后有了自己的存储管理 API。
    创建存储池

    新安装 LXD 没有定义任何存储池。如果你运行 lxd init ,LXD 将提供为你创建一个存储池。由 lxd init 创建的存储池将是创建容器的默认存储池。


    asciicast
    创建更多的存储池

    我们的客户端工具使得创建额外的存储池变得非常简单。为了创建和管理新的存储池,你可以使用 lxc storage 命令。所以如果你想在块设备 /dev/sdb 上创建一个额外的 btrfs 存储池,你只需使用 lxc storage create my-btrfs btrfs source=/dev/sdb。让我们来看看:


    asciicast
    在默认存储池上创建容器

    如果你从全新安装的 LXD 开始,并通过 lxd init 创建了一个存储池,LXD 将使用此池作为默认存储池。这意味着如果你执行 lxc launch images:ubuntu/xenial xen1,LXD 将为此存储池上的容器的根文件系统创建一个存储卷。在示例中,我们使用 my-first-zfs-pool 作为默认存储池。


    asciicast
    在特定存储池上创建容器

    但是你也可以通过传递 -s 参数来告诉 lxc launch 和 lxc init 在特定存储池上创建一个容器。例如,如果要在 my-btrfs 存储池上创建一个新的容器,你可以执行 lxc launch images:ubuntu/xenial xen-on-my-btrfs -s my-btrfs:


    asciicast
    创建自定义存储卷

    如果你其中一个容器需要额外的空间存储额外的数据,那么新的存储 API 将允许你创建可以连接到容器的存储卷。只需要 lxc storage volume create my-btrfs my-custom-volume:


    asciicast
    连接自定义卷到容器中

    当然,这个功能是有用的,因为存储 API 让你把这些存储卷连接到容器。要将存储卷连接到容器,可以使用 lxc storage volume attach my-btrfs my-custom-volume xen1 data /opt/my/data:


    asciicast
    在容器之间共享自定义存储卷

    默认情况下,LXD 将使连接的存储卷由其所连接的容器写入。这意味着它会将存储卷的所有权更改为容器的 id 映射。但存储卷也可以同时连接到多个容器。这对于在多个容器之间共享数据是非常好的。但是,这有一些限制。为了将存储卷连接到多个容器,它们必须共享相同的 id 映射。让我们创建一个额外的具有一个隔离的 id 映射的容器 xen-isolated。这意味着它的 id 映射在这个 LXD 实例中将是唯一的,因此没有其他容器具有相同的id映射。将相同的存储卷 my-custom-volume 连接到此容器现在将会失败:


    asciicast
    但是我们让 xen-isolated 与 xen1 有相同的映射,并把它重命名为 xen2 来反映这个变化。现在我们可以将 my-custom-volume 连接到 xen1 和 xen2 而不会有问题:


    asciicast
    总结

    存储 API 是 LXD 非常强大的补充。它提供了一组基本功能,有助于在大规模使用容器时处理各种问题。这个简短的介绍希望给你一个印象,你可以做什么。将来会有更多介绍。
    本篇文章最初在 Brauner 的博客[1]中发布。
    via: https://insights.ubuntu.com/2017/07/12/storage-management-in-lxd-2-15/
    作者:Christian Brauner[2] 译者:geekpi 校对:wxy
    本文由 LCTT 原创编译,Linux中国 荣誉推出

      [1]: Brauner 的博客 - https://cbrauner.wordpress.com/
      [2]: Christian Brauner - https://cbrauner.wordpress.com/


    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 18:46 , Processed in 0.085122 second(s), 33 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表