當前位置:編程學習大全網 - 源碼下載 - Mke2fs源代碼

Mke2fs源代碼

所以妳的硬盤文件系統屬於FAT32,對吧?那妳可能找不到。將文件系統更改為NTFS。我認為這將解決妳提到的問題。

文件系統是用來管理和組織存儲在磁盤驅動器上的數據的系統軟件,實現了數據完整性的保證,即保證寫入磁盤的數據與後面讀取的內容的壹致性。除了存儲作為文件存儲的數據之外,文件系統還存儲和管理關於文件和文件系統本身的壹些重要信息(例如日期和時間、所有權、訪問權限、文件大小和存儲位置等。).這些信息通常被稱為元數據。

為了避免磁盤訪問的瓶頸效應,大部分文件系統都工作在異步模式下,因此如果磁盤操作突然中斷,可能會丟失數據。舉個例子,如果出現這種情況:妳在linux的ext2文件系統上處理壹個文檔的時候突然崩潰了會怎麽樣?

有幾種可能性:

*保存文件時,系統崩潰。這是最好的情況,妳不會丟失任何信息。只需重啟電腦,繼續工作。

*在您保存文件之前,系統崩潰。您將丟失所有工作內容,但舊版本的文檔仍將存在。

*當保存的文檔寫入磁盤時,系統崩潰。這是最壞的情況:文件的新版本覆蓋了舊版本。這樣,磁盤上只剩下壹部分,新的部分和舊的文件。如果文件是二進制文件,將無法打開該文件,因為其文件格式與應用程序預期的不同。

在最後壹種情況下,如果系統在驅動器寫入元數據時崩潰,情況可能會更糟。此時文件系統被破壞,妳可能會丟失整個目錄或者整個磁盤分區的數據。

Linux標準文件系統(ext2fs)在重啟時會通過調用文件掃描工具fsck來嘗試恢復損壞的元數據信息。因為ext2文件系統保留了關鍵元數據信息的冗余備份,所以壹般不太可能出現數據完全丟失的情況。系統會計算損壞數據的位置,然後要麽恢復冗余元數據信息,要麽直接刪除損壞或損壞的文件。

顯然,要檢測的文件系統越大,檢測過程需要的時間就越長。對於幾十個g大小的分區,可能需要很長時間才能檢測出來。由於Linux已經在大型服務器上越來越多的重要應用中使用,對於長時間的宕機越來越不能容忍。這就需要壹個更加復雜和精密的文件系統來代替ext2。

因此,日誌文件系統的出現滿足了這種需求。

什麽是日誌文件系統

這裏只是對日誌文件系統的簡要描述。如果需要更深入的信息,請參考日誌文件系統壹文,或者日誌文件系統介紹。

大多數現代文件系統使用從數據庫系統發展而來的日誌技術來提高崩潰恢復能力。在磁盤事務被實際寫入磁盤的最終位置之前,它們首先以順序方式被寫入磁盤的日誌區域(或日誌區)中的特定位置。

根據日誌文件系統實現技術的不同,寫入日誌區的信息也不完全相同。壹些實現只寫入文件系統元數據,而其他實現將所有寫入記錄在日誌中。

現在,如果崩潰發生在日誌內容寫入之前,原始數據仍然在磁盤上,只有最新的更新丟失。如果崩潰發生在真正的寫操作期間(即日誌內容已經更新),日誌文件系統的日誌內容將顯示已經執行了哪些操作。因此,當系統重新啟動時,它可以根據日誌的內容輕松恢復損壞的更新。

無論如何都會獲得完整的數據,不會出現分區損壞的情況。因為恢復過程是基於日誌的,所以整個過程會非常快,只需要幾秒鐘。

需要註意的是,使用日誌文件系統並不意味著完全不需要使用文件掃描工具fsck。隨機文件系統軟硬件錯誤無法根據日誌恢復,必須使用fsck工具。

目前Linux環境下的日誌文件系統

下面,我們將討論三種日誌文件系統:第壹種是ext3,由Linux內核Stephen Tweedie開發。Ext3是在ext2文件系統中加入日誌功能實現的,ext 2文件系統是目前redhat7.2默認的文件系統,Namesys開發的ReiserFs日誌文件系統可以下載。目前Mandrake8.1采用的就是這種日誌文件系統。SGI在2006年3月發布了XFS日誌文件系統。它可以在oss.sgi.com/projects/xfs/.下載。不同的工具將用於檢測和測試這三個日誌文件系統的性能。

安裝ext3

請參考Stephen Tweedie博士關於ext3文件系統技術方面的論文和訪談。Ext3日誌文件系統直接來自它的祖先ext2文件系統。它具有完全向後兼容的關鍵特性。事實上,它只是在ext2日誌文件系統中添加了日誌功能。它最大的缺點是不具備現代文件系統提高文件數據處理速度和解壓的高性能。

Ext3從2.2.19開始就作為補丁存在了。如果想在內核中加入對ext3文件系統的支持,需要使用補丁,可以獲取補丁。* * *需要以下文件:

