來 源: freebsd.csie.nctu.edu.tw
檔 名: 0/System/inode(使用 70 埠)
標 題: 關 inode - About inode
From: unixer.bbs@bbs.ee.ncku.edu.tw (優客李林)
Newsgroups: tw.bbs.comp.386bsd
Subject: 有關 inode...
Date: 9 Dec 1996 08:27:00 GMT
Hi...
由做過一些有關 filesystem 的 study, 在這邊對 inode 做一點說明...
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, 但是這樣可能會降低存取的速度.但我相信不嚴重
有興趣的人可以試試.
=========================================================================
newfs 時的參數的影響:(以 100MB 的分割去作測試)
>From jason@csie.NCTU.edu.tw Fri Mar 14 23:53:58 1997
From: Jason Chang
size: 208845 (about 100MB)
參數 可用空間(1K-blocks) 可用 inode (ifree)
-i 1024 91525 102397
-i 2048 96661 61437
-i 4096 100501 30717
-i 8192 102421 15357
-i 16384 103381 7677
-i 32768 103861 3837
-i 16384 -b 16384 -f 2048 103316 7677
-i 16384 -b 32768 -f 4096 103104 8189
-i 16384 -b 65536 -f 8192 102808 8189
(http://www.fanqiang.com)
進入【UNIX論壇】
|