存储管理之硬件基础机械磁盘原理以及设备规范MBR格式的分区管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储管理之硬件基础机械磁盘原理以及设备规范MBR格式的分区管理相关的知识,希望对你有一定的参考价值。
Linux系统管理存储管理(服务器数据处理速度大于日常PC及移动端设备,多颗cpu,CPU多核心,每个核心可以完成一个进程的处理)
传统的机械磁盘及分区管理
RAID技术,软RAID实现
LVM
Btrfs
文件系统管理:
ext、xfs、btrfs
Linux存储管理(数据存储):
存储器在冯诺依曼体系中叫做存储器,存储设备在冯诺依曼体系中称为输入输出设备;
在计算机中除CPU【包括运算器(NU)和控制器(CU)】和内存外,其他都是输入输出设备;
北桥芯片是高速芯片,用来连接CPU和内存之间的数据传输(也会连接PCI-E高速率传输数据);南桥芯片是低速芯片,通常连接北桥芯片和输入输出设备(包括适配器)之间的数据传输;
适配器上的设备插拔最好在短点的额情况下进行插拔,否则可能会对主板造成毁灭性伤害;
不同(型号、厂家)的硬盘通过统一的磁盘控制器连接到主板上,进行数据交互;
磁盘控制器,总线(bus),接口
磁盘接口的类型:
IDE:并行接口,来源于ATA,133Mbps,266Mbps;
SCSI:小型计算机系统接口,
UltraSCSI320:320Mpbs
UltraSCSI640:640Mbps
窄带控制器:提供7个接口,连接7个硬盘;
宽带控制器:提供15个接口,连接15个硬盘;
SATA:Serial ATA,串行接口;
SATA1, SATA2, SATA3(可达6Gbps)
SAS:串行接口(运用于服务器,军用,少见于民用)
6Gbps
可以接1023个硬盘
USB:1.0 1.1 2.0 3.0 3.1
2.0:60Mbps
3.0:480Mbps
3.1:10Gbps
衡量磁盘IO能力的另一个指标:IOPS (一秒钟完成多少次读写操作)
IDE接口:机械磁盘,50-100 IOPS
SCSI接口:机械磁盘,100-200 IOPS
固态磁盘,400 IOPS
SATA接口:机械磁盘,100 IOPS左右
固态磁盘,400 IOPS左右
SAS接口:机械磁盘,200 IOPS左右
固态磁盘,800 IOPS左右
PCI-E接口的固态硬盘,接近于内存的速度
读的IOPS:400000-800000 IOPS
写的IOPS:50000-100000 IOPS
固态硬盘有读写寿命限制,但效率高
ES3000:华为PCI-E固态硬盘
DEC数字设备公司
普通的X86的主板上的磁盘控制器的接口:
IDE:2个接口,每个接口接一个主盘和一个从盘,共4块磁盘;如果有光驱的话,可能会减少至3个磁盘+1个光驱;
SATA:4-6个接口;
SCSI:7个接口或15个接口;
SAS:1023-16384个接口;
CPU:控制总线(控制器发送控制命令读取内存中的数据),数据总线(CPU通过内存RAM调取磁盘中的数据),地址总线(CPU通过内存RAM调取磁盘中的数据时,需要指定地址进行读取操作);
控制总线、数据总线、地址总线这三条线在物理上的主板上是一条线,只是具有不同的功能,称为总线的复用;
前段总线(DDR4 2666Mhz)的带宽速率与CPU的速率相当,否则无法进行数据的交互;
机械磁盘:现阶段最高是4TB;
磁盘的存储方式:磁头在磁盘的表面运动判断磁盘表面磁性材料N/S极来代表0/1进而转换为二进制来表示数据的存储状态;
磁盘转速:现阶段最高是15000rpm,磁盘内部绝对真空(绝对无尘)不存在任何灰尘
术语:
track:磁道(并不存在),磁头在磁盘表面的运行轨迹的投影;
sector:扇区(每个扇区大小相同),512Byte;现在所说的扇区,实际上是平均值,有些扇区跨磁道;最小管理单元;
cylinder:柱面,从某个磁道向所有盘片做投影,所形成的圆柱表面;实际上是由所有盘片上相同位置的磁道组成;
partition:分区,从某个柱面到另一个柱面之间所有的柱面存储空间;(逻辑映射分区,并不存在,只在操作系统内对硬盘的一个逻辑映射)
head:磁头(不与磁盘表面接触,一旦接触会导致磁盘完全损坏),每个盘片每个磁面都有一个磁头,用于数据的读写操作;
磁盘性能的指标:
主轴转速:磁盘每分钟旋转的圈数(5400rpm、7200rpm、10000rpm、15000rpm);
平均寻道时间:磁头从某个位置移动到指定的磁道位置所用的时间,所用时间越短,数据读写速度越快;
缓存:预先加载数据,需要的时候直接被内存瞬间取走,但是缓存有限(局限性);
基于一切皆文件的Linux的思想,磁盘也是文件:
/dev用于存放硬件设备被映射出的文件,磁盘的设备文件也存放于此;
设备文件:是关联到硬件设备的驱动程序和设备的访问入口;
设备号:
major, minor
major:主设备号,区分不同设备的设备类型,用于标明设备所需的驱动程序;
主设备号8:代表磁盘设备;
主设备号4:代表虚拟终端设备;
主设备号5:代表控制台物理终端设备;(这里的主设备号4、5虽然主设备号不同,但是他们是同一个类型的设备)
主设备号10:代表虚拟机设备;
minor:次设备号,在同种类型的设备中的不同设备,用于对设备提供访问入口;
主设备号10,次设备号238:代表虚拟机网卡设备;
主设备号10,次设备号56:代表虚拟机套接字设备;
主设备号1(内核当中虚拟出来的设备),次设备号5:zero代表设备;
设备类型:
块设备:
以块为基本单位进行随机访问的设备,通常为存储数据的设备;
字符设备:
以字节为基本单位进行线性访问的设备,通常为处理数据的设备;
设备文件名:
IANA (美国国内互联网地址委员会)--> ICANN(互联网名称与数字地址分配机构,管理域名,硬件命名)
设备文件存放在/dev目录下:
IDE接口设备: hd[a-d]
SCSI|SATA|SAS|USB接口设备: sd[a-z]+ (+代表sd后面可以加1个或多个小写字母来代表磁盘名称)
RedHat Enterprise Linux 从RHEL6开始,将IDE接口的磁盘也命名为sd*,自此以后,所有的磁盘设备被统一命名为sd[a-z]+
设备的引用方式:
1.设备文件名
2.卷标(Volume Lable)
3.UUID:全局唯一标识符;Universal Unique IDentifier(最无解的引用方式,标识符重复几率为0)
mknod命令来引用设备:
mknod - make block or character special files
制造一个块或者设备特殊文件
格式:
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
选项 设备名 设备类型 [主设备号 次设备号]
常用选项:
-m:指明设备权限,否则默认是读写权限减去权限遮罩码;
-b:创建一个块设备或者一个缓冲区设备;
-c | -u :创建一个非块设备或者非缓冲区设备;
-p:创建一个管道设备;
如何使用的新的磁盘设备?
1.让Linux系统内核识别设备,对设备进行分区;
2.格式化
低级格式化:磁盘初始化,磁道划分;
高级格式化:创建或重建文件系统;
3.使用文件系统:
挂载
卸载
为何分区?
1.优化磁盘IO性能;
2.可以实现对某个存储空间的配额限制;
3.进行高速的磁盘问题修复;
4.隔离系统文件和其他应用程序文件;
5.安装多个操作系统;
如何分区?
MBR:整个磁盘空间小于2TB容量,建议使用MBR分区格式;
MBR:Master(Main) Boot Record,主引导记录,始于1982年(比尔盖茨提出,他认为分隔出四个分区足够);
MBR其实也是一段数据,默认保存在磁盘的0磁道0扇区中(磁盘的第一个磁道第一个扇区中);
MBR数据分为三部分:
446Bytes:boot loader,引导加载程序;
Windows中:NTLDR(windows引导加载程序)
Linux中:LILO,GRUB(Linux默认的引导加载程序,但是446bytes不足以存放下全部的引导程序数据,将会存放在磁盘的1磁道1扇区到1磁道14扇区中)
64Bytes:Partition table,分区表;每16Bytes为一段,表明一个分区的内容,因此,默认最多只有四个分区;
1.最多有四个主分区;
分区编号依次为:1, 2, 3, 4
2.想要划分更多的分区数量时,可以将任意一个主分区改为扩展分区,在扩展分区中建立逻辑分区;
逻辑分区的编号默认从5开始,不管前面的四个数字是否都被占用;
sda1, sda3, sda5
注意:扩展分区可以没有,但最多只能有一个,只要是5之后的编号数字的分区就是扩展分区;
2Bytes:MBR结束标记,55AA;
GPT:整个磁盘空间超过2TB容量,建议使用GPT分区格式;
GUID Partition table,支持128个主分区;
Linux下常用的分区工具:
fdisk:
用于创建和管理MBR分区,对同一块磁盘,最多只能管理15个分区;
gdisk:GNU disk
用于创建和管理GPT分区;
注意:
如果使用fdisk或gdisk命令对于一个已经有分区被挂载的磁盘的剩余空间再次进行分区,即便将分区的结果保存下来,也不会被内核立即识别;
想要让内核识别出此类新建分区,可以采用下列方法:
1.重启计算机(线上生产环境避免重启);
2.强制内核重读分区表:
partprobe命令
partx命令
在RHEL系或CentOS系5|7:
partprobe [device]
注意:如果省略了设备名,则表示重读所有磁盘设备的分区表;强烈建议,直接给出指定的磁盘设备名称;
在RHEL系或CentOS系6|7:
partx -a [device]
kpartx -af [device]
fdisk分区工具:
fdisk - manipulate disk partition table
操纵磁盘分区表,是一个菜单化工具;不能查看单个分区超过2^64Gb(超过这个大小需要使用parted命令);在这个菜单化工具中删除输入的字符需要按住“Ctrl”键+backspace键进行删除操作;
格式:
fdisk device
fdisk -l [device...]
选项:
-c=dos | -u=cylinders :来查看Dos系统的分区表;
-l:表示查看之意,如果给出设备名称,则查看指定设备的分区表;否则查看所有磁盘设备文件的分区表;
fdisk device
对于指定设备进行分区管理和操作;(在这个菜单化工具中删除输入的字符需要按住“Ctrl”键+backspace键进行删除操作;)
Command action
d delete a partition :删除一个分区;
l list known partition types :当前支持哪些分区类型;
m print this menu :显示当前菜单;
n add a new partition :添加一个新分区;
p print the partition table :显示分区列表;
q quit without saving changes :不保存退出;
t change a partition's system id :改变一个分区的系统id;
w write table to disk and exit :保存分区并退出;
在fdisk交互式菜单模式中创建分区的过程:
n --> p|e|l --> 分区的起始扇区(柱面),直接回车使用默认值设置 --> 分区的结束扇区(柱面),也可以使用+#UNIT(#指数字,UNIT指单位)直接指定分区大小
parted命令:高级分区工具,其操作结果实时生效;
parted - a partition manipulation program
格式:
parted [options] [device [command [options...]...]]
1 2
常用选项:
-l:查看分区列表;
-s:执行一个脚本;
-v:查看版本号;
-a alignment-none:使用最小化的配置参数;
-a alignment-cylinder:设置这个分区有多少柱面;
-a alignment-minimal:创建一个最小化的分区;
-a alignment-optimal:使用一个可选的内容;
示例:
~]# parted /dev/sda mkpart logical 103GB 105GB
~]# parted /dev/sda rm 8
在通电开机状态下添加SCSI接口的磁盘至本服务器,要想使设备被内识别并创建出相应的设备文件,有下列方法:
1.重启计算机;
2.~]# echo "- - -" > /sys/class/scsi_host/host2/scan
强制内核识别在通电状态下热插接的新SCSI接口的磁盘设备;
以上是关于存储管理之硬件基础机械磁盘原理以及设备规范MBR格式的分区管理的主要内容,如果未能解决你的问题,请参考以下文章