Docker存储空间扩容(DeviceMapper Driver) – Docker.Ren

摘要

[db:摘要]

背景Docker默认由稀疏文件文件构成Devicemapper存储池,结构图大致如下:一般稀疏文件大小为100GB,所以Docker本地存储空间上限也就是100GB,当这个空间满了,怎样扩容呢?步骤根据上面的结构图,扩容是从下至上,分层进行的1.确认Docker存储空间及构成loop设备稀疏文件2. 扩容稀疏文件这个时候,稀疏文件被“扩大”了,稀疏文件模拟的loop设备还没有扩大就像这样3. 扩容Loop设备这个时候,稀疏文件和Loop设备都被扩大了,由Loop设备构成的thin pool还没有扩大(这里说明一下,0 209715200 thin-pool 中的单位是512bytes-sector,所以0 209715200代表100GB的空间)就像这样4. 扩容thin pool经过suspend/load/resume三个步骤,thin pool的空间也被扩大了;需要说明的是,suspend和resume动作之间,pool是不接受I/O的,也就是说container的I/O或其他对于thin pool的I/O都会被hung住5. 再次确认Docker存储空间这时候,整体扩容已完成,小鲸鱼又可以任性遨游了补充实际上,稀疏文件-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:其中,raw block device可以由docker的cloud provider(比如OpenStack的Cinder)提供,届时Docker存储空间的扩容、备份、迁移都会非常方便参考https://docs.docker.com/engine ... iver/http://blog.opskumu.com/docker-storage-setup.htmlhttps://www.kernel.org/doc/Doc ... g.txt

docker

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: