CentOS磁盘和分区简介

一,机械硬盘的结构和工作原理简述

以下内容部分图片和文字来自知乎 @随风 的知乎回答

机械硬盘主要由盘片,磁头,盘片转轴以及控制电机,磁头控制器等几个部分组成。

CentOS磁盘和分区简介_第1张图片
机械硬盘内部结构(图1.1)

磁盘由一个或多个盘片组成,每个盘片上下两面各有一个磁头,通过磁头臂控制磁头运动:

  • 电机带动主轴,进而带动磁盘开始高速旋转
  • 磁头与盘面保持一个微小的距离,在磁头动臂的控制下向指定位置移动
  • 磁头到达指定位置,开始对磁盘进行读写操作
CentOS磁盘和分区简介_第2张图片
磁盘读写原理示意图(图1.2)

二,机械硬盘有关的几个基本概念

CentOS磁盘和分区简介_第3张图片
磁盘示意图(图2.1)
CentOS磁盘和分区简介_第4张图片
图2.2
  1. 磁道 track:

当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。

  1. 扇区 sector:

磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放固定长度(一般是512字节)的信息,磁盘驱动器在向磁盘读取和写入数据时,以扇区为单位。(可参考上图2.1,2.2)

  1. 柱面 cylinder

硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的"0"号磁道开始编号,从上面的硬盘结构示意图(图2.1)我们可以看出,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。

  1. CHS

所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的CHS的数目,即可确定硬盘的容量,硬盘的容量=柱面数×磁头数×扇区数×512B。


三,设备文件

一切皆文件,这是Linux的基本理念之一。在Linux中,所有的硬件包括磁盘,也都是作为文件来管理的,通常我们称呼这类文件为设备文件。

在类Unix操作系统中,设备文件是设备驱动程序的接口,允许应用程序通过标准输入/输出系统调用使用其设备驱动程序与设备进行交互。使用标准系统调用简化了许多编程任务,并且无论设备的特性和功能如何,都可以实现一致的用户空间I / O机制。

可以粗略的认为,设备文件就是关联至一个设备驱动程序,进而能够跟对应的硬件设备进行通信的文件。

Linux中的设备文件通常存放在/dev目录下,在ll /dev | grep -v "^[dsl]"查询返回的结果中可以看到类似下图的内容

CentOS磁盘和分区简介_第5张图片
部分结果

简要说明:

  • 第1部分,第一个字母表示文件类型,c表示字符设备,b表示块设备。后九个字母表示文件的权限(r读,w写,x执行,-无),每三位为一组,表明文件的属主属组其他人的权限。
  • 第2部分,数字1,表示文件的硬链次数
  • 第3部分,左边是文件的属主,右边是文件的属组
  • 第4部分,逗号分隔的两个数字,前面是文件的主设备号,后面的是文件的次设备号
  • 第5部分,文件名

设备文件主要类型

  1. 字符设备(Character Devices):指在I/O传输过程中,必须按照先后顺序存取数据的设备,以字符为单位进行传输。通常字符设备不使用缓冲区。例如键盘
  2. 块设备(Block Devices):是一种具有一定结构的随机存取设备,对这种设备的读写是以块为单位进行的。它使用缓冲区来暂时存放数据,待条件成熟后,从缓冲区一次性写入设备或从设备中一次性读出放入到缓冲区。例如硬盘
  3. 伪设备(Pseudo-devices):没有对应的物理设备,而是操作系统虚拟出来,用于实现某些特定功能的设备。

最常用的伪设备是 /dev/null/dev/zero

  • /dev/null,也称为位桶(bit bucket),外号无底洞,黑洞。任何输出到它的数据都会被丢弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。
    如果试图从它读取数据,那么永远都只会得到EOF(End Of File)信号。
  • 验证:
ls  #用于和下方比较执行结果
ls &> /dev/null  #将结果重定向到/dev/null
echo $?  #验证命令是否执行成功,0表示成功,其他数字表示错误码
输出到/dev/null的结果
  • /dev/zero,无论从该设备读多少次,每次都会获得一个二进制数字0(即ASCII码为0的字符,在vim里显示为^@),因此也有人形象的称呼它泡泡机,吐零机。
    而如果试图输出数据到它,也会像输出到/dev/null一样被全部丢弃。
  • 验证:
dd if=/dev/zero of=a.txt count=1 bs=1  #从/dev/zero复制一个字符到a.txt
从/dev/zero复制一个字符成功
vi a.txt  #查看a.txt的内容
vi中查看a.txt的内容

