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

Slides:



Advertisements
Similar presentations
Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
Advertisements

檔案系統簡介 指導老師:梁明章 老師 A 胡瑞安.
Linux管理与应用 Linux文件系统- 磁盘加载与卸载 主讲教师:张美平
Linux 網路教學 東南技術學院資訊工程系 職稱:講師 姓名: 曹茂勁 民國 92年 12月.
第2节 ext2文件系统 索引文件的的代表 索引文件 文件使用三部曲 文件共享 文件保护 举例.
Linux 的檔案管理.
崑山科技大學資訊傳播系 蔡德明 (鳥哥, VBird)
資訊安全與系統管理 2013/3/13 Chien wei lin.
基于操作系统的编程复习 张玉宏
Linux File System Li-Shien Chen.
第二章磁盘管理第一部分 主讲:刘红玉.
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
第8章 Linux系统管理.
題目:十六對一多工器 姓名:李國豪 學號:B
第 4 章 記憶單元.
作業系統 第十三章 檔案系統實例.
第 19 章 檔案系統與 權限設定.
本 章 重 點 9-1 檔案系統簡介 9-2 檔案管理.
VMware Player 安裝說明 2018/11/14.
TCP協定 (傳輸層).
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
檔案目錄結構.
網路安全技術 – 期末報告 A 高名勳 指導教授:梁明章 老師.
讲师:田家华 第3章 外存储设备 本章要点   软盘驱动器 软磁盘 3.3 硬盘驱动器 3.4 其它存储设备.
JDK 安裝教學 (for Win7) Soochow University
基礎linux指令說明 Part 1 資訊組 陳宜徽.
第1章 認識Arduino.
第二章 Linux基本指令與工具操作 LINUX 按圖施工手冊.
第二天 计算机基础技能培训 (一)linux基础知识
磁碟掛載.
Linux server 連線軟體: 主機:kitty.cs.pu.edu.tw 帳號:dar 密碼:n….w.
電腦硬體裝修乙級 第二站-伺服器端系統安裝與環境設定
日誌式檔案系統 (Journal File System)
R教學 安裝RStudio 羅琪老師.
網路資源的建立--LINUX系統 國立東華大學電算中心 陳鴻彬.
第 4 章 安裝 Linux 著作權所有 © 旗標出版股份有限公司.
第2章 Linux安裝與問題排除 課前指引 本章,將分享如何在輕鬆、無負擔的前提,完成Linux作業系統的安裝程序,並且,將針對Linux認證考試必考的磁碟空間配置部份提供學習方向,讓讀者不僅學會Linux的安裝,更對於Linux考試的範圍有所體驗。
[LAB 3]Make OS SD Card Step1 Download the image file.
前言 編輯 fstab 檔案 產生設定檔 編輯磁碟限制 取消與啟動 檢查磁碟限制
Chapter 6 Linux 檔案權限與目錄配置 VBird 2005/08/03
雲端運算的基石(2) 虛擬化技術實作(XP篇─上)
檔案與磁碟的基本介紹.
雲端計算.
Red Hat Linux 安装与使用方法的简单介绍
私立南山高中 信息組 電腦研習 電腦資料的備份 中華民國 99年4月20日 星期二.
Fortran 程式語言 之 編與譯(二) 張基昇.
Chap3 Linked List 鏈結串列.
虛擬機器 下載QEMU Windows版 (0.9.1) 下載Kqemu Windows版 安裝QEMU 安裝Kqumu
Ch20. 計算器 (Mac 版本).
Linux作業系統 電腦教室Linux使用說明.
作業系統 Operating System 第四單元 檔案系統
讓Emulator可以 使用Android Market
Unix 指令1.
如何使用Gene Ontology 網址:
網路資源的建立--LINUX系統 系統管理
File Input and Output Chap. 11: 施威銘的書 Chap. 7: K&R.
利用 EditorConfig 自訂文字編輯器設定
挑戰C++程式語言 ──第7章 輸入與輸出.
Unix 安裝過程 使用2個磁片 到 rawwrite bootnet.img drvnet.img 利用rawwrite 將image檔寫入磁片.
基本指令.
Cloud Operating System - Unit 03: 雲端平台建構實驗
Parasitics Extraction (PEX) 與 postsimulation(posim)
資料表示方法 資料儲存單位.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Linux文件系统.
Chapter 4 Multi-Threads (多執行緒).
第六章 文件系统与文件管理 6.4 Linux文件管理 1、比较MS DOS 与 Linux的目录结构 一、Linux文件系统的树形结构
Develop and Build Drives by Visual C++ IDE
雲端電腦教室 Matlab 使用介紹 1. 工作目錄切換 2. 把 matlab 的檔案存出來 3. Matlab 軟體介面.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

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

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

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

