Top Banner
VBird (2005/08/12) Linux基基--基基基基基基 1 Linux 基基基基 Chapter 9 基基基基基基 VBird 2005/08/12
52

Linux 基礎學習

Mar 19, 2016

Download

Documents

lotta

Linux 基礎學習. Chapter 9 磁碟檔案系統 VBird 2005/08/12. 課程目標. 瞭解硬碟硬體架構與檔案系統; 認識 EXT2/EXT3 與所謂日誌式檔案系統; 在 Linux 環境下,進行磁碟的分割、格式化與掛載等任務 虛擬記憶體的處理與建置. 內容. 認識硬碟與磁碟分割槽 認識 EXT2 檔案系統 (filesystem) 日誌式檔案系統的運作 (EXT3 為例 ) Linux 檔案系統的支援與掛載 檔案類型及連結檔 (link file) 磁碟的分割、格式化、檢驗與掛載 磁碟參數修訂 設定開機掛載 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 1

Linux 基礎學習Chapter 9

磁碟檔案系統VBird 2005/08/12

Page 2: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 2

課程目標 瞭解硬碟硬體架構與檔案系統; 認識 EXT2/EXT3 與所謂日誌式檔案系統; 在 Linux 環境下,進行磁碟的分割、格式化與掛載等任務 虛擬記憶體的處理與建置

Page 3: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 3

內容 認識硬碟與磁碟分割槽 認識 EXT2 檔案系統 (filesystem) 日誌式檔案系統的運作 (EXT3 為例 ) Linux 檔案系統的支援與掛載 檔案類型及連結檔 (link file) 磁碟的分割、格式化、檢驗與掛載 磁碟參數修訂 設定開機掛載 虛擬記憶體 (Swap) 的建置

Page 4: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 4

認識硬碟與磁碟分割槽 認識實體硬碟:

Page 5: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 5

認識硬碟與磁碟分割槽(續) 認識實體硬碟(續):物理組成:

磁頭 (head) :固定在機械手臂上,做單方向的移動,且機械手臂上有多個磁碟; 磁區 (Sector) :最小的物理儲存量,一個磁區為 512 Bytes ; 磁柱 (Cylinder) :硬碟盤的 sector 排成一圈,即為磁柱。磁柱為磁碟分割槽的最小單位; 硬碟容量的粗估: Cylinder x Head x Sector x 512 Bytes ; 正常操作:硬碟開機後,盡量不可進行移動。

Page 6: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 6

認識硬碟與磁碟分割槽(續) 在 Linux 下的磁碟代號:

IDE IDE 1 master & slave: /dev/hda & /dev/hdb IDE 2 master & slave: /dev/hdc & /dev/hdd

SCSI or USB Hard disk /dev/sda, /dev/sdb….

IDE 1 master 的 第一個 primary partition : /dev/hda1 第一個 logical partition : /dev/hda5 特別留意 /boot 所在磁區,最好在 1024 磁柱之前 ( 尤其是 lilo 使用者 )

Page 7: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 7

認識硬碟與磁碟分割槽(續) x86 架構的 IDE 硬碟在 Linux 之磁碟分割特色:

硬碟的第零軌為 MBR , MBR 內含: Partition table ,預設有 4 個 partition 的資訊空間,稱為 primary 或 extended ,但是最多僅有 1 個 extended Boot Loader :開機管理程式,諸如選單,具有 point 的功能,且可預先載入系統的 filesystem 。

Partition 的類型: 預設保留的 partition tables 內的類型:

Primary 的代號最多到 4 號; Extended 可以繼續分割成為 logical partitions

Extended partition 分割表: Extended 的 partition table 資訊存放在 extended 的磁區,且此磁區為連續性的,最好將 extended 放置於最後面 最大的 logical number 在 SCSI 為 15 ,而 IDE 介面則為 63 ( 指 I

D )

Page 8: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 8

認識 EXT2 檔案系統 檔案系統: filesystem

