一、XFS 简介及特性
XFS 最初是由 Silicon Graphics,Inc. 于 90 年代初开发的。那时,SGI 发现他们的现有文件系统(existing filesystem,EFS)正在迅速变得不适应当时激烈的计算竞争。为解决这个问题,SGI 决定设计一种全新的高性能 64 位文件系统,而不是试图调整 EFS在先天设计上的某些缺陷。因此,XFS 诞生了,并于 1994 年随 IRIX 5.3 的发布而应用于计算。它至今仍作为 SGI 基于 IRIX 的产品(从工作站到超级计算机)的底层文件系统来使用。现在,XFS 也可以用于 Linux。XFS 的 Linux 版的到来是激动人心的,首先因为它为 Linux 社区提供了一种健壮的、优秀的以及功能丰富的文件系统,并且这种文件系统所具有的可伸缩性能够满足最苛刻的存储需求。
XFS具有如下特点:
1、数据完全性
采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。
2、传输特性
XFS文件系统采用优化算法,日志记录对整体文件操作影响非常小。XFS查询与分配存储空间非常快。xfs文件系统能连续提供快速的反应时间。笔者曾经对XFS、JFS、Ext3、ReiserFS文件系统进行过测试,XFS文件文件系统的性能表现相当出众。
3、可扩展性
XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。
4、传输带宽
XFS 能以接近裸设备I/O的性能存储数据。在单个文件系统的测试中,其吞吐量最高可达7GB每秒,对单个文件的读写操作,其吞吐量可达4GB每秒。
5、分配组(allocation groups)
当创建 XFS 文件系统时,底层块设备被分割成八个或更多个大小相等的线性区域(region)。分配组是唯一的,因为每个分配组管理自己的索引节点(inode)和空闲空间,实际上,是将这些分配组转化为一种文件子系统,这些子系统正确地透明存在于 XFS 文件系统内。
6、分配组与可伸缩性
那么,XFS 到底为什么要有分配组呢?主要原因是,XFS 使用分配组,以便能有效地处理并行 IO。将 XFS 与某些高端硬件相结合,您将获得高端性能而不会使文件系统成为瓶颈。分配组还有助于在多处理器系统上优化并行 IO 性能,因为可以同时有多个元数据更新处于“在传输中”。
7、B+ 树
XFS使用高的表结构(B+树),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。
8、日志记录
当然,XFS 也是一种日志记录文件系统,它允许意外重新引导后的快速恢复。象 ReiserFS 一样,XFS 使用逻辑日志;即,它不象 ext3 那样将文字文件系统块记录到日志,而是使用一种高效的磁盘格式来记录元数据的变动。
9、延迟分配XFS 
通过将分配过程分成两个步骤来处理。首先,当 XFS 接收到要写入的新数据时,它在 RAM 中记录暂挂事务,并只在底层文件系统上 保留适当空间。
二、Redhat下XFS的安装
配置系统为Redhat5,系统内核为kernel-devel-2.6.18。
重新编译yum源:
1、先删掉自带的yum:
rpm -aq|grep yum|xargs rpm -e --nodeps
2、下载三个文件并安装:
wget:http://mirrors.163.com/centos/5/os/i386/CentOS/yum-3.2.19-18.el5.centos.noarch.rpm
wget:http://mirrors.163.com/centos/5/os/i386/CentOS/yum-metadata-parser-1.1.2-2.el5.i386.rpm
wget:http://mirrors.163.com/centos/5/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
rpm -ivhpython-iniparse-0.2.3-4.el5.noarch.rpmyum-metadata-parser-1.1.2-2.el5.i386.rpm yum-3.2.19-18.el5.centos.noarch.rpm
下载配置:
wget:http://sudone.com/download/CentOS-Base.repo –O /etc/yum.repos.d/CentOS-Base.repo
更新:yum update
可能下载会比较慢,有一个办法可以解决,那就是等...或者可以去寻找快一点的源,不过那消耗的时间会更多。执行到后面的时候会问yes/no,那是问你要不要更新整个系统,最好选择no。
装一个ImageMagick测试一下:yum install ImageMagick
试一下搜索:
但是xfs在linux下一般只作为可选的文件系统,很多操作系统默认都没有把xfs所需的支持安装在系统里面。假如要试用一下xfs,或者有一块硬盘,上面的文件系统是xfs,但系统不支持,可以有两种选择:
1、重装系统,并在分区时分一个xfs区,这样系统就会装入所需的支持。
2、在线安装所需支持,如下。
xfs所需的支持分为两种方面,一是内核支持,2.6内核支持xfs,可以用模块方式加载;二是工具软件,以便支持mkfs、mount等,xfs还有其他一些工具软件,要安装xfs支持,把内核和工具两样搞定即可。
ubuntu下安装xfs比较简单,顺带也说一下:
apt-get install xfsprogs -yf; echo "install finished"
在redhat下安装xfs,
搜索一下:
yum search xfs
得到一大堆东西,在这里面选择几个装就可以的了:
内核部分:
yum install kmod-xfs-PAE
yum install kmod-xfs-xen
yum install kmod-xfs
工具部分:
yum install xfsdump
yum install xfsprogs-devel
yum install xfsprogs
其中内核部分根据当前系统选择其一也可以,全装上最省心。
检查一下:
lsmod | grep xfs
可以看到这个内核模块已经加载进系统了。
然后就可以测试一下:
我也没有没用的分区,卸下swap进行
swapoff –a
swap就空闲了
fdisk -l | grep swap | awk '{print $1;}'
查到swap的分区名/dev/sda6
然后就可以格式化:
mkfs.xfs -f /dev/sda6
格完了,mount上去:
mkdir /test
mount -t xfs /dev/sda6 /test
看看:mount
可以看到:/dev/sda6 on /test type xfs (rw)
大功告成!!!