(轉載)刪除檔案後硬碟空間不釋放的問題
轉載自:
很多人會遇到在作業系統上rm掉一個大的檔案,以解決檔案系統超標的問題,可是有的時侯檔案刪除掉了,而空間卻未釋放出來。論壇上也常常見這樣貼子,為什麼會這樣,如何解決呢?本文只侷限於Hp unix的作業系統。
原因其實很簡單,主要是因為被刪除的檔案在刪除的時侯還是程式在操作(開啟、訪問等)的緣故,rm只完成了在磁碟上檔案實體的釋放,而類似free list結構中相應的檔案系統因程式的操作相應的inode並未釋放。
[@more@]這樣的問題解決起來也很簡單,找到操作的程式,kill掉就可以了,可是找到操作的程式恰恰是本問題的難點和關鍵。這樣的問題也可以透過重啟機器和nmount/mount檔案系統這樣的方式解決,但這樣的方法我是不提倡的,小小的問題就重啟機器,小題大做。
hp-unix作業系統
需要藉助uli這個內部工具,後面會詳細說。
linux及solaris
可以這樣做:
a、下載一個lsof軟體裝上,google上可以搜到
b、找到正在用被刪檔案的程式
lsof | grep deleted
c、kill掉相應的程式空間就釋放了
hp unix本問題的解決
問題重現
bdf一下/oracle檔案系統
# bdf /oracle
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lv_oracle
8192000 5313813 2698313 66% /oracle
可見空餘2698313kb
udump下有一檔案佔用了60多mb的空間
# pwd
/oracle/app/oracle/admin/yztest/udump
#
# ls -l yztest_ora_11026.trc
-rw-rw-rw- 1 root sys 62217530 Apr 23 10:36 yztest_ora_11026.trc
#
以more命令檢視檔案,保持這個操作不動
# more yztest_ora_11026.trc
另開一個視窗,刪除檔案,空間未釋放
# rm yztest_ora_11026.trc
#
# ls -l yztest_ora_11026.trc
yztest_ora_11026.trc not found
#
# bdf /oracle
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lv_oracle
8192000 5313813 2698313 66% /oracle
可見/oracle檔案系統的可用空間並未發生改變。
問題解決
安裝uli工具
這個工具如果沒有,可以向hp supporter要一個。
ftp到主機,注意用以二進位制上傳
# ls -l
total 960
-rw-rw-rw- 1 root sys 487379 Apr 23 10:22 uli.bin
解壓縮,檔案是自解壓的
# sh ./uli.bin
Running install script. ./uli.install uli a 2
檢視一下
# ls -l
total 5520
-rwxrwxrwx 2 222 users 1160136 Dec 13 2006 uli
-rwxrwxrwx 2 222 users 1160136 Dec 13 2006 uli-a-2
-rw-rw-rw- 1 root sys 487379 Apr 23 10:22 uli.bin
-rwxrwxrwx 1 222 users 536 Dec 13 2006 uli.install
執行uli.install
# ./uli.install uli a 2
#
檢視一下uli的各個可用選項
# ./uli -h
4.2.2 執行uli,殺掉操作程式
# ./uli
libp4 (9.219): Opening /stand/vmunix /dev/kmem
Loading symbols from /stand/vmunix
Kernel TEXT pages not requested in crashconf
Will use an artificial mapping from a.out TEXT pages
Loading symbols from /stand/dlkm/mod.d/krm
Note: Consider P4_ELF_WARNING=2 to get more details
Note: No debug information for this module
Found 16 matching unlinked file table entries.
15128程式執行了more操作,影響了空間的釋放
殺掉15128
# kill 15128
#
再檢視一下/oracle的空間
# bdf /oracle
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lv_oracle
8192000 5253045 2755283 66% /oracle
可見,可用空間已經由原來的2698313kb升為2755283kb。
解決問題的方法是很多的,對於複雜的問題也可能有很簡便的解決的方法,所以最好在用重啟機器這樣方法之前償試一下,看是否有更好的更方便的方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25016/viewspace-1004466/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux檔案刪除但空間不釋放問題篇Linux
- 解決刪除檔案後 WSL2 磁碟空間不釋放的問題
- 處理Linux刪除檔案後空間未釋放的問題Linux
- Linux檔案刪除空間未釋放Linux
- RM刪除檔案空間釋放詳解
- linux中如何解決檔案已刪除但空間不釋放的案例Linux
- Mysql InnoDB刪除資料後釋放磁碟空間的方法MySql
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- [待整理]oracle10g刪除(釋放)資料檔案/表空間流程Oracle
- 面試官給我挖坑:rm刪除檔案之後,空間就被釋放了嗎?面試
- 行動硬碟刪除的檔案能恢復嗎,怎麼恢復硬碟刪除的檔案硬碟
- 刪除檔案後儲存空間容量沒有變化怎麼辦?
- 【轉載】windows下刪除指定日期前的檔案Windows
- c盤可以刪除哪些檔案 怎樣清理c盤空間不影響系統
- 刪除UNDO表空間並處理ORA-01548問題
- MySQL---資料刪除之後表檔案不變MySql
- 如何釋放Mac空間?釋放Mac系統空間小技巧Mac
- Tablespace表空間刪除
- Linux刪除指定時間之前的檔案Linux
- linux 刪除問題 一次刪除多個目錄下的相同副檔名的檔案Linux
- 記錄一次刪除檔案失敗的問題
- 請求結束後刪除檔案
- win10 硬碟空間無法刪除應該怎麼解決Win10硬碟
- oracle級聯刪除使用者,刪除表空間Oracle
- 使用 PHP 進行建立檔案並在下載後進行刪除PHP
- 刪除臨時表空間組
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- lsof |grep deleted 釋放磁碟空間delete
- SVN !檔案刪除
- rm 刪除檔案
- Git——刪除檔案Git
- 如何救回硬碟上誤刪的檔案硬碟
- u盤裡的檔案無法刪除 如何刪除u盤裡刪不掉的檔案
- 刪除vmvare的大檔案
- 【ubuntu】解決行動硬碟掛載不上的問題Ubuntu硬碟
- win10休眠檔案有必要刪除嗎 刪除休眠檔案的方法Win10
- linux的刪除檔案命令和強制刪除命令Linux
- Oracle 10g大檔案表空間(轉)Oracle 10g