磁盘读写与文件系统

磁盘读写与文件系统

了解以及加深记忆对于linux系统的文件系统以及一些磁盘的知识
一般来说 平常用的磁盘有ide,STAT,SCSI,USB,FLASH等等
/dev/sd[a-p][1-15]:SATA SCSI UB FLASH常用的
/dev/hd[a-d][1-63]:IDE的
磁柱cylnder是分区partition的最小单位
磁区sector是最小的物理存储单位 一般为512bytes
第一个sector: 1 master boot record MBR 大小为446bytes
2 partition table 分区表 大小为64byties
linux的文件系统一般都将 1: 权限与属性等放到inode里面
2: data放在data block
另外还有一个superblock记录整个文件系统的整体信息,包括inode与block,flag之类的
linux的文件系统采用的是索引式文件系统 indexed ollocation
顾名思义就是采用inode索引点来进行查找读取写入
window的例如FAT 格式  是记录在block里面,每个文件要从一个block找连接到另外一个block,一个接一个的找,这样经常做成所谓的碎片,其实是一些没有连接的block块,
block 一般分为 1k 2k 4k,  自己可以设定,block的大小是根据你文件系统的用途来设置,这个也是对文件系统优化的其中一个手段.
superblock 大小为1024bytes,理论上每个文件系统都只含有一个sb-简写superblock,
但是实际上或许还有备份的sb存在,用来作为恢复.
可以使用dumpe2fs -h查看 或者tune2fs -l查看
filesystem description 文件系统描述说明
说明blockgroup开始与结束的block号码,以及sb,bitmap,inodemap,datablock分别位于那些block之间
block bitmap 区块对照表
查看那些已用或未用的block
inode bitmap ―inode对照表
查看哪些已用或未用的inode
superblock 一般是在0号与1号的block区块内,具体不明白看 boot sector与superblock
group description 在1号block
block bitmap 在627   inode bitmap 在628
ls -i 可以查看文件的inode
inode 仅有12个直接指向 ,因此会利用其他的一个或多个block来延伸作为号码记录
每个inode的大小为128bytes
ext2会分配一个inode与相对于该文件大小的block的数量给该文件
ext2文件读取流程
透过挂载点信息找到/dev/xxx(xxx代表挂载目录,设备) 的inode号码(且拥有相关权限才可以进行下去)->找到block号码并找到/ooo/(ooo代表目录)的inode号码(且有用相关权限可 以进行下去)->读取该目录block内容->取得文件的inode号码(且有用相关权限可以进行下去)->读取文件block的内容
ext2/3的文件写入流程
确定权限->根据innode bitmap找到没有使用的inode号码,并将新文件的权限等属性写入->根据block bitmap找到没有使用的block号码,并将实际的数据写入block中,且更新inode的block指向数据->将刚刚写入的inode与 block信息同步更新到inode bitmap和block bitmap,并更新superblock的内容
inode table 和datablock  称为资料存放区域
superblock blockbitmap  inodebitmap 称为metadata 中介信息
在一般正常的情�r下,上述的新增�幼鳟�然可以�利的完成。但是如果有���f一怎�N�k? 例如你的�n案在��入�n案系�y�r,因�椴恢�名原因�е孪到y中��(例如突然的停�啊、 系�y核心�l生�e�`啊~等等的怪事�l生�r),所以��入的�Y料�H有 inode table 及 data block 而已, 最後一��同步更新中介�Y料的步�E�K�]有做完,此�r就���l生 metadata 的�热菖c���H�Y料存放�^�a生 不一致 (Inconsistent) 的情�r了.―――――�C产生了ext3的主要原因
ext2 使用e2fsck修复,原理是superblock当中的记录vail bit 与filesyetem state(clean与否)来判定
文件系统的运作是 asynchronous 非同步处理机制
检验文件是否dirty 来进行选择性写入数据
一般最好用sync手动式进行数据写入
一般来说 filesystem 最顶层的目录的inode是2号!
VFS virtual filesystem switch
ext2-vfs

你可能感兴趣的:(职场,休闲,磁盘读写与文件系统)