1. 程式人生 > >Linux 文件索引(inode)

Linux 文件索引(inode)

文件系統 files 2.3 mod mounted urn pre oot 獲取

1、簡介

    ceph 文件系統中 接觸太多 文件索引 的相關 操作,因此 還是 整理下 關於 Linux 文件索引 inode 相關知識(註意:本文 所描述的 都是 在同一個文件系統中,跨文件系統 情況 會有所不同)
    

1.1 inode

    inode 也被稱為 索引(表項),主要包含 如下一些信息

  • 文件類型
  • 權限
  • UID
  • GID
  • 文件大小
  • 文件時間(三個時間屬性)
  • 刪除時間
  • 鏈接數(軟鏈接、硬鏈接)
  • 文件在磁盤的數據塊位置信息
  • 其它元數據信息
        

1.2 顯示文件信息

1.2.1 文件屬性

## 獲取文件 屬性
# stat hosts
  File: ‘hosts‘
  Size: 186         Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d  Inode: 786776      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-04-23 10:44:33.076000301 +0800
Modify: 2017-10-17 13:45:05.862183948 +0800
Change: 2017-10-17 13:45:05.862183948 +0800
 Birth: -

    

1.2.2 目錄屬性

## 獲取目錄屬性
# stat /etc/
  File: ‘/etc/‘
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 803h/2051d  Inode: 786433      Links: 89
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-04-23 10:45:38.343525394 +0800
Modify: 2019-04-16 09:51:15.453364823 +0800
Change: 2019-04-16 09:51:15.453364823 +0800
 Birth: -

    

2、inode 查看

2.1 文件 inode

2.1.1 普通文件

## 文件查看 inode
# ls -il /etc/hosts
786776 -rw-r--r-- 1 root root 186 Oct 17  2017 /etc/hosts

    

2.1.2 目錄

## 目錄查看 inode
# ls -li -d /etc/
786433 drwxr-xr-x 89 root root 4096 Apr 16 09:51 /etc/

    

2.2 磁盤 inode(df)

## inode 不足時,哪怕 磁盤有剩余空間,也無法 寫入文件
# df --inode
Filesystem      Inodes IUsed   IFree IUse% Mounted on
udev             55269   484   54785    1% /dev
tmpfs            60278   649   59629    2% /run
/dev/sda3      3096576 69768 3026808    3% /
tmpfs            60278     1   60277    1% /dev/shm
tmpfs            60278     3   60275    1% /run/lock
tmpfs            60278    16   60262    1% /sys/fs/cgroup
/dev/sda1        61056   302   60754    1% /boot
tmpfs            60278     4   60274    1% /run/user/1000

    

2.3 superblock inode(tune2fs)

# tune2fs -l /dev/sda1 | grep inode
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Free inodes:              60754
First inode:              11
Journal inode:            8
Journal backup:           inode blocks

    

3、inode 操作、狀態

3.1 文件查找 基於 inode

# find /etc -inum 786776
/etc/hosts

    

3.2 文件基本操作(增、刪、改) inode狀態

3.2.1 創建文件

# touch inode_1
# ls -il inode_1 
1310729 -rw-r--r-- 1 root root 0 Apr 23 14:11 inode_1

# touch inode_2
# ls -il inode_2
1310730 -rw-r--r-- 1 root root 0 Apr 23 14:11 inode_2

3.2.2 拷貝文件

## 拷貝後的 目標文件,會被賦予新的 inode
# cp /etc/hosts /opt/inode_cp
# ls -il /opt/inode_cp 
1310726 -rw-r--r-- 1 root root 186 Apr 23 11:07 /opt/inode_cp

    

3.2.3 移動文件

## mv 後的目標文件,保留原有的 inode(文件時間屬性 會改變)
# mv /opt/inode_cp /opt/inode_mv
# ls -il /opt/inode_mv 
1310726 -rw-r--r-- 1 root root 186 Apr 23 11:07 /opt/inode_mv

    

3.2.4 刪除文件

## 被刪除 文件的 inode 可以被別的文件使用
# ls -il inode_2 
1310730 -rw-r--r-- 1 root root 0 Apr 23 14:13 inode_2

# rm inode_2 
# touch inode_3
# ls -il inode_3
1310730 -rw-r--r-- 1 root root 0 Apr 23 14:13 inode_3

    

3.2.5 編輯文件

## 編輯 文件文本內容 不會 改變 inode
# vim inode_3 
# ls -il inode_3
1310732 -rw-r--r-- 1 root root 3 Apr 23 14:14 inode_3

    

3.3 鏈接文件 inode狀態

    鏈接 分為兩種,硬鏈接 和 軟鏈接(本文 主要 描述 inode,所以 鏈接相關的 不會進行描述)
    

3.3.1 軟鏈接 inode狀態

## 軟鏈接 inode 不同
# ln -s fork fork_soft_link 
# ls -il
... ...
1310724 -rwxr-xr-x 2 root root 8920 Mar 20 16:32 fork
1310728 lrwxrwxrwx 1 root root    4 Apr 23 13:43 fork_soft_link -> fork

    

3.3.2 硬鏈接 inode狀態

## 硬鏈接 inode 相同
# ln fork fork_hard_link
# ls -il
... ...
1310724 -rwxr-xr-x 2 root root 8920 Mar 20 16:32 fork
1310724 -rwxr-xr-x 2 root root 8920 Mar 20 16:32 fork_hard_link

Linux 文件索引(inode)