linux檔案系統概論

wisdomone1發表於2010-03-06
作者:北南南北
來自:LinuxSir.Org
摘要: 本文通過檔案系統的定義說起,然後通過引文簡單的介紹了一下檔案系統型別;對Linux常用的ext2、ext3及reiserfs 根據本人使用經驗也泛泛的談了談,但並不是專業的。如何閱讀本文,還是用馬克思理論告訴我們的方法:一分為二,邊看邊批吧; 目錄索引 一、什麼是檔案系統 (Filesystem) 二、檔案系統的型別;
三、Linux 檔案系統的選擇和安全性; 四、Linux 支援的檔案系統;
五、檔案系統的特性;
六、在Linux中,檔案系統的建立和掛載; 七、關於本文;
八、參考文件;
九、相關文件;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一、什麼是檔案系統 (Filesystem);

1、常見定義方法;

什麼是檔案系統(filesystem),用一兩句話解答出來,實在有點困難,這個問題只能留給檔案系統的設計者或對檔案系統精通的專業人士來答覆;下面 是關於filesystem的定義是我從 Google.com 上搜尋到的;下面我們分析一下,對我們來說,瞭解一下也有好處。如果您是專業人士,如果您有自己的定義方法,請在本文後面留言;謝謝; 定義一;
A directory structure contained within a disk drive or disk area. The total available disk space can be composed of one or more filesystems. A filesystem must be mounted before it can be accessed. To mount a filesystem, you must specify a directory to act as the mount point. Once mounted, any access to the mount point directory or its subdirectories will access the separate filesystem. 檔案系統是包括在一個磁碟(包括光碟、軟盤、閃盤及其它儲存裝置)或分割槽的目錄結構;一個可應用的磁碟裝置可以包含一個或多個檔案系統;如果您想進入一個 檔案系統,首先您要做的是掛載(mount)檔案系統;為了掛載(mount)檔案系統,您必須指定一個掛載點;一旦檔案系統被掛載, freebooks.by.ru/view/ShellProgIn24h/31480175.htm

定義二;

A method of organising files on a disk, eg NTFS, FAT.
linux-ntfs.sourceforge.net/ldm/home/terms.html 檔案系統是在一個磁碟(包括光碟、軟盤、閃盤及其它儲存裝置)或分割槽組織檔案的方法,如NTFS或FAT;
定義三;

A data structure or a collection of files. In Unix, filesystem can refer to two very distinct things, the directory tree or the arrangement of files on disk partitions. 檔案系統是檔案的資料結構或組織方法。在Unix中,檔案系統涉及兩個非常獨特的事情,目錄樹或在磁碟或分割槽上檔案的排列; www.emulex.com/ts/docfc/glossary.htm
定義四;

the structure of files on a disk medium which is visible via the operating system, ie the structure of files which a Unix user can see using "ls" and other tools 檔案系統是基於作業系統的,建立在磁碟媒質上的可見體系結構,例如這種結構對於一個Unix使用者來說可以用ls 或其它工具可以看到; www.ucolick.org/~de/deimos/glossary.html

定義五;

A software mechanism that defines the way that files are named, stored, organized, and accessed on logical volumes of partitioned memory. 檔案系統是基於被劃分的儲存裝置上的邏輯上單位上的一種定義檔案的命名、儲存、組織及取出的方法; www.evestigations.com/html/glossary.html

定義六;

In computing, a file system is a method for storing and organizing computer files and the data they contain to make it easy to find and access them. File systems may use a storage device such as a hard disk or CD-ROM and involve maintaining the physical location of the files, or they may be virtual and exist only as an access method for virtual data or for data over a network (e.g. NFS). 在計算機業,一個檔案系統是有組織儲存檔案或資料的方法,目的是易於查詢和存取。檔案系統是基於一個儲存裝置,比如硬碟或光碟,並且包含檔案檔案物理位置 的維護;也可以說檔案系統也是虛擬資料或網路資料儲存的方法,比如NFS; en.wikipedia.org/wiki/Filesystem
2、理解檔案系統的關健詞;

0)儲存介質:
硬碟、光碟、軟盤、Flash盤、磁帶、網路儲存裝置等;
1)磁碟的分割:

這是針對大容量的儲存裝置來說的,主要是指硬碟;對於大硬碟,我們要合理規劃分割槽,所以要談到硬碟的分割。硬碟的分割,Linux有fdisk、 cfdisk和parted等,常用的還是fdisk 工具,Windows和dos常用的也有fdisk ,但和Linux中的使用方法不一樣。硬碟的分割工具還有第三方程式,比如PQ; 至於對分割槽的理解和操作請參考: 《例項解說 fdisk 使用方法》
《合理規劃您的硬碟分割槽》
2)檔案系統的建立:

