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

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

1.mbr

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

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

MBR结构图

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

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

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

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

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

扫描二维码关注公众号,回复: 4123314 查看本文章

负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用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 )

4.swap分区

       Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

接下来进入今天的正题:

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

1.本地存储设备的识别

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

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

blkid                              ##系统可使用的设备

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


2.fdisk工具的使用,建立新分区,删除新分区等

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

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

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

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

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

分区的数字选择默认

first sector选择默认

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

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

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

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

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

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

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

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

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

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

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

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

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的挂载

5.swap分区的建立和删除

1)建立swap分区

我的硬盘vdb上已经有了好多分区,所以我这里直接使用其中一块了来当作swap分区

首先,输入指令

 fdisk /dev/vdb

然后输入t,修改系统分区表的id,选择默认的5分区,因为我不知道swap分区的代码,所以我选择l列出所有,发现是82 linux swap

输入82,将列表改为swap格式的

接下来

mkswap /dev/vdb5         ##把vdb5用作swap分区

swapon -a /dev/vdb5         ##激活vdb5为swap分区,投入使用
swapon -s                   ##显示已经激活的swap分区

如上图,swap分区就算是成功使用了

2)如何永久的使用swap分区呢,这就需要编辑文件了

vim /etc/fstab

 添加如下格式内容,就可以永久挂载了

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

3)如何卸载一个swap分区

如果没有将swap分区信息写入到fstab分区的,可以这样卸载,如果已经将swap分区写入到fstab文件,则需要先将里面的swap挂载信息删除掉,然后执行下面的操作

swapoff /dev/vdb6            ##卸载vdb5的swap分区
swapon -s                    ##查看已经激活swap分区

更进一步,如果想让vdb5恢复正常使用
首先需要将系统的id由swap改为linux

然后对其格式化,挂载到某个文件夹即可,这里需要加-f,因为之前的时候将其文件格式做成了swap

6.配额

如果我们遇到几个用户共用一个目录的情况,而需要平均分配空间的时候怎么给这个设备做一个限制呢

首先我们新建一个文件夹xupt,然后将将vdb5挂载到xupt

输入mount命令查看所有的挂载信息,会发现vdb5的一个配额功能是没有开启的

首先开启quota功能

mount -o usrquota /dev/vdb5  /xupt       ##将vdb5的配额功能打开
chmod 777 /xupt                          ##给xupt权限加满

再次查看所有挂载信息,会发现配额功能开启了

edquota -u student                       ##编辑用户student的配额信息

如何让配额自定挂载,需编辑etc/fstab文件

vim /etc/fstab

添加下列内容

/dev/vdb5        /xupt  xfs    defaults,usrquota   0   0 

接下来进行测试

如图,显示超出了限额,表示成功

7.磁盘加密

磁盘加密的原理,是要先给磁盘加密,然后再进行格式化,这样的话往磁盘里面存东西,会经过加密层,然后变成密文存放在瓷盘内,查看磁盘内文件的时候也会经过加密层,所以我们看到的是一个明文。但是实际存储还是密文,即使破坏掉了加密系统还是无法看到明文

1)这时就需要用到luks加密了

cryptsetup luksFormat /dev/vdb1   ##加密,此处注意,询问你是否继续的时候,一定要输入大写字符YES

cryptsetup open /dev/vdb1 xupt        ##解密磁盘并取名xupt

mkfs.xfs /dev/mapper/xupt     ##格式化磁盘

mount /dev/mapper/xupt /xupt      ##挂载设备

这样这块加密磁盘就可以用了

touch /mnt/file{1..10}           ##新建文件
umount /mnt                      ##解除挂载
cryptsetup close /dev/xdx xupt   ##重新加密磁盘

接下来这一步是为了验证加密磁盘再次被解密使用后文件内容不变

cryptsetup open /dev/vdb1 lei        ##解密磁盘并取名lei
mount /dev/mapper/lei /mnt           ##挂载设备
ls /mnt                              ##查看设备内文件

如上图证明了,磁盘内的文件再次解密依旧是存在的

2)如何让机密磁盘开机自动挂载

vim /etc/fstab             ##添加如下内容
/dev/mapper/xupt    /xupt   xfs  defaults   0   0                
##注意此处的/dev/mapper/xupt需要与crypttab内的名字一致,否则无法启动

vim /etc/crypttab
xupt   /dev/vdb1   /root/lei
名字       磁盘      密码文件                  ##此处为注释

vim /root/lei
lei941212

chmod 600 /root/lei                   
cryptsetup luksAddKey /dev/vdb1 /root/lei          ##让这个加密磁盘读取lei中的密码,自动解密

重启查看

3)

vim /etc/fstab               ##删除那一行
vim /etc/crypttab            ##清空文件内容
umount /xupt                 ##卸载挂载
cryptsetup close disk        ##关闭加密磁盘
mkfs.xfs /dev/vdb1 -f        ##强势格式化磁盘
mount /dev/vdb1 /mnt         ##重新挂载磁盘,可有可无

猜你喜欢

转载自blog.csdn.net/weixin_40543283/article/details/83751797