请选择 进入手机版 | 继续访问电脑版

技术控

    今日:78| 主题:61765
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] Docker存储空间扩容(DeviceMapper Driver)

[复制链接]
不明觉厉 发表于 2016-9-30 22:00:02
249 4
背景

  Docker默认由稀疏文件文件构成Devicemapper存储池,结构图大致如下:
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-1-技术控-结构图,空间

  一般稀疏文件大小为100GB,所以Docker本地存储空间上限也就是100GB,当这个空间满了,怎样扩容呢?
  步骤

   根据上面的结构图,扩容是从下至上,分层进行的
   1.确认Docker存储空间及构成
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-2-技术控-结构图,空间

  loop设备
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-3-技术控-结构图,空间

  稀疏文件
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-4-技术控-结构图,空间

   2. 扩容稀疏文件
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-5-技术控-结构图,空间

  这个时候,稀疏文件被“扩大”了,稀疏文件模拟的loop设备还没有扩大
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-6-技术控-结构图,空间

  就像这样
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-7-技术控-结构图,空间

   3. 扩容Loop设备
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-8-技术控-结构图,空间

   这个时候,稀疏文件和Loop设备都被扩大了,由Loop设备构成的thin pool还没有扩大(这里说明一下, 0 209715200 thin-pool 中的单位是512bytes-sector,所以0 209715200代表100GB的空间)
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-9-技术控-结构图,空间

  就像这样
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-10-技术控-结构图,空间

   4. 扩容thin pool
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-11-技术控-结构图,空间

  经过suspend/load/resume三个步骤,thin pool的空间也被扩大了;需要说明的是,suspend和resume动作之间,pool是不接受I/O的,也就是说container的I/O或其他对于thin pool的I/O都会被hung住
   5. 再次确认Docker存储空间
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-12-技术控-结构图,空间

  这时候,整体扩容已完成,小鲸鱼又可以任性遨游了
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-13-技术控-结构图,空间

  补充

  实际上,稀疏文件-Loop设备够成DeviceMapper Thin Pool这个方法,官方是不推荐在生产环境使用的:
  "The default mode for Docker running the devicemapper storage driver is loop-lvm. This mode uses sparse files and suffers from poor performance. It is not recommended for production. The recommended mode for production environments is direct-lvm where the storage driver writes directly to raw block devices."
   https://docs.docker.com/engine ... iver/
   对于direct-lvm mode的配置文档很多,比如: http://blog.opskumu.com/docker-storage-setup.html 这里就不再赘述
  direct-lvm mode只是把loop device换成raw block device:
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)-14-技术控-结构图,空间

  其中,raw block device可以由docker的cloud provider(比如OpenStack的Cinder)提供,届时Docker存储空间的扩容、备份、迁移都会非常方便
  参考
kkiwjjyq 发表于 2016-10-4 02:06:54
在街上看美女,高一点就是欣赏;低一点就是流氓。
回复 支持 反对

使用道具 举报

董映巧 发表于 2016-10-28 03:32:18
这画面太美我不敢看
回复 支持 反对

使用道具 举报

何振 发表于 2016-11-17 18:49:01
垃圾内容,路过为证。
回复 支持 反对

使用道具 举报

从红酒到宿醉 发表于 2016-11-18 19:54:41
时间过的真快,一不留神我也抢了回沙发!
回复 支持 反对

使用道具 举报

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/c.CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 | 粤公网安备 44010402000842号 )

© 2001-2017 Comsenz Inc.

返回顶部 返回列表