認識硬碟與磁碟分割槽 認識實體硬碟: VBird (2005/08/12) Linux基礎--磁碟檔案系統

認識硬碟與磁碟分割槽(續) 認識實體硬碟(續):物理組成: 磁頭(head):固定在機械手臂上,做單方向的移動,且機械手臂上有多個磁碟; 磁區(Sector):最小的物理儲存量,一個磁區為512 Bytes; 磁柱(Cylinder):硬碟盤的 sector 排成一圈,即為磁柱。磁柱為磁碟分割槽的最小單位; 硬碟容量的粗估:Cylinder x Head x Sector x 512 Bytes ; 正常操作:硬碟開機後,盡量不可進行移動。 VBird (2005/08/12) Linux基礎--磁碟檔案系統

認識硬碟與磁碟分割槽(續) 在 Linux 下的磁碟代號: IDE SCSI or USB Hard disk IDE 1 master 的 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 使用者) VBird (2005/08/12) 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 ) VBird (2005/08/12) 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) VBird (2005/08/12) 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 :記錄檔案的內容 VBird (2005/08/12) Linux基礎--磁碟檔案系統

認識 EXT2 檔案系統(續) inode 記錄的資訊: 一個 inode 的大小預設為 128 Bytes; 該檔案的擁有者與群組(owner/group); 該檔案的存取模式(read/write/excute); 該檔案的類型(type); 該檔案建立或狀態改變的時間(ctime)、最近一次的讀取時間(atime)、最近修改的時間(mtime); 該檔案的容量; 定義檔案特性的旗標(flag),如 SetUID...; 該檔案真正內容的指向 (pointer); 所以,檔案讀取時,會先讀取 inode 的內容,找到 block area 的號碼,才去讀取檔案內容。 若檔案太大,佔用的 block 太多,導致一個 inode 無法記錄完全,則系統會自動再分配一個 inode 給該檔案使用。 VBird (2005/08/12) Linux基礎--磁碟檔案系統

認識 EXT2 檔案系統(續) 檔案與目錄的 inode 與 block 差異: 檔案: 目錄: 根目錄(/)的上層目錄在哪裡? 檔名呢?檔名並不在此記錄喔! 目錄: inode 與檔案相同,記錄上一頁提到的權限資訊; block 則記錄此目錄下的檔名與 inode 關連性。 瞭乎?目錄所屬的 block 才會記錄檔名! 每個目錄內一定都會有 . 與 .. 兩個目錄存在。 根目錄(/)的上層目錄在哪裡? ex> ls -lai /  看一下 inode 與檔名的對應先! VBird (2005/08/12) Linux基礎--磁碟檔案系統

認識 EXT2 檔案系統(續) 檔案的讀取(以 /etc/crontab 為例): VBird (2005/08/12) Linux基礎--磁碟檔案系統

認識 EXT2 檔案系統(續) EXT2 檔案系統的先天問題: Block : Inode : 一個 Block 僅能含有一個檔案,所以 block 大小將會影響到硬碟的空間浪費問題; 目前支援的 block 為 1024/2048/4096 三種容量; block 太大損耗容量大;太小,讀取效率差,故設計時,需配合主機的使用型態來考量; Inode : 一個檔案至少會使用掉一個 inode ,所以 ext2 的 filesystem 能夠容納多少檔案數,與 inode 數量有關; 一般來說, 4KB 容量配給 1 個 inode 即可。 VBird (2005/08/12) Linux基礎--磁碟檔案系統