* ext3-0.0.7a.tar.bz2:內核補丁

* e 2 fsprogs-1.21-WIP-0601 . tar . bz2 e 2 fsprogs程序套件支持ext3。

將linux-2.2.19.tar.bz2和ext3-0.0.7a.tar.bz2復制到/usr/src目錄並解壓縮:

mv Linux Linux-舊

tar-Ixvf Linux-2 . 2 . 19 . tar . bz2

tar -Ixvf ext3-0.0.7a.tar.bz2

cd linux

貓../ext3-0 . 0 . 7 a/Linux-2 . 2 . 19 . kdb . diff | patch-sp 1

貓../ext3-0 . 0 . 7 a/Linux-2 . 2 . 19 . ext3 . diff | patch-sp 1

壹是給內核添加SGI的kdb內核調試器補丁,二是ext3文件系統補丁。接下來,您需要配置內核,並對文件系統部分中的“啟用第二個擴展fs開發代碼”回答是。然後編譯。

編譯並安裝內核後,需要安裝e2fsprogs軟件套件:

tar-Ixvf e 2 fsprogs-1.21-WIP-0601 . tar . bz2

cd e2fsprogs-1.21

。/配置

制造

進行檢查

進行安裝

接下來要做的是在分區上創建壹個ext3文件系統,並用新的內核重啟它。這時,您有兩個選擇:創建壹個新的日誌文件系統,或者將現有的ext2文件系統升級到ext3日誌文件系統。

在創建新的ext3文件系統的情況下,您只能使用mke2fs命令加上已安裝的e2fsprogs軟件包中的-f參數來創建新的ext3文件系統:

mke2fs -j /dev/xxx

這裏的/dev/xxx是您想要創建ext3文件系統的新分區。j參數表示創建的是ext3文件系統,而不是ext2文件系統。您可以使用參數"-Jsize= "來指定所需的日誌區域大小(n以m為單位)。

升級現有的ext2,只需使用tune2fs:

tune2fs -j /dev/xxx

您可以升級正在加載的文件系統和未加載的文件系統。如果正在加載當前文件系統,則文件。將在文件系統裝載點所在的目錄中創建日誌。如果您正在升級當時未加載的文件系統,您將使用隱含的系統inode來記錄日誌。此時,文件系統的所有內容都將被保留,而不會被銷毀。

您可以使用以下命令加載ext3文件系統:

mount -t ext3 /dev/xxx /mount_dir

由於ext3實際上是壹個具有日誌功能的ext2文件系統,所以壹個ext3文件系統可以作為ext2加載。

安裝XFS文件系統

如果您需要從技術角度了解XFS文件系統,請參考SGI的XFS文件系統和SGI信息頁面。也可以參考FAQ。

XFS是SGI在linux環境下開發的日誌文件系統。它是壹項成熟的技術,最初在IRIX系統上作為文件系統使用。XFS遵循GPL版權聲明。目前xfs文件系統的最新版本是1.02。將支持補丁的內核下載到內核xfs文件系統或者直接下載RPM包。下面我們將通過打補丁來說明如何對2.4.14內核使用xfs。首先下載以下內容

補丁程序-2 . 4 . 14-xfs-1 . 0 . 2 . bz2

補丁程序-2 . 4 . 14-xfs-1 . 0 . 2-kdb . bz2

將Linux內核linux-2.4.2.tar.bz2復制到/usr/src目錄,修改舊的內核目錄名,然後解壓新的內核:

mv Linux Linux-舊

tar -Ixf inux-2.4.2.tar.bz2

將每個修補程序復制到內核源目錄(例如:/usr/src/linux)中,並對其進行修補:

zcat補丁-2 . 4 . 14-xfs-1 . 0 . 2 . bz2 |補丁-p1

zcat補丁-2 . 4 . 14-xfs-1 . 0 . 2-kdb . bz2 |補丁-p1

然後配置內核,打開文件系統部分的內核選項:“xfs文件系統支持”(config _ xfs _ fs)和“頁面緩沖區支持”(config _ page _ buf)。同時,您需要將以下系統工具升級到以下或更高版本:

模塊-2.4.0

autoconf-2.13

e 2 fsprogs-devel-1.18

安裝新內核並重啟服務器。

然後下載xfs工具。這個包包括以下命令來處理文件系統。使用以下命令安裝軟件包:

tar-zxf xfs progs-1 . 2 . 0 . src . tar . gz

cd xfsprogs-1.2.0

進行配置

制造

進行安裝

安裝這些命令後,您可以創建新的XFS文件系統:

mkfs -t xfs /dev/xxx

如果xxx是壹個已經存在的文件系統,妳需要使用“-f”參數來創建壹個新的分區,但是要記住這將會破壞這個分區中的所有數據。

mkfs -t xfs -f /dev/xxx

創建後,您可以使用以下命令裝載新的文件系統:

