天天看點

centos無法建立檔案之磁盤空間問題

這裡隻考慮磁盤空間的問題, 也可能是權限的各種問題

有時候建立檔案會提示:

No space left on device

沒空空間可用了, 這時就可以去檢視磁盤的使用情況:

df -h

可能出現 

1. 磁盤的使用率100%  

2. 磁盤的使用率不到100%   df -i 檢視inode  inode的使用率是100%

如果是情況1 :

可以去查找目錄下的大檔案進行删除或者其他處理   

find /DIR  -type d -size +10G

find /DIR  -type f -size +1G

可能是:磁盤自然增長,程式出現問題産生core檔案或者日志打滿了。

可以的解決方案;

删除大檔案

加磁盤,劃分區

如果是情況2:

可以檢視inode較多的目錄

find */ ! -type l | cut -d / -f 1 | uniq -c

逐層查找  最後定位

一般是cache裡面的碎檔案。

解決方案:

增加inode

dd if=/dev/zero of=disk.img bs=1M counts=1024

mkfs.ext4 -N 5000000 -b 1024 -I 128 disk.img

mount -o loop disk.img  /mnt/disk

删除這些檔案

    在網上找到了一種巧妙的快速删除方法,原理很簡單,使用rsync同步一個空目錄即可。對于萬級檔案的目錄基本是秒删,回車就OK。

    步驟如下:

    1、建立一個空目錄

        mkdir -p /tmp/rsync_blank

    2、确立需要清空的目标目錄

        /data/ooxx

    3、使用rsync同步删除(注意目錄後面的“/”),整體效率會快一個數量級的樣子。

        rsync --delete-before -a -H -v --progress --stats /tmp/rsync_blank/ /data/ooxx/

    選項說明:

    –delete-before 接收者在傳輸之前進行删除操作

    –progress 在傳輸時顯示傳輸過程

    -a 歸檔模式,表示以遞歸方式傳輸檔案,并保持所有檔案屬性

    -H 保持硬連接配接的檔案

    -v 詳細輸出模式

    -stats 給出某些檔案的傳輸狀态

    一般我們不需要顯示進度,使用以下指令即可

        rsync --delete-before -a -H /tmp/rsync_blank/ /data/ooxx/

  這樣我們要删除的 cache目錄就會被清空了。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

 快速複制大量小檔案方法 

  1,在需要對大量小檔案進行移動或複制時,用cp、mv都會顯得很沒有效率,可以用tar先壓縮再解壓縮的方式。 

  2,在網絡環境中傳輸時,可以再結合nc指令,通過管道和tcp端口進行傳輸。 

  nc和tar可以用來快速的在兩台機器之間傳輸檔案和目錄,比ftp和scp要來得簡單的多。 

  由于nc是一個超輕量的指令,是以一般busybox都會內建它。當一個linux終端,比如linux pda, 

  通過usblan的方式連接配接到另一台linux主機的時候,這樣的嵌入式終端上一般不會內建ftp server, ssh server 

  這樣比較笨重的服務,這個時候, nc可能成為唯一的上傳手段。 

  比如将機器A上的mytest目錄上傳到到機器 B(192.168.0.11)上,隻需要: 

  在機器B上,用nc來監聽一個端口,随便就好,隻要不被占用;并且将收到的資料用tar展開。-l代表監聽模式。 

  #nc -l 4444 |tar -C /tmp/dir -zxf - 

  然後,在A上通過nc和 tar發送test目錄。使用一緻的4444的端口。 

  #tar -zcvf  -  test|nc 192.168.0.11 4444

本文轉自    憬薇   51CTO部落格,原文連結:http://blog.51cto.com/welcomeweb/1707197

繼續閱讀