您好,登錄后才能下訂單哦!
本篇內容主要講解“Linux inode的基礎概念”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Linux inode的基礎概念”吧!
在理解inode之前,先了解下磁盤扇區,磁盤的最小單位,我們都知道,磁盤一個扇區是512個字節。磁盤讀寫是都是按照塊來操作的,一個塊一般是4K,也就是連續的8個扇區,以塊為單位讀寫是為了提高性能。
文件數據都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"。
磁盤上inode節點存儲和數據“塊”存儲是在兩個不同的區域,inode存儲文件的元數據,但是不包括變長的文件名信息,因此inode大小是固定的,包含的元數據如下:
* 文件的字節數
* 文件擁有者的User ID
* 文件的Group ID
* 文件的讀、寫、執行權限
* 文件的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指文件內容上一次變動的時間,atime指文件上一次打開的時間。
* 鏈接數,即有多少文件名指向這個inode
* 文件數據block的位置
可以使用 stat file_name 查看文件的inode數據,硬盤格式化的時候,操作系統自動將硬盤分成兩個區域。一個是數據區,存放文件數據;另一個是inode區(inode table),存放inode所包含的信息。
每個inode節點的大小,一般是128字節或256字節。inode節點的總數,在格式化時就給定,一般是每1KB或每2KB就設置一個inode。假定在一塊1GB的硬盤中,每個inode節點的大小為128字節,每1KB就設置一個inode,那么inode table的大小就會達到128MB,占整塊硬盤的12.8%。
因此,對于存儲大量小文件來說,可能文件系統的inode不夠用,如果inode資源耗盡,就無法新建文件。比如阿里的TFS(專門用于存儲小文件的分布式存儲)就是將小文件合并成“大塊”文件來存儲的,節省inode資源。
可以使用 df -i 查看各個分區的Inode使用情況:
[luoxn28@localhost ~]$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 9283072 297711 8985361 4% /
devtmpfs 180632 384 180248 1% /dev
tmpfs 184648 1 184647 1% /dev/shm
tmpfs 184648 914 183734 1% /run
tmpfs 184648 16 184632 1% /sys/fs/cgroup
/dev/sda1 153600 334 153266 1% /boot
tmpfs 184648 20 184628 1% /run/user/1000
進程打開innode狀態圖如下:
由于進程中File對象有獨立的文件偏移量(current file offset),因此多個進程可以讀寫文件的不同位置的數據,但是一般不建議這樣玩,因為系統不保證該情況下的寫的原子性,多進程可以通過文件鎖實現對文件內容的寫保護。
每個inode都有一個號碼,操作系統用inode號碼來識別不同的文件。Unix/Linux系統內部不使用文件名,而使用inode號碼來識別文件。對于系統來說,文件名只是inode號碼便于識別的別稱或者綽號。
表面上,用戶通過文件名,打開文件。實際上,系統內部這個過程分成三步:首先,系統找到這個文件名對應的inode號碼;其次,通過inode號碼,獲取inode信息;最后,根據inode信息,找到文件數據所在的block,讀出數據。使用*ls -i file_name*
命令可以查看inode號碼。
目錄也是一種文件,也有自己的inode,其inode本身存儲該目錄的元信息,對應的塊內容存儲一系列文件(目錄+文件),每個文件包括文件名及其對應的inode編號。
硬鏈接和軟連接都是對應同一個文件塊,只不過:
硬鏈接:兩個文件名對應同一個inode節點,只不過inode節點的連接數為2,刪除其中一個硬鏈接時不會真正刪除文件,只有在inode連接數為0時才會刪除文件;
軟連接:兩個文件名分別對應各自的inode節點,這兩個inode節點指向同一個文件塊,通過原來文件名刪除文件后,建立的軟連接無法使用了,軟連接類似于windows的快捷方式。
到此,相信大家對“Linux inode的基礎概念”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。