前言
最近制作的Docker镜像体积已经快到达7G了,这几天想着能否将里面的内容进行一些删减,以此来达到降低容量的功能
然后通过了解,首先得使用Linux命令,查看文件磁盘所占的空间大小,下面可以通过以下命令进行操作
- df 可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件束手无策
- du 查看文件和文件夹的磁盘使用空间
在使用中,一般是df命令和du命令一起联合使用的
查看文件磁盘使用情况
# 查看分区的文件系统,显示目前所有文件系统的可用空间及使用情形
# 参数 -h 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式
df -h

或者使用du命令来对每个文件及文件夹大小进行查看:
# 仅列出/ 目录下面所有的一级目录文件大小, --max-depth=1 是指定深度
du -h --max-depth=1 /

通过上面显示的,我们就能够大致了解每个文件夹的大小了,然后在进去里面把一些不必要的内容删除即可 ~# 记一次因代码出错不断输出日志占满Docker容器硬盘的排查经历
前言
今天蘑菇博客突然宕机,进入页面后,发现很多内容无法正常显示,开始不知道是什么原因而引起的,然后想要启动mogu_web的日志进行查看
tail -f catalina.out
启动后,发现卡死,无法正常输出日志,这时候我以为是因为那里出了问题,然后想着可能是因为项目那里出现问题了,还是先把现在的镜像提交一下
docker commit -m "bak" XXXXX moxi/mogu_blog
然后突然出现下面的错误:
Error response from daemon: mkdir /var/lib/docker/overlay2/f53be9948dcd7fb15d9d05b6ab523a3e25d3ab213d884a2282dea4dfd5bb8059: no space left on device
大概意思就是说没有硬盘空间了,然后想着既然没有空间了,那就把一些镜像删除吧
docker images;
选择一些没用的镜像,然后删除,发现删除也不能删除,这个时候想着,可能不是因为镜像的缘故,而造成空间不够的,会不会是其它文件的原因,先遍历一下文件的所占空间
df -h
得到下面的信息:
Filesystem Size Used Avail Use% Mounted on
devtmpfs 910M 0 910M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 105M 816M 12% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/vda1 40G 40G 0 100% /
overlay 40G 40G 0 100% /var/lib/docker/overlay2/ad1a22ed400f8a753167934d5ba4455266871718f00654038ba6b59b3b8e26bc/merged
shm 64M 0 64M 0% /var/lib/docker/containers/4344540fce1ecf3a2b801f8edb2a235c56e892946f2ea517a408467fdffb2174/shm
tmpfs 184M 0 184M 0% /run/user/0
从这里能够看到 40G的空间,全部被docker占用了,既然不是docker镜像所占用了,那肯定就只有容器了,使用下列命令,查看docker的镜像和容器所占空间
docker system df
看到这里,瞬间就得出答案了,果然是因为运行的容器而造成空间不够了

因为一个容器就占用了29.03GB的容量,下面我们就需要进入容器里面看看,到底是什么东西,占用了这么多内存了,我们使用du命令,查看占用空间,这篇博客讲了一些常用的命令:Linux下查看文件和文件夹占用空间大小
du -h --max-depth=1 /

我们发现是 /home目录里面的内容,占用了27G的空间,我们接着深入的查看
du -h --max-depth=1 /home/mogu_blog/
到这里就明白了,是因为mogu_sms项目,占用了27G的空间

通过排查,是一个日志文件而造成的,想着可能是因为这个日志文件不断输出错误,而造成空间不够用的问题,所以我们现在需要解决这个错误后,然后把对应的日志输出文件给删除
rm -rf catalina.out
再次查看,恢复正常了

我们回到宿主机,继续查看,空间也已经变成了1G了

我们再次启动项目,发现可以查看日志# VMWare给CentOS扩容
前言
今天因为自己的虚拟机满了,无法继续创建Docker镜像,就想着给虚拟机扩容,从原来的20G提升到40G
添加新磁盘
首先我们需要关闭我们正在运行的虚拟机,然后找到设置页面,新添加一个20G的硬盘

进入系统
然后我们进入系统
#查看服务器未挂载的磁盘
fdisk -l

从上图可以看出,服务器的 /dev/vdb 42.9GB 此磁盘未挂载
如果此磁盘未挂载最下面会出一类似的话:Disk /dev/sdc doesn’t contain a valid partition table
从下图可以清楚的看到第三个硬盘sdc没有分区。sda和sdb都分区过了。
sda:sda1 sda2 sda3
sdb:sdb1 sdb2

磁盘分区
下面我们需要对未挂载的磁盘进行分区
# 查看分区
fdisk /dev/vdb
然后执行下面操作
n -> p -> 回车 -> 回车 -> w
大概意思如下:
- n:添加一个分区
- P:主分区
- 两个回车指是开始和结束的磁盘扇区大小
- w:写入磁盘

此时虽然已经进行了分区,但是还没有文件系统,所以磁盘依然不能使用
格式化磁盘
下面我们需要格式化磁盘,然后写入文件系统
# 格式化磁盘,写入文件系统
mkfs.ext4 /dev/vdb1
出现如下图这们的界面,就是格式化磁盘写入文件成功:

挂载新磁盘
# 创建一个新目录
mkdir /huichengff
# 挂载
mount /dev/vdb1 /huichengff
如果挂载成功,会出现如下图这样的界面

查看磁盘信息
当我们再来查所有分区时,用fdisk -l 命令就会多了一个主分区,/dev/vdb1;如下图:
``
开启自动挂载
新创建的分区不能开机自动挂载,每次重启机器都要手动挂载。
设置开机自动挂载需要修改/etc/fstab文件 ;命令如下:
# 编辑
vim /etc/fstab
# 打开后,在最后一行加入以下代码
/dev/vdb1 /huichengff ext4 defaults 0 1




