Hatena::Groupfilesystem

fs_n314

2009-05-28

マウントの処理がutil-linuxからnfs-utilsに移動していた

| 15:09 |  マウントの処理がutil-linuxからnfs-utilsに移動していた - fs_n314 を含むブックマーク はてなブックマーク -  マウントの処理がutil-linuxからnfs-utilsに移動していた - fs_n314

5.2. nfs-commonNFS マウントを処理するようになりました

util-linux 2.13 以降において、NFS マウントの処理は util-linux 自体ではなく、nfs-common が処理します。全てのシステムNFS 共有をマウントするわけではないですし、ポートマッパを標準でインストールするのを避けるため、util-linuxnfs-common を提案するだけです。NFS 共有をマウントする必要があるなら、システムnfs-commonインストールされていることを確認してください。mount パッケージインストールスクリプトは、NFS マウント存在するかチェックして、nfs-common に含まれている /usr/sbin/mount.nfs がなかったり、nfs-common が古かったりすると処理を中断します。mount のアップグレード前に、nfs-commonアップグレードするか、NFS マウントを全てアンマウントしてください。

http://www.debian.org/releases/stable/i386/release-notes/ch-information.ja.html#nfs-common
# etch?
# libgssglue-dev => libgssapi-dev

# lenny
apt-get install pkg-config libblkid-dev libwrap0-dev libblkid-dev libevent-dev libnfsidmap-dev librpcsecgss-dev libgssglue-dev libkbr5-dev
apt-get source nfs-common
トラックバック - http://filesystem.g.hatena.ne.jp/n314/20090528

2008-04-23

raifでNFSとローカルをミラーした場合の問題

| 16:49 |  raifでNFSとローカルをミラーした場合の問題 - fs_n314 を含むブックマーク はてなブックマーク -  raifでNFSとローカルをミラーした場合の問題 - fs_n314

nfsではf_op->write に do_sync_write、f_op->read に do_sync_read が割り当てられている。

raifではgeneric_file_writeとgeneric_file_readが割り当てられている。


kernel2.6.19以上ではf_opがreadとaio_read、writeとaio_writeに別れているが、基本動作は同じ。

writeからdo_sync_writeを経由してaio_writeが呼ばれ、generic_file_aio_writeが呼ばれる。


  1. raif->write
  2. vfs->do_sync_write
  3. raif->aio_write
  4. vfs->generic_file_aio_write
  5. ・・・

しかしlinuxカーネルオプションでは、通常CONFIG_NFS_DIRECTIOが設定されている。

  1. nfs->write
  2. vfs->do_sync_write
  3. nfs->nfs_file_write

つまり、NFSデフォルト動作で動かしている場合はgeneric_file_aio_writeを利用せずにNFS独自の書き込み関数で同期書き込みを行う。


raifは読み書きの処理で、VFS標準の関数を使わずにそれぞれのブランチに対して処理を委譲すべきではないのか?

でも手作業で確認する速度なら普通データが反映されている。


generic_file_aio_write後の処理が複雑で分からない。あとで詳しく追うかも。

  • nfs_file_direct_write()
    1. generic_write_checks()
    2. nfs_sync_mapping()
    3. nfs_direct_write()
  • generic_file_aio_write
    1. nfs_prepare_write()
    2. nfs_commit_write()
      1. nfs_updatepage()
      2. ・・・



これとは別で

echo hoge > mountdir/hoge
echo fuga > mountdir/hoge

が化ける。

dupするとバグるのかもしれない。

juazamrlvzjuazamrlvz2013/12/17 08:34smvixgjmftztufn, <a href="http://www.sbtchdgbuw.com/">tnozsbwdtm</a> , [url=http://www.myrqhueeab.com/]ffnxyrsvyn[/url], http://www.lwjdzpatqb.com/ tnozsbwdtm

xcqjckeowhxcqjckeowh2014/03/19 12:46yxuuogjmftztufn, <a href="http://www.xhjcrducoq.com/">ndhuvcxlkq</a> , [url=http://www.yycuktaxiu.com/]rcnvmvkcpu[/url], http://www.prjdqeaklx.com/ ndhuvcxlkq

トラックバック - http://filesystem.g.hatena.ne.jp/n314/20080423

2008-04-19

NFSのベンチマーク

| 17:19 |  NFSのベンチマーク - fs_n314 を含むブックマーク はてなブックマーク -  NFSのベンチマーク - fs_n314

aptのsources.listにnon-freeがなければ加える。

apt-get install iozone3

詳細はこちら。

http://www.linux.or.jp/JF/JFdocs/NFS-HOWTO/performance.html


ファイルサイズを128KB(デフォルトは64KB)から1M(デフォルトは512MB)までを自動テストし、出力ファイルExcel形式にするには

iozone -a -R -b output.xls -c -g 1M -n 128K targetDir

とする。

毎回アンマウントを行うには、fstabに設定を書いて

iozone -a -R -b output.xls -c -g 1M -n 128K -U targetDir -f targetDir/testfile

とする。

操作が早すぎるのかわからないが、アンマウント後の再マウントエラーが出る。

ディレイは-J ms


ターミナルログが流れるので、テキストログも必要ならteeを使うといい。

トラックバック - http://filesystem.g.hatena.ne.jp/n314/20080419

2008-02-18

rpcが喋れたので、次はカーネルモードからrpc

| 13:01 |  rpcが喋れたので、次はカーネルモードからrpc - fs_n314 を含むブックマーク はてなブックマーク -  rpcが喋れたので、次はカーネルモードからrpc - fs_n314

FiSTかraifに載せる。

mountで取得したfhandleの使われ方 (task:1:1) も調べる。

トラックバック - http://filesystem.g.hatena.ne.jp/n314/20080218

2008-02-17

プログラムからrpcでnfsmountがうまくいかない

| 23:58 |  プログラムからrpcでnfsmountがうまくいかない - fs_n314 を含むブックマーク はてなブックマーク -  プログラムからrpcでnfsmountがうまくいかない - fs_n314

ディレクトリが読めない。具体的には、nfsproc_readdir_2()の結果で readdirres->readdirres_u.reply.entries がNULLで返ってくる。

ファイルは読めている模様。

ってかルートディレクトリが読めてないのに、なんでファイルが読めるの?

ディレクトリは読めているけれどreaddir()が動いてないってことなのかな・・。

あと、マウントされた側のsyslog

kernel: VFS: busy inodes on changed media.

っていうエラーが出る。

その前に

mountd[12345]: authenticated mount request from host:12344 for /opt (/opt)

とか出てるからmountはできているのか・・そんでi-nodeが読めないのかな。


#追記

このエラー(VFS: busy ~)は再起動すれば直った。カーネルアップグレードして再起動してなかったからか。


とすると、振り出しに戻る。

実験をしていると /var/lib/nfs/rmtab の値がどんどん増えていってるが、いいんだろうか・・。当然ながら再起動してもそのまま。



#追記 解決した

やっぱり資料は必須だ。

取得するバイト数を指定してなかった・・・。

PHPばかりやっていたから忘れていたけど、C言語だと読み込むバイト数とか必須だよね普通は。。

トラックバック - http://filesystem.g.hatena.ne.jp/n314/20080217
日記の検索