這個過程是儲存裝置建立檔案系統的過程,一般也被稱為格式化或初始化,通過一些初始化工具來進行。一般的情況下每個型別的作業系統都有這方面的工 具,也有多功能的第三方工具,比如PQ。我的建議是如果您不太懂作業系統自帶的工具,可以用第三方工具來切割硬碟,把硬碟分割成若干分割槽,然後再用操作系 統自帶的工作來初始化分割槽,也就是格式化分割槽。在Linux中有 mkfs系列工具;

3)掛載(mount):

檔案系統只有掛載才能使用,Unix類的作業系統如此,Windows也是一樣;在Windows更直觀一些,具體內部機制我們不太瞭解。但Unix類的 作業系統是通過mount進行的,掛載檔案系統時要有掛載點,比如我們在安裝Linux的過程中,有時會提示我們分割槽,然後建立檔案系統,接著是問你的掛 載點是什麼 ,我們大多選擇的是/ 。我們在Linux系統的使用過程中,也會掛載其它的硬碟分割槽,也要選中掛載點,掛載點通常是一個空置的目錄,最好是我們自建的空置目錄;

4)檔案系統可視的幾何結構:

檔案系統的是用來組織和排列檔案存取的,所以她是可見的,在Linux中,我們可以通過ls等工具來檢視其結構,在Linux系統中,我們見到的都是樹形結構;比如作業系統安裝在一個檔案系統中,他表現為由/ 起始的樹形結構;
[root@localhost ~]# cd /
[root@localhost /]# tree

二、檔案系統的型別;
檔案系統型別有很多,您可以在 《Linux 檔案系統(filesystem)資源索引》 中檢視;但我們在Linux中常用的檔案系統主要有ext3、ext2及reiserfs ; Windows和Dos常用的檔案系統是fat系列(包括fat16及fat32等)和ntfs 檔案系統; 光碟檔案系統是ISO-9660檔案系統; 網路儲存NFS伺服器在客戶端訪問時,檔案系統是nfs,這個比較特殊一點; 至於您想了解的更多,請訪問您所用的檔案系統的官方網站,請在《Linux 檔案系統(filesystem)資源索引》 查詢相應的資源,謝謝;
三、Linux 檔案系統的選擇和安全性;
如果做為專業人士來說,應該說哪個檔案系統都是安全的;用Linuxfish的話來說“哪個檔案系統的設計者都不是傻子,他們應該明白自己的作品是怎麼回 事。”。做為檔案系統的設計者來說,我們一般在使用的過程中所遇到的問題,他們都應該有解決辦法。但我們畢竟不是專業從事檔案系統研究的,所以我們有必要 從使用角度來說明檔案系統的安全性; 對於初學Linux的弟兄,一定會遇到檔案系統的選擇左右為難的情況,因為大多新手並不知道哪個檔案系統更好;現在我們來談談檔案系統的選擇;
1、Linux作業系統安裝過程中的檔案系統的選擇;

1)ext2 檔案系統;

ext2檔案系統應該說是Linux正宗的檔案系統,早期的Linux都是用ext2,但隨著技術的發展,大多Linux的發行版本目前並不用這 個檔案系統了;比如Redhat和Fedora 大多都建議用ext3 ,ext3檔案系統是由ext2發展而來的。對於Linux新手,我們還是建議您不要用ext2檔案系統;ext2支援undelete(反刪除),如果 您誤刪除檔案,有時是可以恢復的,但操作上比較麻煩; ext2支援大檔案; ext2檔案系統的官方主頁是: http://e2fsprogs.sourceforge.net/ext2.html
2)ext3 檔案系統:是由ext2檔案系統發展而來;

ext3 is a Journalizing file system for Linux(ext3是一個用於Linux的日誌檔案系統),ext3支援大檔案;但不支援反刪除(undelete)操作; Redhat和Fedora都力挺ext3;至於ext3檔案系統的更多特性,請訪問 《Linux 檔案系統(filesystem)資源索引》
3)reiserfs 檔案系統;

