磁碟是Linux系統中一項非常重要的資源,如何對其進行有效的管理直接關係到整個系統的效能問題。對Linux磁碟管理稍微有一些學習和經驗的朋友們應該都知道df、du和fdisk這三個常用命令:df用於檢查檔案系統磁碟佔用情況,du檢查磁碟空間佔用情況,而fdisk用於磁碟分割槽。這三個工具是本人在進行Linux磁碟管理時常用的工具,下面跟大家分享一些使用心得。

 

1.df

df命令可以獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊,它也可以顯示所有檔案系統對i節點和磁碟塊的使用情況。

df命令各個選項的含義如下:

  -a:顯示所有檔案系統的磁碟使用情況,包括0塊(block)的檔案系統,如/proc檔案系統。
  -k:以k位元組為單位顯示。
  -i:顯示i節點資訊,而不是磁碟塊。
  -t:顯示各指定型別的檔案系統的磁碟空間使用情況。
  -x:列出不是某一指定型別檔案系統的磁碟空間使用情況(與t選項相反)。
  -T:顯示檔案系統型別。

我們先看看使用df命令的例子:

//列出各檔案系統的磁碟空間使用情況
#df
Filesystem           1k-blocks      Used   Available Use% Mounted on
/dev/hda5               381139     332921     28540  93% /
/dev/hda1                46636      6871     37357  16% /boot
/dev/hda3             10041144   6632528   2898556  70% /home
none                    127372         0    127372   0% /dev/shm
/dev/hda2             27474876  24130460   1948772  93% /usr
/dev/hda6               256667    232729     10686  96% /var

第1列是代表檔案系統對應的裝置檔案的路徑名(一般是硬碟上的分割槽);第2列給出分割槽包含的資料塊(1024位元組)的數目;第3,4列分別表示已用的和可用的資料塊數目。

◆使用者也許會感到奇怪,第3,4列塊數之和不等於第2列中的塊數。這是因為預設的每個分割槽都留了少量空間供系統管理員使用的緣故。即使遇到普通使用者空間已滿的情況,管理員仍能登入和留有解決問題所需的工作空間。清單中Use%列表示普通使用者空間使用的百分比,若這一數字達到100%,分割槽仍然留有系統管理員使用的空間。

最後,Mounted on列表示檔案系統的安裝點。

//列出各檔案系統的i節點使用情況。
#df -ia
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/hda5              98392   23919   74473   25% /
none                       0       0       0    -  /proc
/dev/hda1              12048      38   12010    1% /boot
none                       0       0       0    -  /dev/pts
/dev/hda3            1275456  355008  920448   28% /home
none                   31843       1   31842    1% /dev/shm
/dev/hda2            3489792  133637 3356155    4% /usr
/dev/hda6              66264    9876   56388   15% /var
 
//列出檔案系統的型別。
#df -T
Filesystem    Type   1k-blocks      Used Available Use% Mounted on
/dev/hda5     ext3      381139    332921     28540  93% /
/dev/hda1     ext3       46636      6871     37357  16% /boot
/dev/hda3     ext3    10041144   6632528   2898556  70% /home
none         tmpfs      127372         0    127372   0% /dev/shm
/dev/hda2     ext3    27474876  24130460   1948772  93% /usr
/dev/hda6     ext3      256667    232729     10686  96% /var2

 

 

2. du

du的英文原義為“disk usage”,含義為顯示磁碟空間的使用情況,統計目錄(或檔案)所佔磁碟空間的大小。該命令的功能是逐級進入指定目錄的每一個子目錄並顯示該目錄佔用檔案系統資料塊(1024位元組)的情況。若沒有給出指定目錄,則對當前目錄進行統計。

df命令的各個選項含義如下:

  -s:對每個Names引數只給出佔用的資料塊總數。
  -a:遞迴地顯示指定目錄中各檔案及子目錄中各檔案佔用的資料塊數。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟塊數。
  -b:以位元組為單位列出磁碟空間使用情況(系統預設以k位元組為單位)。
  -k:以1024位元組為單位列出磁碟空間使用情況。
  -c:最後再加上一個總計(系統預設設定)。
  -l:計算所有的檔案大小,對硬連結檔案,則計算多次。
  -x:跳過在不同檔案系統上的目錄不予統計。

下面舉例說明du命令的使用:

//檢視/mnt目錄佔用磁碟空間的情況
#du –abk /mnt
1       /mnt/cdrom
1       /mnt/floppy
3       /mnt
 
//列出各目錄所佔的磁碟空間,但不詳細列出每個檔案所佔的空間
#du
3684    ./log
84      ./libnids-1.17/doc
720     ./libnids-1.17/src
32      ./libnids-1.17/samples
1064    ./libnids-1.17
4944    .

輸出清單中的第1列是以塊為單位計的磁碟空間容量,第2列列出目錄中使用這些空間的目錄名稱。

◆這可能是一個很長的清單,有時只需要一個總數。這時可在du命令中加-s選項來取得總數:

#du –s /mnt 
3       /mnt
 
//列出所有檔案和目錄所佔的空間(使用a選項),並以位元組為單位(使用b選項)來計算大小
#du –ab /root/mail
6144    mail/sent-mail
1024    mail/saved-messages
8192    mail

 

3、fdisk

fdisk可以劃分磁碟分割槽。下面給出使用Fdisk命令進行磁碟分割槽的操作步驟:

#fdisk /dev/had    //使用/dev/had作為預設的分割槽裝置
Command (m for help): m  //選擇命令選項
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition`s system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

使用者通過提示鍵入“m”,可以顯示Fdisk命令各個引數的說明。

Fdisk有很多引數,可是經常使用的只有幾個。

◆在Linux分割槽過程,一般是先通過p引數來顯示硬碟分割槽表資訊,然後根據資訊確定將來的分割槽。如下所示:

Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *        41       522   3871665   83  Linux
/dev/hda2             1        40    321268+  82  Linux swap
 
Partition table entries are not in disk order
Command (m for help):

◆如果想完全改變硬碟的分割槽格式,就可以通過d引數一個一個地刪除存在的硬碟分割槽。刪除完畢,就可以通過n引數來增加新的分割槽。當按下“n”後,可以看到如下所示:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
   p
   Partiton number(1-4):1
   First cylinder(1-1023):1
   Last cylinder or + size or +sizeK or + sizeM(1-1023):+258M

這裡要選擇新建的分割槽型別,是主分割槽還是擴充套件分割槽;並選擇p或是e。然後就是設定分割槽的大小。

◆要提醒注意的是,如果硬碟上有擴充套件分割槽,就只能增加邏輯分割槽,不能增加擴充套件分割槽。

◆在增加分割槽的時候,其型別都是預設的Linux Native,如果要把其中的某些分割槽改變為其他型別,例如Linux Swap或FAT32等,可以通過命令t來改變,當按下“t”改變分割槽型別的時候,系統會提示要改變哪個分割槽、以及改變為什麼型別(如果想知道系統所支援的分割槽型別,鍵入l),如下所示:

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap)

改變完了分割槽型別,就可以按下“w”,儲存並退出。如果不想儲存,那麼可以選擇“q”直接退出,如下所示:

Command (m for help):w

通過如上的操作,就可以按照需要成功地劃分磁碟分割槽了。