Linux文件系统性能优化

上一篇 / 下一篇  2012-07-26 09:33:15 / 个人分类:Linux

#MDH2v'HFRT ls4T0  由于各种的I/O负载情形各异,Linux系 统中文件系统的缺省配置一般来说都比较中庸,强调普遍适用性。然而在特定应用下,这种配置往往在I/O性能方面不能达到最优。因此,如果应用对I/O性能 要求较高,除了采用性能更高的硬件(如磁盘、HBA卡、CPU、MEM等)外,我们还可以通过对文件系统进行性能调优,来获得更高的I/O性能提升。总的 来说,主要可以从三个方面来做工作

}.t/F\2AQ D051Testing软件测试网})`3xw_x1o

  1、Disk相关参数调优

ss7~ e4xy0

9@RV2Si:i/W7xy0  2、文件系统本身参数调优

(l!qD|%G b0

X9V4L/yo3r^0  3、文件系统挂载(mount)参数调优

zT3Aq+] G0

0nVFQm Q)p(Ih0  当然,负载情况不同,需要结合理论分析与充分的测试和实验来得到合理的参数。下面以SAS(Serial attached SCSI)磁盘上的EXT3文件系统为例,给出Linux文件系统性能优化的一般方法。请根据自身情况作适合调整,不要生搬硬套。51Testing软件测试网0G]MP&[:ZE#Y

6DR y-~2xDj0  1、Disk相关参数

$[ vI@!O5d},l0

ISv z-{#@v.e0  1.1 Cache mode:启用WCE=1(Write Cache Enable), RCD=0(Read Cache Disable)模式

r B9B W w1o:[0

$xoJ c8t/@dtVEKS0  sdparm -s WCE=1, RCD=0 -S /dev/sdb51Testing软件测试网]C`SX

C(H-QI,pU0  1.2 Linux I/O scheduler算法51Testing软件测试网qkz*O.sj

Xq~;[L!W6XPbg2D0  经过实验,在重负载情形下,deadline调度方式对squidI/O负载具有更好的性能表现。其他三种为noop(fifo), as, cfq,noop多用于SAN/RAID存储系统,as多用于大文件顺序读写,51Testing软件测试网@:I5@7H!dG

51Testing软件测试网\@^Mt2N$pDo

  cfq适于桌面应用。

T |.q7[!Jd.Y*k051Testing软件测试网.Mff]^3g;cf8Sb1d

  echo deadline > /sys/block/sdb/queue/scheduler

3c,Z%P)^7l rW051Testing软件测试网-f'W(t8PJ Py3mq

  1.3 deadline调度参数

8D[1p6QH%^E,gQ0

~| @2T3_-_0  对于redhat linux建议 read_expire = 1/2 write_expire,对于大量频繁的小文件I/O负载,应当这两者取较小值。更合适的值,需要通过实验测试得到。51Testing软件测试网k|hR D|J:P

51Testing软件测试网o0t*^${9g9ce

  echo 500 > /sys/block/sdb/queue/iosched/read_expire

HI t'P7H0

|u@UM^G|"F0  echo 1000 > /sys/block/sdb/queue/iosched/write_expire

oh}etRV0

Is#aL!N/z+i*N0  1.4 readahead 预读扇区数

$T$HmV5p8~C0

hz%Q#w8Ub0  预读是提高磁盘性能的有效手段,目前对顺序读比较有效,主要利用数据的局部性特点。比如在我的系统上,通过实验设置通读256块扇区性能较优。51Testing软件测试网K1zR7v3Bv

51Testing软件测试网y,],f)m|

  blockdev --setra 256 /dev/sdb

