[RHCE] Disk And File System

DISK

在Linux中,所有的裝置是用掛載的方式連結到系統。系統必須為裝置建立一個目錄,經由將裝置掛載(Mount)到指定的目錄上,使用者才可以存取裝置。而這個目錄在Linux中稱為掛載點(Mount Point)。就像貨輪上的貨物,必須停靠在港口後才可以搬運。貨輪就是硬碟,貨物就是資料,港口就是目錄,把貨輪停靠到指定的港口就是掛載。有別於Windows系統中硬體是以代號的方式辨識,Linux則是以目錄。

在IDE介面中,若主機板上有兩個IDE插槽,每個排線可連結到兩個IDE裝置。則Linux會分別為這些裝置建立目錄以便於掛載。
1326904873-3821170021.jpg-RHCE磁碟與檔案系統

IDE裝置的目錄是固定的,例如只有Secordary的Master有連接裝置,目錄依舊是/dev/hdc。

而在SATA介面上,裝置目錄的命名則是以系統偵測到的順序依序而定。例如若在SATA1、SATA5以及USB上各有一顆硬碟,則系統給予的目錄會分別為。
1326904899-2267898594.jpg-RHCE磁碟與檔案系統

DISK PARTITION

跟磁碟最有關係的就是磁碟分割,而管理磁碟分割的就是MBR中的分割表(Partition Table)。分割表紀錄分割區起始以及結束磁柱的號碼,檔案則利用分割表寫入指定的磁碟中。分割表有64bytes,每組分割需使用16bytes,所以一個硬碟總共可以有四組分割。分割後的磁區會以硬碟目錄檔名後面加上號碼作為區分。以上面IDE的硬碟為例,IDE1的Master硬碟切了兩個分割區,則分別為/dev/hda1和/dev/hda2。

雖然分割表只能紀錄四組分割區,但並不代表只能有四個分割區。分割區主要分為主要分割(Primary)、延伸分割(Extended)以及邏輯分割(Logical)。而一個分割表中,主要分割以及延伸分割總合必小於四組。如果使用者希望有大於四組的分割區,則必須在延伸分割區上建立邏輯分割區。

主要分割區: 主要分割區可以格式化,一個主要分割區可以存在一個作業系統,以及任意數目的檔案資料。

延伸分割區: 延伸分割區不可格式化,所以也無法建立任何資料,延伸分割區主要是用以建立邏輯分割區。一顆硬碟中最多只能有一個延伸分割區。

邏輯分割區: 邏輯分割區可格式化,可存在可以邏輯分割區開機的作業系統,以及任意數目的檔案資料。邏輯分割區必須建立在延伸分割區上。IDE硬碟可以建立59個(5~63號)邏輯分割,SATA硬碟可建立11個(5~15號)邏輯分割。邏輯分割區的編號之所以從5號開始,是因為1~4號必須保留給主要以及延伸分割區。所以,假設一顆在IDE的Master硬碟中,切出了兩個主要分割和一個邏輯分割,則分割區編號如下。
1326904920-1958337323.jpg-RHCE磁碟與檔案系統

FILE SYSTEM

Windows中,一個分割完並格式化,可用以存取資料的分割區我們通常稱為「槽」。在Linux中,我們則稱為檔案系統(File System)。建立一個檔案系統最主要有幾個步驟:1.切割分割區,2.格式化,3.掛載。必須要經過這三個步驟你的資料才可以在檔案系統中存取。

