規劃您的Linux磁碟空間工具-fdisk 

忠孝linux講師-劉冠麟(Leo).

         fdisk程式可以將磁碟劃分為一個或更多的分割區(Partition),以存放資料,在Linux系統,存放資料至少要一個磁碟分割區,我們稱作root file system(根檔案系統),以及一個磁碟分割區當作虛擬記憶體,我們稱之為Linux swap。在講解fdisk之前,讓我們先來了解安裝Linux的硬碟需求,裝置代號,以及目錄劃分。

※ 了解硬碟容量的需求
當我們在安裝系統前,首要了解Linux的用途,近而規劃磁碟空間應如何配分較為恰當。以Fedora Linux為例,系統基本套件安裝約為700MB,若您規劃Linux將提供電子郵件服務,假設提供150個使用者email帳號,每個email帳號提供100MB空間,如果每個email帳號都用滿了上限100MB的信箱空間,則系統所佔用email的空間,約為150*100MB=15GB左右。然而Linux系統上會使用到磁碟空間還得考量swap空間(Linux上的虛擬記憶體)、log檔案(Linux上的紀錄檔案)、使用者個人檔案、其他Linux服務(像是Web,FTP..) 等所需用到的磁碟空間,統籌規劃Linux中每個環節會用到的磁碟空間,大約計算後所得到的硬碟空間值,此為保守估計值,以上面的規劃為例,筆者建議系統硬碟至少為40GB。

※ 了解裝置代號
Linux系統中,有裝置檔案的概念,您可能會經常看到以下裝置代號:


/dev/hda:第一個IDE裝置
/dev/hdb:第二個IDE裝置
/dev/sda:第一個SCSI裝置
/dev/sdb:第二個SCSI裝置

其中/dev/是Linux系統中,放置裝置檔案的目錄,接在/dev/後面的hd則是代表IDE裝置,可能是hd[a-h],其中hda代表著第一個IDE裝置,hdb代表著第二個IDE裝置..以此類推。接在/dev/後面的sd是代表SCSI裝置,可能是sd[a-p], sda代表第一個SCSI裝置,當然了sdb則是代表了第二個SCSI裝置。IDE裝置最多可以有63個磁碟分割區,SCSI裝置則最多可以有15個磁碟分割區。

我們將磁碟分割區分為三類,分別是主要分割區(Primary partition),延伸分割區(Extended partition)以及邏輯分割區(Logical partition)。

l 主要分割區最多能夠有四個,我們給予編號1~4,如果是第一個IDE裝置上的第一個主要分割區,則我們稱之為hda1。如果是第四個IDE裝置上的第二個主要分割區,我們稱之為hdd4,以此類推。SCSI裝置的分割區代號辨識方法,亦同。
l 延伸分割區可能是主要分割區的其中一個,所以編號也會是1~4其中一個。延伸分割區包含了一個或更多的邏輯分割區。
l 邏輯分割區由延伸分割區而來,若沒有延伸分割區,就不會有邏輯分割區,邏輯分割區的編號由5開始,故hdc5指的是,第三個IDE裝置中的第一個邏輯分割區。

※ Linux的目錄劃分
Linux遵循了檔案系統層級標準 (Filesystem Hierarchy Standard簡稱為FHS),也就是Linux中根目錄下所看到的目錄清單,都是遵循FHS規劃的,每個目錄都有特定的用途,像是:

/bin:放置一般使用者執行程式
/boot:放置開機載入程式(boot loader)相關檔案
/dev:放置裝置檔案,如:/dev/had
/etc:放置系統設定檔案
/home:使用者的家目錄,可以放置使用者個人檔案
/lib:放置共用函式庫(shared libraries)與核心模組(kernel modles)
/mnt:系統掛載點(mount point),可供暫時掛載其他裝置(如光碟機,軟碟機)
/root:超級使用者的家目錄
/sbin:放置超級使用者(root)執行程式
/tmp:放置暫存檔案的目錄


還有許多的目錄都遵循了FHS的規範,像是/usr/local,/var/lib,/var/log/等目錄,詳細資料請參閱FHS細節,可以經由http://www.pathname.com/fhs/網站取得相關資料。

