首页 > 代码库 > 文件系统inode与block
文件系统inode与block
ls -lhi:
-i:inode索引节点编号,它是文件或目录,在磁盘里的唯一标识,Linux读取文件或者目录首先要读取到这个索引节点。
查看根分区inode大小:(inode大点可以存放更多的属性)
[root@wuyike ~]# dumpe2fs /dev/sda3|grep -i "Inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size: 256
[root@wuyike ~]# dumpe2fs /dev/sda1|less
Inode count: 51200 inode个数
Block count: 204800
Reserved block count: 10240
Free blocks: 166630
Free inodes: 51162
First block: 1
Block size: 1024
dumpe2fs命令:针对ext2、3、4查询文件系统信息
[root@wuyike ~]# ls -lhi|tail -5
4363 -rw-r--r--. 1 root root 31 3月 3 08:15 awk.txt
341 drwxr-xr-x. 6 root root 4.0K 3月 3 19:35 data
14 -rw-r--r--. 1 root root 7 3月 4 03:00 test.txt
4014 -rw-r--r--. 1 root root 30 3月 4 18:51 wuyike.txt
4402 -rw-r--r--. 1 root root 0 3月 4 18:51 吴宜珂.txt
第一列:inode索引节点编号
第二列的第一个字符代表文件类型,-普通文件,d目录
第二列的后2-10个字符:rw-r--r--.文件权限,r是read读,w是write写,x执行,-代表无。
第二列的第11个字符:selinux。“.”表示getenforce=enforcing
第三列:文件的硬链接数。文件硬链接是文件的又一个入口。
第四列:文件对应的属主或者用户。
第五列:文件对用的属组或用户组。
第六列:文件大小。
第七八九列:文件被改动的时间。
第十列:文件名。
inode:
磁盘要分区,然后格式化,创建文件系统。
在每个linux存储设备或存储设备的分区被格式化为ext4文件系统后,一般都有两部分:第一部分是INode,第二部分是block。Block用来存储实际数据的,例如照片,视频等普通文件数据。而inode包含的属性信息包括文件大小、属性、归属的用户组,读写权限、文件类型、修改时间,还包含指向文件实体的指针的功能。(文件名不属于文件的属性,inode不包含文件名)
cat wuyike.txt-->找到文件名所对应的inode并查看用户有没有权限读写,若权限通过-->通过inode的指针链接找到存放wuyike.txt里面具体内容的block块。(文件很大的话,对应很多个block,block之间再相互建立链接)(wuyike.txt这个文件名在上一级目录的block中)
查看每个挂载的磁盘inode的情况:
[root@wuyike ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 610800 54694 556106 9% /
tmpfs 125543 1 125542 1% /dev/shm
/dev/sda1 51200 38 51162 1% /boot
inode小结:
1)磁盘分区格式化为ext2、3、4文件系统后会生成一定数量的inode和block
2)inode是索引节点,作用是存放文件的属性信息以及作为文件的索引。
3)ext3、ext4文件系统的block存放的是文件的实际内容。
4)block的大小一般有1k,2k,4k几种,其中引导分区等为1k,其他普通分区为4k(c6)
/boot分区:(grep -i不区分大小写)
查看block大小
[root@wuyike ~]# dumpe2fs /dev/sda1|grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 1024
/root分区:
[root@wuyike ~]# dumpe2fs /dev/sda3|grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 4096
5)inode是一块存储空间,c6非启动分区inode默认256字节,c5是128
6)inode是一串数字,不同的文件对应的inode在文件系统中是唯一的
7)inode号相同的文件,互为硬链接文件。(文件的又一个入口)
8)一个文件创建后至少要占用一个inode和一个block
9)如果文件很大,可能占用多个block。如果文件很小,至少也要占用一个block,剩余空间浪费了。
10)inode的大小与总量查看:
[root@wuyike ~]# dumpe2fs /dev/sda3|egrep -i "block size|inode size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 4096
Inode size: 256
[root@wuyike ~]# dumpe2fs /dev/sda3|egrep -i "block count|inode count"
dumpe2fs 1.41.12 (17-May-2010)
Inode count: 610800
Block count: 2438912
Reserved block count: 121945
该文件系统最多还能再放610800个文件,inode或block满了都不可以再放文件了。
一个文件系统默认Block比inode多
1)磁盘读取数据是按block为单位读取的。
2)一个文件可能占用多个block。每读一个block就会消耗一次磁盘I/O。
3)如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量多。(block稍微大一些)
4)一个block只能存放一个文件的内容,无论内容有多小,如果block 4k,那么存放1K的文件,剩余3K就浪费了。
5)BLOCK并非越大越好。BLOCK越大对于小文件存放就会浪费磁盘空间,例如:1000k的文件,block为4k,占用250个block,block为1k时,占用1000个block。访问效率谁更高?消耗IO分别为250次和1000次。
6)大文件(大于16k)一般设置BLOCK大一些,读取速度更快。小文件(小于1K)一般设置BLOCK小一些,防止浪费磁盘空间。
7)BLOCK和inode的设置是在分区格式化的时候确定的,-b block, -I inode。mkfsx.ext4 -b 2048 -I 256 /dev/sd...
8)ext3、ext4文件一般设置为4K。
面试题:
一个100M(100000K)的磁盘分区,写入1K和1M的文件,分别能写多少个?
1K的与inode数量相同。
1M的将近能写100M。
写小文件,INode会先满,写大文件,block会先满。
文件系统inode与block