有一个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/

docker loki导致ssh docker load no space left_docker loki导致ssh