我們必須了解目錄用途,我們才能夠針對目錄配置最適當的磁碟空間大小。
假設我們的硬碟代號是hda,在指令列我們可以使用fdisk指令對hda進行磁碟分割:
# fdisk /dev/hda
當進入到fdisk時,會看到”Command (m for help):”字樣,表示fdisk程式正在等待我們輸入命令,以下fdisk命令請務必熟記:
a 設定Active flag
n 建立新的partition
d 刪除partition
l 列出所有partition id
t 更改partition id
w 將目前的partition資訊寫入硬碟
q 離開fdisk程式
舉例說明,筆者硬碟為40GB,要切割為五個分割區,分別是:
l 一個主要分割區hda1: /boot(512M)
l 一個延伸分割區hda2
細分成四個邏輯分割區:
hda5: /(10G)
hda6: /var(10G)
hda7: Linux swap(1G)
hda8: /home(剩餘的所有空間都給/home)


首先在fdisk的command輸入n以新增partition。
Command (m for help): n
e extended
p primary partition (1-4)

再選擇p,以建立主要分割區。接著fdisk會詢問Partition的編號,由第一個Partition開始建立,輸入1
Partition number (1-4): 1
輸入起始磁柱(First cylinder)位置,這裡直接按下ENTER即可
First cylinder (1-4865, default 1):
輸入結束磁柱(Last cylinder)位置,這裡可以使用+size或+sizeM或+sizeK表示
Last cylinder or +size or +sizeM or +sizeK (1-4865, default 4865): +512M

完成後,又會回到command模式,我們可以輸入p來確認已經新增完成:
Command (m for help): p

Disk /dev/hda: 40.0 GB, 40019582464 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 63 506016 83 Linux

接著我們繼續新增延伸分割區:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (64-4865, default 64):
Using default value 64
Last cylinder or +size or +sizeM or +sizeK (64-4865, default 4865):
Using default value 4865

接著我們繼續新增第一個邏輯分割區10GB,配置給root (/)使用:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (64-4865, default 64):
Using default value 64
Last cylinder or +size or +sizeM or +sizeK (64-4865, default 4865): +10240M

接著我們繼續新增第二個邏輯分割區10GB,配置給var(/var)使用:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (1310-4865, default 1310):
Using default value 1310
Last cylinder or +size or +sizeM or +sizeK (1310-4865, default 4865): +10240M

接著我們繼續新增第三個邏輯分割區1GB,配置給Linux swap使用:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (2556-4865, default 2556):
Using default value 2556
Last cylinder or +size or +sizeM or +sizeK (2556-4865, default 4865): +1024M

接著我們繼續新增第四個邏輯分割區,把所有剩下的硬碟空間都配置給home(/home)使用:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (2681-4865, default 2681):
Using default value 2681
Last cylinder or +size or +sizeM or +sizeK (2681-4865, default 4865):
Using default value 4865

我們使用p指令,來查看目前硬碟的分割狀況:
Command (m for help): p

Disk /dev/hda: 40.0 GB, 40019582464 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 63 506016 83 Linux
/dev/hda2 64 4865 38572065 5 Extended
/dev/hda5 64 1309 10008463+ 83 Linux
/dev/hda6 1310 2555 10008463+ 83 Linux
/dev/hda7 2556 2680 1004031 83 Linux
/dev/hda8 2681 4865 17550981 83 Linux

我們使用t指令,將hda7的Partition ID改為Linux swap:
Command (m for help): t
Partition number (1-8): 7
Hex code (type L to list codes): 82
Changed system type of partition 7 to 82 (Linux swap)

我們使用a指令,將hda1 Partition設定為Active flag:
Command (m for help): a
Partition number (1-8): 1

再看一次最新的磁碟分割表以及確認設定是否無誤:
Command (m for help): p

Disk /dev/hda: 40.0 GB, 40019582464 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 63 506016 83 Linux
/dev/hda2 64 4865 38572065 5 Extended
/dev/hda5 64 1309 10008463+ 83 Linux
/dev/hda6 1310 2555 10008463+ 83 Linux
/dev/hda7 2556 2680 1004031 82 Linux swap
/dev/hda8 2681 4865 17550981 83 Linux

正確後,就可以使用w指令寫入磁碟,完成了磁碟配置工程。
Command (m for help): w

需注意的是,一旦將磁碟配置表更動寫入磁碟後,原有的磁碟資料就會沒有辦法救回來了,請小心使用
 

 
 


未經授權禁止轉貼節錄
聯成資訊報All rights reserved ©Copyright 2004
www.lccnet.com.tw
 關於電子報發送有任何疑問,請連絡e-service@lccnet.com.tw