ファイルシステムのブロックサイズを調べる
Linux では tune2fs -l パーティション。
stat(1) で stat.st_blksize を見るといい。
stat.st_blocks は1ブロック=512byteとしたときの使用ブロック数なので注意。
ext2 ではブロックサイズとして1K/2K/4Kを選択できて、Redhat 系 Linux では 4K が普通らしい。
File: `.bashrc' Size: 205 Blocks: 8 IO Block: 4096 Regular File Device: 302h/770d Inode: 280766 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 501/ oracle) Gid: ( 501/oinstall) Access: 2007-04-05 08:49:37.000000000 +0900 Modify: 2007-04-04 13:33:20.000000000 +0900 Change: 2007-04-04 13:33:20.000000000 +0900
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=stat&dir=jpman-5.4.0%2Fman§=2
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/stat.2.html
[追記:2007-04-05]
FreeBSD UFS のブロックサイズは 16KB。
http://journal.mycom.co.jp/articles/2007/03/09/mckusick/001.html
http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=FreeBSD%2F%A5%D5%A5%A1%A5%A4%A5%EB%A5%B7%A5%B9%A5%C6%A5%E0
FreeBSD stat の出力書式
1043 565766 -rw-r--r-- 1 ao ao 2272624 40417 "Apr 5 21:34:32 2007" "Mar 29 22:00:01 2007" "Mar 29 22:00:01 2007" "Jan 8 05:28:57 2007" 16384 80 0 .vimrc
左から
st_dev | ファイルが存在するデバイス |
st_ino | inode 番号 |
st_mode | ファイルタイプと権限 |
st_nlink | ハードリンク数 |
st_uid | 所有者ユーザID |
st_gid | 所有者グループID |
st_rdev | デバイス番号 |
st_size | バイト単位でのファイルサイズ |
st_atime | atime |
st_mtime | mtime |
st_ctime | ctime |
st_birthtime | inode の生成時刻 |
st_blksize | ファイルシステム I/O 操作での最適なブロックサイズ |
st_blocks | 使用ブロック数(512byte単位) |
st_flags | ユーザ定義のフラグ |
ファイル名 |