有一个nfs盘挂载到本机,本机docker想用这个nfs盘存储。
此时docker自动用起了devicemapper 。
docker 用 devicemapper 这个后备存储有个默认卷的限制,是10g。现在都用overlay2了。
解决,首先在nfs盘里面dd出一个500G大文件系统出来:
dd if=/dev/zero of=/home/kevin_xie/yifeinfs/docker.data bs=1G count=500
dd 用来复制、抽取、转换文件,这里复制、抽取的大小可以以具体的块数指定,同时复制的时候可以进行编码或格式转换; dd 的主要选项: if=file 输入文件名,这里的文件不能是目录; of=file 输出文件名,这里的文件不能是目录; ibs=bytes 读入多少个字节,在这里就是指定块的大小,即输入缓冲区 的大小; obs=bytes 一 次读入多少个字节,在这里就是指定块的大小,即输出缓冲区的大小; bs=bytes 同时设置读写块的大小,可代替 ibs 和 obs; cbs=bytes 一次转换多少个个字节,即转换缓冲区大; skip=blocks 从输入文件开头跳过多少个块后再开始复制,也就是指定都从哪里开始复制; seek=blocks 从输出文件开头跳过多少个块后再开始复制,也就是指定目的文件要空多少个块才开始写入(通常只有当输出文件是磁盘或磁带时才有效) count=blocks 拷贝输入文件的多少个块; conv=conversion[,conversion...] 指定格式转换的参数 ascii 转换 EBCDIC 为 ASCII; ebcdic 转换 ASCII 为 EBCDIC; ibm 转换 ASCII 为 alternate EBCDIC; block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充; unblock 使每一行的长度都为 cbs ,不足部分用空格填充; lcase 把大写字符转换为小写字符; ucase 把小写字符转换为大写字符; noerror 出错时不停止; notrunc 不截断输出文件; sync 把每个块都写满,数据不足的部分用空字符填充;
把大文件格式化为xfs文件系统:
mkfs.xfs docker.data
不小心弄错了就用这个指令强制覆盖成xfs文件系统:
mkfs -t xfs -f docker.data
-t 指定文件系统类型(如ext2,ext3,ext4等等),则会从/etc/mke2fs.conf文件中读取默认配置
-f 强制覆盖
然后把这个大文件系统挂载到/var/lib/docker/下面去,之后在/var/lib/docker/产生的文件就会实际存储在docker.data里面去。
mount /home/kevin_xie/yifeinfs/docker.data /var/lib/docker/
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!