当前位置: 技术问答>linux和unix
linux下文件所占用的物理磁盘地址存在哪儿的????????
来源: 互联网 发布时间:2016-12-14
本文导语: RT,比如在linux下某文件系统里有文件a,那么对于内核文件系统来说这个文件所占用的物理磁盘地址或者block是放在哪个结构里面的的,有人知道吗 | 对于文件系统来说,分为super block、inode、...
RT,比如在linux下某文件系统里有文件a,那么对于内核文件系统来说这个文件所占用的物理磁盘地址或者block是放在哪个结构里面的的,有人知道吗
|
对于文件系统来说,分为super block、inode、block
其中super block描述了该分区的使用情况等一系列信息,比如是否挂载等
inode描述了文件的属性已经存放在哪个block中
而block是真正存放文件内容的地方
一个block就是文件系统的块大小,一般为1k、2k或4k
文件系统挂载到目录树以后,内核就可以访问文件系统上的文件
其中super block描述了该分区的使用情况等一系列信息,比如是否挂载等
inode描述了文件的属性已经存放在哪个block中
而block是真正存放文件内容的地方
一个block就是文件系统的块大小,一般为1k、2k或4k
文件系统挂载到目录树以后,内核就可以访问文件系统上的文件
|
网上找的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;
};