做運維的估計都知道使用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; /* 可以忽略 */
- };