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

技术控

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

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

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

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

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

x
背景

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

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

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

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

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

  loop设备
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

  稀疏文件
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

   2. 扩容稀疏文件
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

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

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

  就像这样
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

   3. 扩容Loop设备
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

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

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

  就像这样
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

   4. 扩容thin pool
   

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

  经过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)

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

Docker存储空间扩容(DeviceMapper Driver)

Docker存储空间扩容(DeviceMapper Driver)

  补充

  实际上,稀疏文件-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)

  其中,raw block device可以由docker的cloud provider(比如OpenStack的Cinder)提供,届时Docker存储空间的扩容、备份、迁移都会非常方便
  参考



上一篇:HTML 表单详解
下一篇:Lesser known Git commands
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
时间过的真快,一不留神我也抢了回沙发!
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )

© 2001-2017 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表