mount -t xfs /dev/xxx /mount_dir

安裝ReiserFS文件系統

如果想從技術方面了解更多關於reiserFS文件系統的知識,請參考NAMESYS和FAQ。

ReiserFS文件系統從2.4.1-pre4開始得到Linux內核的官方支持。為了使用reiserfs文件系統,首先需要在系統上安裝文件系統支持工具(比如用於創建reiserFS文件系統的mkreiserfs工具)。最新的ReiserFS文件系統版本可以作為補丁添加到2.2.x或2.4.x內核中。這裏我們以2.2.19為例:

第壹步是下載內核源代碼和ReiserFS文件系統的2.2.19補丁。目前最新版本的補丁是Linux-2 . 2 . 19-Reiserfs-3 . 5 . 34-patch . bz2..同時,妳應該下載工具包:reiserfsprogs-3.x.0j.tar.gz。

然後將內核源代碼和補丁包解壓到/usr/src:

tar-Ixf Linux-2 . 2 . 19 . tar . bz2

bzcat Linux-2 . 2 . 19-reiserfs-3 . 5 . 34-patch . bz2 | patch-P0

編譯內核支持reiserfs,安裝內核。然後安裝文件系統工具軟件:

CD/usr/src/Linux/fs/reiserfs/utils

制造

進行安裝

安裝新內核並重啟。現在您可以創建壹個新的reiserfs文件系統並加載:

mkreiserfs /dev/xxxx

mount-t reiserfs/dev/XXX/mount _ dir

文件系統性能測試

測試環境使用的計算機環境如下:奔騰III-16 Mb RAM-2 Gb HD,操作系統為RedHat6.2,所有文件系統都可以正常工作,所以進行基準測試分析比較其性能。首先,我直接拔掉系統電源,模擬系統斷電,測試日誌文件系統的恢復過程。所有文件系統都已成功通過文件掃描檢測階段,幾秒鐘後,系統已被掃描,然後正常啟動。

下壹步是使用bonnie++性能測試程序進行測試。這個程序訪問數據庫類型的文件,創建、讀取和刪除小文件。這些操作對於Squid、INN或Maildir格式的郵件服務器程序(qmail)來說是最常見的。性能測試命令是:

邦妮++- d/work 1-s 10-R4-u0

它以10Mb(-s10)測試了/work1目錄中加載的文件系統。因此,在測試之前,必須創建壹個適當的文件系統並加載到目錄/work1中。其他參數指定內存大小中的m數(-r4),並以root身份運行測試程序。測試結果如下:

每個測試都有兩組數據:文件系統速度(K/秒)和CPU利用率(%CPU)。速度越高,文件系統越好。對於CPU速率,數字越小,性能越好。可以看出,Reiserfs文件系統在文件操作(順序創建和隨機創建)方面的性能最好,比其他文件系統高10倍。在其他方面(順序輸出和順序輸入),它與其他文件系統不相上下。對於其他文件系統,沒有明顯的區別。XFS性能接近ext2文件系統,而ext3文件系統比ext2稍慢(因為日誌記錄需要壹些額外的時間)。最後,使用mongo(從獲得的壹個性能測試程序)並對其進行修改來測試三個日誌文件系統。這裏,加載xfs和ext3文件系統的命令被添加到mongo.pl程序中,並被格式化,然後開始性能測試分析。腳本格式分為/dev/xxxx,每個階段加載並運行指定數量的進程:創建、復制、符號鏈接處理、讀取、顯示文件狀態信息、重命名和刪除文件。同時,程序將在創建和復制階段後計算碎片。

Fragm =碎片數量/文件數量

您可以在結果文件中獲得相同的測試比較結果:

日誌-原始結果

log . TBL-比較程序的輸出。

log _ table-表格格式的結果。

以下命令測試:

mongo . pl ext3/dev/hda 3/work 1 logext 3 1

如果要測試其他文件系統,需要將上述命令的參數中的ext3改為reiserfs或xfs。其他參數是要加載的分區、加載路徑、保存測試結果的文件名以及啟動的進程數。

下表是測試結果。數據單位是秒。值越低,性能越好。第壹個表測試中使用的數據塊大小是100字節,第二個表是1000字節,最後壹個表是10000字節。

從上表可以看出,ext3在刪除和重命名狀態方面表現更好,而ReiserFS文件系統在創建和復制文件方面表現更好。同時我們也可以看到,reiserFS正如其技術文檔中所提到的,在處理小文件方面有著出色的表現。

結論

目前,Linux至少有兩個健壯可靠的日誌文件系統可供選擇(XFS和reiserFS),這兩個系統都得到了廣泛的應用。例如,Mandrake8.1默認支持reiserFS文件系統。

從性能測試結果可以看出,reiserFS是最佳選擇。

  • 上一篇:怎麽樣把HTML代碼裏面的字體放大 放大的代碼是什麽 ?
  • 下一篇:c++有什麽mmorpg 服務端的開源框架
  • copyright 2024編程學習大全網