# Linux磁盘disk和分区分析
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
# df -h # 查看各分区使用情况
1
2
3
4
5
6
2
3
4
5
6
# 2.1.磁盘-du和df的区别
Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计
- df 命令的全称是
Disk Free
,显而易见它是统计磁盘中空闲的空间,也即空闲的磁盘块数。- 它是通过文件系统磁盘块分配图进行计算出的。
- du 命令的全称是
Disk Used
,统计磁盘有已经使用的空间。- 它是直接统计各文件各目录的大小,而不是从硬盘获得信息的。
- du和df不一致情况模拟,两者还是有很大区别的,有时候其输出结果甚至非常悬殊
2.1 du的工作原理
du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。 它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。 如果针对的目录中文件很多,du速度就会很慢了。
2.2 df的工作原理
df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。 它的数据是基于分区元数据的,所以只能针对整个分区。由于df直接读取超级块,所以运行速度不受文件多少影响。
3 du和df不一致情况模拟
常见的df和du不一致情况就是文件删除的问题。当一个文件被删除后,在文件系统目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。
# 2.2.llvm在80G的硬盘上-几乎满了的一次诊断
df -h
root@ubuntu:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 16G 0 16G 0% /dev
tmpfs 3.2G 636K 3.2G 1% /run
/dev/mapper/ubuntu--vg-root 77G 64G⭐ 9.3G 88% /
tmpfs 16G 24K 16G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 512M 328K 512M 1% /boot/efi
tmpfs 3.2G 0 3.2G 0% /run/user/0
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 查看当前目录下-文件夹大小情况
使用du -h --max-depth=1
root@ubuntu:~# du -h --max-depth=1
44K ./work
20K ./.local
44K ./beifen
4.0K ./.cache
354M ./.vscode-server
104K ./exp
61G ./huawei ⭐
16K ./.ssh
8.0K ./.gnupg
8.0K ./.ansible
8.0K ./.vim
61G .
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 查看指定目录的大小
# du -sh <目录名>
root@ubuntu:~# du -sh huawei/
59G huawei/
1
2
2
root@ubuntu:~# fdisk -l # 查看所有分区
Disk /dev/sda: 80 GiB⭐, 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
Disklabel type: gpt
Disk identifier: 162A1967-DB00-4554-B407-ECD56031888D
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 167770111 166719488 79.5G Linux LVM ⭐
Disk /dev/mapper/ubuntu--vg-root: 78.6 GiB, 84330676224 bytes, 164708352 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 /dev/mapper/ubuntu--vg-swap_1: 980 MiB, 1027604480 bytes, 2007040 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23