認識 EXT2 檔案系統(續) EXT2 檔案系統的先天問題:(續) 關於檔名: 檔名最長 255 字元,完整檔名最長 4096 字元 關於單一檔案: 若 block size=1024,最大為16GB 若 block size=4096,最大為 2TB 關於整個 partition : 若 block size=1024,最大為 2TB 若 block size=4096,最大為16TB VBird (2005/08/12) 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 VBird (2005/08/12) Linux基礎--磁碟檔案系統

認識 EXT2 檔案系統(續) 一組連續的 block group 含有:(續) VBird (2005/08/12) 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 更新資訊。 VBird (2005/08/12) 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 VBird (2005/08/12) Linux基礎--磁碟檔案系統

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

日誌式檔案系統的運作(續) EXT2 發生不一致狀態的處理方式: 日誌式檔案系統(journaling): 若系統發生錯誤時, ext2 必須要將整個 filesystem 進行檢查,因為並沒有檔案關連的 information 在此檔案系統中。 日誌式檔案系統(journaling): 檔案寫入的動作: 當系統要寫入一個檔案的時候,會先在日誌記錄區塊中紀錄:某個檔案準備要寫入磁碟了; 開始寫入檔案的權限與資料; 開始更新 metadata 的資料; 完成資料與 metadata 的更新後,在日誌記錄區塊當中完成該檔案的紀錄。 發生不一致的狀態後: 由於有 journal 存在,則系統僅會針對 journal 當中記錄的檔案進行檢查,速度較快! VBird (2005/08/12) Linux基礎--磁碟檔案系統

日誌式檔案系統的運作(續) 日誌式檔案系統: EXT3: Reiserfs: 最早由 Red Hat 發展,是 ext2 的升級版本,重點是增加了 journaling 的區塊,使能夠使用日誌式檔案系統的優點; 完整的支援 ext2 檔案系統,所有在 ext2 的 Linux 磁碟功能(quota, permission)均可完整支援; 但原本 ext2 的先天缺點,也承接了下來~ Reiserfs: 打破一個 block 僅有一個檔案的限制; 磁碟的使用率較高,相當適合擁有大量小檔案的系統(例如BBS); VBird (2005/08/12) Linux基礎--磁碟檔案系統

日誌式檔案系統的運作(續) ReiserFS 關於 ext2 的問題,在於磁碟空間的浪費太大!故而 reiserfs 目的在改善空間浪費的問題。 目前 reiserfs 的 block 均為 4096 bytes 所有的小檔案均集中記錄在同一個 block 中; inode 在格式化時並不會規劃,而是需要時才會自動產生。所以空間的使用會比較有彈性。 Reiserfs 檔案讀取較為快速,因為使用 binary tree 的平衡之故 但是,需要較多的 processing power,且待讀完檔案後,需要 rebalance。 整個 partition 與 file 最大可達 16TB。 VBird (2005/08/12) Linux基礎--磁碟檔案系統

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 VBird (2005/08/12) 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 等等 VBird (2005/08/12) Linux基礎--磁碟檔案系統

