当磁盘没法写入的时候,通常有如下可能:node
1、 遇到只读的文件系统mongodb
文件系统自动设置成只读多是系统自我保护的一种机制,所以须要实现弄清到底是什么缘由形成了文件系统的只读。若是想要改变文件系统的只读属性,从新挂载目标分区便可。bash
例1. 从新挂载改变/home分区的读写属性工具
# mount -o remount, rw /home
-o 选项后面接了两个mount 命令的专有选项,remount是指从新挂载指定文件系统,rw指定从新挂载时的读写属性,该命令不改变挂载点,只是改变指定分区的读写属性。ui
2、 磁盘满spa
磁盘使用率、剩余空间等可使用 df 命令查看,日志
例2. 查看当前已挂载的全部分区及使用状况code
1 # df -h 2 Filesystem Size Used Avail Use% Mounted on 3 /dev/sda2 133G 8.6G 118G 7% / 4 none 4.0K 0 4.0K 0% /sys/fs/cgroup 5 udev 5.9G 4.0K 5.9G 1% /dev 6 tmpfs 1.2G 868K 1.2G 1% /run 7 none 5.0M 0 5.0M 0% /run/lock 8 none 5.9G 0 5.9G 0% /run/shm 9 none 100M 0 100M 0% /run/user 10 /dev/sda1 93M 3.4M 90M 4% /boot/efi
-h 自动以适合阅读的单位显示,该例子的磁盘空间显然还很充分。blog
有时候会发现,df 结果中的使用空间 "Used" 和容量 "Size" 存在必定的差距,可是可用空间 "Avail" 却所剩无几,同时使用率 “Use %”居高不下,甚至达到100%。这种状况并不奇怪,由于Linux为了不系统存储空间彻底占用致使的root用户没法登录,为root用户保留了一块保留区块,供磁盘使用率太高时root用户登录系统完成必要的清理操做。仅有root用户能够在这些保留块中写入数据,能够经过 tune2fs 工具查看保留块的大小。rem
例3. 使用tune2fs查看系统保留块
1 # tune2fs -l /dev/sda2 | grep -i "block" 2 Block count: 35400448 3 Reserved block count: 1770022 4 Free blocks: 33183919 5 First block: 0 6 Block size: 4096 7 Reserved GDT blocks: 1015 8 Blocks per group: 32768 9 Inode blocks per group: 512 10 Flex block group size: 16 11 Reserved blocks uid: 0 (user root) 12 Reserved blocks gid: 0 (group root) 13 Journal backup: inode blocks
其中,第3行显示系统保留块的数量,第6行显示每块的大小(4KB),两者相乘能够计算保留区块的总大小;
第11, 12行显示能对保留区块执行写入操做的用户和用户组编号,这里都是root;
上面只是查看某个文件系统的占用,如何知道这个文件系统中相关目录的空间占用状况呢?du命令能够查看文件系统上全部目录的大小。
例4. 使用du查看目录占用的空间
1 # cd / 2 # du -ckx | sort -n > /tmp/dir_space
使用 tail 查看保存的/tmp/dir_space文件能够看到根文件系统下最大的10个目录:
1 674236 ./var/log 2 904232 ./usr/lib 3 1372776 ./var/lib/glance/images 4 1372868 ./var/lib/glance 5 1523512 ./var/lib/mongodb 6 2082052 ./usr 7 4003024 ./var/lib 8 4878944 ./var 9 8798036 . 10 8798036 total
这里能够看到/var/log目录是很大的,因为/var/log/目录存放的是一些日志文件,日志文件一般也是占用系统空间的源泉,能够经过释放日志文件空间来得到存储空间:
1 # ls -lhs /var/log/syslog.1 2 1.3M -rw-r----- 1 syslog adm 1.3M Aug 12 06:34 syslog.1 3 # bash -c "> /var/log/syslog.1" 4 # ls -lhs /var/log/syslog.1 5 0 -rw-r----- 1 syslog adm 0 Aug 12 15:16 syslog.1
该例子将分卷后的syslog文件截断,实际上就是删除指定日志文件的内容。固然也能够直接删除对应的日志文件。
3、I节点不足
当df显示磁盘空间充足,但文件系统却报错本身已满,没法写入时,须要检查是否耗尽了I节点。
在系统中建立一个新文件将会得到一个惟一的I节点,一旦把I节点用光,就没法再建立新的文件了,这在系统建立大量文件时才有可能发生,使用 df -i 命令能够查看I节点的使用状况。
例5. 查看I节点的使用状况
1 # df -i 2 Filesystem Inodes IUsed IFree IUse% Mounted on 3 /dev/sda2 8855552 219633 8635919 3% / 4 none 1532516 2 1532514 1% /sys/fs/cgroup 5 udev 1529802 463 1529339 1% /dev 6 tmpfs 1532516 523 1531993 1% /run 7 none 1532516 12 1532504 1% /run/lock 8 none 1532516 1 1532515 1% /run/shm 9 none 1532516 3 1532513 1% /run/user 10 /dev/sda1 0 0 0 - /boot/efi
能够看到当前各个文件系统的I节点充足。
一旦遇到I节点用光的情形,有如下几种选择:
1. 删除大量文件
2. 将大量文件移动到其余的文件系统中;
3. 将大量的文件压缩成一个文件;
4. 备份当前文件系统中的全部文件,从新格式化以前的硬盘,得到更多的I节点,再将文件复制回去。