简介

Btrfs是下一代的copy-on-write文件系统,它支持很多高级特性,使其更加适合Docker。Btrfs合并在内核主线中,并且它的on-disk-format也逐渐稳定了。不过,它的很多特性还仍然处于开发中。
Docker的btrfs存储驱动利用了很多Btrfs特性来管理镜像和容器。这些特性中最重要的就是thin provisioning(超配)、copy-on-write和快照。

Btrfs特性

  Btrfs一直被认为是Linux文件系统的未来。在Linux内核主线的全力支持下,稳定的on-disk-format,关注于稳定性的积极开发,使得Btrfs逐渐成为现实。
  只要Docker还在Linux平台上运行,人们就会认为btrfs存储驱动会替代devicemapper存储驱动,成为潜在的长期的存储驱动。然而,在写耗时上,devicemapper被认为更安全,更稳定,更适合商品化。只有当你很了解Btrfs,并且有丰富的经验时,才可以考虑btrfs驱动商品化。

镜像分层和共享Btrfs

  Docker利用Btrfs的子卷(subvolumes)和快照来管理镜像和容器层的on-disk组件。Btrfs子卷像是一个普通的Unix文件系统。同样,当挂靠到Unix文件系统时,它们可以有自己的内部目录结构。
  子卷是原生的copy-on-write,还有着按需分配的足够的空间,这些空间来自于下层的存储池。它们也可以拥有子卷,也可以使用快照。下图显示了4个子卷,子卷2和子卷3挂靠在其他子卷之上,子卷4显示了自己内部的目录树。