8.12 df:报告文件系统磁盘空间的使用情况
-a 显示所有文件系统 -h 以容易理解的格式显示磁盘的使用情况端 -i 显示文件系统的inode信息迷 -t 显示指定类型的磁盘 -T 列出文件系统的类型 Filesystem 第1列是文件系统对应的设备文件的路径名(一般是硬盘上的分区) 1K-blocks 第2列是分区的总大小(单位为block) Used 第3列是分区的使用大小 Available 第4列是分区的可用大小 Use% 第5列是使用百分比 Mounted on 第6列是文件系统的挂载点 第3列和第4列之和不等于第2列。这是因为默认的每个分区都预留了少量空间供root使用。即使遇到空间已满的情况,root仍能登录和拥有解决问题所需的工作空间。清单中的Use%列表示普通用户空间使用的百分比,即使这一数字达到了100%,分区仍然留有root使用的空间。 参数-i 显示inode的使用情况[root@cs6 data1]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/vg_cs6-lv_root 1738080 23547 1714533 2% / tmpfs 238145 1 238144 1% /dev/shm /dev/sda1 128016 38 127978 1% /boot
参数-t显示指定类型的磁盘。
[root@cs6 data1]# df -t ext4 #<== -t 后面接文件系统类型,如ext2/ext3/ext4。 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_cs6-lv_root 27228028 1689448 24148808 7% / /dev/sda1 487652 28020 434032 7% /boot
参数-T列出了文件系统的类型。
[root@cs6 data1]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_cs6-lv_root ext4 27228028 1689448 24148808 7% / tmpfs tmpfs 952580 0 952580 0% /dev/shm /dev/sda1 ext4 487652 28020 434032 7% /boot
向磁盘写入数据提示如下错误:No space left on device,然后通过df-h查看磁盘空间,结果发现磁盘没满,那么请问这可能是什么原因?
可能是inode数量被耗尽了。用df-i可查看inode的使用情况。 导致上述inode满的原因之一有如下几种情况: Linux 系统目录/var/spool/clientmquene(CentOS5.8默认安装sendmail软件的邮件的临时队列目录)或/var/spool/postfix/maildrop/(CentOS6.6默认安装postfix软件的邮件的临时队列目录)很容易被大量小文件占满,导致出现“No space left on device”的错误。 原因分析: 系统中crond定时任务执行的程序有输出内容,输出内容会以邮件形式发给设置定时任务的用户,而若Sendmail/Postfix服务没有启动,则会产生类似下面代码所示的这些文件,时间长了就会把系统的inode数量耗尽,但是block的数量仍有剩余,所以使用df -h 查看空间还有剩余。 解决方法: 小文件太多,直接用rm -f删除会失败,显示参数过长的错误信息,这时需要用到 ls|xargs rm -f命令进行删除。若想要根治,可采用如下方法。 因为主要是由定时任务引起的,所以可在定时任务后加上>/dev/null 2>&1来解决8.13 mkswap:创建交换分区
mkswap命令是在Linux系统里创建交换分区的工具,当系统没有交换分区或交换分区不够用时,可以新建一个交换分区。 -c 建立交换分区之前,首先检查磁盘是否有损坏的区块 -f 强制执行操作 创建交换分区。 可以将一块磁盘分区后再针对某一个分区创建交换分区,也可以将整块磁盘创建为交换分区,但需要-f参数。 [root@cs6 data1]# mkswap /dev/sdb #<==默认是不能用整块磁盘传交换分区的。 /dev/sdb: 设备或资源忙 mkswap -f /dev/sdb1 #<==使用-f参数强制使用整块磁盘做交换分区8.14 swapon:激活交换分区
使用mkswap命令创建交换分区后,分区并没有生效,还需要使用swapon命令使之生效。 -s 显示所有交换分区的信息[root@cs6 ~]# mkswap -f /dev/sdb1 Setting up swapspace version 1, size = 417652 KiB no label, UUID=5ce3d626-5794-4990-9980-489d49e4d930 [root@cs6 ~]# swapon /dev/sdb1 [root@cs6 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_cs6-lv_root 26G 1.7G 24G 7% / tmpfs 931M 0 931M 0% /dev/shm /dev/sda1 477M 28M 424M 7% /boot [root@cs6 ~]# free -m total used free shared buffers cached Mem: 1989 176 1813 0 5 40 -/+ buffers/cache: 129 1860 Swap: 3479 0 3479 [root@cs6 ~]# swapoff /dev/sdb1 [root@cs6 ~]# free -m total used free shared buffers cached Mem: 1989 176 1813 0 5 40 -/+ buffers/cache: 129 1860 Swap: 3071 0 3071
8.15 swapoff:关闭交换分区
如果需要回收磁盘资源,则可以使用swapoff关闭交换分区释放磁盘空间。 -a 关闭所有交换分区[root@cs6 ~]# swapoff -a [root@cs6 ~]# free -m total used free shared buffers cached Mem: 1989 174 1815 0 6 41 -/+ buffers/cache: 127 1862 Swap: 0 0 0
8.16 sync :刷新文件系统缓冲区
sync命令会将内存缓冲区内的数据强制刷新到磁盘。 Linux内核为了达到最佳的磁盘操作效率,默认会先在内存中将需要写入到磁盘的数据缓存起来,然后等待合适的时机将它们真正写入到磁盘中,这在绝大多数情况下都是没有任何问题的,而且还提高了系统的效率,但是如果系统出现宕机、掉电等情况,就可能会导致有些文件内容没能保存下来。当然,在Linux系统正常关机或者重启时,会将缓冲区中的内容自动同步到磁盘中。我们也可以手工执行sync命令,将内存中的文件缓冲内容强制写到磁盘中。 但是通常情况下没有必要执行这个命令,一是Linux内核会尽快让内存中的数据自动同步到磁盘上去,二是我们也无法预计什么时候会宕机、掉电。[root@cs6 ~]# sync [root@cs6 ~]# sync