11.27.2011

格式化硬碟 (Format Hard Disk)及掛載檔案系統 (Mount File System)

這一次要介紹的是在Linux系統下格式化硬碟,且將格式化後的硬碟掛載起來。格式化硬碟無論是在Linux下還是Windows下,都算是非常常用的一項功能之一。

在格式化之前,我們必須先瞭解到整個系統的磁碟配置,可以透過三個動作來做確認:

1. df -Th
2. cat -n /etc/fstab
3. cat -n /proc/partitions



以自己的環境為例 (如上圖),/dev/sda是目前正在使用中的硬碟 (HD,Hard Disk);而/dev/sdb是將要被分割的HD。

當我們執行cat -n /proc/partitions時,所顯示的結果第三個欄位-#blocks-,/dev/sdb的值為5242880,單位是KB

5242880 (KB) / 1024 = 5120 (MB);5120 (MB) / 1024 = 5 (GB),所以,/dev/sdb這顆硬碟的大小就是5 GB。

接著,我們要開始分割這顆HD:

fdisk /dev/sdb

執行之後,在Command (m for help): 的後面先輸入一個小寫的'm',查看一下,當我們執行fdisk指令之後,有那些功能是較常用到的:

a toggle a bootable flag
b edit bsd disklable
c toogle 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 disklable
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 (exports only)

以上粗體字的部份就是我們在分割硬碟時常用到的一些選項;至於我要如何分割這顆硬碟?? 我要把它先分割成三個主要分割區,每個分割區的大小為1 GB。所以:

Command (m for help): n    // 我要新增一個分割區
Command action
   e   extended
   p   primary partition (1-4)
p    // 這個分割區我要規劃為主要分割區
Partition number (1-4): 1    // 磁區的編號;因為一顆硬碟只能有四個主要分割區,所以才顯示1-4
First cylinder (1-652, default 1): <Enter>    // 第一個磁柱的起始位址;這一部份我們都用預設值即可
Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): +1G    // 最後一個磁住的位址;基本上應該是沒人在記磁住位址的。所以我們輸入分割區的大小即可。

以上的動作,我們要重覆三次 (因為要切三個主要分割區)。切割完之後:

Command (m for help): p    // 列印出剛剛的分割結果,如下圖:



Command (m for help): w    // 最後,把剛剛完成的分割寫進硬碟。

sync; init 6
sync指令是將記憶體緩衝區內的資料寫入磁碟;然後重新啟動系統 (如下圖)。



系統啟動完成後,我們再檢視一次/proc/partitions,會發現我們剛剛分割的三個磁區都存在了。

cat -n /proc/partitions    // 如下圖



磁區分割完之後,我們就要把它們格式化 (Format);格式化過後的磁區才能夠掛載到系統上:

mkfs -t ext3 /dev/sdb1
mkfs -t ext2 /dev/sdb2
mkfs -t vfat /dev/sdb3

為了與原本系統的磁區 (ext4)做區別,所以自己把這三個新劃分的磁區依序格式化為ext3、ext2和vfat的格式 (如下圖)。



格式化完成之後,就可以開始掛載了。在Linux系統下掛磁碟區有三種方式 (這就是為什麼我要劃分三個磁區的原因了):

1. 以磁碟區的標籤名稱 (Label Name)來掛載。
2. 該磁區的UUID (Universally Unique Identifier,通用唯一識別碼)來掛載。
3. 直接以設備名稱 (Device Name)來掛載。

首先,第一個磁碟區 (/dev/sdb1)以標籤名稱來掛載:

e2lable /dev/sdb1
因為剛格式化完,還沒有賦予標籤名稱,所以輸出的結果是空的。

e2lable /dev/sdb1 "PICASSO"
給它一個標籤名稱,叫做PICASSO。

e2lable /dev/sdb1
再執行一次e2lable指令,確認/dev/sdb1的標籤確實存在。

剛剛忘了一件事─要建立掛載點....XD,我們把它們建立在/mnt/資料夾之下,且分別叫做EXT3、EXT2、VFAT。

cd /mnt/; ls

mkdir -p ./EXT3 ./EXT2 ./VFAT; ls -l



要掛載之前,先檢查一下磁碟是否有錯誤,我們用fsck指令:

fsck /dev/sdb1
fsck /dev/sdb2
fsck /dev/sdb3



再來,第二個磁碟區 (/dev/sdb2)以UUID來掛載:

dumpe2fs /dev/sdb2

dumpe2fs指令的主要用意是查詢磁碟區的block相關資訊;但在這裡我們拿它用來查詢UUID (如下圖反白處,且將UUID記下來):



最後,第三個磁碟區 (/dev/sdb3)以設備名稱來掛載;設備名稱就叫做/dev/sdb3。

從這三個磁碟區得到了我們想要知道的資訊之後,我們必須把它們寫進檔案系統表 (/etc/fstab),語法如下圖反白處;編輯完之後,記得執行mount -a指令,確認我們剛剛編輯的語法和將要掛載的檔案系統沒有問題。



編輯完且確認沒問題之後,我們可以試著重新開機,且查看我們剛剛建立的掛載點,是否有將檔案系統掛載進來:

cd /mnt/; ls -l ./EXT3/; ls -l ./EXT2/; ls -l ./VFAT/



當我們看到在ETX3及EXT2資料夾之下有lost+found資料夾時,表示我們新建立的檔案系統有確實地掛載成功!!

沒有留言:

張貼留言