作業系統僅認識自己支援的磁碟格式 (filesystem) ; 一個 partition 預設僅能被格式化成為某一種 filesystem ,所以,我們常常將 partiton 稱為一個 filesystem 。 Linux 預設支援的檔案系統很多,包括:

Traditional File System ext2 (i-node base), minix, MS-DOS/VFAT

Journaling File System( 日誌式 ) ext3, ReiserFS: 相當適合較小的檔案 , NTFS, IBM’s JFS, S

GI’s XFS Network File System Formats

Network File System (NFS), Server Message Block (SMB)

Page 9: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 9

認識 EXT2 檔案系統(續) EXT2 檔案系統:

為 Linux 最傳統的檔案系統; 為 inode base 的 filesystem ,內含至少:

Superblock :整體 filesystem 記錄區; inode table :紀錄檔案、目錄權限與時間參數; Block area :記錄檔案實際內容區塊;

當一個 EXT2 的 filesystem 被建立時 (format) ,就已經定義好 inode table 與 block area ; 在 EXT2 的每個檔案至少應該會佔用一個 inode 與一個 blo

ck : inode :記錄檔案的屬性 block :記錄檔案的內容

Page 10: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 10

認識 EXT2 檔案系統(續) inode 記錄的資訊:

一個 inode 的大小預設為 128 Bytes ; 該檔案的擁有者與群組 (owner/group) ; 該檔案的存取模式 (read/write/excute) ; 該檔案的類型 (type) ; 該檔案建立或狀態改變的時間 (ctime) 、最近一次的讀取時間

(atime) 、最近修改的時間 (mtime) ; 該檔案的容量; 定義檔案特性的旗標 (flag) ,如 SetUID... ; 該檔案真正內容的指向 (pointer) ;

所以,檔案讀取時,會先讀取 inode 的內容,找到 block area 的號碼,才去讀取檔案內容。 若檔案太大,佔用的 block 太多,導致一個 inode 無法記錄完全,則系統會自動再分配一個 inode 給該檔案使用。

Page 11: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 11

認識 EXT2 檔案系統(續) 檔案與目錄的 inode 與 block 差異:

檔案: inode 紀錄上一頁所提到的資訊: block 則記錄檔案的實際內容資料; 檔名呢?檔名並不在此記錄喔!

目錄: inode 與檔案相同,記錄上一頁提到的權限資訊; block 則記錄此目錄下的檔名與 inode 關連性。 瞭乎?目錄所屬的 block 才會記錄檔名! 每個目錄內一定都會有 . 與 .. 兩個目錄存在。

根目錄 (/) 的上層目錄在哪裡? ex> ls -lai / 看一下 inode 與檔名的對應先!

Page 12: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 12

認識 EXT2 檔案系統(續) 檔案的讀取 ( 以 /etc/crontab 為例 ) :

Page 13: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 13

認識 EXT2 檔案系統(續) EXT2 檔案系統的先天問題:

Block : 一個 Block 僅能含有一個檔案,所以 block 大小將會影響到硬碟的空間浪費問題; 目前支援的 block 為 1024/2048/4096 三種容量; block 太大損耗容量大;太小,讀取效率差,故設計時,需配合主機的使用型態來考量;

Inode : 一個檔案至少會使用掉一個 inode ,所以 ext2 的 filesyste

m 能夠容納多少檔案數,與 inode 數量有關; 一般來說, 4KB 容量配給 1 個 inode 即可。

Page 14: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 14

認識 EXT2 檔案系統(續) EXT2 檔案系統的先天問題:(續)

關於檔名: 檔名最長 255 字元,完整檔名最長 4096 字元

關於單一檔案: 若 block size=1024 ,最大為 16GB 若 block size=4096 ,最大為 2TB

關於整個 partition : 若 block size=1024 ,最大為 2TB 若 block size=4096 ,最大為 16TB

Page 15: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 15

認識 EXT2 檔案系統(續) 一組連續的 block group ( 可視為 partition) 含有:

