此处以CentOS 7操作系统为例演示
fdisk -l
运行fdisk -l
查看现有磁盘大小。示例返回磁盘(/dev/vda)容量是42.9 GiB、( /dev/vdb)容量是53.7 GiB。
查看帮助:fdisk --help
$ fdisk -l
# 磁盘 /dev/vda 大小85.9 GB约等于80G
Disk /dev/vda: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b1b45
# 磁盘分区/dev/vda1,只有一个分区
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 167766794 83882373+ 83 Linux
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x70455029
# 磁盘分区/dev/vdb1,只有一个分区
Device Boot Start End Blocks Id System
/dev/vdb1 2048 83886079 41942016 83 Linux
- 查看阿里云挂载盘
df -h
运行df -h
查看磁盘分区大小。示例返回分区容量(/dev/vda1)是22 GiB。
查看帮助:df --help
# df -h
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 22G 16G 58% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 460K 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/vdb 50G 5.6G 42G 12% /data
6baf54b40c-rji62.cn-qingdao.nas.aliyuncs.com:/ 10P 2.0G 10P 1% /mnt
#一些其他的分区
tmpfs 7.8G 12K 7.8G 1% /data/k8s/k8s/kubelet/pods/xxx/volumes/kubernetes.io~secret/rabbitmq-token-kfl7k
tmpfs 7.8G 12K 7.8G 1% /data/k8s/k8s/kubelet/pods/xxx/volumes/kubernetes.io~secret/default-token-n86w9
。。。
aliyuncs.com://k8s-prod/config-service 10P 2.0G 10P 1% /data/k8s/k8s/kubelet/pods/xxx/volumes/kubernetes.io~nfs/java-init
aliyuncs.com://k8s-prod/seller-api/v2 10P 2.0G 10P 1% /data/k8s/k8s/kubelet/pods/xxx/volumes/kubernetes.io~nfs/copy-init
aliyuncs.com://k8s-prod/rabbitmq-persistent/cluster-1 10P 2.0G 10P 1% /data/k8s/k8s/kubelet/pods/xxx/volumes/kubernetes.io~nfs/pv-rmq-2
overlay 50G 5.6G 42G 12% /data/k8s/docker/data/overlay2/50c4da628aa0bc77ba81dbf68d4e3b14f25cdcaeaa1b8d431200313663bed011/merged
overlay 50G 5.6G 42G 12% /data/k8s/docker/data/overlay2/b3cc75f9790bfbec141508852daa4b6c3f587e17c68572eb229385a27b6c9103/merged
。。。
shm 64M 0 64M 0% /data/k8s/docker/data/containers/746fd30d86b884cd193afaa92164e7b13bddcf604c24040f1028b1e84b909470/mounts/shm
shm 64M 0 64M 0% /data/k8s/docker/data/containers/2b0c3b18a4f0d9cf595d0155649572828cadfa62825df3bb8ee6d40a3a3819dc/mounts/shm
shm 64M 0 64M 0% /data/k8s/docker/data/containers/edeb759cd3db5994ef6265b77d7c3138154ddbd0a3be94851aa2fa10538245a9/mounts/shm
。。。
还有可以加参数T显示类型
# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 40G 22G 16G 58% /
devtmpfs devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs tmpfs 7.8G 460K 7.8G 1% /run
tmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/vdb ext4 50G 5.6G 42G 12% /data
6baf54b40c-rji62.cn-qingdao.nas.aliyuncs.com:/ nfs4 10P 2.0G 10P 1% /mnt
du -h
磁盘大小统计,统计当前文件夹内各个文件夹大小
查看帮助:du --help
$ du -h -d 1
4.5M ./cluster-0
4.5M ./cluster-1
4.5M ./cluster-2
14M .
# 查看固定目录占用大小
$ du -hs /var
2.4G /var
-h:人类可以看懂的,会按照M/G/P/T统计,否则显示字节数
-d:统计当前文件夹深度,若不设置则一直向下统计
对于大文件日志
删除日志文件后并不是立即释放了空间,还有进程锁定呢
需要kiill -9 pid
或者重启应用,才能真正释放占用空间
结论是“在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。”
[root@test3 /]$ du -sh /
12G / # 整个根目录才12G
[root@test3 /]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 79G 77G 0 100% / # df查看磁盘已经占满了
查找被删除但是未被释放空间的文件
清理磁盘空间时,rm掉文件后,发现磁盘空间并没有释放,根本是原因是文件被进程打开中,文件描述符未被释放
关键点:利用lsof命令查看
yum install -y lsof
lsof | grep deleted
解决方案一:
重启对应进程,或者给对应进程发送信号,释放文件描述符。
解决方案二:
不要用rm命令,利用重定向覆盖文件内容
echo "" > "needrmfile"
解决方案三:
简单粗暴:重启系统