520 likes | 741 Vues
Linux 基礎學習. Chapter 9 磁碟檔案系統 VBird 2005/08/12. 課程目標. 瞭解硬碟硬體架構與檔案系統; 認識 EXT2/EXT3 與所謂日誌式檔案系統; 在 Linux 環境下,進行磁碟的分割、格式化與掛載等任務 虛擬記憶體的處理與建置. 內容. 認識硬碟與磁碟分割槽 認識 EXT2 檔案系統 (filesystem) 日誌式檔案系統的運作 (EXT3 為例 ) Linux 檔案系統的支援與掛載 檔案類型及連結檔 (link file) 磁碟的分割、格式化、檢驗與掛載 磁碟參數修訂 設定開機掛載
E N D
Linux 基礎學習 Chapter 9 磁碟檔案系統 VBird 2005/08/12 Linux基礎--磁碟檔案系統
課程目標 • 瞭解硬碟硬體架構與檔案系統; • 認識 EXT2/EXT3 與所謂日誌式檔案系統; • 在 Linux 環境下,進行磁碟的分割、格式化與掛載等任務 • 虛擬記憶體的處理與建置 Linux基礎--磁碟檔案系統
內容 • 認識硬碟與磁碟分割槽 • 認識 EXT2 檔案系統 (filesystem) • 日誌式檔案系統的運作(EXT3 為例) • Linux 檔案系統的支援與掛載 • 檔案類型及連結檔 (link file) • 磁碟的分割、格式化、檢驗與掛載 • 磁碟參數修訂 • 設定開機掛載 • 虛擬記憶體 (Swap) 的建置 Linux基礎--磁碟檔案系統
認識硬碟與磁碟分割槽 • 認識實體硬碟: Linux基礎--磁碟檔案系統
認識硬碟與磁碟分割槽(續) • 認識實體硬碟(續):物理組成: • 磁頭(head):固定在機械手臂上,做單方向的移動,且機械手臂上有多個磁碟; • 磁區(Sector):最小的物理儲存量,一個磁區為512 Bytes; • 磁柱(Cylinder):硬碟盤的 sector 排成一圈,即為磁柱。磁柱為磁碟分割槽的最小單位; • 硬碟容量的粗估:Cylinder x Head x Sector x 512 Bytes; • 正常操作:硬碟開機後,盡量不可進行移動。 Linux基礎--磁碟檔案系統
認識硬碟與磁碟分割槽(續) • 在 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 使用者) Linux基礎--磁碟檔案系統
認識硬碟與磁碟分割槽(續) • 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 (指 ID ) Linux基礎--磁碟檔案系統
認識 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, SGI’s XFS • Network File System Formats • Network File System (NFS), Server Message Block (SMB) Linux基礎--磁碟檔案系統
認識 EXT2 檔案系統(續) • EXT2 檔案系統: • 為 Linux 最傳統的檔案系統; • 為 inode base 的 filesystem,內含至少: • Superblock:整體 filesystem 記錄區; • inode table:紀錄檔案、目錄權限與時間參數; • Block area:記錄檔案實際內容區塊; • 當一個 EXT2 的 filesystem 被建立時(format),就已經定義好 inode table 與 block area ; • 在 EXT2 的每個檔案至少應該會佔用一個 inode 與一個 block: • inode:記錄檔案的屬性 • block :記錄檔案的內容 Linux基礎--磁碟檔案系統
認識 EXT2 檔案系統(續) • inode 記錄的資訊: • 一個 inode 的大小預設為 128 Bytes; • 該檔案的擁有者與群組(owner/group); • 該檔案的存取模式(read/write/excute); • 該檔案的類型(type); • 該檔案建立或狀態改變的時間(ctime)、最近一次的讀取時間(atime)、最近修改的時間(mtime); • 該檔案的容量; • 定義檔案特性的旗標(flag),如 SetUID...; • 該檔案真正內容的指向 (pointer); • 所以,檔案讀取時,會先讀取 inode 的內容,找到 block area 的號碼,才去讀取檔案內容。 • 若檔案太大,佔用的 block 太多,導致一個 inode 無法記錄完全,則系統會自動再分配一個 inode 給該檔案使用。 Linux基礎--磁碟檔案系統
認識 EXT2 檔案系統(續) • 檔案與目錄的 inode 與 block 差異: • 檔案: • inode 紀錄上一頁所提到的資訊: • block 則記錄檔案的實際內容資料; • 檔名呢?檔名並不在此記錄喔! • 目錄: • inode 與檔案相同,記錄上一頁提到的權限資訊; • block 則記錄此目錄下的檔名與 inode 關連性。 • 瞭乎?目錄所屬的 block 才會記錄檔名! • 每個目錄內一定都會有. 與.. 兩個目錄存在。 • 根目錄(/)的上層目錄在哪裡? • ex> ls -lai / 看一下 inode 與檔名的對應先! Linux基礎--磁碟檔案系統
認識 EXT2 檔案系統(續) • 檔案的讀取(以 /etc/crontab 為例): Linux基礎--磁碟檔案系統
認識 EXT2 檔案系統(續) • EXT2 檔案系統的先天問題: • Block : • 一個 Block 僅能含有一個檔案,所以 block 大小將會影響到硬碟的空間浪費問題; • 目前支援的 block 為 1024/2048/4096三種容量; • block 太大損耗容量大;太小,讀取效率差,故設計時,需配合主機的使用型態來考量; • Inode : • 一個檔案至少會使用掉一個 inode ,所以 ext2 的 filesystem 能夠容納多少檔案數,與 inode 數量有關; • 一般來說, 4KB 容量配給 1 個 inode 即可。 Linux基礎--磁碟檔案系統
認識 EXT2 檔案系統(續) • EXT2 檔案系統的先天問題:(續) • 關於檔名: • 檔名最長 255 字元,完整檔名最長 4096 字元 • 關於單一檔案: • 若 block size=1024,最大為16GB • 若 block size=4096,最大為 2TB • 關於整個 partition : • 若 block size=1024,最大為 2TB • 若 block size=4096,最大為16TB Linux基礎--磁碟檔案系統
認識 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 Linux基礎--磁碟檔案系統
認識 EXT2 檔案系統(續) • 一組連續的 block group 含有:(續) Linux基礎--磁碟檔案系統
認識 EXT2 檔案系統(續) • 使用 dumpe2fs 指令讀取 ext2 檔案系統: • ex> dumpe2fs /dev/hda1 • 建立一個檔案時: • 根據 inode bitmap / block bitmap 的資訊,找到尚未被使用的 inode 與 block , 進而將檔案的屬性與資料分別記載進 inode 與 block ; • 將剛剛被利用的 inode 與 block 的號碼 (number) 告知 superblock、inode bitmap、block bitmap 等,讓這些 metadata 更新資訊。 Linux基礎--磁碟檔案系統
日誌式檔案系統的運作 • 檔案系統的變動 (File system transactions): • 每個 file system (可視為一個 partition)基本上,都會擁有一個 database 來記錄 data 的種種變更,稱為 metadata。 • 當檔案被更動時,兩個步驟會被執行(參考前一頁檔案的建立) • 檔案本身的內容與屬性資料; • 系統的 metadata (系統的 indexing information) • 不一致 (inconsistent) 的狀態: • 當一個檔案被記錄時,1)先會針對檔案本身來變更,2)再告知 file system 更新 indexing 。 • 若 1 完畢,但系統發生問題,無法繼續 2 ,則發生所謂的 inconsistent ,此時系統需要 repaired ! • 可利用 fsck 檢查磁碟的錯誤與 inconsistent Linux基礎--磁碟檔案系統
日誌式檔案系統的運作(續) • 檔案系統的非同步運作(asynchronously): • 當系統讀取了某一個檔案, 則該檔案所在的區塊資料會被載入到記憶體當中; • 若這些區塊的資料被改變時,剛開始資料僅有主記憶體的區塊資料會被改變, 而且在緩衝區當中的區塊資料會被標記為『 Dirty 』,這個時候磁碟實體區塊尚未被修正; • 這些『 Dirty 』區塊的資料必需回寫到磁碟當中, 以維持磁碟實體區塊上的資料與主記憶體中的區塊資料的一致性。 • 可利用 sync 來讓檔案由主記憶體回填至硬碟中。 • 最大的優勢是速度較快! • 但是,卻又相當容易造成前一頁提到的不一致狀態。 Linux基礎--磁碟檔案系統
日誌式檔案系統的運作(續) • EXT2 發生不一致狀態的處理方式: • 若系統發生錯誤時, ext2 必須要將整個 filesystem 進行檢查,因為並沒有檔案關連的 information 在此檔案系統中。 • 日誌式檔案系統(journaling): • 檔案寫入的動作: • 當系統要寫入一個檔案的時候,會先在日誌記錄區塊中紀錄:某個檔案準備要寫入磁碟了; • 開始寫入檔案的權限與資料; • 開始更新 metadata 的資料; • 完成資料與 metadata 的更新後,在日誌記錄區塊當中完成該檔案的紀錄。 • 發生不一致的狀態後: • 由於有 journal 存在,則系統僅會針對 journal 當中記錄的檔案進行檢查,速度較快! Linux基礎--磁碟檔案系統
日誌式檔案系統的運作(續) • 日誌式檔案系統: • EXT3: • 最早由 Red Hat 發展,是 ext2 的升級版本,重點是增加了 journaling 的區塊,使能夠使用日誌式檔案系統的優點; • 完整的支援 ext2 檔案系統,所有在 ext2 的 Linux 磁碟功能(quota, permission)均可完整支援; • 但原本 ext2 的先天缺點,也承接了下來~ • Reiserfs: • 打破一個 block 僅有一個檔案的限制; • 磁碟的使用率較高,相當適合擁有大量小檔案的系統(例如BBS); Linux基礎--磁碟檔案系統
日誌式檔案系統的運作(續) • ReiserFS • 關於 ext2 的問題,在於磁碟空間的浪費太大!故而 reiserfs 目的在改善空間浪費的問題。 • 目前 reiserfs 的 block 均為 4096 bytes • 所有的小檔案均集中記錄在同一個 block 中; • inode 在格式化時並不會規劃,而是需要時才會自動產生。所以空間的使用會比較有彈性。 • Reiserfs 檔案讀取較為快速,因為使用 binary tree 的平衡之故 • 但是,需要較多的 processing power,且待讀完檔案後,需要 rebalance。 • 整個 partition 與 file 最大可達 16TB。 Linux基礎--磁碟檔案系統
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 Linux基礎--磁碟檔案系統
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 等等 Linux基礎--磁碟檔案系統
Linux 檔案系統的支援與掛載(續) • 檔案系統的使用: • 檔案系統 (filesystem) 必須要掛載之後才能被 Linux 系統所使用 • 透過『掛載點』將 filesystem 掛載該『點』之下; • 掛載點為目錄; • 所有在該目錄後的次目錄,都屬於該 filesystem; • 查閱 partition 的容量: • df [-ihkmT] • 查閱某個目錄下剩下的容量: • df -h /etc • 查閱目錄下,檔案的總容量: • du [-smka] • 查閱根目錄下所有子目錄佔的容量: • du -sm /* Linux基礎--磁碟檔案系統
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 Linux基礎--磁碟檔案系統
Linux 檔案系統的支援與掛載(續) • 虛擬記憶體的容量: • 一般設定 256 MB 應該已足夠 • 以前通常建議 2 倍的 RAM 或者是實體 RAM + 40 MB • 千萬不要沒有 swap • 一個 swap 最大 2GB,最多支援 8 個; • 記憶體與硬碟的關係: • Linux 系統會建立很多的動態緩衝區 (dynamic buffers) 來快取硬碟的資料,因此,RAM 的大小比 CPU 的速度還要重要; • 為了加快 Linux 的速度,檔案存取時會有 read ahead 與 delay write 的機制,讓資料暫時先在記憶體當中,而非與硬碟同步。 • 因前一個機制,故您不可隨意將 Linux 不正常關機。 Linux基礎--磁碟檔案系統
檔案類型及連結檔 (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 有關 Linux基礎--磁碟檔案系統
檔案類型及連結檔 (link file)(續) • Link file: • Hard link : • 只是在某個目錄下新增一個該檔案的關連資料而已 • 該檔案的屬性 (ls -l) 之 link 數會多一個; • 原則上,硬碟的空間及 inode 均不會被損耗,因為資料是新增在某目錄下的一個 inode 與檔名關連性。 • Hard link 的限制: • 不能跨 Filesystem; • 不能 link 目錄。 • Symbolic link: • 建立一個獨立的檔案, 而這個檔案會讓資料的讀取指向他 link 的那個檔案內容(類似 Windows 的捷徑功能) • 與一般檔案一樣,會用掉 inode 與 block ; • block 內容為目標檔案的檔名,佔用的容量就是檔名長度; Linux基礎--磁碟檔案系統
檔案類型及連結檔 (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 Linux基礎--磁碟檔案系統
檔案類型及連結檔 (link file)(續) • 練習: • 將 /etc/crontab 複製到 /tmp 底下,製作 /tmp/crontab 的 hard link (crontab.hd) 及 symbolic link (crontab.so),刪除 /tmp/crontab 後,查閱兩個 link file 是否可以被開啟? cd /tmp cp -a /etc/crontab . du -sb ; df -i . ln crontab crontab.hd du -sb ; df -i . ls -il crontab* ln -s crontab crontab.so ls -li crontab* du -sb ; df -i . rm crontab ; cat crontab.hd crontab.so Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載 • 建立一個磁碟 (filesystem) 的基本流程: • 對磁碟進行分割,以建立可用的 partition ; • 對該 partition 進行格式化(format),以建立系統可用的 filesystem • 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗 • 在 Linux 系統上,需要建立掛載點 ( 亦即是目錄 ),並將他掛載上來; • 基本考量: • 分割槽的用途?要多大?用什麼 filesystem? • inode 與 block 的大小(size)? • 主要仍與主機用途有關啦! Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 磁碟的分割: fdisk [-l] 裝置代號 • 說明: • 裝置代號為整顆硬碟,例如 /dev/had,不是分割槽 /dev/hda1 • -l 僅為列出該裝置的目前存在的 filesystem ;若沒有加裝置名稱,則 fdisk 會將系統中所有可以分析到的裝置均列出 • fdisk 軟體內容使用指令: • m :說明指令 • p :列出所有的已存在的 partition • d :刪除一個 partition • n :新增一個 partition • q :不儲存離開 (測試時常使用) • w :儲存 partition table 後離開 Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • fdisk -l /dev/hda 輸出範例: Disk /dev/hda: 20.5 GB, 20520493056 bytes 255 heads, 63 sectors/track, 2494 cylinders Units = 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 Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • fdisk 操作環境的說明 • 以 root 的身份進行硬碟的 partition 時,最好在單人維護模式 • 以 fdisk 修改了某硬碟的 partition table 後,若該硬碟某個 partition 還在使用,則核心可能無法完整載入 partition table • 將該硬碟的所有 partition 卸載,重新 fdisk 即可; • 重新將該系統 reboot 即可(僅有單顆硬碟時) • 雖然單顆硬碟最大的邏輯磁區可以到達 63 號,但並非所有的 Linux distribution 都會將所有的邏輯磁區對應的磁碟代號都寫入系統當中,故有時需手動以 mknod 建置磁碟裝置代號。 • mknod 將在本章節後續介紹。 Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 練習: • 將目前系統上所有的硬碟 partition 都列出來; • fdisk -l • 查閱目前的硬碟狀態中,是否有空出的未配置空間?若有的話,請將該未配置空間分割成一塊可用的 partition。並觀察該 partition 的類型 (primary/Extended/Logical) Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 磁碟分割槽的格式化: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。 Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 假設將 /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?? Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 磁碟檢驗:fsck [-AtCary] 裝置名稱 • 參數: • -t : fsck 可以檢查好幾種不同的 filesystem • ls -l /sbin/fsck* • -A : 依據 /etc/fstab 的內容,將所有的裝置都掃瞄一次 • 通常開機過程中就會執行此一指令 • -r : 讓使用者決定是否需要修復 • -y : 讓 fsck 在檢驗到錯誤時,直接答覆 y ; • -C : 在檢驗的過程當中,使用一個長條圖顯示進度 • 環境說明: • 檢驗完畢後,會在該 filesystem 下自動產生 lost+found 目錄 • 執行 fsck 時, 被檢查的 partition 務必不可掛載到系統上 • 請將上小節建立的 filesystem 檢驗其硬碟 Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • /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 Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 磁碟掛載: • mount • mount -a • mount [-tonL] 裝置名稱代號 掛載點 • 參數: • -a :依照 /etc/fstab 的內容將所有相關的磁碟都掛上來! • -n :掛載資訊不寫入 /etc/mtab 檔案; • -L :利用 partition 的表頭名稱 ( Label ) 來進行掛載喔! • 最好為您的 partition 取一個在您系統當中獨一無二的名稱 • -t : 您的 Linux 支援的檔案格式,就寫在這裡吧!若沒有加 -t 參數 • 主動以 /etc/filesystems 這個檔案及 • /proc/filesystems 內的檔案系統格式嘗試掛載。 Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 磁碟掛載: 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 • 重新掛載,這在系統出錯,或重新更新參數時,很有用! Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 磁碟掛載環境說明: • 需先建立 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 Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 磁碟掛載其他說明: • 卸載使用: umount [裝置/掛載點] • mount -a 可參考 /etc/fstab 來主動進行掛載 • 若發生: device is busy 的字樣: • 表示該 filesystem 正在被使用,請找出相關的程序,關閉後,才可卸載 • 您的工作目錄可能正好在該 filesystem 目錄下,請離開即可; • 可利用下列指令來掛載『某目錄』到某目錄下: • mount --bind 原始目錄 目標目錄 • mount --bind /home /tmp/home • df Linux基礎--磁碟檔案系統
磁碟的分割、格式化、檢驗與掛載(續) • 中文磁區的掛載 (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/ Linux基礎--磁碟檔案系統
磁碟參數修訂 • 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 Linux基礎--磁碟檔案系統
磁碟參數修訂(續) • e2label [裝置名稱] [新的Label名稱] • 以 Label 來掛載檔案系統: • 優點: • 不論硬碟代號怎麼變,不論您將硬碟插在那個 IDE 介面 (IDE1 或 IDE2 或 master 或 slave 等),由於系統是透過 Label ,所以,磁碟插在那個介面將不會有影響。 • 缺點: • 如果插了兩顆硬碟,剛好兩顆硬碟的 Label 有重複的,那就慘了~ 因為系統會無法判斷那個磁碟分割槽才是正確的! Linux基礎--磁碟檔案系統
磁碟參數修訂(續) • tune2fs [-jlL] [裝置代號] • 參數: • -j :將 ext2 的 filesystem 轉換為 ext3 的檔案系統; • -l :類似 dumpe2fs -h 的功能~將 superblock 內的資料讀出來~ • -L :類似 e2label 的功能,可以修改 filesystem 的 Label 喔! • 練習:請修改剛剛建立的 filesystem 的Label 成為 fc4ext3 • tune2fs -L “fc4ext3” /dev/hda? Linux基礎--磁碟檔案系統
磁碟參數修訂(續) • 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 Linux基礎--磁碟檔案系統
設定開機掛載 • 開機自動掛載: /etc/fstab (共有六個欄位) • 裝置代號或 Label 名稱 • 掛載點 (目錄) • 檔案格式 • 掛載時下達的參數 • dump 備份指令的參考,若為 0 則表示以 dump 備份時,該 partition 不備份 • fsck 的檢驗順序,當系統開機時,若此值為 0 表示不檢驗, 1 較早被檢驗(一般給 /),其他則設定 2 即可。 • 練習:將剛剛建立的 filesystem 寫入 /etc/fstab 中: • /dev/hda? /mnt/hda? ext3 defaults 1 2 • mount -a Linux基礎--磁碟檔案系統