磁碟管理
在Linux系統中,如何有效地對存儲空間加以使用和管理,是一項非常重要的技術。本章講述如何查看系統中存儲空間的使用情況、如何進行檔案的轉儲、以及如何進行軟碟的格式化.磁碟空間管理
系統軟體和套用軟體,都要以檔案的形式存儲在計算機的磁碟空間中。因此,應該隨時監視磁碟空間的使用情況。Linux系統提供了一組有關磁碟空間管理的命令。df命令
功能:檢查檔案系統的磁碟空間占用情況。可以利用該命令來獲取硬碟被占用了多少空間,目前還剩下多少空間等信息。
語法:df 【選項】
說明:
df命令可顯示所有檔案系統對i節點和磁碟塊的使用情況。該命令各個選項的含義如下:
-a 顯示所有檔案系統的磁碟使用情況,包括0塊(block)的檔案系統,如/proc檔案系統。
-k 以k位元組為單位顯示。
-i 顯示i節點信息,而不是磁碟塊。
-t 顯示各指定類型的檔案系統的磁碟空間使用情況。
-x 列出不是某一指定類型檔案系統的磁碟空間使用情況(與t選項相反)。
-T 顯示檔案系統類型。
例1:列出各檔案系統的磁碟空間使用情況。
$ df
Filesystem 1 K-blocks Used Available Use% Mounted on
/dev/hda2 1361587 1246406 44823 97% /
df命令的輸出清單的第1列是代表檔案系統對應的設備檔案的路徑名(一般是硬碟上的分區);第2列給出分區包含的數據塊(1024位元組)的數目;第3,4列分別表示已用的和可用的數據塊數目。用戶也許會感到奇怪的是,第3,4列塊數之和不等於第2列中的塊數。這是因為預設的每個分區都留了少量空間供系統管理員使用。即使遇到普通用戶空間已滿的情況,管理員仍能登錄和留有解決問題所需的工作空間。清單中Use% 列表示普通用戶空間使用的百分比,即使這一數字達到100%,分區仍然留有系統管理員使用的空間。最後,Mounted on列表示檔案系統的安裝點。
例2:列出各檔案系統的i節點使用情況。
$ df -ia
Filesystem Inodes IUsed IFree Iused% Mounted on
/dev/ hda2 352256 75043 277213 21% /
none 0 0 0 0% /proc localhost:(pid221) 0 0 0 0% /net
例3:列出檔案系統的類型。
$ df -T
Filesystem Type 1K-blocks Used Available use% Mounted on
/dev/hda2 ext2 1361587 1246405 44824 97% /
本例中的檔案系統是ext2類型的。
du命令
du的英文原義為“disk usage”,含義為顯示磁碟空間的使用情況。
功能:統計目錄(或檔案)所占磁碟空間的大小。
語法:du 【選項】 【Names…】
說明:該命令逐級進入指定目錄的每一個子目錄並顯示該目錄占用檔案系統數據塊(1024位元組)的情況。若沒有給出Names,則對當前目錄進行統計。
該命令的各個選項含義如下:
-s 對每個Names參數只給出占用的數據塊總數。
-a 遞歸地顯示指定目錄中各檔案及子孫目錄中各檔案占用的數據塊數。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所占的磁碟塊數。
-b 以位元組為單位列出磁碟空間使用情況(系統預設以k位元組為單位)。
-k 以1024位元組為單位列出磁碟空間使用情況。
-c 最後再加上一個總計(系統預設設定)。
-l 計算所有的檔案大小,對硬連結檔案,則計算多次。
-x 跳過在不同檔案系統上的目錄不予統計。
下面舉例說明du命令的使用:
例1:查看/mnt目錄占用磁碟空間的情況。
$ cd /mnt $ ls -lfr total 10 -rwxrwxrwx 2 root root ll0 Ju1 3l 00:33 aa*
drwxr-xr-x 2 root root l024 Ju1 20 14:16 dev/
-rw-r--r-- 1 root root 6229 Aug 2 0l:39 s1ack
drwxrwxrwx 2 root root 1024 Aug 2 02:09 var/
1rwxrwxrwx 1 root root l0 Aug 2 0l:51 wei->/home/wei/
dev:
tota1 0
lrwxrwxrwx 1 root root 8 Ju1 20 l4:l6 cdrom->/dev/hdb
var:
tata1 37
-r-xr-xr-x l root root 36064 Aug 2 02:09 rawrite. exe*
例2:列出各目錄所占的磁碟空間,但不詳細列出每個檔案所占的空間。
$ du
l . /dev
38 . /var
48 .
輸出清單中的第一列是以塊為單位計的磁碟空間容量,第二列列出目錄中使用這些空間的目錄名稱。 注意不帶選項的du命令將從當前目錄開始沿著目錄結構向下工作直到列出所有目錄的容量為止。這可能是一個很長的清單,有時只需要一個總數。這時可在du命令中加-s選項來取得總數:
$ du –s /mnt
/mnt
例3:列出所有檔案和目錄所占的空間(使用a選項),而且以位元組為單位(使用b選項)來計算大小。
$ du -ab
8 ./dev/cdrom
l032 ./dev
36064 ./var/rawrite. exe
37088 ./var
6229 ./s1ack
1l0 ./aa
l0 ./wei
45493 .
磁 盤 操 作
dd命令功能:把指定的輸入檔案拷貝到指定的輸出檔案中,並且在拷貝過程中可以進行格式轉換。可以用該命令實現DOS下的DISKCOPY命令的作用。先用dd命令把軟碟上的數據寫成硬碟的一個暫存檔案,再把這個暫存檔案寫入第二張軟碟上,完成diskcopy的功能。需要注意的是,應該將硬碟上的暫存檔案用rm命令刪除掉。系統默認使用標準輸入檔案和標準輸出檔案。
語法:dd 【選項】
if =輸入檔案(或設備名稱)。
of =輸出檔案(或設備名稱)。
ibs = bytes 一次讀取bytes位元組,即讀入緩衝區的位元組數。
skip = blocks 跳過讀入緩衝區開頭的ibs*blocks塊。
obs = bytes 一次寫入bytes位元組,即寫入緩衝區的位元組數。
bs = bytes 同時設定讀/寫緩衝區的位元組數(等於設定ibs和obs)。
cbs = byte 一次轉換bytes位元組。
count=blocks 只拷貝輸入的blocks塊。
conv = ASCII 把EBCDIC碼轉換為ASCIl碼。
conv = ebcdic 把ASCIl碼轉換為EBCDIC碼。
conv = ibm 把ASCIl碼轉換為alternate EBCDIC碼。
conv = block 把變動位轉換成固定字元。
conv = ublock 把固定位轉換成變動位。
conv = UCase 把字母由小寫轉換為大寫。
conv = lcase 把字母由大寫轉換為小寫。
conv = notrunc 不截短輸出檔案。
conv = swab 交換每一對輸入位元組。
conv = noerror 出錯時不停止處理。
conv = sync 把每個輸入記錄的大小都調到ibs的大小(用NUL填充)。
例1:要把一張軟碟的內容拷貝到另一張軟碟上,利用/tmp作為臨時存儲區。把源盤插入驅動器中,輸入下述命令:
$ dd if =/dev/fd0 of = /tmp/tmpfile
拷貝完成後,將源盤從驅動器中取出,把目標盤插入,輸入命令:
$ dd if = /tmp/tmpfile of =/dev/fd0
軟碟拷貝完成後,應該將臨時檔案刪除:
$ rm /tmp/tmpfile
例2:把net.i這個檔案寫入軟碟中,並設定讀/寫緩衝區的數目。 (注意:軟碟中的內容會被完全覆蓋掉)
$ dd if = net.i of = /dev/fd0 bs = 16384
例3:將檔案sfile拷貝到檔案 dfile中。
$ dd if=sfile of=dfile
fdformat 命令
軟碟是用戶常用的存儲介質之一。軟碟在使用之前必須先作格式化操作,然後可以用tar、dd、cpio等命令存儲數據,也可以在軟碟上建立可安裝的檔案系統。
功能:低級格式化軟碟
語法:format 【-n】 device
說明:該命令的作用是對軟碟進行格式化。
-n 軟碟格式化後不作檢驗。
device 指定要進行格式化的設備,通常是下述設備之一:
/dev/fd0d360
/dev/fd0h1200
/dev/fd0D360
/dev/fd0H360
/dev/fd0D720
/dev/fd0H720
/dev/fd0h360
/dev/fd0h720
/dev/fd0H1440