c - 制作一个简单的文件系统,有多少个位图块?

时间:2016-04-23 01:54:20

标签: c unix bitmap filesystems inode

我正在构建一个可以处理高达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
};

0 个答案:

没有答案