Linux目录与inode 深入理解(2)

从上述结果中,我们可以看出,针对/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;
};

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13894.html