reiserfs 檔案系統是一款優秀的檔案系統,支援大檔案,支援反刪除(undelete);在我的測試ext2、reiserfs 反刪除檔案功能的過程中,我發現reiserfs檔案系統表現的最為優秀,幾乎能恢復 90%以上的資料,有時能恢復到100%;操作反刪除比較容易;reiserfs 支援大檔案;
4)Linux檔案系統對大檔案支援的對比;
請參考http://www.suse.de/~aj/linux_lfs.html Filesystem File Size Limit Filesystem Size Limit
ext2/ext3 with 1 KiB blocksize 16448 MiB (~ 16 GiB) 2048 GiB (= 2 TiB)
ext2/3 with 2 KiB blocksize 256 GiB 8192 GiB (= 8 TiB)
ext2/3 with 4 KiB blocksize 2048 GiB (= 2 TiB) 8192 GiB (= 8 TiB)
ext2/3 with 8 KiB blocksize (Systems with 8 KiB pages like Alpha only) 65568 GiB (~ 64 TiB) 32768 GiB (= 32 TiB)
ReiserFS 3.5 2 GiB 16384 GiB (= 16 TiB)
ReiserFS 3.6 (as in Linux 2.4) 1 EiB 16384 GiB (= 16 TiB)
XFS 8 EiB 8 EiB
JFS with 512 Bytes blocksize 8 EiB 512 TiB
JFS with 4KiB blocksize 8 EiB 4 PiB
NFSv2 (client side) 2 GiB 8 EiB
NFSv3 (client side) 8 EiB 8 EiB
Note Kernel Limitations: The table above describes
limitations of the on-disk format. The following kernel limits
exist:
  • On 32-bit systems with Kernel 2.4.x: The size of a file and a
    block device is limited to 2 TiB. By using LVM several block
    devices can be combined enabling the handling of larger file
    systems.
  • 64-bit systems: The sizes of a filesytem and of a file are
    limited by 263 (8 EiB). But there might be hardware
    driver limits that do not allow to access such large devices.
  • Kernel 2.6: For both 32-bit systems with option CONFIG_LBD set
    and for 64-bit systems: The size of a file system is limited to
    273 (far too much for today). On 32-bit systems
    (without CONFIG_LBD set) the size of a file is limited to 2 TiB.
    Note that not all filesystems and hardware drivers might handle
    such large filesystems.

Note in the above:
1024 Bytes = 1 KiB;
1024 KiB = 1 MiB;
1024 MiB = 1 GiB; 1024 GiB = 1 TiB; 1024 TiB = 1 PiB; 1024 PiB = 1
EiB (check http://physics.nist.gov/cuu/Units/binary.html)
Maximum Number of Partitions An IDE disk has 64 minors, one is used for the full disk and therefore 63 partitions are possible. A SCSI disk has 16 minors and therefore only 15 partitions maximal.
2、檔案系統的安全性;
任何一個檔案系統在專家眼中都是安全的,就象MS說Windows是安全性是可靠的類似,如果MS專家來用Windows絕對沒有任何問題,畢竟人家是專家,我們是使用者;專家和使用者還是有很大區別的; 因為我們不是專家,所以我們才要選擇更為安全易用的檔案系統,下面我們對比一下ext2、ext3和reiserfs;
1)ext2、ext3和reiserfs 檔案系統自動修復能力對比;

