做运维的估计都知道使用ext3文件系统时删除大文件很慢,那么大家有没有想过为什么呢?我也有过同样的疑问,于是查了相关资料并找到了一些理由。
在ext系列的文件系统中有一个很重要的概念inode(它与文件独立存在),它维护了文件的相关属性信息。
struct ext3_inode { __u16 i_mode; /* File mode */ __u16 i_uid; /* Low 16 bits of Owner Uid */ __u32 i_size; /* 文件大小,单位是 byte */ __u32 i_atime; /* Access time */ __u32 i_ctime; /* Creation time */ __u32 i_mtime; /* Modification time */ __u32 i_dtime; /* Deletion Time */ __u16 i_gid; /* Low 16 bits of Group Id */ __u16 i_links_count; /* Links count */ __u32 i_blocks; /* blocks 计数 */ __u32 i_flags; /* File flags */ __u32 l_i_reserved1; /* 可以忽略 */ __u32 i_block[EXT3_N_BLOCKS]; /* 一组 block 指针 */ __u32 i_generation; /* 可以忽略 */ __u32 i_file_acl; /* 可以忽略 */ __u32 i_dir_acl; /* 可以忽略 */ __u32 i_faddr; /* 可以忽略 */ __u8 l_i_frag; /* 可以忽略 */ __u8 l_i_fsize; /* 可以忽略 */ __u16 i_pad1; /* 可以忽略 */ __u16 l_i_uid_high; /* 可以忽略 */ __u16 l_i_gid_high; /* 可以忽略 */ __u32 l_i_reserved2; /* 可以忽略 */ };