当前位置: 技术问答>linux和unix
unix的目录结构在文件卷中是怎么存放的?
来源: 互联网 发布时间:2015-09-11
本文导语: unix的目录结构在文件卷中是怎么存放的?因为我要做一个简单的unix/linux文件卷虚拟,但不清楚它在inode(i节点)还是什么地方里面的,是不是一个inode存放一个或多个目录结构的? | 相同点...
unix的目录结构在文件卷中是怎么存放的?因为我要做一个简单的unix/linux文件卷虚拟,但不清楚它在inode(i节点)还是什么地方里面的,是不是一个inode存放一个或多个目录结构的?
|
相同点是都要到inode里面,不同在于对inode里面存放的二进制数据的解释,这个是目录的inode和普通文件inode的差别……
|
UNIX中每个文件有一个唯一的索引节点,索引节点以静态形式存放在磁盘上,也称为磁盘索引节点。内核对一个文件进行操作时,必须将相应的索引节点信息读入一个内存的特设缓冲区,即内存索引节点表,该表除了包含磁盘索引节点的静态信息外,还包含当前打开文件的动态信息。
struct dinode
{
unsigned short di_mode; /* mode and type of file */
short di_nlink; /* number of links to file */
short di_uid; /* owner's user id */
short di_gid; /* owner's group id */
off_t di_size; /* number of bytes in file */
char di_addr[40]; /* disk block addresses */
time_t di_atime; /* time last accessed */
time_t di_mtime; /* time last modified */
time_t di_ctime; /* time created */
};
目录也是文件,也由磁盘索引节点表示,只是在di_mode中标明是目录文件,不过其数据组成与普通文件不同,目录的数据是有结构的
#ifdef DIRSIZ
#define DIRSIZ 14
#endif
struct direct
{
ino_t d_ino;
char d_name[DIRSIZ];
};
这里给出的例子只是System V传统文件系统的结构定义,只是为了说明问题
struct dinode
{
unsigned short di_mode; /* mode and type of file */
short di_nlink; /* number of links to file */
short di_uid; /* owner's user id */
short di_gid; /* owner's group id */
off_t di_size; /* number of bytes in file */
char di_addr[40]; /* disk block addresses */
time_t di_atime; /* time last accessed */
time_t di_mtime; /* time last modified */
time_t di_ctime; /* time created */
};
目录也是文件,也由磁盘索引节点表示,只是在di_mode中标明是目录文件,不过其数据组成与普通文件不同,目录的数据是有结构的
#ifdef DIRSIZ
#define DIRSIZ 14
#endif
struct direct
{
ino_t d_ino;
char d_name[DIRSIZ];
};
这里给出的例子只是System V传统文件系统的结构定义,只是为了说明问题
|
目录还是文件,只不过这个特殊一点的文件里面放置的是该目录下的文件的信息而已,还是在inode里面的。
无论如何一个inode里面只能出现一个文件(当然压缩的那些不算),所以针对目录也是如此。这个是文件系统本身的约定。
无论如何一个inode里面只能出现一个文件(当然压缩的那些不算),所以针对目录也是如此。这个是文件系统本身的约定。
|
父目录和子目录的目录结构是在struct dentry里面。inode都是跟文件和具体文件系统相关的东西。
|
QQ群:新开的.希望大家可以在此群中交流.
`````````````````````````````````````
WEB.Linux 群号:7729746
`````````````````````````````````````
WEB.Linux 群号:7729746
|
不知道你在问什么?用dentry找到父目录和子目录的inode, 在从inode找到你要的信息不就完了?