Linux下磁盘管理

时间:2022-07-07 05:13:35

Linux下磁盘管理

首先,对于磁盘,磁盘在出厂的时候,厂商对磁盘进行了低级格式化,进行了磁道的划分,磁盘基本结构是柱面,一般的民用磁盘都是单碟片,磁盘在无尘真空环境下运行。
磁盘作为存储大部分数据的主要存储结构,在安装完系统之后会有磁盘引导记录写入磁盘的启动区,也就是MBR(main boot record ),MBR总共512个字节(bytes),功能为存储引导记录,其中446bytes用于存储Bootloader (引导加载器,位于磁盘的0磁道0扇区),64bytes用于标识主分区(4*16bytes,标识4个分区)。剩余的2bytes用于存储magic number(用于标记MBR 是否有效)。
然后就是文件系统了,文件系统作为内核中的一个功能接口提供给用户使用,不直接存储在于硬盘上,Linux下的虚拟文件系统(VFS)给所有的用户程序提供了统一的使用接口,用户程序通过虚拟文件系统对磁盘上的文件进行文件的I/O操作,用户进程可以实现用于某个硬盘设备的分区,给它格式化为内核支持的文件系统的类型,分区后划分的数据块组,每一个块组
(受损会寻找下一个块组)|super block|GDT|block bitmap|inode bitmap|inode table |data block|
在ext2(extended)中,文件系统分为两部分,一部分是源数据存储区(磁盘分区的时候系统预留了源数据区域),一部分是数据块存储区。其中源数据区存放了super block ,GDT,block bitmap,inode bitmap ,inode table。
其中super block存放了整个分区块中的全局信息,包括1,块组数量,2,块组中包含多少个块,3,块大小,4,空闲磁盘块,已用磁盘块,空闲inode,已用inode(整体),创建文件系统的时候会对super block进行备份;
GDT则是块组描述符表:每一个逻辑块组的起始(创建文件系统的时候会对GDT进行备份多个),(预留)第0块无法使用:bootblock:用于存放系统的bootloader(多系统情况下)
block bitmap是块的bitmap(表位图),用于快速检索块的使用情况,每个数据块对应有一个存储位,对块的使用情况进行记录;
inode bitmap则是inode的bitmap,用于快速检索inode的使用与否;
inode table则是记录了整个块组中所有文件inode,文件检索的时候可以通过inode来查找文件。Inode table中包括,1,权限mode,2,属主信息 Owninfo,3,大小 size ,4,时间戳 timestamps,5,直接引用块(一级磁盘块指针) direct block,6,间接磁盘块指针 indirect block,7,二级间接磁盘指针 second indirect ,8,三级间接磁盘指针 Triple indirect.
注:其中内核到根目录是自引用。其他目录可作为入口的访问入口独立与入口中数据存放分区之外。其中:/etc ;/bin ;/sbin这几个目录不能独立分区到其他数据组块区;所有目录都挂载归并在根目录下
一个磁盘块只能存储一个文件,但可以有多个路径(硬链接)
目录中保存了文件名称和对应的inode
单个文件的大小限制由 inode table决定
新建文件的步骤:
扫描inode bitmap ——>选取一个未被占用的inode——>找到目录所对应的inode和磁盘块——>将磁盘块上的表建立新条目——>将inode存入目录项。
删除文件:
对应目录上的条目删除(包括inode和文件名)——>将inode在块位图(inode bitmap)中标记为空,将数据块标记为空 ——>文件删除完成
剪切文件:
只需要在原来将原来目录上的条目删除,然后添加到新的目录上的条目去即可。
文件复制:
创建一个新的文件,并且将源数据复制过去。
查找文件:以/var/backups/group.bak文件为例
找到根目录——》找到根下目录的/var目录inode——》根据inode table找到磁盘块——》查找到磁盘块中目录文件子目录/var/backups 的inode——》返回查找 inode table——》在查找文件或文件路径/var/backups的目录的所在数据块——》查找文件或者目录中是否有条目的inode符合条件——》……
分区后再划分为n个逻辑组的子分区为块组block group (注:存放块组信息的是super block中的全局描述信息。
补充:用户所有进程都运行在用户空间,具有用户的权限。内核模式(内核空间):具有特殊权限并且于硬件打交道,文件系统对文件的操作都应该由文件系统对内核的调用接口来实现。
在存在数据的分区上重新分区会破坏原有文件系统和数据。