當磁盤沒法寫入的時候,通常有如下可能: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節點,再將文件複製回去。