xfs文件系统优化

安装选项XFS:
       
allocsize =大小
              
设置缓冲I / O端的文件预分配的大小时,延迟分配写出时(默认大小为
              
64KiB)。此选项的页面大小(通常4KiB)到1GiB,包括有效值,功率为2的
              
增量。

       
attr2 | noattr2
              
该选项启用/禁用(默认为启用)“投机取巧”内联的方式作出改善,在
              
扩展属性存储在磁盘上。当新的形式是用于在第一时间(通过设置或删除
              
扩展属性)在磁盘上的超级块的功能位字段将被更新,以反映这种格式是在
              
使用。

       barrier

              
允许使用的块写入到日志和不成文的程度转换层写屏障。
              
允许驱动器的写缓存被启用,写屏障设备,支持。

       
dmapi 

               启用DMAPI(数据管理API)事件标注。使用的MTPT选项。

       
GRPID | | bsdgroups和nogrpid sysvgroups
              
这些选项定义的组ID新创建的文件得到。设置GRPID时,它需要的组ID
              
目录中创建它,否则(默认值)需要当前进程的fsgid,除非
              
目录有setgid位,在这种情况下,需要从父目录的GID,也得到了
              
setgid位,如果它本身是一个目录。

       
ihashsize =值
              
设置在内存中指定的挂载点的inode哈希散列桶的数量。如果
              
零值时,选择的值由默认的算法,将显示在/ proc /坐骑。

       
ikeep | noikeep
              
当空的inode,inode的集群让他们上的磁盘(ikeep) - 这是传统的XFS
              
行为,而现在仍然是默认的。使用noikeep选项,inode的集群被返回到空闲
              
空间池中。

       
inode64
              
指示,XFS允许创建的inode在文件系统中的任何位置,包括那些将
              
导致inode号,占地超过32位的意义。这是为了向后compatibil
              
性,而使得备份应用程序的问题,不能处理大的inode号。

             案例 : http://www.2cto.com/os/201307/228748.html


      largeio | nolargeio
              
如果nolargeio指定,最佳的I / O(2)由stat在st_blksize报道将尽可能小
              
允许用户应用程序,以避免低效率的读/修改/写I / O。如果指定了largeio,一个文件系统,
              
有一个指定的swidth st_blksize将返回swidth的值(以字节为单位)。如果文件系统不具有
              
swidth规定,但不指定allocsize,然后allocsize(以字节为单位)将改为返回。如果这两种
              
这两个选项,然后文件系统,如果nolargeio指定的行为。

       
logbufs =值
              
设置在内存中的日志缓冲区的数量。有效数字范围从2-8(含)。默认值是8个缓冲器
              
文件系统的块大小的64KiB,4个缓冲区的文件系统的块大小为32KiB,3个缓冲区
              
与其他所有配置的缓冲区的块大小为16KiB和2的文件系统。数的增加
              
在成本的额外日志缓冲区使用的内存的缓冲区可能会增加某些工作负载的性能
              
及其相关的控制结构。

       
logbsize =值
              
每一个内存中的日志缓冲区的大小设置。可以指定大小(以字节为单位)(以千字节为单位),或用“K”后缀。
              
版本1和版本2个数量级的有效大小为16384(16K)和32768(32K)。第2版的有效尺寸为记录
              
还包括65536(64K),131072(128K)和262144(256K)。机器的默认值超过32MiB
              
内存是32768,使用较少的内存的机器默认情况下,使用16384。

       
logdev =设备和rtdev的=设备
              
使用一个外部日志(元数据日志)和/或实时设备。XFS文件系统有三个部分:一个数据
              
部分,一个日志部,和一个实时截面。实时部分是可选的,日志部分可以是
              
分开的数据部分,或包含在它。请参阅xfs的(5)。

       
MTPT =挂载点
              
使用的DMAPI选项。此处指定的值将被纳入在DMAPI安装事件,应该是
              
路径]是使用实际的安装点。

       
noalign
              
数据分配不会在条带单元边界对齐。

       
noatime
              
当一个文件被读取访问时间戳没有更新。

       
NORECOVERY
              
该文件系统将被安装没有运行日志恢复。如果没有干净地卸载文件系统,它是
              
安装在恢复模式时,可能是不一致的。可能无法访问某些文件或目录
              
因为这个原因。 NORECOVERY必须安装只读文件系统安装或安装会失败。

       
nouuid不检查双挂载的文件系统使用文件系统的UUID。这是非常有用的安装LVM快照卷
              
超微电极。


       osyncisosync
              
O_SYNC写入实现真正的O_SYNC。没有这个选项,Linux的XFS的行为,如果是osyncisdsync选项
              
使用,这将使写道O_DSYNC标志,如果已使用O_SYNC标志打开的文件集的行为
              
代替。这可能会导致更好的性能,而不会影响数据的安全性。但是,如果这个选项是不
              
实际上,从O_SYNC写入的时间戳更新可能会丢失,如果系统崩溃。如果时间戳更新
              
关键,使用osyncisosync的选项。

       
uquota | usrquota | uqnoenforce |配额
              
启用用户磁盘配额记账,并实施限制(可选)。进一步的详细信息,请参阅xfs_quota(8)。

       
gquota | grpquota | gqnoenforce
              
集团启用磁盘配额记账和实施的限制(可选)。进一步的详细信息,请参阅xfs_quota(8)。

       
pquota | prjquota | pqnoenforce
              
项目磁盘配额会计启用和限制(可选)执行。请参阅xfs_quota(8)进一步
              
