在服务器管理中,我们会关心硬盘用了多少,还有多少剩余空间,哪些文件占用空间最大等等。以便我们在合适的时机为服务器添加硬盘分区以及管理磁盘文件等操作,让磁盘的利用率最大化,现在我们看下linux系统中和磁盘相关的操作命令。
Linux磁盘管理常用三个命令为df、du和fdisk。
- df:列出文件系统的整体磁盘使用量
- du:检查磁盘空间使用量
- fdisk:用于磁盘分区
df:查看磁盘分区的使用状况。
主要参数
- l :仅显示本地磁盘(默认参数)。
- a :显示所有文件系统的磁盘使用情况,包括0字节分区比如/proc/ 。
- h :以1024进制计算最合适的单位显示磁盘容量 。
- H :以1000进制计算最合适的单位显示磁盘容量。
- T :显示磁盘分区类型。
- t :显示指定类型文件系统的磁盘分区。
- X :不显示指定类型文件系统的磁盘分区,和上面参数t互逆。
- 先看下df命令什么参数都不加默认显示的效果。
[root@localhost tmp]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/mapper/centos-root 39134548 30275320 8859228 78% / devtmpfs 923152 0 923152 0% /dev tmpfs 933636 80 933556 1% /dev/shm tmpfs 933636 99404 834232 11% /run tmpfs 933636 0 933636 0% /sys/fs/cgroup /dev/sda1 508588 177692 330896 35% /boot /dev/mapper/centos-home 19105792 33060 19072732 1% /home .host:/ 139203104 39331288 99871816 29% /mnt/hgfs tmpfs 186728 12 186716 1% /run/user/42 tmpfs 186728 0 186728 0% /run/user/0
加上参数a可以查看到更完整的磁盘信息,包括0字节分区
[root@localhost tmp]# df -a 文件系统 1K-块 已用 可用 已用% 挂载点 rootfs 39134548 30275300 8859248 78% / sysfs 0 0 0 - /sys proc 0 0 0 - /proc devtmpfs 923152 0 923152 0% /dev securityfs 0 0 0 - /sys/kernel/security tmpfs 933636 80 933556 1% /dev/shm devpts 0 0 0 - /dev/pts tmpfs 933636 99404 834232 11% /run tmpfs 933636 0 933636 0% /sys/fs/cgroup cgroup 0 0 0 - /sys/fs/cgroup/systemd pstore 0 0 0 - /sys/fs/pstore cgroup 0 0 0 - /sys/fs/cgroup/blkio cgroup 0 0 0 - /sys/fs/cgroup/devices cgroup 0 0 0 - /sys/fs/cgroup/cpuset cgroup 0 0 0 - /sys/fs/cgroup/perf_event cgroup 0 0 0 - /sys/fs/cgroup/memory cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct cgroup 0 0 0 - /sys/fs/cgroup/pids cgroup 0 0 0 - /sys/fs/cgroup/freezer cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio cgroup 0 0 0 - /sys/fs/cgroup/hugetlb configfs 0 0 0 - /sys/kernel/config /dev/mapper/centos-root 39134548 30275300 8859248 78% / systemd-1 0 0 0 - /proc/sys/fs/binfmt_misc mqueue 0 0 0 - /dev/mqueue hugetlbfs 0 0 0 - /dev/hugepages debugfs 0 0 0 - /sys/kernel/debug /dev/sda1 508588 177692 330896 35% /boot /dev/mapper/centos-home 19105792 33060 19072732 1% /home .host:/ 139203104 39331288 99871816 29% /mnt/hgfs tmpfs 186728 12 186716 1% /run/user/42 tmpfs 186728 0 186728 0% /run/user/0 binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
上面显示分区大小不够直观,可以使用h参数
[root@localhost tmp]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 38G 29G 8.5G 78% / devtmpfs 902M 0 902M 0% /dev tmpfs 912M 80K 912M 1% /dev/shm tmpfs 912M 98M 815M 11% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 497M 174M 324M 35% /boot /dev/mapper/centos-home 19G 33M 19G 1% /home .host:/ 133G 38G 96G 29% /mnt/hgfs tmpfs 183M 12K 183M 1% /run/user/42 tmpfs 183M 0 183M 0% /run/user/0
如果想看各个分区的文件类型使用T参数,下面就多了一列。
[root@localhost tmp]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 38G 29G 8.5G 78% / devtmpfs devtmpfs 902M 0 902M 0% /dev tmpfs tmpfs 912M 80K 912M 1% /dev/shm tmpfs tmpfs 912M 98M 815M 11% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 497M 174M 324M 35% /boot /dev/mapper/centos-home xfs 19G 33M 19G 1% /home .host:/ vmhgfs 133G 38G 96G 29% /mnt/hgfs tmpfs tmpfs 183M 12K 183M 1% /run/user/42 tmpfs tmpfs 183M 0 183M 0% /run/user/0
du:统计磁盘文件大小。
主要参数
- b: 以byte为单位统计文件。
- k :以KB为单位统计文件.
- m: 以MB为单位统计文件.
- h :按照1024进制以最适合的单位统计文件。
- H: 按照1000进制以最适合的单位统计文件。
- s :指定统计目标
du不加参数会把当前目录下文件遍历一遍,列出目录中所有文件的大小。
[root@localhost tmp]# du 0 ./.X11-unix 0 ./.ICE-unix 0 ./.XIM-unix 0 ./.font-unix 0 ./.Test-unix 0 ./systemd-private-121552bb5e694455a1422768087037e1-rtkit-daemon.service-hgj6sf/tmp 0 ./systemd-private-121552bb5e694455a1422768087037e1-rtkit-daemon.service-hgj6sf 0 ./systemd-private-121552bb5e694455a1422768087037e1-colord.service-tycXc0/tmp
统计某个目录或者文件大小加上s参数后面跟上目录或者文件名。
root@localhost tmp]# du -s vmware-tools-distrib 2052 vmware-tools-distrib
也可以用对人友好的方式显示大小
[root@localhost tmp]# du -skh vmware-tools-distrib 2.1M vmware-tools-distrib
查看某个后缀的文件大小
[root@localhost lib]# du -sh *.js 12K assert.js 28K buffer.js 28K child_process.js 20K cluster.js 4.0K console.js 4.0K constants.js 20K crypto.js 40K _debugger.js 12K dgram.js
检查目录底下每个目录所占用的容量
[root@172.16.0.55:/opt/case/frame/vendor → test]$ du -smh ./* 4.0K ./autoload.php 48K ./composer 64K ./jichupingtai
fdisk:linux磁盘分区表操作工具
列出所有分区信息
[root@172.16.0.55:/opt/case/frame → test]$ fdisk -l Disk /dev/vda: 214.7 GB, 214748364800 bytes 16 heads, 63 sectors/track, 416101 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0002162a Device Boot Start End Blocks Id System /dev/vda1 * 3 409 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/vda2 409 41044 20480000 83 Linux Partition 2 does not end on cylinder boundary. /dev/vda3 41044 57688 8388608 82 Linux swap / Solaris Partition 3 does not end on cylinder boundary. /dev/vda4 57688 416101 180640472 5 Extended /dev/vda5 57688 416101 180640440+ 83 Linux
linux磁盘分区特点:
主分区和扩展分区总数不能超过4个。
扩展分区最多只能有一个。
扩展分区不能直接存储数据。
blkid命令对查询设备上所采用文件系统类型进行查询
[root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup-lv_root 51475068 3688412 45165216 8% / tmpfs 510024 0 510024 0% /dev/shm /dev/sda1 487652 52845 409207 12% /boot /dev/mapper/VolGroup-lv_home 26260552 328676 24591256 2% /home vagrant 290456572 3890692 286565880 2% /vagrant alidata_www 290456572 3890692 286565880 2% /alidata/www [root@localhost ~]# blkid /dev/sda1 /dev/sda1: UUID="0daf08fb-9df2-4124-a037-eaf1de267ff0" TYPE="ext4"
[root@172.16.0.55:/opt/case/frame → test]$ blkid /dev/vda2: UUID="fd42d4a2-aaa9-4a82-ac78-2788c9d98a86" TYPE="ext4" /dev/vda1: UUID="018586ca-97b7-442b-9e13-0d5980648462" TYPE="ext4" /dev/vda3: UUID="7d2b22c9-608c-4e62-93a9-a815e8c6b886" TYPE="swap" /dev/vda5: UUID="787a790a-1650-4278-bb83-9c27ae51605a" TYPE="ext4"
显示指定设备 UUID
[root@172.16.0.55:/opt/case/frame → test]$ blkid -s UUID /dev/vda2 /dev/vda2: UUID="fd42d4a2-aaa9-4a82-ac78-27d5c9d98a86"
显示所有设备 UUID
[root@172.16.0.55:/opt/case/frame → test]$ blkid -s UUID /dev/vda2: UUID="fd42d4a2-aaa9-4a82-ac78-27d5c9d98a86" /dev/vda1: UUID="018586ca-97b7-442b-9e13-0d5960648462" /dev/vda3: UUID="7d2b22c9-608c-4e62-93a9-a815e4c6b886" /dev/vda5: UUID="787a790a-1650-4278-bbf3-9c27ae51605a"
显示所有设备
[root@172.16.0.55:/opt/case/frame → test]$ blkid -o device /dev/vda2 /dev/vda1 /dev/vda3 /dev/vda5
显示所有设备文件系统
[root@172.16.0.55:/opt/case/frame → test]$ blkid -s TYPE /dev/vda2: TYPE="ext4" /dev/vda1: TYPE="ext4" /dev/vda3: TYPE="swap" /dev/vda5: TYPE="ext4"