我正在构建一个可以处理高达2GB的简单文件系统。我的块大小各为1KB,我将采用的最大文件大小为200MB。它还将存储多达10,000个文件,因此我试图列出要保留多少个inode块和位图块,但我想出了一个粗略的轮廓。这是我计划拥有的每个人的数量:
Block 0: superblock
block 1: root inode block
blocks 3-182: bitmap blocks
blocks 183-1091: inode blocks
blocks 1092-10000: data blocks for storing files
但这又是一个估计。从我阅读的有关构建简单文件系统的文档中,他们从未提及具体内容,例如每个文档系统需要多少。有人能指出我正确的方向吗? 编辑:这是我当前的inode结构和目录条目结构:
struct inode{
unsigned long num; //inode number
unsigned long parent_inode; //parent inode number
unsigned long zonelist[10]; //pointers: 7 direct, 1 indirect, 1 dub. ind, 1 trip. ind
char padding[(BLOCKSIZE - (sizeof(long)*14 + sizeof(char) * MAX_FILE_NAME_LENGTH))]; //padding for a BLOCKSIZE inode struct
};
struct dir_entry{
char name[MAX_FILE_NAME_LENGTH]; //name of file or directory
int fileinode[100]; //inode pointer
unsigned long isdir; //0 = file, 1 = directory
unsigned long size; //file size in bytes
int num_of_files; //file counter
};