从上述结果中,我们可以看出,针对/etc目录而言,其大小为8192kb,为该目录下的文件所分配的块数量为24个,类型为directory,设备名称为803h/2051d,其Inode编号为33554561,其硬链接个数为85个,权限为0755,Uid和Gid均为0,还有atime, mtime, ctime这些信息。
当然,利用stat命令查到的某个文件的inode信息并不是全部的inode结构体里面的信息。内核使用的inode结构体如下所示:
struct inode {
struct hlist_node i_hash; // 哈希表 */
struct list_head i_list; // 索引节点链表 */
struct list_head i_dentry; // 目录项链表 */
unsigned long i_ino; // 节点号 */
atomic_t i_count; // 引用记数 */
umode_t i_mode; // 访问权限控制 */
unsigned int i_nlink; // 硬链接数 */
uid_t i_uid; // 使用者id */
gid_t i_gid; // 使用者id组 */
kdev_t i_rdev; // 实设备标识符 */
loff_t i_size; // 以字节为单位的文件大小 */
struct timespec i_atime; // 最后访问时间 */
struct timespec i_mtime; // 最后修改(modify)时间 */
struct timespec i_ctime; // 最后改变(change)时间 */
unsigned int i_blkbits; // 以位为单位的块大小 */
unsigned long i_blksize; // 以字节为单位的块大小 */
unsigned long i_version; // 版本号 */
unsigned long i_blocks; // 文件的块数 */
unsigned short i_bytes; // 使用的字节数 */
spinlock_t i_lock; // 自旋锁 */
struct rw_semaphore i_alloc_sem; // 索引节点信号量 */
struct inode_operations *i_op; // 索引节点操作表 */
struct file_operations *i_fop; // 默认的索引节点操作 */
struct super_block *i_sb; // 相关的超级块 */
struct file_lock *i_flock; // 文件锁链表 */
struct address_space *i_mapping; // 相关的地址映射 */
struct address_space i_data; // 设备地址映射 */
struct dquot *i_dquot[MAXQUOTAS]; // 节点的磁盘限额 */
struct list_head i_devices; // 块设备链表 */
struct pipe_inode_info *i_pipe; // 管道信息 */
struct block_device *i_bdev; // 块设备驱动 */
unsigned long i_dnotify_mask; // 目录通知掩码 */
struct dnotify_struct *i_dnotify; // 目录通知 */
unsigned long i_state; // 状态标志 */
unsigned long dirtied_when; // 首次修改时间 */
unsigned int i_flags; // 文件系统标志 */
unsigned char i_sock; // 可能是个套接字吧 */
atomic_t i_writecount; // 写���记数 */
void *i_security; // 安全模块 */
__u32 i_generation; // 索引节点版本号 */
union {
void *generic_ip; // 文件特殊信息 */
} u;
};
Linux目录与inode 深入理解(2)
内容版权声明:除非注明,否则皆为本站原创文章。