Superblock number of free/occupied inode and block number of block and inode Information of file system use, 掛載時間等等 a valid bit, 0 is mounted, 1 is umount: 當系統重新開機時,若發現 valid bit 設定為 0 ,則開始進行磁碟校正

Group Description: 記錄 何處開始紀錄資料 Block bitmap: 記錄那個 block 被使用 /沒被使用 Inode bitmap: 記錄那個 inode 被使用 /沒被使用 inode table data blocks

Page 16: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 16

認識 EXT2 檔案系統(續) 一組連續的 block group 含有:(續)

Page 17: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 17

認識 EXT2 檔案系統(續) 使用 dumpe2fs 指令讀取 ext2 檔案系統:

ex> dumpe2fs /dev/hda1

建立一個檔案時: 根據 inode bitmap / block bitmap 的資訊,找到尚未被使用的 inode 與 block , 進而將檔案的屬性與資料分別記載進 i

node 與 block ; 將剛剛被利用的 inode 與 block 的號碼 (number) 告知 sup

erblock 、 inode bitmap 、 block bitmap 等,讓這些 metadata 更新資訊。

Page 18: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 18

日誌式檔案系統的運作 檔案系統的變動 (File system transactions) :

每個 file system ( 可視為一個 partition) 基本上,都會擁有一個 database 來記錄 data 的種種變更,稱為 metadata 。 當檔案被更動時,兩個步驟會被執行 ( 參考前一頁檔案的建立 )

檔案本身的內容與屬性資料; 系統的 metadata ( 系統的 indexing information)

不一致 (inconsistent) 的狀態: 當一個檔案被記錄時, 1) 先會針對檔案本身來變更, 2) 再告知

file system 更新 indexing 。 若 1 完畢,但系統發生問題,無法繼續 2 ,則發生所謂的 inc

onsistent ,此時系統需要 repaired ! 可利用 fsck 檢查磁碟的錯誤與 inconsistent

Page 19: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 19

日誌式檔案系統的運作(續) 檔案系統的非同步運作 (asynchronously) :

當系統讀取了某一個檔案, 則該檔案所在的區塊資料會被載入到記憶體當中; 若這些區塊的資料被改變時,剛開始資料僅有主記憶體的區塊資料會被改變, 而且在緩衝區當中的區塊資料會被標記為『 Dirty 』,這個時候磁碟實體區塊尚未被修正; 這些『 Dirty 』區塊的資料必需回寫到磁碟當中, 以維持磁碟實體區塊上的資料與主記憶體中的區塊資料的一致性。 可利用 sync 來讓檔案由主記憶體回填至硬碟中。 最大的優勢是速度較快! 但是,卻又相當容易造成前一頁提到的不一致狀態。

Page 20: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 20

日誌式檔案系統的運作(續) EXT2 發生不一致狀態的處理方式:

若系統發生錯誤時, ext2 必須要將整個 filesystem 進行檢查,因為並沒有檔案關連的 information 在此檔案系統中。 日誌式檔案系統 (journaling) :

檔案寫入的動作: 當系統要寫入一個檔案的時候,會先在日誌記錄區塊中紀錄:某個檔案準備要寫入磁碟了;

開始寫入檔案的權限與資料; 開始更新 metadata 的資料;

完成資料與 metadata 的更新後,在日誌記錄區塊當中完成該檔案的紀錄。 發生不一致的狀態後:

由於有 journal 存在,則系統僅會針對 journal 當中記錄的檔案進行檢查,速度較快!

Page 21: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 21

日誌式檔案系統的運作(續) 日誌式檔案系統:

EXT3 : 最早由 Red Hat 發展,是 ext2 的升級版本,重點是增加了 journ

aling 的區塊,使能夠使用日誌式檔案系統的優點; 完整的支援 ext2 檔案系統,所有在 ext2 的 Linux 磁碟功能 (quo

ta, permission)均可完整支援; 但原本 ext2 的先天缺點,也承接了下來~

