Rhel磁盤管理
磁盤操作是個危險系數很高的操作,在windows下面,有各種磁盤分區工具提供的圖形界面,操作起來倒也不那麼心虛,但在linux下面,磁盤操作全成了命令操作,這不禁讓我對這種危險操作又多了幾分畏懼,而且,liunx下的所有比如分區啦等等都是文件的形式展現,遠不如圖形界面中一塊磁盤就是一道長條,這處一道分界線,那處一道分界線那樣直觀。
說些概念性的基礎知識。
首先說下
linux的文件系統的結構,
跟windows不同,linux的文件組織是一棵倒置的樹的形式,最低是根目錄,即“/”。根目錄下再一層層的分支,這跟windows中的每個分區顯示成一塊盤很不一樣,因此,最初接觸linux的人對此很不習慣,放個文件不知道放哪裡好,找個東西又不知道往哪處尋,而且,這種文件組織方式讓初學者根本沒有磁盤分區這個概念,至少本人剛接觸的時候確是這種感覺,一頭霧水的感覺。
我們也都知道,liunx中把所有的設備都映射成了文件,比如cpu、內存、聲卡顯卡等等。硬盤也是如此,這些設備文件都存放在/dev/目錄下面。這些設備文件並不可讀,只是在需要的時候被程序調用。
再有就是
linux對磁盤的命名方式,
首先對於不同類型的磁盤設備命名不一樣,比如IDE接口的設備hda,hdb等,是以h開頭的,SCSI接口的設備命名為sda,sdb等,是以s開頭的,軟驅則是以f開頭。中間的一個d應該就是disk的意思了,最後一位a,b,c……這些字母是不同磁盤的標示。比如我有兩塊硬盤,通過scsi接口連在計算機上,第一塊磁盤在/dev裡的名字就是hda,而第二塊就是hdb了。
因為MBR中存放分區表的空間有限的緣故,無論是windows還是linux,其主分區和擴展分區之和不能大於4,其中擴展分區最多只能有一個。而擴展分區必須經過二次分區才能被識別,擴展分區繼續分區的個數就可以有很多很多個了。因為在磁盤號後又要標示分區號,因此對於分區號的標示就是直接在磁盤號後加綴數字就行了,比如sda1,sda2等。Linux系統規定,對於標注分區號的數字1-4為主分區預留號段,擴展分區分出的邏輯分區的分區號是從5開始往後排。
還有一個概念就是文件系統。
操作系統並不能直接讀寫裸磁盤,操作系統對文件的讀寫是通過文件系統來實現的,我們比較熟悉的文件系統有fat32、ntfs、ext3等。文件系統主要是定義了磁盤的目錄結構和組織方式。其中linux似乎支持大多數的文件系統。
下面開始說下磁盤管理的一些個命令。
Df命令,就是disk free的意思,可以查看分區的已用空間大小,未用空間大小等信息。
Du命令,就是disk usage的意思。Du可以以當前目錄下的所有子目錄為單位,查看每個子目錄占用的空間大小。
Fdisk命令,磁盤分區工具。
下面就
以增加一塊硬盤為例說明一下具體使用過程。
新增一塊硬盤之後,/dev/中多出了sdb文件。
首先需要對磁盤進行分區,
fdisk /dev/sdb進入分區配置界面。
幾個有用的參數,m顯示幫助信息
p顯示當前分區信息,
n創建新分區,
d刪除分區,
Q不保存退出,
W保存配置信息
按“n:”提示選擇分區類型是主分區還是擴展分區,選擇主分區p;
輸入主分區號,1—4中選一個;
設置磁盤大小,輸入起始值和最終值即可完成分區操作。
根據自己的規劃,重復以上操作即可完成對硬盤的分區。
硬盤分區之後,你就可以再/dev/目錄下看到他們對應的文件名了,分別為sdb1,sdb2,sdb3。
磁盤分區之後並不能被操作系統讀寫,
還需要格式化,
格式化就是配置相應的文件系統。
格式化命令為mkfs。
mkfs -t 文件系統類型 設備名即可。
比如我們把sdb1這個分區格式化為ext3格式。即可在終端中輸入
Mkfs -t ext3 /dev/sdb1
即可。Mkfs支持的文件系統格式有ext2、ext3、vfat即格式化為fat32.。我就知道這幾個。
我們再來介紹 mkfs.ext3 mkfs.reiserfs mkfs.ext2 mkdosfs mkfs.msdos mkfs.vfat ,其實mkfs 在執行的命令的時候,也是調用的這個工具,這也是我先把mkfs介紹的主要原因; 通過文件名,我們就知道這些工具是支持什麼文件系統;這些命令為我們提供了更多的方便;
[root@localhost beinan]# mkfs.ext3 /dev/sda6 注:把該設備格式化成ext3文件系統
[root@localhost beinan]# mke2fs -j /dev/sda6 注:把該設備格式化成ext3文件系統
[root@localhost beinan]# mkfs.ext2 /dev/sda6 注:把該設備格式化成ext2文件系統
root@localhost beinan]# mke2fs /dev/sda6 注:把該設備格式化成ext2文件系統
[root@localhost beinan]# mkfs.reiserfs /dev/sda6 注:把該設備格式化成reiserfs文件系統
[root@localhost beinan]# mkfs.vfat /dev/sda6 注:把該設備格式化成fat32文件系統
[root@localhost beinan]# mkfs.msdos /dev/sda6 注:把該設備格式化成fat16文件系統,msdos文件系統就是fat16;
這樣格式化就結束了,文件系統也就建立完畢。
補充一下交換分區,
就是虛擬內存的配置。命令有:
Mkswap 設備名 #創建交換分區
Swapon 設備名 #加載交換分區
Swapoff 設備名 #關閉交換分區
Swapon -s #查看交換分區
格式化分區之後就需要掛載了,
將分區掛載到某一個目錄下。如
Mount -t ext3 /dev/sda1 /mnt/hardisk1
就是把sda1掛載到hardisk1目錄下。
如果
要開機自動掛載
這些分區的話需要修改/etc/fstab文件,fstab文件中的一行形如:
/dev/sdb1 /mnt/ext3 ext3 defaults 0 0
第一字段為設備名。
第二字段為掛載點,就是你自定義的一個文件夾位置。對於swap設別,此字段為none。
第三個字段為文件系統格式。
第四個字段為加載文件系統所使用的參數。多個參數之間用“,”分割,一般defaults即可。
其他參數含義:
Ro以只讀模式加載該文件系統。
Sync關閉對文件系統的寫緩沖功能。
User允許普通用戶加載該文件系統。
Quota強制在該文件系統上進行磁盤定額限制
Noauto不再使用mount -a命令加載該文件系統。
第五個字段是被\"dump\"命令使用來檢查一個文件系統應該以多快頻率進行轉儲,若不需要轉儲就設置該字段為0。
第六個字段是設定被fsck命令用來決定在啟動時需要被掃描的文件系統的順序,根文件系統對應該字段的值應該為1,其他文件系統應該為2。若該文件系統無需在啟動時掃描則設置該字段為0。
到這一步就完成了新增磁盤的各種配置。
在說下調整分區的大小。
在說調整分區大小之前首先區分一個概念,就是分區跟文件系統。文件系統並一定跟分區大小一樣,他可以比他所在的分區小。這就跟給不同人家分地一樣,給一家分一塊地這就相當於分區,就是把一整塊分成幾塊。但是,地分到戶之後,每一戶分自己的一部分種什麼東西就不管分地什麼事了,每戶在自己的地上再分一部分種小麥,一部分花生,這種行為就跟在分區上建立文件系統類似了。我可以把自己的所有地都種玉米,就是在一塊分區裡只格式化出來一個文件系統,也可以在自己的地裡一半種花生一半種大豆,就是在一塊分區裡格式化出幾個文件系統。這個概念並不好理解。
通過具體分區操作來理解吧。
說下縮容。
首先把分區卸載。
如umount /dev/sdb1
然後檢測文件系統,
看下大小如何。如e2fsck -f /dev/sdb1
再根據現在已有文件的容量,根據要調整分區的規劃,計算下需要調整文件系統的大小。比如本身在這個文件系統中已有300M的文件,為了不損失數據,我們調整後的文件系統一定要比300M大,比如我們原本分區和文件系統大小為都為500M,我們想把分區縮小到400M,那麼你調整後的文件系統大小應該略小於400M。如resize2fs /dev/sdb1 390M
之後調整分區大小。
使用fdisk命令,先刪去原有分區,再新建分區,分區大小設定為+400M。
在設定分區大小的時候,要注意單位,比如以K為單位,不可寫成“k”,因為1k=1000bytes,1K=1024bytes。寫錯的話在下一步檢測文件系統的時候會報錯。
然後繼續檢測文件系統。
再調整一下文件系統大小。
如resize2fs /dev/sdb1。當resize2fs後不加文件系統大小時,表明將文件系統擴展到分區大小。
調整結束,下面掛載分區即可。
再說下擴容。
擴容一樣,首先卸載兩個分區,然後用fdisk分別刪除這兩個分區,再新建一個分區把這兩個分區合並為一個,然後運行文件系統檢測e2fsck -f /dev/sdb1。再調整文件系統大小resize2fs /dev/sdb1,把文件系統調整到分區大小。然後掛載分區即可。