這邊介紹基本的檔案系統建立,假設要在/dev/sda下建立一個ext4檔案系統,並掛載到/fstest下。

  1. 首先先用 #fdisk -cul /dev/sda 查詢一下硬碟目前空間的使用情況。-c表示關閉DOS相容模式,-u表示顯示磁區的大小,而不是磁柱的大小,-l表示列出分割表 。
  2. 確認空間後,以 #fdisk -cu /dev/sda (Red Hat官方建議加上-cu進行磁區分割)進行分割。進入fdisk之後,可以先按m查詢基本命令,簡單介紹幾個命令。n: 新增分割區。d: 刪除分割區。p: 列出分割區。q: 不儲存分割設定離開。w: 儲存分割設定離開。
  3. 按n建立新的分割區,在主要跟延伸分割未滿四組,或延伸分割仍有空間的情況下,才可建立分割。決定完分割種類之後,系統會問起始磁區,直接使用預設就好。(若fdisk未輸入參數-cu,則會以磁柱為單位分割。)接著系統會問結束磁區或磁柱編號,或者輸入「+size」,假設要切500M就輸入「+500M」。此時系統會自動幫使用者尋找最接近500M的磁區並進行切割的動作。最後可以按p就會列出剛才切出的分割區了,確定無誤之後按下w寫入到分割表中並且離開fdisk。之後需要重新啟動系統, #partprobe 可以重新載入無須重新啟動,但這個命令因bug已失效。
  4. 接著建立檔案系統格式,假設剛才建立的分割區為/dev/sda1,要將它建立為ext4格式。則輸入 #mkfs -t ext4 /dev/sda1
  5. 檔案系統建立完成之後,就輸入 #mkdir /fstest 可建立掛載點讓檔案系統可以掛載。
  6. 掛載的方式可以手動掛載以及自動掛載,手動掛載的方式為輸入 #mount /dev/sda1 /fstest。或者可以編寫/etc/fstab,加入/dev/sda1 /fstest ext4 default 0 0這行,並儲存離開。然後再輸入 #mount -a 進行重新掛載,若沒有出現錯誤訊息表示設定成功。如此便可利用/fstest目錄進行對/dev/sda1分割區的資料存取。


除此之外,我們也可以將分割區加密之後在建立檔案系統。
  1. 如同前面先利用fdisk查詢並且切割出要建立檔案系統的分割區。
  2. 輸入 #cryptsetup luksFormat /dev/sdaN 將分割區格式化為加密型態,並且設定密碼。(格式化前要求確認訊息需要輸入大寫的YES)
  3. 輸入 #cryptsetup luksOpen /dev/sdaN [名稱] 開啟加密分割區並為其命名。同時系統會自動建立/dev/mapper/[名稱]的映射分割區,這是用來存取的檔案系統掛載點。
  4. 輸入 #mkfs -t ext4 /dev/mapper/[名稱] 來建立檔案系統格式。
  5. 輸入 #mkdir /fstest2 建立掛載點。並輸入 #mount /dev/mapper/[名稱] /fstest2 進行掛載。
  6. 當加密分割區使用完之後,你可以對它進行關閉的動作,確保資料的安全。先輸入 #umount /dev/mapper/[名稱] 卸載檔案系統。再輸入 #cryptsetup luksClose [名稱] 關閉加密區。
  7. 你也可以利用fstab進行自動掛載,先用 #vim /ect/crypttab 新增映射資訊。在文件中輸入 [名稱] /dev/sdaN /密碼檔案路徑,若無密碼檔案則會在掛載時詢問密碼。接著再跟一般檔案系統一樣,於fstab加入自動掛載的資訊即可。

FILESYSTEM PARAMETER

tune2fs可以用來調整或查詢檔案系統的參數,使用 #tune2fs [參數] [檔案系統名稱] 就可以針對個別的檔案系統查詢或修改,可用參數如下:
-c: 設設定置自我檢查的掛載次數,啟用這個選項後,每掛載一次計數器就會加1,超過設置次數就會執行檔案系統自我檢查。
-C: 設定檔案系統掛載的次數,如果同時指定了-c,且-c参數的值大於-C,則將在下次系統啟動時進行強制自我檢查。
-e: 設定發生錯誤時後續動作,包括continue(繼續運作)、remount-ro(重新掛載成唯讀模式)或panic(關閉系統)。
-i: 設定自我檢查的時間間隔[d(天)|m(月)|w(周)],如3d就是三天後。
-j: 將檔案系統轉換为ext3類型,ext3為日誌型檔案系統,可記錄檔案系統中的檔案異動。
-l: 查詢檔案系統的詳細資料。 -L: 設定檔案系統的標簽。
-m: 設定檔案系統保留空間的百分比。
-o: 設定檔案系統的預設掛載選項,選項說明請參考man page。
-O: 設定檔案系統的功能選項,選項說明請參考man page。
-r: 設定系統保留空間的block數。

留言