linux文件系統

Linux支持數量衆多的本地文件系統類型和幾種通過網絡訪問遠程磁盤的文件系統,分析/proc/filesystems文件的內容即可找出當前Linux內核提供了對哪些文件系統的支持。
  Linux默認直接支持的文件系統是ext2文件系統。
  一,exe2文件系統
  當前,ext2文件系統(即second extended filesystem)是Linux默認直接支持的文件系統。ext2文件系統和其他現代Unix使用的文件系統非常相似,但更接近於BSD系統所用的Berkeley Fast Filesystem。ext2文件系統的最大容量是4 TB,但目前它的最大文件大小被Linux內核限制爲2 GB。
  ext2的核心是兩個內部數據結構,即superblock和inode。superblock是一個包含文件系統重要信息的表格,比如標籤、大小、inode的數量等,它是對文件系統結構的基礎性的、全局性的描述。因此,沒有了superblock的文件系統將不再可用。由於這個原因,文件系統中不同位置存放着superblock的多個副本。
  inode是基本的文件級數據結構,文件系統中的每一個文件都可以在其中一個inode中找到其描述。inode描述的文件信息包括:文件的創建和修改時間,文件大小,實際存放文件數據的塊列表,等等。對於較大的文件,塊列表可能包含附加數據塊列表的磁盤位置(稱爲間接塊),甚至有可能出現二重或三重的間接塊列表。文件名字通過目錄項(Directory Entry)關聯到inode,目錄項由“文件名字-inode”對構成。
  二,創建和管理文件系統
  Linux提供了大量用於創建和管理文件系統的工具。接下來我們將以新增磁盤(或分區)爲線索,介紹各種要用到的工具。儘管完成這一任務的過程並不複雜,但這些操作還得在Linux命令行進行,這是因爲大多數圖形界面的工具在這方面的支持非常有限。
  1,確定設備文件
  爲新加入的物理磁盤(或磁盤分區)創建文件系統之前,首先必須知道該磁盤具體的設備名字。我們可以用好幾種方法來找出它的設備名字。例如,可以通過dmesg命令分析啓動日誌(通過管道傳送給grep,並搜索[hs]d[a-z]);如果已經用syslog截取,則可以查看日誌文件。另外,大多數Linux發行版都默認啓用/proc文件系統,如果你也使用了它,則可以分析/proc/partitions文件,查看系統認可的所有磁盤分區的清單。
  有時我們需要手工爲磁盤創建設備文件,但這種情況極其罕見。設備文件可以用/dev目錄下面的MAKEDEV腳本創建。例如,下面的命令將爲第六個SCSI磁盤創建設備文件:
# cd /dev; MAKEDEV sdf
  2、創建分區
  確定磁盤的設備文件之後,接下來就要用fdisk之類的工具將磁盤分區。輸入fdisk命令並在參數中指定目標磁盤
即可啓動該工具:
# fdisk /dev/sdf
用fdisk修改好分區定義之後,可以用W命令保存更新後的分區表,用Q命令直接退出cfdisk則表示忽略所有已經作出的改動。只要對磁盤分區表作了任何實質性的改動(即,不僅僅指定分區標籤或改變分區類型),則在繼續處理之前 應當重新啓動系統。
  3,創建文件系統
用mkfs命令創建文件系統(或者,更精確地說是用mke2fs命令。mkfs是一個統一的前端工具,爲所有不同文件系統類型的創建命令提供)。如下例所示,該命令最簡單的形式是通過-t參數指定文件系統的類型,然後加上創建該文件系統的分區。下面這個命令在第二個SCSI磁盤的第二個分區上創建一個ext2文件系統: 
#mkfs -t ext2 /dev/sdb2 
# mke2fs /dev/sdb2
  上面的第二個命令是直接使用mke2fs時的等價命令。
mke2fs的參數
-L label
指定分區的標籤(最長11個字符)。
-b size
文件系統的塊大小,以字節計,默認值1024。塊是文件系統分配磁盤空間的單位。
-c
在創建文件系統之前檢查分區的壞塊。
-m percent
指定保留的文件系統空間百分比,這部分空間只能由root訪問。默認值是磁盤的百分之五,這是傳統Unix默認值的一半。在今天普遍使用大容量磁盤的情況下,即使是這個百分比也值得再加斟酌,比如可以將它降低到百分之二或者三。
-i ratio
指定每個inode的字節數,即爲每個指定大小的字節塊創建一個inode。默認值是4096,這個值所創建的inode通常超過實際可能用到的,但一般沒有必要改變它,因爲節省下來的磁盤空間非常有限。另外,用“-N 數字”可以顯式地指定創建inode的數量。
-v -q
分別表示詳細輸出或簡略輸出
  4,其他工具
  Linux下有許多用於檢測現有ext2文件系統狀態以及重新進行配置的工具。tune2fs就是其中一個,它的-l選項將列出指定ext2文件系統的各種屬性。其中大多數屬性的含義都非常明確,這些屬性與可在mke2fs命令中指定的選項相對應。個別屬性決定fsck何時對文件系統進行下一次檢查。默認情況下,Linux將每隔20次系統啓動或者30天對文件系統進行檢查(這裏的時間間隔週期以秒指定)。
  這些文件系統屬性中的很大一部分都可以用tune2fs的相應參數進行修改。例如,下面的命令通過設置兩次檢查