Linux 檔案系統的支援與掛載(續) 檔案系統的使用: 檔案系統 (filesystem) 必須要掛載之後才能被 Linux 系統所使用 掛載點為目錄; 所有在該目錄後的次目錄,都屬於該 filesystem; 查閱 partition 的容量: df [-ihkmT] 查閱某個目錄下剩下的容量: df -h /etc 查閱目錄下,檔案的總容量: du [-smka] 查閱根目錄下所有子目錄佔的容量: du -sm /* VBird (2005/08/12) 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 VBird (2005/08/12) Linux基礎--磁碟檔案系統

Linux 檔案系統的支援與掛載(續) 虛擬記憶體的容量: 記憶體與硬碟的關係: 一般設定 256 MB 應該已足夠 以前通常建議 2 倍的 RAM 或者是實體 RAM + 40 MB 千萬不要沒有 swap 一個 swap 最大 2GB,最多支援 8 個; 記憶體與硬碟的關係: Linux 系統會建立很多的動態緩衝區 (dynamic buffers) 來快取硬碟的資料,因此,RAM 的大小比 CPU 的速度還要重要; 為了加快 Linux 的速度,檔案存取時會有 read ahead 與 delay write 的機制,讓資料暫時先在記憶體當中,而非與硬碟同步。 因前一個機制,故您不可隨意將 Linux 不正常關機。 VBird (2005/08/12) Linux基礎--磁碟檔案系統

檔案類型及連結檔 (link file) Linux File type: Normal files: Directories: 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 有關 VBird (2005/08/12) Linux基礎--磁碟檔案系統

檔案類型及連結檔 (link file)(續) Hard link : 只是在某個目錄下新增一個該檔案的關連資料而已 該檔案的屬性 (ls -l) 之 link 數會多一個; 原則上,硬碟的空間及 inode 均不會被損耗,因為資料是新增在某目錄下的一個 inode 與檔名關連性。 Hard link 的限制: 不能跨 Filesystem; 不能 link 目錄。 Symbolic link: 建立一個獨立的檔案, 而這個檔案會讓資料的讀取指向他 link 的那個檔案內容(類似 Windows 的捷徑功能) 與一般檔案一樣,會用掉 inode 與 block ; block 內容為目標檔案的檔名,佔用的容量就是檔名長度; VBird (2005/08/12) 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 VBird (2005/08/12) 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 ls -il crontab* ln -s crontab crontab.so ls -li crontab* rm crontab ; cat crontab.hd crontab.so VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載 建立一個磁碟 (filesystem) 的基本流程: 基本考量: 對磁碟進行分割,以建立可用的 partition ; 對該 partition 進行格式化(format),以建立系統可用的 filesystem 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗 在 Linux 系統上,需要建立掛載點 ( 亦即是目錄 ),並將他掛載上來; 基本考量: 分割槽的用途?要多大?用什麼 filesystem? inode 與 block 的大小(size)? 主要仍與主機用途有關啦! VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載(續) 磁碟的分割: fdisk [-l] 裝置代號 說明: fdisk 軟體內容使用指令: 裝置代號為整顆硬碟,例如 /dev/had,不是分割槽 /dev/hda1 -l 僅為列出該裝置的目前存在的 filesystem ;若沒有加裝置名稱,則 fdisk 會將系統中所有可以分析到的裝置均列出 fdisk 軟體內容使用指令: m :說明指令 p :列出所有的已存在的 partition d :刪除一個 partition n :新增一個 partition q :不儲存離開 (測試時常使用) w :儲存 partition table 後離開 VBird (2005/08/12) 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 VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載(續) fdisk 操作環境的說明 以 root 的身份進行硬碟的 partition 時,最好在單人維護模式 以 fdisk 修改了某硬碟的 partition table 後,若該硬碟某個 partition 還在使用,則核心可能無法完整載入 partition table 將該硬碟的所有 partition 卸載,重新 fdisk 即可; 重新將該系統 reboot 即可(僅有單顆硬碟時) 雖然單顆硬碟最大的邏輯磁區可以到達 63 號,但並非所有的 Linux distribution 都會將所有的邏輯磁區對應的磁碟代號都寫入系統當中,故有時需手動以 mknod 建置磁碟裝置代號。 mknod 將在本章節後續介紹。 VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載(續) 練習: 將目前系統上所有的硬碟 partition 都列出來; fdisk -l 查閱目前的硬碟狀態中,是否有空出的未配置空間?若有的話,請將該未配置空間分割成一塊可用的 partition。並觀察該 partition 的類型 (primary/Extended/Logical) VBird (2005/08/12) 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。 VBird (2005/08/12) 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?? VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載(續) 磁碟檢驗:fsck [-AtCary] 裝置名稱 參數: 環境說明: -t : fsck 可以檢查好幾種不同的 filesystem ls -l /sbin/fsck* -A : 依據 /etc/fstab 的內容,將所有的裝置都掃瞄一次 通常開機過程中就會執行此一指令 -r : 讓使用者決定是否需要修復 -y : 讓 fsck 在檢驗到錯誤時,直接答覆 y ; -C : 在檢驗的過程當中,使用一個長條圖顯示進度 環境說明: 檢驗完畢後,會在該 filesystem 下自動產生 lost+found 目錄 執行 fsck 時, 被檢查的 partition 務必不可掛載到系統上 請將上小節建立的 filesystem 檢驗其硬碟 VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載(續) /lost+found (ext2/ext3 only) 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 VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載(續) 磁碟掛載: mount mount -a mount [-tonL] 裝置名稱代號 掛載點 參數: -a :依照 /etc/fstab 的內容將所有相關的磁碟都掛上來! -n :掛載資訊不寫入 /etc/mtab 檔案; -L :利用 partition 的表頭名稱 ( Label ) 來進行掛載喔! 最好為您的 partition 取一個在您系統當中獨一無二的名稱 -t : 您的 Linux 支援的檔案格式,就寫在這裡吧!若沒有加 -t 參數 主動以 /etc/filesystems 這個檔案及 /proc/filesystems 內的檔案系統格式嘗試掛載。 VBird (2005/08/12) 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 重新掛載,這在系統出錯,或重新更新參數時,很有用! VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載(續) 磁碟掛載環境說明: 需先建立 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 VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟的分割、格式化、檢驗與掛載(續) 磁碟掛載其他說明: 卸載使用: umount [裝置/掛載點] mount -a 可參考 /etc/fstab 來主動進行掛載 若發生: device is busy 的字樣: 表示該 filesystem 正在被使用,請找出相關的程序,關閉後,才可卸載 您的工作目錄可能正好在該 filesystem 目錄下,請離開即可; 可利用下列指令來掛載『某目錄』到某目錄下: mount --bind 原始目錄 目標目錄 mount --bind /home /tmp/home df VBird (2005/08/12) 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/ VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟參數修訂 mknod 裝置名稱 [bcp] [Major] [Minor] 參數: Linux 透過取用裝置代號來使用該裝置, 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 VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟參數修訂(續) e2label [裝置名稱] [新的Label名稱] 以 Label 來掛載檔案系統: 優點: 不論硬碟代號怎麼變,不論您將硬碟插在那個 IDE 介面 (IDE1 或 IDE2 或 master 或 slave 等),由於系統是透過 Label ,所以,磁碟插在那個介面將不會有影響。 缺點: 如果插了兩顆硬碟,剛好兩顆硬碟的 Label 有重複的,那就慘了~ 因為系統會無法判斷那個磁碟分割槽才是正確的! VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟參數修訂(續) tune2fs [-jlL] [裝置代號] 參數: -j :將 ext2 的 filesystem 轉換為 ext3 的檔案系統; -l :類似 dumpe2fs -h 的功能~將 superblock 內的資料讀出來~ -L :類似 e2label 的功能,可以修改 filesystem 的 Label 喔! 練習:請修改剛剛建立的 filesystem 的Label 成為 fc4ext3 tune2fs -L “fc4ext3” /dev/hda? VBird (2005/08/12) Linux基礎--磁碟檔案系統

磁碟參數修訂(續) hdparm [-icdmXTt] 裝置名稱 (危險指令,請勿模仿~) 參數: -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 VBird (2005/08/12) 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 VBird (2005/08/12) Linux基礎--磁碟檔案系統

虛擬記憶體 (Swap) 的建置(續) Swap 的類型: swap 建置指令: 裝置(整個 partition ):速度較快 檔案(類似 Windows 的分頁檔案):較有彈性 swap 建置指令: mkswap swapon swapoff free VBird (2005/08/12) Linux基礎--磁碟檔案系統

虛擬記憶體 (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 檢驗記憶體: VBird (2005/08/12) Linux基礎--磁碟檔案系統