通过 Btrfs 使用 MySQL 和 LxD

Har*_*rry 5 mysql snapshot ext4 btrfs lxc

我有一个 Ubuntu 16.04 工作站,带有 ext4 文件系统。

  1. 当使用 LxD 时,我希望拥有快如闪电的快照能力(因为我的图像通常很大)。据我了解,只有当支持文件系统是 CoW 文件系统(例如 Btrfs)时,才能实现这种能力。

(注意:到目前为止,我遇到的 Btrfs 唯一与性能相关的主要警告是建议使用noatimemount 标志。)

  1. 但由于我在该系统上还有一个 MySQL 实例,我不希望看到其性能受到影响(相对于 ext4 文件系统),因此我决定对切换到 Btrfs 支持的 MySQL 时是否存在任何潜在问题进行最后检查。而且,看看我发现了什么

通常最好使用选项挂载 Btrfs 'nodatacow',禁用写时复制,因为当您进行大量随机写入时,COW 会导致碎片、磁盘抖动以及 CPU 和 RAM 峰值。

现在,这似乎是一个真正的阻尼器!

问:有什么方法可以让我同时拥有 Btrfs 的快速快照和高性能 MySQL 实例?

Har*_*rry 2

我尝试了自己的评论,一切似乎都运行良好。更好的替代方案仍然受到欢迎。

这就是我所做的。

# 1. Initial, onetime setup.
#   1.a) Create a sparse, 20G file.
      $ truncate -s 20G disk.20g

#   1.b) Format the loopback device with Btrfs.
      $ losetup /dev/loop0 disk.20g
      $ mkfs.btrfs /dev/loop0

# 2. Do this every time you wish to actually start using LxD.
# Note: Replace '/dev/loop0' with whatever loop-device is free on your system.
  $ sudo service lxd stop
  $ sudo mkdir -p /var/lib/lxd
  $ sudo mount -o noatime /dev/loop0 /var/lib/lxd
  $ sudo service lxd start

# 3. Do this to gracefully 'shutdown' the effects of Step 2.
  $ sudo service lxd stop
  $ sudo umount /var/lib/lxd
  $ losetup -d /dev/loop0
  $ sudo service lxd start
Run Code Online (Sandbox Code Playgroud)

所以,重申一下:

  1. 我的主机操作系统的主文件系统是 Ext4。上面的文件disk.20g仅驻留在该文件系统上。该文件系统可以继续托管 MySQL 和其他软件,这些软件的性能可能会受到 Btrfs 的不利影响。
  2. LxD 将其图像和容器存储在 Btrfs 分区中。这允许极快的快照。