Unix文件系统的Blocksize究竟多大

来源:百度文库 编辑:神马文学网 时间:2024/04/28 15:18:25
所有Oracle的文档都说,Oracle的DB_BLOCK_SIZE应该是操作系统的Blocksize的整数倍。
但是Unix那么多,很多人都不知道他的Unix的文件系统的Blocksize是多大。
  
下面我们就依次来分析分析,不同Unix的文件系统的Blocksize分别是多少:
  
首先,我们都知道,文件系统的Block大小,是创建文件系统的时候指定的,一般Unix都会根据对应设备文件的大小,
给一个相应的Block大小。
一般这个Block大小,都是创建文件系统之后就无法更改的,就和Oracle的db_block_size一个德行。
  
Linux:
这是我们最容易可以接触到的Unix。我们拿Linux下面最常见的文件系统:Ext2来分析。
我们可以通过mkfs -t ext2 /dev/sdXN 来创建文件系统。
如果我们不指定文件系统的Block大小,Linux会根据设备文件的大小,自动选择适当的BLOCKSIZE。
如何指定Linux的文件系统的BlockSize呢?
mk2efs -B 8192 /dev/sdXN  
那么,对于已经创建的文件系统,我们怎么检查当前文件系统的BlockSize呢?答案是用Tune2fs来检查:
请看:
[root@dwdb /]# tune2fs -l /dev/sda9
tune2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          72e96995-fee0-4921-85f8-f9d5d2cad1f8
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      filetype sparse_super large_file
Filesystem state:         not clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              6082944
Block count:              12161197
Reserved block count:     608059
Free blocks:              2308319
Free inodes:              6081568
First block:              0
Block size:               4096
Fragment size:            4096
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         16352
Inode blocks per group:   511
Last mount time:          Mon Nov  4 16:36:27 2002
Last write time:          Mon Nov  4 16:57:33 2002
Mount count:              11
Maximum mount count:      37
Last checked:             Sun Aug 18 21:10:08 2002
Check interval:           15552000 (6 months)
Next check after:         Fri Feb 14 21:10:08 2003
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
通过上面的结果,我们很容易就可以看到文件系统的Block大小就是4096.  在Solaris机器上,默认的Block大小是8K
  
我们如何指定Solaris文件系统的Block大小呢?
newfs -b 4096 /dev/c0txdxsx 里面的-b 来指定Block大小,覆盖默认的8K.
其实8k 是一个可以的数字,没有必要覆盖这个缺省参数。
  
那么我们如何检查当前已有文件系统的Block大小呢?
bash-2.05# fstyp -v /dev/rdsk/c0t2d0s0 |more      
ufs
magic   11954   format  dynamic time    Mon Nov  4 17:46:05 2002
sblkno  16      cblkno  24      iblkno  28      dblkno  408
sbsize  2048    cgsize  4096    cgoffset 160    cgmask  0xfffffff0
ncg     697     size    17827200        blocks  17553949
bsize   4096    shift   12      mask    0xfffff000
fsize   1024    shift   10      mask    0xfffffc00
frag    4       shift   2       fsbtodb 1
minfree 1%      maxbpg  1024    optim   time
maxcontig 256   rotdelay 0ms    rps     120
csaddr  408     cssize  11264   shift   8       mask    0xffffff00
ntrak   10      nsect   320     spc     3200    ncyl    11142
cpg     16      bpg     6400    fpg     25600   ipg     3040
nindir  1024    inopb   32      nspf    2
nbfree  4388485 ndir    2       nifree  2118876 nffree  4
cgrotor 0       fmod    0       ronly   0       logbno  0
我们可以看到,这个文件系统的Block大小是4K。
当然,最简单的还是
df -g     实际上,很多高端的Solaris机器,都配置了Veritas的文件系统,所以我们也有必要来研究一下Veritas的VXFS的一些情况。
  
vxfs 的默认的Block大小也是8K
同样,创建vxfs的文件系统,也是可以指定改文件系统的Block大小的:
  
# mkfs -F vxfs -o bsize=4096 /dev/vx/rdsk/edidg/test_vol
     version 4 layout
     10240 sectors, 1280 blocks of size 4096, log size 256 blocks
     unlimited inodes, largefiles not supported
     1280 data blocks, 992 free data blocks
     1 allocation units of 32768 blocks, 32768 data blocks
     last allocation unit has 1280 data blocks
我们检查现有文件系统的Block大小,也是使用fstyp 命令:
  
# fstyp -v /dev/vx/dsk/edidg/test_vol      
vxfs
magic a501fcf5  version 4  ctime Mon Nov  4 18:06:42 2002
logstart 0  logend 0
bsize  4096 size  1280 dsize  1280  ninode 0  nau 0
defiextsize 0  ilbsize 0  immedlen 96  ndaddr 10
aufirst 0  emap 0  imap 0  iextop 0  istart 0
bstart 0  femap 0  fimap 0  fiextop 0  fistart 0  fbstart 0
nindir 2048  aulen 32768  auimlen 0  auemlen 2
auilen 0  aupad 0  aublocks 32768  maxtier 15
inopb 16  inopau 0  ndiripau 0  iaddrlen 2   bshift 12
inoshift 4  bmask fffff000  boffmask fff  checksum e2cda323
oltext1 15  oltext2 518  oltsize 1  checksum2 31d
free 987  ifree 0
efree  1 1 2 0 1 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 
HP Unix和Solaris的命令也是一样的,通过fstyp也可以检查到那个Block的大小啦。
  
在Newfs的时候,也可以指定Block的大小了。
#newfs -F hfs -f 8192 /dev/vg01/rlvol1
  
至于HP上面的vxfs ,和Solaris上的vxfs也是一码事情啦。
在AIX下面,默认的大小是4K。
在smit fs下面来创建文件系统的大小。
  
Tru64,偶就不知道了。
  
说了这么多,其实都没有什么意义。
  
我们创建数据库,一般很少会选择BlockSize小于8k的。
而几乎所有Unix文件系统的Blocksize,都不会默认大于8K.
  
只是一些朋友常常问起,把积累的东西贴出来一下而已,希望对大家有些帮助。

 

回复: 我的Unix文件系统的Blocksize究竟多大呢?

没有找到什么好办法,有一个笨办法
chkdsk /I DriverName;
  
每个分配单元中有       4096 字节。
磁盘上共有    2220978 个分配单元。
磁盘上有       4871 个可用的分配单元。  

TOP

 
 

TOP