浅谈inode和block与磁盘性能的初级优化
什么是inode和block?
所謂的inode就是索引節(jié)點(index node)的意思,在每一個存儲設(shè)備被格式化創(chuàng)建文件系統(tǒng)后,所有的文件大致被分為了兩部分,分別是inode和block。
其中inode用來存儲文件屬性信息,其中包括了文件大小,文件的歸屬者,文件的歸屬組,權(quán)限,類型,修改時間,以及指向文件實體數(shù)據(jù)(block)的指針。
block中存儲的就是文件的實際數(shù)據(jù),比如說,照片,視頻,音頻等等,但是有一點需要注意!就是inode當中不包含文件名!一個文件的文件名,存儲在上級目錄的block中!
其實inode和block之間的關(guān)系就像是一本書一樣,inode是一本書的目錄,一本書會有很多內(nèi)容,一個知識點或者一個故事會占很多頁,一個block就相當于書中的一頁內(nèi)容。
所以說一般情況下一個inode會對應(yīng)一個或多個block。
inode和block的大小是可以手動去指定的,并且在不同的操作系統(tǒng)和文件系統(tǒng)下inode和block的大小是不一樣的,下面就以centos6為例,如果想查看指定分區(qū)的inode大小和block大小可以使用dumpe2fs命令去查看。
例如:
dumpe2fs /dev/sda1 | grep -i "Inode size"
查看inode大小。
dumpe2fs /dev/sda1| grep -i "block size"
查看block大小。
如果,在centos6系統(tǒng)下查看本機磁盤的inode使用情況可以使用df -i 命令去查看。
df命令的-i參數(shù)可以查看本機分區(qū)中一共生成了多少inode,以及使用了多少inode,還剩余多少inode可用。
簡單了解了inode和block后,下面說一個關(guān)于block與磁盤I/O性能的基礎(chǔ)調(diào)優(yōu)。
磁盤在讀取數(shù)據(jù)的時候,是按照block為單位來讀取的。
其實block的大小與業(yè)務(wù)與磁盤的I/O性能有著密不可分的關(guān)系。
block并非越大越好或者越小越好,還是要看業(yè)務(wù),下面就舉兩個例子。
如果遇到這種單個文件特別小(小于一個block),而且這種小文件特別多,block設(shè)置的太大則對block是一種浪費!這是因為一個文件不管有多小,它都會占用一個inode和一整個block,假如說一個block的大小為4k,磁盤里有一個小文件是1k,那么這個小文件會把4k的一整個block全部占用,剩下的3k就白白浪費掉了。
如果單個文件很大的情況下,block設(shè)置的很小,就需要讀取多個block,這對磁盤I/O是一種消耗(因為每讀取一個block都會消耗磁盤I/O,磁盤每次讀取都是以block為單位的)
如果單個文件很大,適當?shù)募哟骲lock的大小則會提高磁盤的讀取效率,減少了磁盤的I/O。
當block設(shè)置的太小,則會影響大文件的讀取效率,如果block設(shè)置的太小,那么存儲一個大文件就需要很多很多block,在讀取數(shù)據(jù)的時候就需要到很多block中去讀取內(nèi)容,剛剛說過,磁盤每次讀取內(nèi)容都是以block為單位的,每讀取一個block都會浪費一次磁盤I/O,所以,磁盤讀取大文件的效率就回大大降低~
所以,根據(jù)業(yè)務(wù)的不同對block做一些調(diào)整,可以提高磁盤的利用率和讀取性能。
inode和block的大小在創(chuàng)建文件系統(tǒng)(格式化分區(qū))時就可以指定了。下面是示例~
mkfs.ext4 -b 4096 -I 1024 /dev/sdb1
(-b參數(shù)用來指定這個分區(qū)每個block的大小,單位為byte)
(-i 參數(shù)用來指定每個inode的大小,單位同樣為byte)
最后做幾點補充:
一個文件的文件名,存放于上級目錄的block中。
多個文件可以占用同一個inode(linux的硬鏈接就是這個原理)
但是一個block只能屬于一個文件。
? ? ? 本文轉(zhuǎn)自蘇浩智 51CTO博客,原文鏈接:http://blog.51cto.com/suhaozhi/1904590,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的浅谈inode和block与磁盘性能的初级优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP - 如何在函数内访问另一个文件中
- 下一篇: linux查找文件里面的内容