步驟比較繁瑣,如下操作。
1.下載與編譯內核
下載相應版本的內核補丁,解壓補丁軟體包,對系統核心打補丁
下載地址:ftp://oss.sgi.com/projects/xfs/download/Release-1.1/kernel_patches/xfs-1.1-2.4.18-all.patch.bz2
對核心打補丁,下載解壓後,得到一個文件:xfs-1.1-2.4.18-all.patch文件。
對核心進行修補如下:
代碼如下:
# cd /usr/src/linux
# patch -p1 < /path/to/xfs-1.1-2.4.18-all.patch
修補工作完成後,下一步要進行的工作是編譯核心,將XFS編譯進Linux核心可中。
首先運行以下命令,選擇核心支持XFS文件系統:
代碼如下:
#make menuconfig
在「文件系統「菜單中選擇:
<*> SGI XFS filesystem support ##說明:將XFS文件系統的支持編譯進核心
或
<M> SGI XFS filesystem support ##說明:以動態載入模塊的方式支持XFS文件系統
另外還有兩個選擇: Enable XFS DMAPI##說明:對磁碟管理的API,存儲管理應用程序使用
Enable XFS Quota##說明:支持配合Quota對用戶使用磁碟空間大小管理
完成以上工作後,退出並保存核心選擇配置
之後,然後編譯內核,安裝核心:
代碼如下:
#make bzImage
#make mole
#make mole_install
#make install
如果你對以上復雜繁瑣的工作沒有耐心或沒有把握,那麼可以直接從SGI的站點上下載已經打好補丁的核心,其版本為2.4.18。它是一個rpm軟體包,你只要簡單地安裝即可。SGI提交的核心有兩種,分別供smp及單處理器的機器使用。
2.創建XFS文件系統
完成對核心的編譯後,還應下載與之配套的XFSprogs工具軟體包,也即mkfs.xfs工具。不然我們無法完成對分區的格式化:即無法將一個分區格式化成XFS文件系統的格式。要下載的軟體包名稱:xfsprogs-2.0.3。
將所下載的XFSProgs工具解壓,安裝,mkfs.xfs自動安裝在/sbin目錄下。
代碼如下:
#tar –xvf xfsprogs-2.0.3.src.tar.gz
#cd xfsprogs-2.0.3src
#./configure
#make
#make install
使用mkfs.xfs格式化磁碟為xfs文件系統,方法如下:
代碼如下:
# /sbin/mkfs.xfs /dev/sda6 #說明:將分區格式化為xfs文件系統,以下為顯示內容:
meta-data=/dev/sda6 isize=256 agcount=8, agsize=128017 blks
data = bsize=4096 blocks=1024135, imaxpct=25
= sunit=0 swidth=0 blks, unwritten=0
naming =version 2 bsize=4096
log =internal log bsize=4096 blocks=1200
realtime =none extsz=65536 blocks=0, rtextents=0
格式化磁碟時,如果mkfs.xfs提示你分區原本已被格式化為其它文件系統,可以使用參數 –f 強行格式化:
代碼如下:
#/sbin/mkfs.xfs –f /dev/sda6
3.載入XFS文件系統
代碼如下:
#mount –t xfs /dev/sda6 /xfs ##其中/xfs是主分區/下的一個目錄。
最後,為了讓系統啟動後就自動載入,應該更改/etc/fstab,這樣系統啟動後就會自動載入xfs分區而不必每次都手工載入。
要說明的一點是目前的xfs由於受linux內存頁限制,在x86版本中,只能實現文件系統的塊尺寸為4K。另外,XFS文件系統可以不同的方式 mount,即允許文件系統以讀方式載入,也允許以讀寫方式載入。這是因為xfs文件系統用作根文件系統時,為了安全要以只讀方式載入。
三、文件系統的遷移
要使得系統中的其它分區使用XFS文件系統,還有一步是遷移文件系統。建議在遷移文件系統時,首先將磁碟上的數據、文件先備份,以免發生不可挽回的損失,在進行文件系統轉換之間,最好能將整個系統進行完全備份。這一步有很多種方法,本文僅就筆者的遷移方法加以描述。各位可以按照自己習慣的方式去完成 。
如果你想得到一個純的xfs系統(系統的所有文件系統均採用XFS文件系統)話,還得將根文件系統也格式化為xfs文件系統。這實際上是比較繁雜的一步。因為根文件系統不能被umount,所以,必須首先創建一個分區,其文件系統為ext2文件系統,然後將目前的根分區上的所有文件與目錄,原原本本地復制到這一個分區,然後更改/etc/fstab文件,替換原來的根分區。
方法如下:
代碼如下:
$ mkfs -t ext2 /dev/hda4
$ mkdir /mnt/temp
$ mount -t ext2 /dev/hda4 /mnt/temp
$ cd /
$ tar lcvf - .|(cd /mnt/temp; tar xpvf - )
以上操作是將根分區上的所有文件打包,復制到新建立的分區。當然,你也可以直接使用以下命令復制文件。
代碼如下:
# cp –dpR / /mnt/temp
接著,將下次啟動的根分區更改到/dev/hda4分區,更改/etc/fstab文件及/etc/lilo.conf ,然後,運行 lilo.
重新啟動後,新的根分區就已經為/dev/hda4。
接下來,創建一個xfs文件系統的分區:
代碼如下:
$ mkfs -t xfs /dev/hda2
載入此分區,採用兩樣的方法,將根分區的內容復制到此分區
代碼如下:
$ mount -t xfs /dev/hda2 /mnt/temp
在根分區下,運行
代碼如下:
$ cd /
$ tar lcvf - .|(cd /mnt/temp; tar xpvf - )
再次更改/etc/fstab、/etc/lilo.conf,用新建的xfs分區替換原來的ext2主分區。如下所示:
代碼如下:
/dev/hda2 / xfs defaults 1 1
將新建的xfs分區用作根分區,保存以上設置。再次檢查配置文件內容,確認無誤後再重新啟動系統。如果你的設置全部正確,那麼系統成功啟動後,你就擁有一個純XFS文件系統的系統了
2. Redhat XFS文件系統
XFS是一種高度可擴展和高性能文件系統,它支持創建16 exabytes超大文件系統,8 exabytes的文件和10億個目錄結構。
1) 主要功能:XFS支持 元數據日誌功能(metadata journaling) ,有助於更快地崩潰恢復。XFS文件系統在掛載並處於活動狀態時也可以進行 碎片整理和擴展 。 另外,紅帽企業版Linux 6支持 XFS的備份和恢復 功能。
2) xfs具有以下功能:基於范圍的分配(Extent-based allocation)、條帶感知分配策略(Stripe-aware allocation policies)、延遲分配(Delayed allocation)和空間預分配(Space pre-allocation)。延遲分配和其他性能優化對XFS的影響與對ext4的影響相同。 除非隨後調用fsync(),否則不能保證程序對XFS文件系統的寫入。
使用mkfs.xfs /dev/device命令來創建XFS文件系統。在一個包含已有文件系統的塊設備上,執行mkfs.xfs -f會強制重寫文件系統。
一旦xfs文件系統被創建,文件的大小不會減小。還可以用xfs_growfs命令來增大空間。
對於條帶塊設備(例如RAID5陣列),在創建文件系統時可以指定條帶幾何形狀。 使用適當的條帶幾何形狀可以大大提高XFS文件系統的性能。
在LVM或MD卷上創建文件系統時,mkfs.xfs選擇最佳geometry幾何形狀。 在某些geometry信息導出到操作系統的硬體RAID上,也可能是這樣。
指定條紋geometry幾何體,子參數如下:
su =值:指定條帶單位或RAID塊大小。 該值必須以位元組為單位指定,後綴為k,m或g。
sw =值:指定RAID設備中的數據磁碟數或條帶中的條帶單元數。
以下示例在包含4個條帶單元的RAID設備上指定64k的塊大小:
#mkfs.xfs -d su=64k,sw=4 /dev/device
有關創建XFS文件系統的更多信息,請參考man mkfs.xfs。
一個XFS系統可以不帶額外的參數進行掛載:# mount /dev/device /mount/point
XFS默認分配inode以反映其在磁碟上的位置。 但是,由於某些32位用戶空間應用程序與大於65536*65536(2的32次方)的inode號不兼容,因此XFS會將所有inode分配到磁碟位置中,從而導致32位inode號。 這會導致大於2TB的文件系統性能下降,因為inode偏向塊設備的開頭,而數據偏向末尾。
為了解決此問題,可以帶上inode64掛載參數。這個參數表示XFS在整個文件系統中分配inodes和數據,這將改善性能 # mount -o inode64 /dev/device /mount/point
默認情況下,即使啟用了寫緩存的設備斷電,XFS也會使用寫屏障來確保文件系統的完整性(By default, XFS uses write barriers to ensure file system integrity even when power is lost to a device with write caches enabled)。 對於沒有寫緩存或具有電池供電的寫緩存的設備,請使用nobarrier選項禁用屏障:# mount -o nobarrier /dev/device /mount/point。 掉電丟失文件的解決方案又多一個:寫保障。
寫保障write barrier是一種內核機制,用於保證持久化卷上文件系統的metadata是正確的和有序的,即使易失性的存儲設備斷電。 文件系統開啟寫保障fsync(),保證數據通過。
啟用寫屏障write barriers會導致某些應用程序的性能大幅下降。 具體來說,大量使用fsync()或創建和刪除許多小文件的應用程序運行速度可能會慢得多。
XFS配額子系統管理著磁碟空間(塊)和文件(inode)使用的限制。 XFS配額從用戶,組,目錄或項目級別上進行控制或報告其使用情況。請注意,雖然啟用了用戶,組和目錄或項目級別的配額,但組配額和項目配額是互斥的。
在按目錄或按項目進行管理時,XFS管理著與某個項目關聯的目錄層次結構的磁碟使用情況。這樣,XFS可以識別項目之間的跨組織「組」邊界。這提供了比管理用戶或組配額時更有效的控制級別。
XFS配額在掛載mount時啟用,並帶有的掛載參數。掛載參數可以指定為noenforce,xfs使用情況將不受任何限制。掛載時有效的配額:uquota/uqnoenforce-用戶配額、gquota/gqnoenforce-組配額、pquota/pqnoenforce-項目配額
啟用配額後,xfs_quota工具可以設置配額大小並報告磁碟使用情況。默認情況下,xfs_quota在基本模式下互動式運行的。基本模式子命令僅報告使用情況,並且對所有用戶可用。基本模式的xfs_quota子命令包括:quota username/userID:顯示給定用戶名或數字用戶標識的用法和限制。df:顯示塊和索引節點的可用和已用計數。
相反,xfs_quota也具有專家模式。此模式的子命令允許配置限制,並且僅對具有較高特權的用戶可用。要交互使用專家模式子命令,請運行xfs_quota -x。專家模式子命令包括:report /path:報告特定文件系統的配額信息。limit:修改配額限制。
掛載的XFS文件系統使用xfs_growfs命令進行擴大# xfs_growfs /mount/point -D size
D size 選項將文件系統增加帶指定大小,不帶-D size選項則xfs_growfs將文件系統擴大到設備支持的最大值。
在使用-D參數擴大文件系統前要保證底層塊設備後期有一個合理的大小。
注意:掛載點一旦擴大空間後無法縮回。
使用xfs_repair修復XFS文件系統,命令格式為# xfs_repair /dev/device
xfs_repair具有高度可伸縮性,旨在有效地修復擁有大量inode節點的大型文件系統。 與其他Linux文件系統不同,即使當XFS文件系統未完全卸載umount時,xfs_repair也不在引導時運行(does not run at boot time)。 即使卸載不幹凈,則xfs_repair只是在掛載時replays log來進行修復,以確保文件系統一致。
xfs_repair不能修復帶有臟日誌(dirty log)的xfs文件系統。掛載mount和卸載unmount xfs文件系統會清理日誌。如果日誌已損壞並且無法重播,請使用-L選項強制清除日誌,即xfs_repair -L /dev/device。請注意這可能影響到進一步的損壞或數據丟失。
xfs_freeze對文件系統的寫入活動進行暫停或恢復。暫停寫入活動允許基於硬體設備快照用於捕獲文件系統一致性狀態。
xfs_freeze由只運行在x86_64的xfsprogs包提供。
暫停suspend (凍結freeze) xfs文件系統使用命令# xfs_freeze -f /mount/point
解凍xfs文件系統使用命令# xfs_freeze -u /mount/point
當做一個LVM快照時,沒有必要先使用xfs_freeze來暫停文件系統。LVM管理工具會在取快照前自動暫停XFS文件系統。
xfs_freeze可以用於凍結或解凍一個ext3、ext4、GFS2、XFS和BTRFS文件系統,它們的語法都是一樣的。
xfsmp和xfsrestore分別支持XFS文件系統備份和恢復。
為了支持增量備份(incremental backups ),xfsmp使用轉儲級別來確定特定轉儲相對的基本轉儲(xfsmp uses mp levels to determine a base mp to which a specific mp is relative)。
-l參數指定轉儲級別0-9。在文件系統上執行0級轉儲進行完整備份,命令為 # xfsmp -l 0 -f /dev/device /path/filesystem
-f參數指定備份的目標。
相反,一個增量備份僅將上次0級轉儲後更改的文件進行備份。 1級轉儲是完整轉儲後的第一個增量轉儲;下一個增量轉儲將是2級,依此類推,直到9級的最大值。執行1級轉儲到/dev/st0:# xfsmp -l 1 -f /dev/st0 /path/filesystem
xfsrestore從xfsmp產生的轉儲中還原文件系統。 xfsrestore具有兩種模式:默認簡單模式和累積模式。特定的轉儲由會話ID或會話標簽標識,因此還原轉儲需要其相應的會話ID或標簽。要顯示所有轉儲(完整和增量)的會話ID和標簽:#xfsrestore -I
xfsrestore簡單模式(Simple Mode)
簡單模式允許用戶從0級轉儲還原整個文件系統。確定了0級轉儲的會話ID後執行恢復:# xfsrestore -f /dev/st0 -S session-ID /path/to/destination
-f參數指定轉儲的位置,而-S或-L參數指定待還原的特定轉儲,-S參數用於指定會話ID,而-L參數用於指定會話標簽。-I選項顯示每次轉儲的會話標簽和ID。
xfsrestore累積模式(Cumulative Mode)
xfsrestore累積模式允許從特定的增量備份(從1級到9級)還原文件系統,添加-r參數# xfsrestore -f /dev/st0 -S session-ID -r /path/to/destination
互動操作Interactive
xfsrestore允許從轉儲中提取,添加或刪除特定文件。使用-i參數,xfsrestore -f /dev/st0 -i
互動式對話將在xfsrestore完成讀取指定設備之後開始。在對話框中的可用命令包括cd, ls, add, delete, and extract;使用help查看有關命令的完整列表。
RedHat Enterprise Linux6提供其他xfs功能
xfs_fsr :對已安裝的XFS文件系統進行碎片整理。不帶參數調用時,xfs_fsr對所有掛載的XFS文件系統的所有常規文件進行碎片整理。該程序允許用戶掛起suspend指定時間的碎片整理,並從以後停止的地方resume恢復操作。此外,xfs_fsr僅允許對一個文件進行碎片整理,命令是xfs_fsr /path/to/file。紅帽建議定期對整個文件系統進行碎片整理(Red Hat advises against periodically defragmenting an entire file system, as this is normally not warranted)。
xfs_bmap :列印XFS文件系統中文件使用的磁碟塊映射。該地圖列出了指定文件使用的每個范圍以及文件中沒有相應塊的區域。
xfs_info :列印XFS文件系統信息。
xfs_admin :修改xfs文件系統中未掛載設備的參數。
xfs_ :將整個XFS文件系統的內容並行復制到一個或多個設備中。
下面程序是調試和分析XFS文件系統:
xfs_metamp :只能拷貝未掛載,只讀和凍結或掛起的(unmounted, read-only, frozen/suspended)XFS文件系統的metadata到1個文件。否則掛載狀態下拷貝會造成生成的轉儲可能已損壞或不一致。
xfs_mdrestore :將xfs_metamp生成的映像還原到文件系統映像。
Restores an XFS metamp image ( generated using xfs_metamp) to a file system image.
xfs_db :Debugs an XFS file system。
3. xfs的文件系統怎麼修復
Linux如何擴展XFS文件系統。磁碟上有額外的空間,所以想要擴展其上創建的現存的XFS文件系統,以完全使用額外空間,那要怎麼擴展XFS文件系統呢?下文就小編跟大家分享一下Linux如何擴展XFS文件系統教程。
Linux擴展XFS文件系統步驟:XFS是一個開源的(GPL)日誌文件系統,最初由矽谷圖形(SGI)開發,現在大多數的Linux發行版都支持。事實上,XFS已被最新的CentOS/RHEL 7採用,成為其默認的文件系統。在其眾多的特性中,包含了「在線調整大小」這一特性,使得現存的XFS文件系統在已經掛載的情況下可以進行擴展。然而,對於XFS文件系統的縮減卻還沒有支持。
要擴展一個現存的XFS文件系統,你可以使用命令行工具xfs_growfs,這在大多數Linux發行版上都默認可用。由於XFS支持在線調整大小,目標文件系統可以掛在,也可以不掛載。
下面展示了xfs_growfs的基本用法:
作為目標XFS文件系統來擴展,你可以指定掛載點、磁碟分區或者邏輯卷(在使用LVM時),使用數據塊數量來指定新的XFS文件系統的大小。你可以使用xfs_info命令行工具來檢查數據塊大小和數量:
要將XFS文件擴展到1986208:
如果你不使用「-D」選項來指定大小,xfs_growfs將會自動擴展XFS文件系統到最大的可用大小。
注意,當你擴展一個現存的XFS文件系統時,必須准備好事先添加用於XFS文件系統擴展的空間。這雖然是很顯然的事,但是如果在所在的分區或磁碟卷上沒有空閑空間可用的話,xfsgrowfs就沒有辦法了。同時,如果你嘗試擴展XFS文件系統大小到超過磁碟分區或卷的大小,xfsgrowfs將會失敗。
4. 用自己的話回答你是如何理解Xfs文件系統的4個特性的
用自己的話回答你是如何理解這個文件的這個特性的,這個文件的這個特性是非常好的。
5. 關於LINUX中的XFS文件系統問題。
XFS是高性能文件系統,由於它的高性能,XFS作為許多企業級系統的首選回,特別是有大量數據答,需要結構化伸縮性和穩定性的,下面是Linux系統(Ubuntu為例)創建和掛載XFS文件系統方法:
1、安裝 XFS系統工具集
sudoapt-getinstallxfsprogs
2、創建 XFS格式分區
#先准備一個分區來創建XFS,假設分區在/dev/sdb
sudofdisk/dev/sdb
vim/etc/fstab
/dev/sdb1/storagexfsdefaults00