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基礎--磁碟檔案系統