1.存储基础
I/O Ports: I/O设备地址
一切皆文件:
open(), read(), write(), close()
设备类型:
块设备:block,存取单位“块”,磁盘(可以随机读写,有缓存)
字符设备:char,存取单位“字符”,键盘(顺序读写,无缓存,虚拟设备)
设备文件:
关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
设备号码:
主设备号:major number, 标识设备类型(设备的类别)
次设备号:minor number, 标识同一类型下的不同设备(同一类设备中第几个)
最小分区为一个扇区
2.计算
(1) 一个盘面的数量=512*scetors/track(一个磁道扇区数)*track(磁盘数)
(2) 1cyliner柱面=512scetors/trackhead(磁头数)
3.设备文件
磁盘设备的设备文件命名:/dev/DEV_FILE
SCSI, SATA, SAS, IDE,USB: /dev/sd
虚拟磁盘:/dev/vd
不同磁盘标识:a-z,aa,ab…
/dev/sda, /dev/sdb, ...
同一设备上的不同分区:1,2, ...
/dev/sda1, /dev/sda5
硬盘存储术语
head:磁头
track:磁道
cylinder: 柱面
sector: 扇区,512bytes
4.CHS和LBA
(1) CHS:
采用24bit位寻址,
前10位表示cylinder,中间8位表示head,后面6位表示sector。
最大寻址空间8GB
(2) LBA(logical block addressing)
LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
LBA采用48个bit位寻址
最大寻址空间128PB
由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式
或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式
5.MBR分区
为什么分区:
优化I/O性能
实现磁盘空间配额限制
提高修复速度
隔离系统和程序
安装多个OS
采用不同文件系统
- MBR: Master Boot Record
如何分区:按柱面
2bytes: 55AA
4个主分区;3主分区+1扩展(N个逻辑分区)MBR分区结构
- 硬盘主引导记录MBR由4个部分组成
(1)主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。
(2) 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。
(3) 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
(4) 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA
6.GPT分区
GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)
使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
7.管理分区
-
列出块设备
• lsblk -
parted 高级分区操作
partprobe-重新设置内存中的内核分区表版本parted命令
(CentOS7同步分区表)
parted的操作都是实时生效的,可能会破坏磁盘数据,小心使用
用法:parted [选项]... [设备 [命令 [参数]...]...]
# parted /dev/sdb mklabel gpt|msdos(MBR)(指定分区类型)
# parted /dev/sdb print
# parted /dev/sdb mkpart primary 1 200 (默认M)(从1M开始分200M)
# parted /dev/sdb rm 1
# parted -l
- fdisk -l [-u] [device...] 查看分区
fdisk /dev/sdb 管理分区
子命令:
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存并退出
q 不保存并退出
- 创建分区使用:
• fdisk 创建MBR分区
• gdisk 创建GPT分区
8.同步分区表
- 查看内核是否已经识别新的分区:
# cat /proc/partations
-
centos6通知内核重新读取硬盘分区表
新增分区用
# partx -a /dev/DEVICE
# kpartx -a /dev/DEVICE -f: force
删除分区用
# partx -d --nr M-N /dev/DEVICE
M-N连续的分区号
CentOS 5,7: 使用partprobe
#partprobe [/dev/DEVICE]