的時間間隔秒數(-i)爲0禁止了根據時間週期執行的檢查:
# tune2fs -i 0 /dev/hdb5

三,日誌文件系統reiserfs
  在1997年7月23日,Hans Reiser把他的基於平衡樹結構的ReiserFS文件系統在網上公佈 。 這是ReiserFS的第一次公開亮相。此後,ReiserFS一直在Hans Reiser和領導下的開發小組下開發和發展,SuSE Linux也對它的發展起了重大的幫助。由於ReiserFS有一些很有用的特性,更主要的是它比ext2fs要快得多,所以它很快被很多人使用。目前,bluepoint linux 2.0 和suse linux 7.3都直接支持ReiserFS,更重要的是在Linux內核2.4.1版本開始已支持ReiserFS,估計ReiserFS很快就會普及。
  ReiserFS是一種新型的文件系統,你可以選擇它來裝載你的Linux操作系統和其他應用程序和數據文件。它通過一種與衆不同的方式--完全平衡樹結構來容納數據,包括文件數據,文件名以及日誌支持。ReiserFS還以支持海量磁盤和磁盤陣列,並能在上面繼續保很快的搜索速度和很高的效率。ReiserFS文件系統一直以來被用在高端Unix系統上如SGI等。
搜尋方式  
ReiserFS是基於平衡樹的文件系統結構,尤其對於大量文件的巨型文件系統,如服務器上的文件系統,搜索速度要比ext2快;ext2使用局部的二分查找法,綜合性能比不上ReiserFS。
  空間分配和利用情況
  ReiserFS裏的目錄是完全動態分配的,因此不存在ext2中常見的無法回收巨型目錄佔用的磁盤空間的情況。ReiserFS裏小文件(<4K)可以直接儲進樹,小文件讀取和寫入的速度更快,樹內節點是按字節對齊的,小的文件可共享同一個硬盤塊,節約大量空間。Ext2使用固定大小的塊分配策略,也就是說,不到4K的小文件也要佔據4K的空間,導致的空間浪費比較嚴重。
  先進的日誌機制
  ReiserFS有先進的日誌(Journaling/logging)機制,在系統意外崩潰的時候,未完成的文件操作不會影響到整個文件系統結構的完整性。 ext2雖然健壯性很強,但一旦文件系統被不正常地斷開,在下一次啓動時它將不得不進行 漫長的檢查系統數據結構的完整性的過程,這是爲了防止數據丟失而必需的操作。對於較大型的服務器文件系統,這種"文件系統檢查"可能要持續好幾個小時,在很多場合下這樣長的時間是無法接受的,解決這個問題一種技術"日誌文件系統"。在日誌的幫助下,每個對數據結構的改變都被記錄下來,日誌在機制保證了在每個實際數據修改之前,相應的日誌已經寫入硬盤。正因爲如此,在系統突然崩潰時,在下次啓動幾秒鐘後就能恢復成一個完整的系統,系統也就能很快的使用了。 

  支持海量磁盤和優秀的綜合性能
  ReiserFS是一個相當現代化的文件系統,相比之下,ext2雖然性能已經很好了,但其設計還只是19世紀80年代的水準。ReiserFS的出現,使Linux擁有了像Irix/AIX那樣的高檔商用Unix纔有的高級文件系統。ReiserFS可輕鬆管理上百G的文件系統,在企業級應用中有其用武之地,由於它的高效存儲和快速小文件I/O特點,它在桌面系統上也表現出色:啓動X窗口系統的時間ReiserFS比ext2少1/3。而ext2則無法管理2G以上的單個文件,這也使得ReiserFS在某些大型企業級應用中比ext2要出色。
  ReiserFS一個最受人批評的缺點是每升級一個版本,都將要將磁盤重新格式化一次,這個缺點也正在改進中。
[url]http://www.devlinux.com/namesys[/url]下載reiserfs的補丁程序,要確保下載的補丁版本和你的kernel版本是一致的。 下載後用root身份登錄進入系統,切換至/usr/src/linux目錄,執行命令: 
#gunzip /path/to/linux-2.2.16-reiserfs-3.5.22-patch.gz 
#patch -p1 -i /path/to/linux-2.2.16-reiserfs-3.5.22-patch
  在做完上面的兩步後,重新編譯kernel,將reiserfs編譯進kernel或做成一個模塊。
  Reiserfs的相關應用程序在 /usr/src/linux/fs/reiserfs/utils 目錄下。你可以用下面方法安裝它們: 
#mkdir bin 
#make 
#make install
  最後,你可以用“fdisk”命令重新分區或用“mkreiserfs”命令重新格式化一個已經存在的分區。 指定reiserfs類型加載這個分區,如“mount -t reiserfs /dev/hda2/download”,這樣你就可以使用這個新的分區了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章