码迷,mamicode.com
首页 > 其他好文 > 详细

iNode与Block

时间:2017-02-26 12:52:24      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:inode   block   

1. inode和block

---------------------------------
    先介绍一下硬盘的整体结构。硬盘中包含多个硬盘盘片,硬盘盘片为圆形,每个硬盘盘片都有一个可以读写的磁头(Head),将这个磁头固定,使硬盘盘片旋转一周,所走轨迹就是磁道(Track)。硬盘内所有盘片的相同磁道号的集合成为磁柱(Cylinder)。每一磁道被划分成许多区域,每个区域叫一个扇区(Sector)。扇区是硬盘的最小存储物理量,一个扇区的存储容量大约是512字节(约0.5K)

    知道了硬盘的大体结构之后,再来谈谈怎么进行硬盘分区。进行硬盘分割的最小单位是磁柱,分割完之后自然就是格式化(format)。在Linux中进行格式化必须考虑Block与inode,Block还好理解,它是磁盘可以记录的最小单位,是由数个扇区组成,所以大小通常为n*512Bytes,例如4K。

    Block是记录文件内容的区域,inode则是记录该文件的属性及其放置在哪个Block之内的信息。所以,每个文件都会占用一个inode。当Linux系统要查找某个文件时,它会先搜索inode table找到这个文件的属性及数据存放地点,然后再查找数据存放的Block进而将数据取出。inode数量在一开始已被设定好,其设定方式通常是"硬盘大小/一个容量",这个容量比Block大一些较佳,例如刚才将Block设为4K,那么这个容量可以设为8K左右。所以,一块1GB的硬盘如果以8K大小划分它的inode数,则会有131072个inode。一个inode的大小为128Byte,这样,我们就可以清楚地知道,一个分区被格式化为一个文件系统之后,基本上它一定会有inode table与数据区域两大块,一个用来记录文件的属性信息与该文件存放的Block块,一个用来记录文件的内容。

2. 硬链接
---------------------------------
    当系统要读取某个文件时,它会先读inode table,然后根据inode的信息到数据区域将数据取出备用。硬链接就是再建立一个inode链接到文件放置的Block块。也就是说,进行硬链接时,实际上您的文件内容不会改变,只是原来的inode与后来添加的inode均可指定到该文件存放的地点,因此,读取两个inode的结果都是读取同一个文件的内容。不过,这样一来就有个问题,因为inode会链接到Block块,而"目录"本身仅消耗inode,这样,硬链接就不能链接目录。所以,硬链接有两个最大的限制:
    (1) 不能跨文件系统,因为不同的文件系统有不同的inode table;
    (2) 不能链接目录。

3. 软链接(符号链接)
---------------------------------
    相对于硬链接,符号链接比较好理解,基本上,它是再建立一个独立文件,而这个文件会让数据读取操作指向它链接的那个文件。由于只是利用文件作为指向的动作,所以,当源文件被删除,符号链接的文件就打不开了,屏幕会显式"无法开启某文件"。
    因此,硬链接比较安全,因为即某一个inode被删除,只要还有一个inode,该文件就能被找到。


总结

磁盘分区格式化为ext4文件系统后会生成一定数量的inode和block;

一个文件被创建后至少要占用一个inode和一个block;


用书来做比喻:

①首页的目录索引就相当于Inode;

②每一页就是一个Block;

③整本书就是一个磁盘或分区。


inode的知识:

(1)inode是索引节点,作用是存放文件的属性信息以及作为文件的索引,指向文件的实体->Block;

(2)inode是一块存储空间,Centos6非启动分区inode默认大小字节为256字节,Centos5为128字节;

(3)inode是一串数字,不同文件对应的inode(一串数字)在文件系统中是唯一的;

(4)inode相同的文件,互为硬链接的文件;

(5)查看inode总量与使用量情况的命令:df -i:


Block的知识:

(1)磁盘Blck读取数据是按block为单位读取的;

(2)ext3/ext4文件系统的Block存放的是文件的实际内容;

(3)一个文件可能占用多个block,每读取一个block就会消耗一次磁盘IO;

(4)如果要提升磁盘的性能的话,那么就要尽可能一次性地读取数据数量足够多;

(5)如果文件很小,也至少要占用一个block并且剩余空间不能被使用;如果block的大小为4k,那么存放1K的文件,剩余3K就浪费了;

(6)block并非越大越好,Block太大对于小文件的存放就会浪费磁盘空间;

例如:1000K的文件,Block为4K,占用250个Block;

    Block为1K,占用1000个Block。

消耗磁盘IO分别为:1000次与250次,试问谁的效率更高?

(7)多数为大文件(大于16K)一般设置Block大一点;

         多数为小文件(小于16K)一般设置Block小一点。

(8)Block设置也是磁盘化分区的时候:

mkfs.ext4 -b 2048 -1 2056 /dev/sdb

(9)文件较大时Block设置大一些会提升磁盘效率;

(10)block的大小有1k,2k,4k,其中引导分区等均为1k,其他普通分区为4k(centos6)。(视频等特殊业务可以调大block值)。


查看磁盘中inode及block的大小与数量:

技术分享

本文出自 “” 博客,请务必保留此出处http://jinyudong.blog.51cto.com/10990408/1901336

iNode与Block

标签:inode   block   

原文地址:http://jinyudong.blog.51cto.com/10990408/1901336

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!