详细信息。

       sunit
=值和swidth的=值
              
用于指定一个RAID设备或带卷的条带单元和宽度。值,必须指定
              
512字节的块为单位。如果这个选项没有被指定,条带化卷或文件系统
              
条纹宽度或单位被指定为RAID设备mkfs的时间,然后在mount系统调用将恢复
              
从超级值。对于文件系统,直接在RAID设备,这些选项可以用来
              
如果基础磁盘布局更改后的文件系统的超级块已经覆盖信息
              
创建。 swidth选项是必需的,如果SUnit的选项已被指定,并且必须是的倍数
              
sunit值。

       
swalloc
              
数据分配将向上舍入到条纹宽度范围正在扩大的当前结尾的文件时,
              
文件的大小是大于条的宽度的大小。

//-----------------------------------------------------------------------------------------

rw,noexec,nodev,noatime,nodiratime,barrier=0

  • xfs mount options: -o inode64,noatime


//-----------------------------------------------------------------------------------------

先是格式化xfs分区mkfs.xfs的参数(你也可以只设置-i size=512,其他会根据分区大小自动选择): 

Java代码   收藏代码
  1. mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 -d agcount=16 /dev/sdb1  

    -i size=512 : 默认的值是256KB,这里的设置是为了selinux的,这个设置针对inode size,selinux使用xfs的Extend Attribute,首先要写到inode中,如果容量不够(默认是256KB的时候就不够,刚刚多一点点),就写到block中,这会损失性能,当需要使用selinux的时候。这似乎对一般用户没什么作用,因为一般用户都不用selinux的,大家对linux系统的安全性还是挺信任的,不过,说实话,我不信任,况且RedHat 的FC已经默认配置了selinux,这很好。做了这个改动,方便以后我在系统中配置selinux而不担心性能的损失。 

    -l size=128m :注意是小写的m,不是大写的。默认值的是10m(bsize=4096 x blocks=2560)。这个值可以设置成32m(分区容量不小于250M)/64m(分区容量不小于500M)/128m(分区容量不小于700M),对于分区容量的限制,我这里列出的只是大概,最大可设128m。修改这个参数成128m,可以显著的提高xfs文件系统删除文件的速度,当然还有其它,如拷贝文件的速度。 这个参数需要大内存的支持,内存太少的机器大概不能设置这么高。(标准是什么?512M?1G?我不了解,所以我上面说要自己实际的测试一下。) 

    -l lazy-count=value 
        This changes the method of logging various persistent counters  in  the  superblock.   Under metadata  intensive  workloads, these counters are updated and logged frequently enough that the superblock updates become a serialisation point in the  filesystem.  The  value  can  be either 0 or 1. 
        With  lazy-count=1,  the superblock is not modified or logged on every change of the persis-tent counters. Instead, enough information is kept in other parts of the  filesystem  to  be able  to  maintain  the  persistent  counter  values  without  needed  to  keep  them in the superblock.  This gives significant improvements in performance on some configurations.  The default  value  is  0 (off) so you must specify lazy-count=1 if you want to make use of this feature. 

    -d agcount=4 :默认值是根据容量自动设置的。可以设置成1/2/4/16等等,这个参数可以调节对CPU的占用率,值越小,占用率越低。这是理论上的,在我的机器上,agcount=1反而比agcount=2的cpu占用率还高,我想这是因为我的cpu是双核的原因吧。要注意,cpu的占用率低,那每一秒处理的数据量也会降低一些。我比较了agcount=2和4,发现还是4比较好。这样一来,这个参数的设置,就是需要自己去选择的了。 

然后是mount的xfs选项(关键参数nobarrier):
 
Java代码   收藏代码
  1. vi /etc/fstab  
  2. #修改挂载选项  
  3. /dev/sdb1               /data                    xfs     defaults,noatime,nobarrier       0 0  
  4. #重新挂载  
  5. mount -o remount /data  



    nobarrier 
              Many hardware RAID have a persistent write cache which preserves it across power failure, interface resets, system crashes, etc. Using write barriers in this instance is not recommended and will in fact lower performance. Therefore, it is recommended to turn off the barrier support and mount the filesystem with "nobarrier". But take care about the hard disk write cache, which should be off. 

    noatime 默认的方式下linux会把文件访问的时间atime做记录,这在绝大部分的场合都是没有必要的,如果遇到机器IO负载高或是CPU WAIT高的情况,可以尝试使用noatime,疗效好,见效快。 

    logbufs=value 
              Set  the number of in-memory log buffers.  Valid numbers range from 2-8 inclusive.  The default value is 8 buffers for filesystems with a blocksize of 64K, 4 buffers for filesystems with a blocksize of 32K,  3 buffers for filesystems with a blocksize of 16K, and 2 buffers for all other configurations.  Increasing the number of buffers may increase performance on some workloads at the cost of the memory used for  the additional log buffers and their associated control structures. 

    logbsize=value 
              Set  the  size  of each in-memory log buffer.  Valid sizes are 16384 (16K) and 32768 (32K).  The default value for machines with more than 32MB of memory is 32768,  machines  with  less  memory  use  16384  by default.

//-----------------------------------------------------------------------------------------

参考:

1.ceph官方性能调优报告

http://www.kissthink.com/archive/5153.html

2.centos6.3使用xfs文件系统 

3. http://blog.csdn.net/rgb_rgb/article/details/9103289



4. xfs文件系统使用总结 

你可能感兴趣的:(XFS)