2009年10月6日火曜日

XFSについて

centos5.1~3あたり

正しいのかも良くわかんない。

特定のデバイス(パーティション)をXFSでフォーマット



# mkfs.xfs -f -d sunit=128,swidth=512 -l sunit=128,lazy-count=1 /dev/sda5



-lはログセクション、-dはデータセクション。それぞれのセクションのオプション詳細に関しては後述。




XFSのマウント



# mount -o nobarrier,sunit=128,swidth=512,noatime /dev/sda5 /home



# vi /etc/fstab

/dev/sda5 /home xfs defaults,nobarrier,sunit=128,swidth=512,noatime 1 2






lazy-countについて


ファイルシステムのスーパーブロックに対する書き込み競合が減少する。指定しても特に問題なさそう(今後はこちらがデフォルトになるかも?)

centos5.3、kernel-2.6.18-128.x、kmod-xfs-0.4.2, xfsprogs(-devel)-2.9.4.1ではエラーに。。。

nobarrierについて


カーネル2.6.17あたりからデフォルトでwrite-barrierがオンになった。ファイルシステムの安全性を高める為のものだが、ハードウェアRAIDでbbu(Battery Backup Unit)があれば、2重のキャッシュになるので必要ない。

bbuが無い場合、予期しない電源ダウンなんかでデータが失われる(さらにファイルシステムが壊れる可能性もある?)可能性があるが、 barrierな状態だと結構パフォーマンスが落ちるので、危険性を理解したうえでoffにしておくのがいいかな。(もちろんonにできればそれに越した 事は無いが。)

on LVMの時は、LVM側でごにょごにょしてくれるので必要ない、が1年ほど前に調べた感じではあまり性能は良くないようだった。もっともWEBサービス用 途で言えば、dbサーバはレプリケーションだし、ストレージサーバはdrbdなり使うだろうし、スナップショットとれるという点を考えてもLVMを使うメ リットは無さそう。

この辺最近で言えば仮想化にとって食われた感じなのかな。

sunit, swidthについて(データセクション)


raidでストライピング(raid0, 5, 6)している場合、ストライプサイズとXFSを最適化する事によりパフォーマンスがあがる。ソフトウェアRAIDの場合はよろしくやってくれるので指定する必要がないらしい。ハードウェアRAIDの場合のみ

sunit

raidのストライプサイズ(チャンクサイズ)を512byteを1ブロックで計算したユニット数。

例えばストライプサイズが64KBなら、128

swidtch

ストライピングを構成する物理hdd数(多分)。sunitを指定した場合はセットで指定する。sunitの倍数で以下が目安

raid1, 0, 10は、sunit * hddの数(raid1, 10はhddの数/2~hddの数)

raid5は、sunit * (hdd - 1)

raid6は、sunit * (hdd - 2)

su,sw


  • d、データセクションでは、上記の簡易版のsu,swでの指定ができる。suはそのままストライプサイズ(上記で言えば64K)、swはhddの数を指定できる。







参考