磁盘与文件系统管理
认识文件系统
文件系统的简单操作
了解如何查询文件系统的总容量与每个目录所占用的容量
磁盘与目录的容量
- df: 列出文件系统的整体磁盘使用量
- du: 查看文件系统的磁盘使用量(常用在查看目录所占磁盘空间)
df
df [-ahikHTm] [目录或文件名]
选项与参数:
-a: 列出所有的文件系统,包括系统特有的/proc
等文件系统
-k: 以 KBytes 的容量显示各文件系统
-m: 以 MBytes 的容量显示各文件系统
-h: 以人们较易阅读的 GBytes、MBytes、KBytes 等格式自行显示
-H: 以 M=100K 替换 M=1024K 的进位方式
-T: 连同该硬盘分区的文件系统名称(例如xfs)也列出
-i: 不用磁盘容量,而以 inode 的数量来显示
示例一:将系统所有的文件系统全列出来
1 2 3 4 5 6 7 8 |
|
输出的结果信息为:
- Filesystem(文件系统): 代表该文件系统是在哪个分区,所以列出设备名称
- 1k-blocks: 说明下面的数字单位是 1KB,可利用 -h 或 -m 来改变容量
- Used: 顾名思义,就是使用掉的磁盘空间
- Available: 也就是剩下的磁盘空间大小
- Use%: 就是磁盘的使用率,如果使用率高达 90% 以上,最好需要注意一下,免得容量不足造成系统问题,例如最容易被占满的 /var/spool/mail 这个保存邮件的目录
- Mounted on: 就是磁盘的挂在目录(挂载点)
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
系统里面其实还有很多特殊的文件系统存在。那些比较特殊的文件系统几乎都是在内存当中
例如/proc
这个挂载点。因此,这些特殊的文件系统都不会占据磁盘空间
1 2 3 |
|
这个范例比较有趣一点,在 df 后面加上目录或是文件时,df 会自动的分析该目录或文件所在的硬盘分区,并将该硬盘分区的容量显示出来,所以,您就可以知道某个目录下面还有多少容量可以使用了
由于 df 主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在超级区块内的信息,所以这个命令显示结果的速度非常快。
在显示结果中你需要特别留意的是根目录/
的剩余容量。
因为我们所有的数据都是由根目录衍生出来的,因此当根目录的剩余容量剩下 0 时,你的 Linux可能就问题很大了
另外需要注意的是,如果使用 -a 这个参数时,系统出现 /proc 这个挂载点,但是里面的东西都是 0,不要紧张。/proc 的东西都是 Linux 系统所需要加载的系统数据,而且是挂在在内存当中,所以当然没有占任何的磁盘空间
至于那个 /dev/shm/ 目录,其实是利用内存虚拟出来的磁盘空间,通常是总物理内存的一半。由于是通过内存模拟出来的磁盘,因此你在这个目录下面建立任何数据文件时,访问速度是非常快的。(在内存中工作)。不过,也由于它是内存模拟出来的,因此这个文件系统的大小在每台主机上都不一样,而且建立的东西在下次启动时就会消失,因为是在内存中嘛
du
du [-ahskm] 文件或目录名称
-a: 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量
-h: 以人们较易读的容量格式(G/M)显示
-s: 仅列出总量,而不列出每个各别的目录占用容量
-S: 不包括子目录下的总计,与 -s 有点差别
-k: 以 KBytes 列出容量显示
-m: 以 MBytes 列出容量显示
-d, --max-depth=N: print the total for a directory (or file, with --all) only if it is N or fewer levels below the command line argument; --max-depth=0 is the same as --summarize
直接输入 du 没加任何选项时,则 du 会分析【目前所在目录】的文件与目录所占用的磁盘空间
但是,实际显示时,仅会显示目录容量(不含文件),因为(.)目录下很多文件没有被里出来,
所以全部的目录相加不会等于(.)的容量,此外,输出的数值数据为 1K 大小的容量单位
与 df 不一样的是,du 这个命令其实会直接到文件系统内去查找所有的文件数据,。
此外,在默认的情况下,容量的输出是以 KB 为单位,如果你想要知道目录占了多少 MB,那么就是用 -m 这个参数即可。如果你想要知道该目录占了多少容量的话,使用 -s 就可以
至于 -S 这个选项部分,由于 du 默认会将所有文件的大小均列出,因此假设你在 /etc 下面使用 du 时,所有的文件大小,包括 /etc 下面的子目录容量也会被计算一次。
然后最终的容量(/etc)也会相加一次,因此很多朋友都会误会 du 分析的结果不太对劲,所以,如果想要列出某目录下的全部数据,或许也可以加上 -S 的选项,减少子目录的相加