0%

硬盘相关知识

硬盘

机械式硬盘

由磁片,磁头构成,磁盘按扇区划分 机械式磁盘可以由多个磁盘片构成 每个磁盘片相同位置的扇区,每个大小512Byte构成的一个空心圆柱叫做柱面 为了实现快速数据读写,硬盘往往会多个磁头向多个磁盘片同时写入数据 同一个文件,会被写到多个磁盘片内

低级格式化

划分磁道,扇区

磁道

磁头在磁盘掠过的每个圆环叫一个磁道,每个磁道可以分成若干个扇区.

扇区

扇区,每个大小为512Byte,历史中的每个扇区的大小为512Byte,但是随着技术发展,大家约定俗成的扇区大小变成了4096Byte,但是为了兼容以前的操作系统,磁盘允许每个4096Byte扇区虚拟为八个512Byte,如果所有数据都是从4096Byte扇区的头512Byte开始写入,而不是从后3584Byte中开始写入,这叫做4K对齐 如果从后7个虚拟扇区开始写入,就叫做4K不对齐 4K对齐的好处很多,比如数据写入速度变快,因为扇区的大小越大,所形成的扇区数就明显变少,超过扇区大小的数据存储在多个块中时,所需要操作系统寻找的扇区变少,数据能更快的存储 如果仍然使用512为一块/簇,会造成写入速度极慢

柱面

每个硬盘都会有许多块磁片,可以同时写入,加快写入效率,缺点就是,一但有一片瓷片损坏,整个硬盘数据都会发生损坏,整个柱面都是不可用的

块/block

windows中,存储数据以簇为单位,linux中,以块为单位(只是叫法不同,但是实际含义都是一个意思),系统中常常规定多少个扇区为一个簇(块),因为一个扇区的大小为512b,所以簇(块)必须为扇区的整数倍,常见的簇(块)大小为1024b,2048b,4096b(4k最常用) 每个块/簇由2^n倍的扇区构成

主引导记录mbr

零磁道,零扇区 512Byte,叫做主引导记录 这个存储空间被划分为三个片段 446Byte:bootloader 启动器,一段代码程序,用于从分区中加载内核(kernel) 64Byte: 16Byte: 用于标识一个分区 最高四个分区,16Byte*4 2Byte: 魔数 标记mbr是否有效

电脑的启动过程

主板加电,bios程序读入内存,cpu执行bios程序,bios自检程序完成后,加载用户定义的启动顺序 开始寻找磁盘上的mbr,当找到有效的mbr后,bios把mbr存储的bootloader加载入内存,bios程序退出,bootloader开始执行 找到预定的特定分区,寻找操作系统的内核,加载入内存,完成内核的解压缩,运行在内存上,bootloader退出,内核开始工作 内核被加载入特权级0的区域

深入理解Linux启动过程 Linux内核的加载过程 initrd 和 initramfs

扩展分区

存储于硬盘mbr,存储一个指针指向另一个地址,用于绑定扩展分区

分区

一个硬盘被分成若干个逻辑块,用标号进行标识分区,例如sdX

高级格式化

用于创建文件系统,mk2fs

文件系统

也是程序的一种,他负责文件的增删改查 文件系统分为几个部分,磁盘引导,超级块,inode池,数据存储区

inode

inode用于记录文件的一些属性,包括修改时间,创建时间,文件数据块的位置,硬链接数,权限,UID,GID等,但不记录文件名,文件名由文件夹记录 详细请下载linuxkernel 在include/linux struct inode结构体中有详细声明

inode table

文件系统中专门分出用于存储inode文件的地方,inode文件每个大小一般为128Byte或256Byte,inode数量在创建文件系统时给出,按照一定比例生成inode,比如两个块一个inode

位图/Bitmap

使用1/0来记录块是否被使用,使用inode的原因是,便于操作系统识别未使用过的系统资源,方便检索 block bitmap:记录块的使用情况 inode bitmap:记录inode的使用情况

超级块/Super Block

开头的第一个byte是byte 0,从 byte 1024开始往后的一部分数据。超级块中的数据其实就是文件卷的控制信息部分,也可以说它是卷资源表,有关文件卷的大部分信息都保存在这里。例如:硬盘分区中每个block的大小、硬盘分区上一共有多少个block group、以及每个block group中有多少个inode.超级块存在备份,创建文件系统的时候被随机备份于若干块中,若分区superblock被破坏,可以使用备份块恢复

vfs

不同文件系统的协调器,给出了一个统一接口

分区命令

fdisk 指定硬盘 m为操作方法

安全卸载硬盘

要先杀死所有在分区上运行着的程序

1
fuser -mk 挂载点

重新分区

需要先把硬盘第一个分区(MBR)的所有信息清除

1
dd -if /dev/zero -of 硬盘设备文件 bs=512 count=1

恰饭,恰饭