Reiserfs : 打破一個 block 僅有一個檔案的限制; 磁碟的使用率較高,相當適合擁有大量小檔案的系統 ( 例如 BBS) ;

Page 22: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 22

日誌式檔案系統的運作(續) ReiserFS

關於 ext2 的問題,在於磁碟空間的浪費太大!故而 reiserfs 目的在改善空間浪費的問題。 目前 reiserfs 的 block 均為 4096 bytes 所有的小檔案均集中記錄在同一個 block 中; inode 在格式化時並不會規劃,而是需要時才會自動產生。所以空間的使用會比較有彈性。 Reiserfs 檔案讀取較為快速,因為使用 binary tree 的平衡之故 但是,需要較多的 processing power ,且待讀完檔案後,需要

rebalance 。 整個 partition 與 file 最大可達 16TB 。

Page 23: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 23

Linux 檔案系統的支援與掛載 Linux 所有支援的檔案格式主要有:

傳統檔案系統: ext2 / minix / MS-DOS / FAT ( 用 vfat 模組 ) / iso9660 (光碟 ) 等等;

日誌式檔案系統: ext3 / ReiserFS / Windows' NTFS / IBM's JFS / SGI's XFS

網路檔案系統: NFS / SMBFS

貴公的 Linux 支援的檔案系統查閱: /lib/modules/`uname -r`/kernel/fs /proc/filesystems

Page 24: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 24

Linux 檔案系統的支援與掛載( 續 ) Linux File system directories

必須遵守 File System Hierarchy standard (FHS) 與 Linux Standard Bse (LSB) 的標準

FHS 標準: http://www.pathname.com/fhs 第一層 / 之下 第二層 /usr/ 與 /var/ 不可與 / 分離的目錄:

/etc, /bin, /sbin, /dev, /lib 等等

Page 25: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 25

Linux 檔案系統的支援與掛載( 續 ) 檔案系統的使用:

檔案系統 (filesystem) 必須要掛載之後才能被 Linux 系統所使用 透過『掛載點』將 filesystem 掛載該『點』之下;

掛載點為目錄; 所有在該目錄後的次目錄,都屬於該 filesystem ;

查閱 partition 的容量: df [-ihkmT] 查閱某個目錄下剩下的容量:

df -h /etc 查閱目錄下,檔案的總容量:

du [-smka] 查閱根目錄下所有子目錄佔的容量:

