当前位置: 首页 > 知识库问答 >
问题:

LXD与LVM备份存储实现磁盘配额

谭思博
2023-03-14

我从LXD存储规范中看到,LVM可以用作备份存储。我以前曾设法让LVM与LXC一起工作。这非常令人高兴,因为它允许配额式的磁盘消耗控制。

我如何用LXD实现这一点?

据我所知,存储。lvm_vg_name必须指向我的卷组。我通过创建一个概要文件,并将该概要文件应用到容器中,为容器设置了这一点。整个概要文件配置如下所示:

name: my-profile-name
config:
  raw.lxc: |
    storage.lvm_vg_name = lxc-volume-group
    lxc.start.auto = 1
    lxc.arch = amd64
    lxc.network.type = veth
    lxc.network.link = lxcbr0
    lxc.network.flags = up
    lxc.network.hwaddr = 00:16:3e:xx:xx:xx
    lxc.cgroup.cpu.shares = 1
    lxc.cgroup.memory.limit_in_bytes = 76895572
  security.privileged: "false"
devices: {}

根据主机盒上的pvdisplay,卷组应可用且正常工作:

  --- Physical volume ---
  PV Name               /dev/sdc5
  VG Name               lxc-volume-group
  PV Size               21.87 GiB / not usable 3.97 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              5599
  Free PE               901
  Allocated PE          4698
  PV UUID               what-ever

但是,在应用配置文件并启动容器后,它似乎正在使用文件备份存储:

me@my-box:~# ls /var/lib/lxd/containers/container-name/rootfs/
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt
proc  root  run  sbin  srv  sys  tmp  usr  var

我做错了什么?

共有2个答案

丁长卿
2023-03-14

我会回答我自己的问题,以防对别人有用。

根据lxc用户邮件的权威回答,列表:

“storage.lvm_vg_名称不是每个容器的配置设置,而是针对整个守护进程的。

您可以使用“lxc config set storage”设置它。lvm_vg_name myvolgroup',然后lxd将使用卷组作为以后创建的每个新映像和容器的存储。"

作为一个非常粗略的总结,我使用vgcread创建一个卷组,然后使用lvcread在该组中创建一个卷。接下来是lxc config setstorage.lvm_vg_namelxc config setstorage.lvm_thinpool_name

它似乎起作用了。然而,LXD目前对我的口味来说有点太不成熟了,我现在打算使用普通的LXC。我期待着在几个月后再次尝试LXD。

曹季同
2023-03-14

注意,我们还提供了一个带有LXD的python脚本来为您进行初始VG配置

至于磁盘配额,我们有一个新的规范,我们将很快实施,它将允许您为连接到支持它的容器的任何存储设置磁盘配额。

虽然我们仍然支持LVM,但就存储后端而言,目前我们的主要关注点和首选是ZFS,因为它允许实时进行此类更改,并且在跨网络移动容器和快照时也能更好地工作。

zfs、LVM和btrfs将支持新的存储配额功能,但仅对zfs和btrfs实时应用,LVM将需要重新启动容器。

 类似资料:
  • 本文向大家介绍MySQL使用LVM快照实现备份,包括了MySQL使用LVM快照实现备份的使用技巧和注意事项,需要的朋友参考一下 新建一个lvm磁盘,这里我建的lv为mydatalv,挂载到了/data下 将原数据库文件复制到/data目录下 [root@localhost ~]# cp -a /var/lib/mysql /data/ 修改配置文件,将mysql数据库文件放在lvm盘中,二进制文件

  • 我无法让我的ehCache与磁盘存储一起工作。我想要一个持久缓存存在后,我重新启动我的应用程序。所以我尝试了ehCache,这是我的ehCache配置文件: 只要我不重新启动应用程序,缓存就会工作。在我重新启动应用程序并且ehCache试图从缓存文件加载数据之后,我得到了这个错误: 我还有一个ShutdownListener来关闭CacheManager 这是我的服务方式

  • 块设备与磁盘阵列 blkdevparts= 手动设置块设备分区表(而不是从块设备读取),主要用于嵌入式环境或分区表损坏恢复的场合。详情参见Documentation/block/cmdline-partition.txt文档 [EFI] gpt 强制将拥有有效GPT签名但同时又包含无效"保护MBR"的磁盘当做GPT格式的磁盘。 [IOSCHED] elevator={"bfq"|"cfq"|"de

  • 章节简述: 在学习了第6章讲解的硬盘设备分区、格式化、挂载等知识后,本章将深入讲解各个常用RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)技术方案的特性,并通过实际部署RAID 10、RAID 5+备份盘等方案来更直观地查看RAID的强大效果,以便进一步满足生产环境对硬盘设备的IO读写速度和数据冗余备份机制的需求。同时,考虑到用户可能会动态调整

  • 14.1 磁盘配额 (Quota) 的应用与实作 Quota 这个玩意儿就字面上的意思来看,就是有多少“限额”的意思啦!如果是用在零用钱上面, 就是类似“有多少零用钱一个月”的意思之类的。如果是在计算机主机的磁盘使用量上呢?以 Linux 来说,就是有多少容量限制的意思啰。我们可以使用 quota 来让磁盘的容量使用较为公平, 下面我们会介绍什么是 quota ,然后以一个完整的范例来介绍 quo

  • 问题内容: 我正在使用具有磁盘存储持久性的缓存。在随后重新运行该应用程序时,出现以下错误: 除了在应用程序中的某个位置显式调用之外,还有什么方法可以解决此问题? 缓存配置: 复制问题的代码: 问题答案: 尝试设置系统属性: net.sf.ehcache.enableShutdownHook = true 因此,您可以在程序的开头添加以下行: 或者,从命令行传递属性: 注意,ehcache网站在使用