天天看点

linux 如何磁盘存储,Linux磁盘存储

设备文件

在linux中一切皆文件,在linux之上所有的操作都是通过文件来实现的,每一个设备都有一个文件作为他的访问入口,此文件我们称为设备文件。

设备也分为:

块设备:block 单位为 “块” 磁盘

字符设备: char 单位为 “字符” 键盘 设备号码:用来标识设备。每一个设备都有不同的设备号

主设备号:major numbar,标识设备类型

次设备号:minor numbar,设备同一类型下不同的设备。

设备接口类型

并行:

IDE: 133MB/s

SCSI:640MB/s

串行:

SATA :6Gbps

SAS :6Gbps

USB : 480MB/s

linux 如何磁盘存储,Linux磁盘存储

机械硬盘和固态硬盘

机械硬盘(HDD)

即传统的硬盘,构造一般由,盘片,轴,马达,机械臂,磁头组成。

固态硬盘(SSD)

用固态电子存储芯片组成的硬盘,使用方法和普通的硬盘相同。

相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍

相较于SSD,HDD在价格、容量占有绝对优势

硬盘有价,数据无价,目前SSD不能完全取代HHD。

设备文件

磁盘设备的设备文件命名:/dev/DEV_FILE

SCSI,SATA,SAS,IDE,USB:/dev/sd

一些虚拟磁盘: /dev/vd , /dev/xvd

不同磁盘标识:/dev/sda/, /dev/sdb, ...

同一设备上的不同分区:1. 2 .....

/dev/sda1, /dev/sda5

磁盘存储术语:

head :磁头

track:磁道

cylinder :柱面

sector :扇区 , 512baytes(字节)

机械磁盘结构

linux 如何磁盘存储,Linux磁盘存储

固态磁盘和机械磁盘对比

linux 如何磁盘存储,Linux磁盘存储

硬盘存储术语

linux 如何磁盘存储,Linux磁盘存储

区位记录磁盘扇区结构

ZBR(Zoned Bit Recording)

linux 如何磁盘存储,Linux磁盘存储

CHS

采用24bit位寻址

其中前10位表示cylinder,中间8位表示head,后6位表示sector

最大寻址空间8GB

LBA

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寻址方式

分区

两种分区方式: MBR , GPT .

MBR:1982年,使用32位表示扇区数,最大不超过2T

如何分区:按柱面

0磁道0扇区:512bytes

446bytes: boot loader

64bytes:分区表,其中每16bytes标识一个分区

2bytes: 55AA

MBR分区中一块硬盘最多有4个主分区,也可以3个主分区加1个扩展分区。

MBR分区结构

linux 如何磁盘存储,Linux磁盘存储

硬盘主引导记录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

MBR结构

linux 如何磁盘存储,Linux磁盘存储

MBR中DPT结构

linux 如何磁盘存储,Linux磁盘存储

GPT 分区

GPT:支持128个分区 ,使用64位,支持8Z 64Z 容量

使用128位UUID 表示磁盘和分区GPT分区表,自动备份在头尾两份,并有crc校验位

UEFI: 硬件支持GPT ,使操作系统启动

linux 如何磁盘存储,Linux磁盘存储

BIOS+MBR与UEFI+GPT

linux 如何磁盘存储,Linux磁盘存储

管理分区

列出块设备 :lsblk

创建分区使用:

fdisk :创建MBR分区

gdisk :创建GPT分区

parted: 高级分区操作

重新设置内存中的内核分区表版本

partprobe

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 列出分区信息

分区工具fdisk和gdisk

gdisk /dev/sdb 类fdisk的GPT分区工具

fdisk -l :查看分区

fdisk /dev/sdb 管理分区

子命令:

p :分区列表

t :更改分区类型

n :创建新分区

d :删除分区

v :效验分区

u :转换单位

w :保存并退出

q :不保存退出

同步分区表

查看内核是否已经识别新的分区

cat/proc/partations

centos6通知内核重新读取硬盘分区表

新增分区用:

partx -a /dev/DEVICE

kpartx -a /dev/DEVICE

删除分区用

parts -d --nr M-N /dev/device

centos5和7:使用partprobe

partprobe /dev/device