df、du、fdisk:Linux磁盤管理三板斧的使用心得
原創(chuàng)【51CTO獨家特稿】磁盤是Linux系統(tǒng)中一項非常重要的資源,如何對其進行有效的管理直接關(guān)系到整個系統(tǒng)的性能問題。對Linux磁盤管理稍微有一些學(xué)習(xí)和經(jīng)驗的朋友們應(yīng)該都知道df、du和fdisk這三個常用命令:df用于檢查文件系統(tǒng)磁盤占用情況,du檢查磁盤空間占用情況,而fdisk用于磁盤分區(qū)。這三個工具是本人在進行Linux磁盤管理時常用的工具,下面跟大家分享一些使用心得。
作者介紹:李洋(博客),博士畢業(yè)于中科院計算所。10多年來一直從事計算機網(wǎng)絡(luò)信息安全研發(fā)工作,曾主持和參與多項國家重點項目以及信息安全系統(tǒng)和企業(yè)信息安全系統(tǒng)的研發(fā)工作。具有Linux系統(tǒng)應(yīng)用、管理、安全及內(nèi)核的研發(fā)經(jīng)驗,擅長網(wǎng)絡(luò)安全技術(shù)、協(xié)議分析、Linux系統(tǒng)安全技術(shù)、Linux系統(tǒng)及網(wǎng)絡(luò)管理、Linux內(nèi)核開發(fā)等。
1.df
df命令可以獲取硬盤被占用了多少空間,目前還剩下多少空間等信息,它也可以顯示所有文件系統(tǒng)對i節(jié)點和磁盤塊的使用情況。
df命令各個選項的含義如下:
-a:顯示所有文件系統(tǒng)的磁盤使用情況,包括0塊(block)的文件系統(tǒng),如/proc文件系統(tǒng)。 -k:以k字節(jié)為單位顯示。 -i:顯示i節(jié)點信息,而不是磁盤塊。 -t:顯示各指定類型的文件系統(tǒng)的磁盤空間使用情況。 -x:列出不是某一指定類型文件系統(tǒng)的磁盤空間使用情況(與t選項相反)。 -T:顯示文件系統(tǒng)類型。
我們先看看使用df命令的例子:
//列出各文件系統(tǒng)的磁盤空間使用情況 #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列是代表文件系統(tǒng)對應(yīng)的設(shè)備文件的路徑名(一般是硬盤上的分區(qū));第2列給出分區(qū)包含的數(shù)據(jù)塊(1024字節(jié))的數(shù)目;第3,4列分別表示已用的和可用的數(shù)據(jù)塊數(shù)目。
◆用戶也許會感到奇怪,第3,4列塊數(shù)之和不等于第2列中的塊數(shù)。這是因為默認的每個分區(qū)都留了少量空間供系統(tǒng)管理員使用的緣故。即使遇到普通用戶空間已滿的情況,管理員仍能登錄和留有解決問題所需的工作空間。清單中Use%列表示普通用戶空間使用的百分比,若這一數(shù)字達到100%,分區(qū)仍然留有系統(tǒng)管理員使用的空間。
***,Mounted on列表示文件系統(tǒng)的安裝點。
//列出各文件系統(tǒng)的i節(jié)點使用情況。 #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 //列出文件系統(tǒng)的類型。 #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
#p#
2. du
du的英文原義為“disk usage”,含義為顯示磁盤空間的使用情況,統(tǒng)計目錄(或文件)所占磁盤空間的大小。該命令的功能是逐級進入指定目錄的每一個子目錄并顯示該目錄占用文件系統(tǒng)數(shù)據(jù)塊(1024字節(jié))的情況。若沒有給出指定目錄,則對當(dāng)前目錄進行統(tǒng)計。
df命令的各個選項含義如下:
-s:對每個Names參數(shù)只給出占用的數(shù)據(jù)塊總數(shù)。 -a:遞歸地顯示指定目錄中各文件及子目錄中各文件占用的數(shù)據(jù)塊數(shù)。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所占的磁盤塊數(shù)。 -b:以字節(jié)為單位列出磁盤空間使用情況(系統(tǒng)默認以k字節(jié)為單位)。 -k:以1024字節(jié)為單位列出磁盤空間使用情況。 -c:***再加上一個總計(系統(tǒng)默認設(shè)置)。 -l:計算所有的文件大小,對硬鏈接文件,則計算多次。 -x:跳過在不同文件系統(tǒng)上的目錄不予統(tǒng)計。
下面舉例說明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列列出目錄中使用這些空間的目錄名稱。
◆這可能是一個很長的清單,有時只需要一個總數(shù)。這時可在du命令中加-s選項來取得總數(shù):
#du –s /mnt 3 /mnt //列出所有文件和目錄所占的空間(使用a選項),并以字節(jié)為單位(使用b選項)來計算大小 #du –ab /root/mail 6144 mail/sent-mail 1024 mail/saved-messages 8192 mail
#p#
3、fdisk
fdisk可以劃分磁盤分區(qū)。下面給出使用Fdisk命令進行磁盤分區(qū)的操作步驟:
#fdisk /dev/had //使用/dev/had作為默認的分區(qū)設(shè)備 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命令各個參數(shù)的說明。
Fdisk有很多參數(shù),可是經(jīng)常使用的只有幾個。
◆在Linux分區(qū)過程,一般是先通過p參數(shù)來顯示硬盤分區(qū)表信息,然后根據(jù)信息確定將來的分區(qū)。如下所示:
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):
◆如果想完全改變硬盤的分區(qū)格式,就可以通過d參數(shù)一個一個地刪除存在的硬盤分區(qū)。刪除完畢,就可以通過n參數(shù)來增加新的分區(qū)。當(dāng)按下“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
這里要選擇新建的分區(qū)類型,是主分區(qū)還是擴展分區(qū);并選擇p或是e。然后就是設(shè)置分區(qū)的大小。
◆要提醒注意的是,如果硬盤上有擴展分區(qū),就只能增加邏輯分區(qū),不能增加擴展分區(qū)。
◆在增加分區(qū)的時候,其類型都是默認的Linux Native,如果要把其中的某些分區(qū)改變?yōu)槠渌愋停鏛inux Swap或FAT32等,可以通過命令t來改變,當(dāng)按下“t”改變分區(qū)類型的時候,系統(tǒng)會提示要改變哪個分區(qū)、以及改變?yōu)槭裁搭愋停ㄈ绻胫老到y(tǒng)所支持的分區(qū)類型,鍵入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)
改變完了分區(qū)類型,就可以按下“w”,保存并退出。如果不想保存,那么可以選擇“q”直接退出,如下所示:
Command (m for help):w
通過如上的操作,就可以按照需要成功地劃分磁盤分區(qū)了。
【51CTO.com獨家特稿,轉(zhuǎn)載請注明原文作者和出處?!?/p>
【編輯推薦】