Linux中的磁盘管理

1、磁盘

计算机由CPU、内存(RAM)和I/O设备组成,其中I/O设备主要指磁盘和网卡,磁盘用作持久的数据存储。 磁盘的接口类型有并口和串口。并口指一根线缆上可以用于接多块设备的接口,数据传输有N根线并行传输,主要有IDE接口和SCSI接口。IDE接口的理论速率可达133MB/s,多个并行线缆之间需要进行调控,干扰大,所以传输速率较慢,IDE接口一根线缆可以接两块设备,一个主设备,一个从设备。SCSI接口分为宽带和窄带,宽带可以接(16-1)个设备,窄带可以接(8-1)个设备,都有一个接口被固定使用,其中,UltraSCSI320接口理论速率320MB/s,UltraSCSI640接口理论速率640MB/s。串口指一根线缆上只用于接一个设备的接口,数据传输有一根线按照顺序传输,主要有SATA接口、SAS接口和USB接口,SATA接口的理论速率为6Gbps,SAS接口的理论速率为6Gbps,USB(USB 3.0)接口的理论速率为480MB/s。 机械式硬盘的构造:盘片、轴、旋转马达、机械臂、磁头。盘片固定在旋转轴上,马达带动轴进行旋转,机械臂上装有磁头,磁头悬浮在盘面上,用来读写盘片上的数据,机械臂可以伸缩来进行寻道。 机械硬盘划分为磁道(track)、扇区(sector,一般为512字节)、柱面(cylinder,分区划分基于柱面)。平均寻道时间:笔记本(5400rpm),台式机(7200~10000rpm),SCSI硬盘(15000rpm)。 将每一个磁道按照512个字节为单位等分,叫做扇区的划分。在一些硬盘的参数列表上可以看到描述每个磁道的扇区数的参数,它通常用一个范围标识,例如373~ 746,这表示,最外圈的磁道有746个扇区,而最里面的磁道有373个扇区,因此可以算出来,磁道的容量分别是从186.5KB到373KB(190976B~381952B)。 根据硬盘的内部结构分析,所有的磁头都是一起同时运动的,如果要读写一个文件数据的时候,只是在一个盘面上进行操作要比同时在其他所有盘面上操作花费的时间要长,另外根据物理运动原理,外侧磁道的读写速度要比内侧磁道的读写速度快很多(单位时间内磁头在盘面上滑过的距离更长),因此磁盘的分区是根据柱面来划分的。通常我们将每个盘面最外侧的柱面划分成系统分区。

2、设备

设备类型分为:块设备(block device)和字符设备(character device)。块设备是随机访问设备,数据交换单位是块。字符设备是线性访问设备,数据交换单位是字符。 设备文件存放在/dev目录下,关联至设备的驱动程序,是设备的访问入口。 设备文件的设备号分为主设备号(major number)和次设备号(minor number),主设备号区分设备类型,用于标明设备所需要的驱动程序,次设备号区分同种类型下不同的设备,是特定设备的访问入口。 硬盘接口类型:我们是通过硬盘接口类型来区别不同的硬盘的,而不同的驱动程序是靠自己的硬盘内部的工作电气特性来实现的。因此不管硬盘是哪个厂家生产的,其硬盘的SATA接口肯定是要接入到主板上的SATA控制器上。 IDE硬盘的设备文件名:/dev/hd[a-z],例如:/dev/hda, /dev/hdb; SCSI,SATA,USB,SAS硬盘的设备文件名:/dev/sd[a-z]; 不同分区的设备文件名:/dev/sda#,例如:/dev/sda1; CentOS 6和CentOS 7统统将硬盘设备文件标识为/dev/sd[a-z]#,CentOS 5的IDE硬盘识别为/dev/hd[a-z]。 可以通过ls -l /dev来查看设备文件的设备号码,其中主设备号和次设备号通过逗号隔开,前面为主设备号,后面为次设备号。

3、MBR主引导记录

MBR(Master Boot Record,主引导记录,主引导扇区)是0 sector,即0磁道的0扇区,0编号扇区。这个0磁道0扇区不属于任何分区。 MBR分为三部分: 前面446字节是bootloader程序,引导启动操作系统的程序; 中间64字节是分区表,每16bytes标识一个分区,一共只能有4个分区,可以是4个主分区,也可以是3个主分区1个扩展分区,一个扩展分区又可以分为n个逻辑分区。 后面2字节是MBR区域的有效性标识,55AA表示前面510字节是有效的,否则为无效的。 当磁盘容量超过2T的时候,现在的MBR机制是没办法识别2T以后的磁盘空间的,此时就需要使用GPT机制来进行分区。

4、磁盘管理命令

(1)fdisk命令:管理磁盘分区表 查看磁盘的分区信息:fdisk -l [-u] [device...]列出指定磁盘设备上的分区情况;

[root@localhost ~]# fdisk -l

Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005c849

Device    Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   125825023    61862912   83  Linux
/dev/sda3       125825024   146796543    10485760   83  Linux
/dev/sda4       146796544   167772159    10487808    5  Extended
/dev/sda5       146800640   159383551     6291456   83  Linux
/dev/sda6       159385600   167772159     4193280   82  Linux swap / Solaris

Disk label type:dos 使用MBR分区; Start,End:CentOS 6中,从哪个柱面开始,哪个柱面结束;CentOS 7中,从哪个扇区开始,哪个扇区结束; Id:分区场景类型,正常分区83,扩展分区5,交换分区82(十六进制);

[root@localhost ~]# fdisk -l /dev/sda1

Disk /dev/sda1: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

管理分区:fdisk device fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能,所有的操作均在内存中完成,没有直接同步到磁盘,直到使用w命令保存至磁盘上。 常用命令: n:创建新分区 d:删除已有分区 t:修改分区类型 l:查看所有已知ID w:保存并退出 q:不保存并退出 m:查看帮助信息 p:显示现有分区信息 (2)查看分区信息:cat /proc/partitions 在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别。对于已经有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表。通知内核强制重读磁盘分区表命令: CentOS 5:partprobe [device] CentOS 6,7:partx, kpartx partx -a [device] kpartx -af [device]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券