其他
Linux硬盘与文件系统(4)
block的数量与大小在格式化的时候就已经确定了,无法修改(除非重新格式化)
一个block只能放置一个文件的数据
如果文件大小比block大,那这个文件就会占用多个block
如果文件大小小于block,那这个区块的剩余容量也不能被其他文件使用
[root@studyclub ~]# mkfs.xfs -b size=4096 -i size=512 /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@studyclub ~]# mount /dev/sdb /mnt
[root@studyclub ~]# xfs_info /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
一个100M(100000K)的硬盘分区,分别写入1k和1M的文件,分别可以写多少个? 错误解答:很容易计算1k的个数:100*1000=100000个,1M的文件个数:100/1=100个。 假设block为4k大小,写入1k文件的数量 假设inode数量够多的时候,实际存放的文件数就是block的数量,浪费3/4的容量 假设inode数量小于block的数量,实际存放的文件数就是inode的数量,浪费3/4的容量 假设block为4k,写入1M的文件 硬盘空间多大,就可以写入100/1M的数量。
企业面试题:
一个100M(block的总大小、个数和单个block大小有关)的硬盘分区,分别写入0.5k的文件,及写入1M的文件,分别可以写多少个?为什么?
解答思路:先答四点知识 inode是存放文件属性信息的(也包含执行文件实体的指针),默认大小256字节,在centos7里,xfs默认是512字节。 block是存放文件实际内容的,默认大小4K 一个文件至少要占用一个inode及一个block 默认较大分区常规企业真实场景情况下,inode数量是足够的,而block数量消耗的会更快 正确解答: 默认分区常规情况下,对大文件来讲inode是足够的,而block数量消耗的会更快,block为4k的情况下,1m的文件不会有硬盘浪费,所以文件数量大概为100/1=100个 对于小文件0.1k,inode会消耗的更快,默认分区的时候block数量是大于inode数量的。每个小文件都会占用一个inode和一个block,所以最终文件的数量inode会先消耗完,文件总量是inode的最大数量。
如果向硬盘写入数据提示如下错误:No space left on device。通过df -h查看硬盘空间,发现没满,请问可能原因是什么?
答:可能是inode数量被消耗尽了。
《Linux基础及进阶》:
014 - Linux文件与目录管理(11)
015 - Linux文件与目录管理(12) 016 - Linux硬盘与文件系统(1) 017 - Linux硬盘与文件系统(2) 018 - Linux硬盘与文件系统(3)看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·