存储管理之硬件基础机械磁盘原理以及设备规范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格式的分区管理的主要内容,如果未能解决你的问题,请参考以下文章

linux系统进行磁盘管理

磁盘基础管理

磁盘存储和文件系统管理

Linux下:磁盘管理和文件系统管理

系统硬件知识之硬盘

Linux之存储管理