文件系统块和内存页
在说fdisk之前,先说一下操作系统通过分页的方式使用内存,文件系统通过block使用存储,那么他们大小怎么获取呢
首先是获取内存分页大小
# getconf PAGESIZE
4096
然后是获取系统block大小
# sudo /sbin/tune2fs -l /dev/vda1|grep "Block size"
Block size: 4096
因为文件系统嫌扇区太小,不好操作,所以一般都是将8个扇区合并成一个block,每个扇区大小是512个字节,所以block大小是4096字节。而且保持分页大小和块大小一致便于内存换出等操作。
磁盘本身是通过CHS的方式管理,文件系统是通过block。
fdisk的一点区别
fdisk这个命令大家可能都比较了解,我这篇blog不是和大家说怎么用它,而是它在不同系统上面的差异,先看一个
这个里面的start和end是柱面
而对于下面的系统
它的start和end代表的是扇区,所以要根据情况而定。而这里的blocks就更奇怪了,它是扇区数的一半。
查找对应关系
如果你通过内核得知扇区的位置,怎么有找到文件呢,下面就逐一介绍一下
1.扇区找块
fdisk -lu /dev/设备名称
就可以知道扇区所在操作系统分区,并且可以知道分区的起始扇区
2.确定block
Blocks值 = (出错扇区 – 分区起始扇区)/ 8
3.确定inode
debugfs 分区名称
icheck <block值>
4.确定文件
debugfs 分区名称
ncheck <inode>
这样就能找到相应的文件位置了。