linux系统中的磁盘系统分区管理

一、首先来复习一下计算机的相关知识

1.mbr

       主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。

       通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。

MBR结构图

linux系统中的磁盘系统分区管理

主引导扇区由三个部分组成(共占用512个字节):

1.主引导程序即主引导记录(MBR)(占446个字节)

可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。

2.磁盘分区表项(DPT,Disk Partition Table)

由四个分区表项构成(每个16个字节)。所以磁盘分区只能分4个,如果想分超过四个盘怎么办呢,请看第二条

负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略)

3.结束标志(占2个字节)

其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。

2.硬盘分区

       MBR下的硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。因为硬盘分区最多分4个,那么我们如何打破4个的限制呢,这就需要用到扩展磁盘分区和逻辑分区了,所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区 外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可 以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。

      举个例子,如果说我现在有块硬盘已经分了三个分区了,我想还想再分几个出来的话,我第四块分区就一定要分成扩展分区,然后在扩展分区内再进行一个磁盘分区,只有这样我才可以拥有超过四块分区

3.文件系统

       文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

       ext4 是 Red Hat Enterprise Linux 6 的标准文件系统。它非常强大可靠 , 具有多项可以提高现代工作量处理性能的功能ext2 是常用于 Linux 中的较旧的文件系统。它简单可靠 ,非常适合小型存储设备 , 但是效率低于 ext4
        vfat 支持包括一系列相关文件系统 ( VFAT/FAT16,FAT32 ), 这些文件系统针对较旧版本的 MicrosoftWindows 开发 , 在大量的系统和设备上受支持
        xfs 在 Red Hat Enterprise Linux 7 的标准文件系统其具备数据完全、性能稳定、扩展性强 ( 8eb-1byte ) 、传输速率高 ( 7G/s )

接下来进入今天的正题:

二、linux系统中的磁盘系统分区管理

1.本地存储设备的识别

fdisk -l                           ##真实存在的设备

linux系统中的磁盘系统分区管理 

cat /proc/partition        ##系统识别的设备

linux系统中的磁盘系统分区管理 

blkid                              ##系统可使用的设备

linux系统中的磁盘系统分区管理 

df                                   ##系统正在挂载的东西

linux系统中的磁盘系统分区管理
2.fdisk工具的使用,建立新分区,删除新分区等

我的虚拟机有一块完全没有使用的硬盘vdb,所以我们的所有操作都是基于上述的操作

fdisk /dev/vdb             ##对vdb进行一个操作

linux系统中的磁盘系统分区管理

我们这里第一次使用这个工具,所以输入m看一下帮助信息

linux系统中的磁盘系统分区管理

1)如上图显示如果我们想要新增一个分区,需要输入n

分区类型选择为默认(主分区)

分区的数字选择默认

first sector选择默认

last sector因为不好设置,所以这里我们选择直接给它一个大小,+100M

然后q查看一下,刚建立的分区,

linux系统中的磁盘系统分区管理

此时一个新的分区基本建立完毕了,wq退出保存即可 ,也可以被系统识别

linux系统中的磁盘系统分区管理

2)如果我想要删除一个分区

则在输入指令的时候输入d,如下图所示,vdb2就被删除了

linux系统中的磁盘系统分区管理

3)那么我们如何使用一个扩展分区,并在扩展分区里面使用逻辑分区呢

如下图所示,我现在已经有了三个主分区,所以系统默认我最后建立的就是一个扩展分析,设置全部选择默认,就会建立一个扩展分区,并拥有剩下的所有容量

linux系统中的磁盘系统分区管理

在扩展分区如何分逻辑分区呢,如图,跟正常分区的操作一样

linux系统中的磁盘系统分区管理

3.如何给设备安装文件系统

分区虽然建立了,但是无法使用(如下图,系统识别的识别可以使用的只有一个),如何解决呢,这就需要给设备安装文件系统了,

linux系统中的磁盘系统分区管理

mkfs.xfs  /dev/vdb1                               ##给vdb1安张xfs格式的文件系统

linux系统中的磁盘系统分区管理

如上图,给设备安装了文件系统以后,设备就可以被系统识别,并且使用了。

4.设备的挂载和卸载
1)设备名称
/dev/xdx                     ##/devhd0 /dev/hd1 /dev/sda /dev/sdb /dev/sda1 /dev/sda2 /dev/sdb1
/dev/sr0                     ##sr0,光盘
/dev/mapper/*          ##虚拟设备

2.设备的挂载

mount                  设备              挂载点
mount               /dev/sdb1            /mnt       ##挂载adb1到mnt
umount              /mnt | /mnt/sdb1                ##卸载
mount -o ro         /dev/sdb1            /mnt       ##只读信息
mount                                               ##查看挂载信息
mount -o remount,rw /dev/sdb1 | /mnt                ##重新读写挂载,好多情况下硬盘或者是u盘不可新建删除文件,就可以使用这个命令解决

因为一般情况下,重启挂载会消失,那么我们如何让设备永久挂载呢,这就需要编辑文件来实现了

 vim /etc/fstab

在文件内添加如下格式的信息

设备             挂载点      文件系统      挂载参数       是否备份    是否检测
/dev/vdb1        /mnt         xfs        defaults        0           0

这样就算是重启该设备也会挂载在mnt上~
 

3.解决设备正忙情况

解决办法1

fuser -kvm /mnt        ##直接结束掉占用mnt的进程
umount /mnt            ##解除mnt的挂载

解决方法2

lsof /mnt                 ##查看占用mnt的进程信息
kill -9 进程号             ##结束该进程
umount /mnt               ##解除mnt的挂载