1. inode 是作甚么的?
一个 filesystem 可以粗略地分成 inode table 与 data area 两部份.
inode table 上有许多的 inode, 每个 inode 分别 记录一个档案的属性,
与这个档案分布在哪些 datablock 上
2. 一个 inode 有多大呢?
128 byte!
3. inode 和 data area 的关系
在 new filesystem 时, 通常会有一个参数, 用来描述要分配多少比例的空间给
inode table. 举例来说,
newfs -i 2048
是指 file system 中, 每分配 2048 byte 给 data area, 就分配一个 inode
但是一个 inode 就并不是一定就用掉 2048 byte, 也不是说 files allocation
的最小单位是 2048 byte, 它仅仅只是代表 filesystem 中
inode table/data area 分配空间的比例是 128/2048 也就是 1/16
(换个角度想, 我们可以想成是预估 filesystem 中 file 平均大小是 2048 byte)
如果 inode table 太小, 那么在每个档案都很小的时候, 就会发生 inode 用光 而
datablock 还剩一堆的情形.
4. file allocation 的最小单位 和 inode 多少有没有关系呢?
没有关系!
FFS 中真正的最小单位是 fragment size 也就是我们在 new filesystem 时用的
newfs -b 8192 -f 1024
^^^^^^^^
ps: -b 8192 代表 blocksize=8192, 这种"较大单位"是用来加速大档案的存取用的
在 FreeBSD 中, 内定的是 -i 4096 -b 8192 -f 1024. 如果您要架 bbs/new 的话
可以考虑用 -i 1024 -b4096 -f1024
unixer
============================================================================
From: alexj@mail.tmc.edu.tw (Ji, Wen-Jie)
Newsgroups: tw.bbs.comp.386bsd
Subject: Re: HELP !! The parameter of newfs
Date: Thu, 12 Dec 1996 01:39:31 GMT
没关系,我自己找到答案了,写在此让大家分享一下.
所谓 block size & fragment size, 这是属于 file system
的一种解决方案. 自4.3 BSD, BSD 用这种方法来解决档案 fragment
的问题
先假设 a block size= 4K, a fragment size = 256Bytes.
假如你现在要将一个 1K 的新档案写入 file system, FS 会把它存入 4
个fragment,而不会存入 block,一但这个档案继续被 append 增加到 4K
时, FS 会将它转存到一个 block中, 而原来的 16 个fragments 就会被 clean
^^^^^^^^^^^^^^^^^^^^
因为当你的档案大到 4K 时,它占用
了 16 (4K / 256 bytes) 个 fragments
再举个例子, 如果现在又存了一个新的 4.1K 的档案, FS 会分配
一个 block 及 4个 fragment 给 这个档案,
因为 1 block + 4 fragments = 4 K + 256 bytes * 4 = 4.1K
所以,有此可知,对于一台 news server, bbs, 或是会有大量的小档案存取时,
为了降低 FS 的空间耗损率,应该采用 -b 4096 -f 256,
而不要采用预设值的 -b 8192 -f 1024,因为大部分的信件都不超过 512 bytes,
有些更不超过 256 bytes, 但是这样可能会降低存取的速度.但我相信不严重
有兴趣的人可以试试.
inode是什么?
最新推荐文章于 2024-07-26 07:15:00 发布