磁盘存储与分区
设备文件
一切皆文件:open(), read(), write(), close()
设备类型:
- 块设备:block,存取单位“块”,磁盘
- 字符设备:char,存取单位“字符”,键盘
设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
设备号码:
- 主设备号:major number, 标识设备类型
- 次设备号:minor number, 标识同一类型下的不同设备
磁盘设备的设备文件命名:/dev/DEV_FILE
SCSI, SATA, SAS, IDE,USB: /dev/sd
虚拟磁盘:/dev/vd 、/dev/xvd
不同磁盘标识:a-z,aa,ab…
- /dev/sda, /dev/sdb, ...
同一设备上的不同分区:1,2, ...
- /dev/sda1, /dev/sda5
硬盘存储术语 - head:磁头
- track:磁道
- sector:扇区,512bytes
- cylinder:柱面
并行:
- IDE:133MB/s
- SCSI:640MB/s
串口:
- SATA:6Gbps
- SAS:6Gbps
- USB:480MB/s
机械硬盘和固态硬盘
机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤
固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致
- 相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍
- 相较于SSD,HDD在价格、容量占有绝对优势
- 硬盘有价,数据无价,目前SSD不能完全取代HHD
CHS和LBA
CHS
- 采用24bit位寻址
- 其中前10位表示cylinder,中间8位表示head,后面6位表示sector
- 最大寻址空间8GB
LBA(logical block addressing)
- LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
- ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位LBA上限达到128 GiB。2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128 Petabytes
由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式
分区
使用分区空间:
- 设备识别
- 设备分区
- 创建文件系统
- 标记文件系统
- 在/etc/fstab文件中创建条目
- 挂载新的文件系统
分区的原因:
- 优化I/O性能
- 实现磁盘空间配额限制
- 提高修复速度
- 隔离系统和程序
- 安装多个OS
- 采用不同文件系统
分区方式:
- 两种分区方式:MBR,GPT
- MBR:Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
- 如何分区:按柱面
- 0磁道0扇区:512bytes
- 446bytes: boot loader
- 64bytes:分区表,其中每16bytes标识一个分区
- 2bytes: 55AA
- MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)
MBR分区结构
硬盘主引导记录MBR由4个部分组成:
- 主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序
- 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节
- 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
- 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA
GPT分区结构
BIOS和UEFI
BIOS:
- BIOS是固化在电脑主板上一个程序,主要用于开机系统自检和引导操作系统。目前新式的电脑基本上都是UEFI启动
- BIOS(Basic Input Output System 基本输入输出系统)对于普通用户来说,主要完成系统硬件自检和引导操作系统,操作系统开始启动之后,BIOS的任务就完成了。系统硬件自检:如果系统硬件有故障,主板上的扬声器就会发出长短不同的“滴滴”音,可以简单的判断硬件故障,比如“1长1短”通常表示内存故障,“1长3短”通常表示显卡故障
- BIOS在1975年就诞生了,使用汇编语言编写,当初只有16位,因此只能访问1M的内存,其中前640K称为基本内存,后384K内存留给开机和各类BIOS本身使用。BIOS只能识别到主引导记录(MBR)初始化的硬盘,最大支持2T的硬盘,4个主分区(逻辑分区中的扩展分区除外),而目前普遍实现了64位系统,传统的BIOS已经无法满足需求了,这时英特尔主导的EFI就诞生了
UEFI:
- EFI(Extensible Firmware Interface)可扩展固件接口,是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是BIOS 的继任者 UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织
- UEFI(Unified Extensible Firmware Interface)统一的可扩展固件接口, 是一种详细描述类型接口的标准。UEFI 相当于一个轻量化的操作系统,提供了硬件和操作系统之间的一个接口,提供了图形化的操作界面。最关键的是引入了GPT分区表,支持2T以上的硬盘,硬盘分区不受限制
BIOS和UEFI区别:
- BIOS采用了16位汇编语言编写,只能运行在实模式(内存寻址方式由16位段寄存器的内容乘以16(10H)当做段基地址,加上16位偏移地址形成20位的物理地址)下,可访问的内存空间为1MB,只支持字符操作界面UEFI采用32位或者64位的C语言编写,突破了实模式的限制,可以达到最大的寻址空间,支持图形操作界面
BIOS+MBR与UEFI+GPT:
- 传统BIOS运行流程:
- 开机
- BIOS初始化
- BIOS自检
- 引导操作系统
- 进入系统
- UEFI运行流程
- 开机
- UEFI初始化
- 引导操作系统
- 进入系统
管理分区
- 列出块设备
- lsblk
- 创建分区使用:
- fdisk 创建MBR分区
- gdisk 创建GPT分区
- parted 高级分区操作
- 重新设置内存中的内核分区表版本
- partprobe
parted命令
parted的操作都是实时生效的,小心使用
用法:parted [选项]... [设备 [命令 [参数]...]...]
- parted /dev/sdb mklabel gpt|msdos
- parted /dev/sdb print
- parted /dev/sdb mkpart primary 1 200 (默认M)
- parted /dev/sdb rm 1
- parted –l 列出分区信息