ext2、ext3及reiserfs 都能自動修復損壞的檔案系統,也都是在開機時進行。從表現來看reiserfs更勝一籌;ext2和ext3檔案系統在預設的情況下是“This filesystem will be automatically checked every 21 mounts or 180 days, whichever comes first”,也就是每間隔21次掛載檔案系統或每180天,就要自動檢測一次。 通過實踐來看ext2和ext3在auto check上是存在風險,有時檔案系統開機後就進入單使用者模式,並且把整個系統 “扔”進lost+found"目錄,如果要恢復系統,就得用fsck 來進行修復;當然fsck 也同樣存在風險;所以我們對ext2和ext3檔案系統的使用,對新手來說的確需要心裡準備;畢竟修復已經損壞的ext2和ext3檔案系統是有困難的; 另外ext2和ext3檔案系統對於意外關機和斷電,也可能導致檔案系統損壞,所以我們在使用過程中,必須是合法關機;比如執行poweroff指令來關 掉機器; reiserfs 檔案系統也能自動修復,他在自動檢測和修復上具有很強的功能,幾乎很少出現ext2和ext3的情況,另外從速度來說他也比ext2、ext3檔案系統的 速度要快; 通過我兩個月的測試來看,reiserfs 對於意外斷電錶現最佳。為了驗證reiserfs 檔案系統的在意外斷電的安全性上,我每天都直接斷掉電源關機,但我們不應該說reiserfs 是安全的直接斷電了事,直接斷電有時也會造成硬碟物理損傷;reiserfs檔案系統從未出現象ext2和ext3那樣用手動方式來進行修復的情況。從這 方面來說reiserfs 還是極為安全的;
2)ext2、ext3和reiserfs 反刪除功能對比;
從檔案系統的反刪除來看,ext2和reiserfs 都支援反刪除,對於一般使用者來說應該是安全的,但對於保密單位來說可能意味著不安全。從反刪除角度來說明檔案系統的安全性,也是有兩方面;昨天和 Linuxfish 討論了這個問題,他說在Windows中引入了檔案粉碎機這個可笑的工具,目的就是不讓恢復已刪除的檔案。 如果您的工作是從事比較機密的,用ext3比較好,因為ext3一旦刪除檔案,是不可恢復的,雖然網上也有幾個關於反刪除恢復操作在ext3中,但實踐來 看,並不是那麼容易;因為反刪除能恢復相應的絕祕資料的洩祕,所以ext3可能更適合您; 如果您是一般使用者,我還是建議用reiserfs檔案系統,他支援反刪除功能,反刪除操作也比較容易;但也會存在一點問題。比如在Fedora或 Redhat中,有一個關於系統安全的selinux,在預設情況下,可能在reiserfs 中不支援selinux ;不過值得一說的是selinux是一個絕對龐大、功能豐富、涉及面極廣的安全工具,selinux並不是一般使用者就能駕馭的了的;所以我們建議初學者 在使用Linux系統時先關掉selinux 功能;但您可以慢慢嘗試熟悉使用它;在Fedora和Redhat最新的版本中,reiserfs檔案系統的確是不支援selinux,所以您在 Fedora或Redhat中採用了reiserfs ,並且還想用selinux ,還是自己找解決辦法,可能要打核心補丁才行;至於其它Linux發行版本是否存在這個問題,還得需要您來嘗試;
四、Linux 支援的檔案系統;
Linux目前幾乎支援所有的Unix類的檔案系統,除了我們在安裝Linux作業系統時所要選 擇的ext3、reiserfs和ext2外,還支援蘋果MACOS的HFS,也支援其它Unix作業系統的檔案系統,比如XFS、JFS、Minix fs 及UFS等,您可以在kernel的原始碼中檢視;如果您想要讓系統支援哪些的檔案系統得需要把該檔案系統編譯成模組或置入核心; 關於如何編譯核心,請參考《核心管理概述》; 當然Linux也支援Windows檔案系統NTFS和fat,但不支援NTFS檔案系統的寫入;支援fat檔案系統的讀寫;請參考《在Fedora core 4.0 載入NTFS和FAT32分割槽詳述》 Linux也支援網路檔案系統,比如NFS等; 掛載nfs檔案系統的辦法是: mount -t nfs 伺服器地址:/目錄 掛載點 下面是一個例子,比如我在192.168.1.4的機器做了一個NFS伺服器,提供192.168.1.x網段上的所有機器都可以用NFS;具體做NFS伺服器的過程省略,此處只講怎麼掛載;
[root@localhost ~]# showmount -e 192.168.1.4  首先檢視NFS伺服器共享的檔案資料夾;
Export list for 192.168.1.4:
/opt/sirnfs *  注:位於 192.168.1.4機器上的 /opt/sirnfs 目錄

[root@localhost ~]# mkdir /mnt/sirnfs  注:在本地機器建一個目錄,做為NFS掛載點;

[root@localhost ~]# mount -t  nfs 192.168.1.4:/opt/sirnfs  /mnt/sirnfs   注:掛載NFS;

[root@localhost ~]# df -h   注:檢視本地機掛載NFS是不是成功了;
Filesystem            容量  已用 可用 已用% 掛載點
/dev/hda7              11G  7.4G  2.9G  72% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda9              22G  837M   22G   4% /opt/data
192.168.1.4:/opt/sirnfs
                       63G   47G   17G  74% /mnt/sirnfs   注:這是掛載成功後的顯示;

五、檔案系統的特性;
Linux檔案系統的特性決定檔案的屬性,比如我們通過chattr +i 來避免某個檔案被改動,通過chattr+i 來改其為只讀檔案,在ext2和ext3下是可以的,但在reiserfs 這樣做是不能起任何作用的; 不同的檔案系統有不同的特性,這種特性往往決定著在檔案系統檔案和目錄的屬性,這也是我為何本文的主要原因;通過本文,我能引出在Linux中檔案和目錄屬性的的操作; 每個檔案系統都有一系列的工具,包括建立、修復、備份等,值得一說的是大多檔案系統都有修復工具,在您的檔案系統極為正常的情況下,最好不要用修復工具來檢測和修復;比如最好不要用執行fsck工具,這個工具可能會使您的系統被破壞; 請參考:《Linux 建立檔案系統及掛載檔案系統流程詳解》
六、在Linux中,檔案系統的建立和掛載;
請參考《Linux 建立檔案系統及掛載檔案系統流程詳解》 七、關於本文; 檔案系統太廣,此文件的確不太好寫;但還是勉強寫出來,雖然並不專業;或許對Linux新手還有點幫助; 八、參考文件; http://www.suse.de/~aj/linux_lfs.html
http://www.xenotime.net/linux/linux-fs.html
... ... 九、相關文件;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-628797/,如需轉載,請註明出處,否則將追究法律責任。

相關文章