步骤比较繁琐,如下操作。
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