设备文件命名

  1. 磁盘的接口
  • 并口:接口理论速率(b:bit,B:Byte)
    1.1. IDE:133MB/S
    1.2. SCSI:640MB/S
  • 串口:接口理论速率(b:bit,B:Byte)
    1.3. SATA:6Gbps
    1.4. SAS:6Gbps
    1.5. USB:480MB/S
  1. 磁盘设备文件的命名

磁盘的设备文件,通常与其他设备文件一样,都存放在/dev目录下。

早期版本的CentOS下,IDE接口的磁盘设备文件,通常依次命名为/dev/hda,/dev/hdb,/dev/hdc,/dev/hdd(因为IDE接口最多接4块硬盘)

从CentOS 6.0版本开始,IDE,SCSI,SATA,SAS和USB接口的磁盘,全都以/dev/sd[a-z][1-n]的格式命名:

  • 不同的设备,按照字母a-z的顺序,依次命名为 /dev/sda,/dev/sdb,/dev/sdc,……
  • 同一设备上的不同分区,则在设备名后面再加上1-n的数字来区分,例如设备/dev/sdc上有3个分区,则依次命名为/dev/sdc1,/dev/sdc2,/dev/sdc3

常见引导方式

  • BIOS+MBR
  • UEFI+GPT

MBR(Master Boot Record),即主引导记录,也称主引导扇区。

  1. 位置:0柱面,0磁头,1扇区(clindyer 0,side 0,sector 1)

  2. 内容:主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)

  3. 大小:512字节,其中

  • 446Bytes:用于存放boot loader内容
  • 64Bytes:用于存放分区表,每16bytes标识一个分区
  • 2Bytes:结束标志,原值为AA55 ,由于内存中十六进制存储是低位在前,因此看起来是55 AA

四,分区管理工具之fdisk

Note:

  • fdisk只能管理2T以内的硬盘
  • 对同一块硬盘,最多只能管理15个分区

管理分区:fdisk device
fdisk命令有很多子命令,通过使用子命令完成各种功能,m显示所有子命令。

CentOS磁盘和分区简介_第6张图片
fdisk的子命令

子命令中比较常用的有:
  p:打印分区表,显示分区信息
  n:新建分区
  d:删除分区
  w:写入磁盘并退出
  q:放弃修改并退出
  m:获取帮助
  l:列出已知的分区id号及对应的分区类型
  t:修改分区文件系统类型和标志id(默认值83),例如如果想创建swap分区,就需要先将分区标志id改为82

CentOS磁盘和分区简介_第7张图片
创建一个2G的新分区
CentOS磁盘和分区简介_第8张图片
类型及其十六进制代码

查看分区

fdisk -l [device]  #[]表示选项或参数可给可不给

fdisk -l :查看分区表信息
[device]:指定想要查看分区表信息的设备,如果没有指定设备,则列出/proc/partitions文件中的设备信息

CentOS磁盘和分区简介_第9张图片

注意:fdisk -l能看到分区,并不表示内核也已经识别了该分区。可以通过查看/proc/partitions文件的内容确认,该文件包含的分区才是内核已经识别的分区。

通知内核重新读取硬盘分区表:partx命令

  • 命令格式:
    partx [-a|-d|-l] [--type TYPE] [--nr M-N] [partition] disk
  • 常用选项:
    -a 添加
    -d 删除
    -l 显示,列出分区
    --nr M-N 指定分区号码(CentOS 6.x中)
    -n M:N 指定分区号码(CentOS 7.x中),有 M,M:,:N 这几种形式
    -u 更新(CentOS 7.x中)
  • 示例
partx -a -nr 1-3 /dev/sda       #CentOS 6.x
partx -a -n 4:6 /dev/sda        #CentOS 7.x

注意:CentOS 6-7有以上命令,但5没有,5通过命令 partprobe实现类似功能
格式:partprobe [/dev/DEVICE]

内核能够识别的硬盘,就可以格式化,创建文件系统了。

延伸知识:kpartx命令及格式
kpartx [-a | -d | -l] [-v] wholedisk
-l device:查看磁盘分区信息


CentOS磁盘和分区简介_第10张图片
查看设备分区信息

其他较常用的分区管理工具还有:parted,sfdisk,cfdisk等,具体用法请参考man手册或搜索引擎

(未完待续)
CentOS下ext4、vfat文件系统创建、修改

你可能感兴趣的:(CentOS磁盘和分区简介)