du -sm /*

Page 26: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 26

Linux 檔案系統的支援與掛載( 續 ) Linux 系統使用 filesystem 需考量:

主機的用途 (file server? Application server?) 多人少使用? 主機擁有多少硬碟空間?

分割時的考量: Size of swap partition Processor speed and main memory size Standalone computer guidelines File server guidelines Computer server guideline

Page 27: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 27

Linux 檔案系統的支援與掛載( 續 ) 虛擬記憶體的容量:

一般設定 256 MB 應該已足夠 以前通常建議 2 倍的 RAM 或者是實體 RAM + 40 MB 千萬不要沒有 swap 一個 swap 最大 2GB ,最多支援 8 個;

記憶體與硬碟的關係: Linux 系統會建立很多的動態緩衝區 (dynamic buffers) 來快取硬碟的資料,因此, RAM 的大小比 CPU 的速度還要重要; 為了加快 Linux 的速度,檔案存取時會有 read ahead 與 dela

y write 的機制,讓資料暫時先在記憶體當中,而非與硬碟同步。 因前一個機制,故您不可隨意將 Linux 不正常關機。

Page 28: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 28

檔案類型及連結檔 (link file) Linux File type:

Normal files: ASCII texts, executable programs, graphics files

Directories: 主要含有檔名 /inode 的資訊, 至少包含 . 與 ..

Device files: 除了 Network card 之外,其他裝置皆為檔案

Links: 分 hard link 與 symbolic link 。 Sockets: 兩個本地端 process 進行 data exchange FIFOs: 僅能進行單向 data exchange ,也是 prcesses 有關

Page 29: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 29

檔案類型及連結檔 (link file)( 續 ) Link file :

Hard link : 只是在某個目錄下新增一個該檔案的關連資料而已 該檔案的屬性 (ls -l) 之 link 數會多一個; 原則上,硬碟的空間及 inode 均不會被損耗,因為資料是新增在某目錄下的一個 inode 與檔名關連性。 Hard link 的限制:

不能跨 Filesystem ; 不能 link 目錄。

Symbolic link : 建立一個獨立的檔案, 而這個檔案會讓資料的讀取指向他 link 的那個檔案內容 ( 類似 Windows 的捷徑功能 ) 與一般檔案一樣,會用掉 inode 與 block ; block 內容為目標檔案的檔名,佔用的容量就是檔名長度;

Page 30: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 30

檔案類型及連結檔 (link file)( 續 ) Hard link 與 Symbolic link 的差異:

Hard link 利用的是 filesystem 的特性,因此無法進行跨 filesystem 與目錄的連結,但是 symbolic link 就沒有這個問題

Hard link 只是多一個目錄底下的檔名關連性資料,若刪除一個 hard link ,其實原本的資料還是存在的 (沒有更動到 block area 與 inode 的資料 ) ;

Symbolic link 只是一個具有『指向』功能的捷徑,因此,原始檔案消失後,該 symbolic link file 就無法被開啟。 兩者均以 ln 指令來達成;

hard link: ln source destination symbolic link: ln -s source destination

Page 31: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 31

檔案類型及連結檔 (link file)( 續 ) 練習:

將 /etc/crontab 複製到 /tmp 底下,製作 /tmp/crontab 的 hard link (crontab.hd) 及 symbolic link (crontab.so) ,刪除 /tmp/crontab 後,查閱兩個 link file 是否可以被開啟?

cd /tmpcp -a /etc/crontab .du -sb ; df -i .ln crontab crontab.hddu -sb ; df -i .ls -il crontab*ln -s crontab crontab.sols -li crontab*du -sb ; df -i .rm crontab ; cat crontab.hd crontab.so

Page 32: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 32

磁碟的分割、格式化、檢驗與掛載 建立一個磁碟 (filesystem) 的基本流程:

對磁碟進行分割,以建立可用的 partition ; 對該 partition 進行格式化 (format) ,以建立系統可用的 filesyste

m 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗 在 Linux 系統上,需要建立掛載點 ( 亦即是目錄 ) ,並將他掛載上來;

基本考量: 分割槽的用途?要多大?用什麼 filesystem ? inode 與 block 的大小 (size) ? 主要仍與主機用途有關啦!

Page 33: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 33

磁碟的分割、格式化、檢驗與掛載( 續 ) 磁碟的分割: fdisk [-l] 裝置代號

說明: 裝置代號為整顆硬碟,例如 /dev/had ,不是分割槽 /dev/hda1 -l 僅為列出該裝置的目前存在的 filesystem ;若沒有加裝置名稱,則 fdisk 會將系統中所有可以分析到的裝置均列出

fdisk 軟體內容使用指令: m :說明指令 p :列出所有的已存在的 partition d :刪除一個 partition n :新增一個 partition q : 不儲存離開 (測試時常使用 ) w : 儲存 partition table 後離開

Page 34: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 34

磁碟的分割、格式化、檢驗與掛載( 續 ) fdisk -l /dev/hda 輸出範例:

Disk /dev/hda: 20.5 GB, 20520493056 bytes255 heads, 63 sectors/track, 2494 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes( 一個 cylinder 大小 ) Device Boot Start End Blocks Id System/dev/hda1 * 1 765 6144831 83 Linux/dev/hda2 766 1147 3068415 83 Linux/dev/hda3 1148 1274 1020127+ 82 Linux swap/dev/hda4 1275 2494 9799650 5 Extended/dev/hda5 1275 2494 9799618+ 83 Linux

Page 35: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 35

磁碟的分割、格式化、檢驗與掛載( 續 ) fdisk 操作環境的說明

以 root 的身份進行硬碟的 partition 時,最好在單人維護模式 以 fdisk 修改了某硬碟的 partition table 後,若該硬碟某個

partition 還在使用,則核心可能無法完整載入 partition table 將該硬碟的所有 partition 卸載,重新 fdisk 即可; 重新將該系統 reboot 即可 ( 僅有單顆硬碟時 )

雖然單顆硬碟最大的邏輯磁區可以到達 63 號,但並非所有的 Linux distribution 都會將所有的邏輯磁區對應的磁碟代號都寫入系統當中,故有時需手動以 mknod 建置磁碟裝置代號。 mknod 將在本章節後續介紹。

Page 36: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 36

磁碟的分割、格式化、檢驗與掛載( 續 ) 練習:

將目前系統上所有的硬碟 partition 都列出來; fdisk -l

查閱目前的硬碟狀態中,是否有空出的未配置空間?若有的話,請將該未配置空間分割成一塊可用的 partition 。並觀察該 partition 的類型 (primary/Extended/Logical)

Page 37: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 37

磁碟的分割、格式化、檢驗與掛載( 續 ) 磁碟分割槽的格式化: mkfs

mkfs 僅是一個整合指令,他會額外取用 mkfs.ext2 / mkfs.ext3 / mkfs.reiserfs / mkfs…

ext2/ext3 檔案系統建議直接使用 mke2fs 指令; mke2fs [-bicLj] 裝置名稱

-b : 設定 block 大小,目前有 1024, 2048, 4096 bytes 三種; -i : 多少容量給予一個 inode -c : 檢查磁碟錯誤,僅下達一次 -c 時,會進行快速讀取測試;如果下達兩次 -c -c 的話,會測試讀寫 (read-write) ,會很慢~ -L : 後面可以接表頭名稱 (Label) ,這個 label 是有用的~ -j : 本來 mke2fs 是 EXT2 ,加上 -j 後,會主動加入 journal 而成為 EXT3 。

Page 38: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 38

磁碟的分割、格式化、檢驗與掛載( 續 ) 假設將 /dev/hda9 格式化成 ext3 的範例:

block size 為 4096 bytes ; inode 分配,為每 8192 bytes 給予一個 inode 該 filesystem 的 type 為 ext3 該 filesystem 的 Label 為 ext3test

mke2fs -j -b 4096 -i 8192 -L “ext3test” /dev/hda9 練習:

將上一小節以 fdisk 建立出來的 partition 格式化為 ext3 ,且 label 設為 geego 其餘自訂。 mke2fs -j -L “geego” /dev/hda??

將做完成的 filesystem 詳細資訊叫出來察看: dumpe2fs /dev/hda??

Page 39: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 39

磁碟的分割、格式化、檢驗與掛載( 續 ) 磁碟檢驗: fsck [-AtCary] 裝置名稱

參數: -t : fsck 可以檢查好幾種不同的 filesystem

ls -l /sbin/fsck* -A : 依據 /etc/fstab 的內容,將所有的裝置都掃瞄一次

通常開機過程中就會執行此一指令 -r : 讓使用者決定是否需要修復 -y : 讓 fsck 在檢驗到錯誤時,直接答覆 y ; -C : 在檢驗的過程當中,使用一個長條圖顯示進度

環境說明: 檢驗完畢後,會在該 filesystem 下自動產生 lost+found 目錄 執行 fsck 時, 被檢查的 partition 務必不可掛載到系統上 請將上小節建立的 filesystem 檢驗其硬碟

Page 40: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 40

磁碟的分割、格式化、檢驗與掛載( 續 ) /lost+found (ext2/ext3 only)

執行完 fsck 之後,若系統發現有不正常的檔案,則會將該檔案 / 目錄移動到此目錄下。 fsck 開始檢驗磁碟檢驗完畢的代號:

0 no errors 1 file system errors corrected 2 system should be rebooted 4 file system errors left uncorrected 8 operational error 16 usage or syntax error 32 fsck canceled by user request 128 shared library error

Page 41: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 41

磁碟的分割、格式化、檢驗與掛載( 續 ) 磁碟掛載:

mount mount -a mount [-tonL] 裝置名稱代號 掛載點 參數:

-a :依照 /etc/fstab 的內容將所有相關的磁碟都掛上來! -n :掛載資訊不寫入 /etc/mtab 檔案; -L :利用 partition 的表頭名稱 ( Label ) 來進行掛載喔!

最好為您的 partition 取一個在您系統當中獨一無二的名稱 -t : 您的 Linux 支援的檔案格式,就寫在這裡吧!若沒有加 -t 參數

主動以 /etc/filesystems 這個檔案及 /proc/filesystems 內的檔案系統格式嘗試掛載。

Page 42: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 42

磁碟的分割、格式化、檢驗與掛載( 續 ) 磁碟掛載: mount -o 參數內容

ro, rw 為唯讀 (ro) 或可讀寫 (rw) async, sync 為同步寫入 (sync) 或非同步 (async) auto, noauto 能否被以 mount -a 自動掛載 (auto) dev, nodev 能否建立裝置檔案? dev 為可允許 suid, nosuid 可否含有 suid/sgid 的檔案格式? exec, noexec 可否擁有可執行 binary 檔案? user, nouser 是否允許此 partition 讓 user 執行 mount defaults

預設值為: rw, suid, dev, exec, auto, nouser, and async remount

重新掛載,這在系統出錯,或重新更新參數時,很有用!

Page 43: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 43

磁碟的分割、格式化、檢驗與掛載( 續 ) 磁碟掛載環境說明:

需先建立 mount point ( 目錄 ) 若該 mount point 目錄下已經存在某些檔案,則當該目錄被當成掛載點後,原本的檔案將暫時被『隱藏』起來而無法使用

( 並非被刪除! ) /etc/filesystems 與 /proc/filesystems 與自動嘗試掛載有關; /etc/mtab 與 /proc/mounts 與目前已掛載的磁區有關 能否掛載某 filesystem 的 type ,與 Linux OS 支援的檔案系統有關 (/lib/modules/`uname -r`/kernel/fs) 練習:

將剛剛建立的 filesystem 掛載至 /mnt/geego 目錄下 mount -t ext3 /dev/hda? /mnt/geego mount -t ext3 -L “geego” /mnt/geego

Page 44: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 44

磁碟的分割、格式化、檢驗與掛載( 續 ) 磁碟掛載其他說明:

卸載使用: umount [裝置 / 掛載點 ] mount -a 可參考 /etc/fstab 來主動進行掛載 若發生: device is busy 的字樣:

表示該 filesystem 正在被使用,請找出相關的程序,關閉後,才可卸載 您的工作目錄可能正好在該 filesystem 目錄下,請離開即可;

可利用下列指令來掛載『某目錄』到某目錄下: mount --bind 原始目錄 目標目錄 mount --bind /home /tmp/home df

Page 45: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 45

磁碟的分割、格式化、檢驗與掛載( 續 ) 中文磁區的掛載 (windows) :

mount -t vfat -o iocharset=cp950 /dev/hda1 /mnt/win98 mount -t vfat -o iocharset=cp950 /dev/sda1 /mnt/usb NTFS 計畫:

Linux-NTFS Project: http://linux-ntfs.sourceforge.net/

Page 46: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 46

磁碟參數修訂 mknod 裝置名稱 [bcp] [Major] [Minor]

參數: b :設定裝置名稱成為一個周邊儲存設備檔案,例如硬碟等; c :設定裝置名稱成為一個周邊輸入設備檔案,例如滑鼠 /鍵盤等 p :設定裝置名稱成為一個 FIFO 檔案; Major :主要裝置代碼; Major :次要裝置代碼;

Linux 透過取用裝置代號來使用該裝置, 裝置的主要、次要代碼都是有意義的 (請查閱 /dev)硬碟代號 Major Minor

/dev/hda 3 0~63/dev/hdb 3 64~127/dev/hdc 22 0~63/dev/hdd 22 64~127

Page 47: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 47

磁碟參數修訂(續) e2label [裝置名稱 ] [新的 Label 名稱 ]

以 Label 來掛載檔案系統: 優點:

不論硬碟代號怎麼變,不論您將硬碟插在那個 IDE 介面 (IDE1 或 IDE2 或 master 或 slave 等 ) ,由於系統是透過 Label ,所以,磁碟插在那個介面將不會有影響。

缺點: 如果插了兩顆硬碟,剛好兩顆硬碟的 Label 有重複的,那就慘了~ 因為系統會無法判斷那個磁碟分割槽才是正確的!

Page 48: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 48

磁碟參數修訂(續) tune2fs [-jlL] [裝置代號 ]

參數: -j :將 ext2 的 filesystem 轉換為 ext3 的檔案系統; -l :類似 dumpe2fs -h 的功能~將 superblock 內的資料讀出來~ -L :類似 e2label 的功能,可以修改 filesystem 的 Label 喔!

練習:請修改剛剛建立的 filesystem 的 Label 成為 fc4ext3 tune2fs -L “fc4ext3” /dev/hda?

Page 49: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 49

磁碟參數修訂(續) hdparm [-icdmXTt] 裝置名稱 (危險指令,請勿模仿~ )

參數: -i : 以核心功能測試的硬碟資訊。可能與實際硬碟資訊不同; -c : 設定硬碟在 PCI 介面間的傳輸模式為 32-bit (32 位元 ) 存取模式 -d : 設定是否啟用 dma 模式, -d1 為啟動, -d0 為取消; -m : 設定同步讀取多個 sector 的模式。設定 16 是合理的! -X : 設定 UtraDMA 的模式, UDMA 的模式值加 64 即為設定值。

33 MHz DMA mode 0~2 (X64~X66) 66 MHz DMA mode 3~4 (X67~X68) 100MHz DMA mode 5 (X69)

-T :測試暫存區 cache 的存取效能 -t :測試硬碟的實際存取效能 (較正確!)

hdparm -d1 -c1 -X68 /dev/hda hdparm -Tt /dev/hda

Page 50: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 50

設定開機掛載 開機自動掛載: /etc/fstab (共有六個欄位 )

裝置代號或 Label 名稱 掛載點 ( 目錄 ) 檔案格式 掛載時下達的參數 dump 備份指令的參考,若為 0 則表示以 dump 備份時,該 partition 不備份 fsck 的檢驗順序,當系統開機時,若此值為 0 表示不檢驗,

1 較早被檢驗 ( 一般給 /) ,其他則設定 2 即可。 練習:將剛剛建立的 filesystem 寫入 /etc/fstab 中:

/dev/hda? /mnt/hda? ext3 defaults 1 2 mount -a

Page 51: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 51

虛擬記憶體 (Swap) 的建置(續) Swap 的類型:

裝置 ( 整個 partition ) :速度較快 檔案 ( 類似 Windows 的分頁檔案 ) :較有彈性

swap 建置指令: mkswap swapon swapoff free

Page 52: Linux  基礎學習

VBird (2005/08/12) Linux --基礎 磁碟檔案系統 52

虛擬記憶體 (Swap) 的建置 範例:建立一個 64MB 的 swap file

檢驗一下目前的記憶體大小: free

建立一個 64 MB 的檔案: dd if=/dev/zero of=/tmp/swap bs=4k count=16382

將該檔案格式化為 swap 類型 mkswap /tmp/swap

將該 swap file 加入 swapon /tmp/swap

檢驗記憶體: free