XQ!?0f[7pT0

[+uO1CCw{0  2、EXT3文件系统参数51Testing软件测试网 o5R9w&SI1U4O

51Testing软件测试网Ht mBl~*?Be

  2.1 block size = 4096 (4KB)

B8P` yDZ5~ J051Testing软件测试网8m K@%{c/\A7c

  mkfs.ext3 -b指定,大的数据块会浪费一定空间,但会提升I/O性能。EXT3文件系统块大小可以为1KB、2KB、4KB。51Testing软件测试网 t(J%Et|)a A

51Testing软件测试网*Y!WD;y+N6q hUK"S

'H/m-c%b2I0  2.2 inode size

B@![!a3u1w*g4f0

J3C.g&{-]7h#BI0  这是一个逻辑概念,即一个inode所对应的文件相应占用多大物理空间。mkfs.ext3 -i指定,可用文件系统文件大小平均值来设定,可减少磁盘寻址和元数据操作时间。51Testing软件测试网Amk;u#q!u1{

w.b}'A0I"v Utl`0  2.3 reserved block

&]:qJ/S7h0

2i'swdKR0  mkfs.ext3 -m指定,缺省为5%,可调小该值以增大部分可用存储空间。51Testing软件测试网8adb9l3L0h1l"B

zV3E C1Q8mBO0  2.4 disable journal

YY^*mDP_051Testing软件测试网3e:S$zGApQ O

  对数据安全要求不高的应用(如web cache),可以关闭日志功能,以提高I/O性能。

H6s6OV0]051Testing软件测试网m({1F~:]/YMc*G2l*t3{m

  tune2fs -O^has_journal /dev/sdb

#a6bRKgGa]rg;K051Testing软件测试网)}2y j8v+o;FI/E9W

  3、mount参数

B(iGVKA051Testing软件测试网W-gP%b2TKA8x

  3.1 noatime, nodirtime51Testing软件测试网5EE.b3~0?)C'f-S

3?7N {:Y$S}+[0  访问文件目录,不修改访问文件元信息,对于频繁的小文件负载,可以有效提高性能。51Testing软件测试网^9M5NE+~OG

|9RELt c Kf7fBb0  3.2 async

|y8n&j(X8]#`(o0

&eG4i(H2YaY{.ux8\0  异步I/O方式,提高写性能。51Testing软件测试网5t i+HEh#~1Q:Dw

51Testing软件测试网1dI0lX&x;r

  3.3 data=writeback (if journal)

Y ~'mxy6X-].YBe051Testing软件测试网4}8H6Ey'B

  日志模式下,启用写回机制,可提高写性能。数据写入顺序不再保护,可能会造成文件系统数据不一致性,重要数据应用慎用。

C,|?$\%tH0

ni&M)ZE-yy0  3.4 barrier=0 (if journal)51Testing软件测试网/U H"y$B6V [V Xe

1vk*rTz1Asi c1nUO0  barrier=1,可以保证文件系统在日志数据写入磁盘之后才写commit记录,但影响性能。重要数据应用慎用,有可能造成数据损坏。

1yMi~Pu'BB051Testing软件测试网;VZzM7w

  4、小结51Testing软件测试网Un6^v\3UK]

51Testing软件测试网Fk6`$o#H_'?

  以/dev/sdb为例,优化操作方法如下,参数请自行调整。

@{!S i6uy V,sOPL0

Im)X4CQB9LG0  sdparm -s WCE=1, RCD=0 -S /dev/sdb51Testing软件测试网c re FWe*lP
  echo deadline > /sys/block/sdb/queue/scheduler
h/xB~5]*zs9Oi0  echo 500 > /sys/block/sdb/queue/iosched/read_expire
:}q"SG3R;S%v0  echo 1000 > /sys/block/sdb/queue/iosched/write_expire51Testing软件测试网 H&t8L6M v;E&~w
  blockdev --setra 256 /dev/sdb
51Testing软件测试网4p0KCBK

51Testing软件测试网L J} WV U.{Z

  mkfs.ext3 -b 4096 -i 16384 -m 2 /dev/sdb151Testing软件测试网KOT0XFh
  tune2fs -O^has_journal /dev/sdb1

A2P6XH4r;v0

1Fj0W#i#S$d0  mount /dev/sdb1 /cache1 -o defaults,noatime,nodirtime,async,data=writeback,barrier=0 (if with journal)51Testing软件测试网?LjV_$DB
  mount /dev/sdb1 /cache1 -o defaults,noatime,nodirtime,async (if without journal)

-Z%XFCjl0

TAG:

 

评分:0

我来说两句

Open Toolbar