installer是什么意思 window installer是什么( 六 )


Red Hat Enterprise Linux:4.x版本内核或更高版本 + Docker 17.06版本或更高版本,建议使用Overlay2 。Red Hat Enterprise Linux:低版本内核或低版本的Docker,建议使用Device Mapper 。Ubuntu Linux:4.x版本内核或更高版本,建议使用Overlay2 。Ubuntu Linux:更早的版本建议使用AUFS 。SUSE Linux Enterprise Server:Btrfs 。再次强调,上面的清单内容只是一个参考建议 。读者需要时刻关注Docker文档中关于存储驱动的最新支持和版本兼容列表 。尤其当读者正在使用Docker企业版(EE),并且有售后支持合同的情况下,更有必要查阅最新文档 。
3.6.1 Device Mapper配置
大部分Linux存储驱动不需要或需要很少的配置 。但是,Device Mapper通常需要合理配置之后才能表现出良好的性能 。
默认情况下,Device Mapper采用loopback mounted sparse file作为底层实现来为Docker提供存储支持 。如果读者需要的是开箱即用并且对性能没什么要求,那么这种方式是可行的 。但这并不适用于生产环境 。实际上,默认方式的性能很差,并不支持生产环境 。
为了达到Device Mapper在生产环境中的最佳性能,读者需要将底层实现修改为direct-lvm模式 。这种模式下通过使用基于裸块设备(Raw Block Device)的LVM精简池(LVM thin pool)来获取更好的性能 。
在Docker 17.06以及更高的版本中可以配置direct-lvm作为存储驱动 。但是在本书撰写时,该方式存在某种限制 。其中最主要的一点是,这种方式只能配置一个块设备,并且只有在第一次安装后才能设置生效 。未来可能会有改进,但就目前情况来看配置单一块设备这种方式在性能和可靠性上都有一定的风险 。
3.6.2 让Docker自动设置direct-lvm
下面的步骤会将Docker配置存储驱动为Device Mapper,并使用direct-lvm模式 。
(1)将下面的存储驱动配置添加到/etc/docker/daemon.json当中 。
{"storage-driver": "devicemapper","storage-opts": [ "dm.directlvm_device=/dev/xdf", "dm.thinp_percent=95", "dm.thinp_metapercent=1", "dm.thinp_autoextend_threshold=80", "dm.thinp_autoextend_percent=20", "dm.directlvm_device_force=false"]}Device Mapper和LVM是很复杂的知识点,并不在本书的讨论范围之内 。下面简单介绍一下各配置项的含义 。
dm.directlvm_device:设置了块设备的位置 。为了存储的最佳性能以及可用性,块设备应当位于高性能存储设备(如本地SSD)或者外部RAID存储阵列之上 。dm.thinp_percent=95:设置了镜像和容器允许使用的最大存储空间占比,默认是95% 。dm.thinp_metapercent:设置了元数据存储(MetaData Storage)允许使用的存储空间大小 。默认是1% 。dm.thinp_autoextend_threshold:设置了LVM自动扩展精简池的阈值,默认是80% 。dm.thinp_autoextend_percent:表示当触发精简池(thin pool)自动扩容机制的时候,扩容的大小应当占现有空间的比例 。dm.directlvm_device_force:允许用户决定是否将块设备格式化为新的文件系统 。(2)重启Docker 。
(3)确认Docker已成功运行,并且块设备配置已被成功加载 。
$ docker versionClient:Version: 18.01.0-ceServer:Version: 18.01.0-ce$ docker system infoStorage Driver: devicemapperPool Name: docker-thinpoolPool Blocksize: 524.3 kBBase Device Size: 25 GBBacking Filesystem: xfsData file: << Would show a loop file if in loopback modeMetadata file: << Would show a loop file if in loopback modeData Space Used: 1.9 GBData Space Total: 23.75 GBData Space Available: 21.5 GBMetadata Space Used: 180.5 kBMetadata Space Total: 250 MBMetadata Space Available: 250 MB即使Docker在direct-lvm模式下只能设置单一块设备,其性能也会显著优于loopback模式 。
3.6.3 手动配置Device Mapper的direct-lvm
完整介绍如何进行Device Mapper direct-lvm的手动配置已经超越了本书的范畴,并且不同操作系统版本之下配置方式也不尽相同 。但是,下面列出的内容是读者需要了解并在配置的时候仔细斟酌的 。
块设备(Block Device):在使用direct-lvm模式的时候,读者需要有可用的块设备 。这些块设备应该位于高性能的存储设备之上,比如本地SSD或者外部高性能LUN存储 。如果Docker环境部署在企业私有云(On-Premise)之上,那么外部LUN存储可以使用FC、iSCSI,或者其他支持块设备协议的存储阵列 。如果Docker环境部署在公有云之上,那么可以采用公有云厂商提供的任何高性能的块设备(通常基于SSD) 。LVM配置:Docker的Device Mapper存储驱动底层利用LVM(Logical Volume Manager)来实现,因此需要配置LVM所需的物理设备、卷组、逻辑卷和精简池 。读者应当使用专用的物理卷并将其配置在相同的卷组当中 。这个卷组不应当被Docker之外的工作负载所使用 。此外还需要配置额外两个逻辑卷,分别用于存储数据和源数据信息 。另外,要创建LVM配置文件、指定LVM自动扩容的触发阈值,以及自动扩容的大小,并且为自动扩容配置相应的监控,保证自动扩容会被触发 。Docker配置:修改Docker配置文件之前要先保存原始文件(etc/docker/daemon.json),然后再进行修改 。读者环境中的dm.thinpooldev配置项对应值可能跟下面的示例内容有所不同,需要修改为合适的配置 。{ "storage-driver": "devicemapper", "storage-opts": [ "dm.thinpooldev=/dev/mapper/docker-thinpool", "dm.use_deferred_removal=true", "dm.use_deferred_deletion=true" ]}修改并保存配置后,读者可以重启Docker daemon 。