有一个nfs盘挂载到本机,本机docker想用这个nfs盘存储。
此时docker自动用起了devicemapper 。
docker 用 devicemapper 这个后备存储有个默认卷的限制,是10g。现在都用overlay2了。
dd
解决,首先在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 把每个块都写满,数据不足的部分用空字符填充;
格式化dd出来的大文件
把大文件格式化为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/