Linux系统磁盘分区设备挂载及磁盘配额详解

Posted 是大姚呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统磁盘分区设备挂载及磁盘配额详解相关的知识,希望对你有一定的参考价值。

Linux系统磁盘分区、设备挂载及磁盘配额

1、设备识别

在Linux操作系统中,任何物理存储设备接入系统后都是以文件的形式存在,且不同类别的设备接入系统后被识别的文件类型不同,这里我们用下表来详细说明:

物理设备类别设备识别文件名称
SATA/SAS/USB(串口硬盘)/dev/sda,/dev/sdb(s=SATA,d=DISK ,字母=第几块硬盘)
IDE(老式并口硬盘)/dev/hd0,/dev/hd1(h=hard,d=DISK,数字=第几块硬盘)
VIRTIO-BLOCK(虚拟设备)/dev/vda,/dev/vdb(v=virtio,d=DISK ,字母=第几块硬盘)
M2/SSD(M2口固态硬盘)/dev/nvme0,/dev/nvme1(nvme=m2 )
SD/MMC/EMMC(迷你存储卡)/dev/mmcblk0,/dev/mmcblk1(mmcblk=mmc卡)
光驱/光盘/dev/cdrom,/dev/sr0,/dev/sr1 (数字=第几块光驱)

设备接入系统后,我们可以用以下这些命令对设备进行查看:
1)fdisk -l :查看磁盘的分区情况
2)lsblk:查看设备使用情况,即哪些磁盘的哪些分区正在被谁使用
3)blkid :查看设备管理方式(设备上的文件系统类型)及设备id
4)df:查看正在被系统挂载的设备
5)cat /proc/partitions :查看被系统识别的设备

实验步骤:为设备添加新硬盘
1)在这里,我们为虚拟机westosa添加一块新的硬盘,首先以超级用户身份打开虚拟机控制器virt-manager,可以看到此时westosa只有一块物理硬盘
在这里插入图片描述
2)在虚拟存储目录中为westosa创建一个10G大小的新虚拟机硬盘westosa1,创建完成后在虚拟机控制器中将其添加到westosa
在这里插入图片描述
在这里插入图片描述
3)fdisk -l 可以查看到新添加的硬盘被系统识别为/dev/vdb,此时该新盘未进行任何操作,所以无分区信息
在这里插入图片描述
4)lsblk查看设备使用情况,可以看到/dev/vda磁盘的第一个分区正在被 /boot使用
在这里插入图片描述
5)blkid查看设备管理方式,以/dev/vda磁盘的第一个分区/dev/vda1为例,可以看到设备id、设备上的文件系统类型及分区id
在这里插入图片描述
6)df 查看正在被系统挂载的设备,cat /proc/partitions查看被系统识别的设备
在这里插入图片描述

2、设备挂载

a) 设备挂载

在系统中有设备id的设备是可以被系统使用的,这些设备被格式化处理过,包含有用来管理设备的文件系统,所以可以被系统直接使用即挂载,具体的挂载命令如下:

mount -o 挂载参数 device 挂载点	##挂载设备到指定目录
umount 设备|挂载点				##卸载设备
mount 							##查看挂载信息
mount -o rw 设备 挂载点			##可读写方式挂载设备到指定目录
								##(不加-o参数默认可读写方式挂载)
mount -o remount,ro 挂载点 		##转换挂载参数由读写变为只读挂载

实验步骤:设备只读挂载
1)卸载/boot中挂载的/dev/vda磁盘的第一个分区/dev/vda1,新建数据目录/westos,将/dev/vda1挂载到该目录上
在这里插入图片描述
2)mount 查看挂载信息,可以看到/dev/vda1默认是以读写方式挂载在/westos中,此时在该目录中可以自由创建、删除文件
在这里插入图片描述
3)卸载/dev/vda1,可读写方式重新挂载/dev/vda1到/westos后,转换挂载参数由读写变为只读挂载,此时不能在/westos目录中执行创建、删除文件等操作,mount 查看挂载信息可以看到/dev/vda1是以只读方式挂载在/westos中
在这里插入图片描述
在这里插入图片描述
注意: 不能直接mount -o ro只读方式挂载设备,系统会提示已挂载或挂载点正忙(挂载失败),需要先mount -o rw读写方式挂载设备,再mount -o remount,ro转换挂载参数由读写变成只读

b)卸载时提示设备正忙

实验步骤:如何在设备正忙时卸载设备
1)在真实主机中ssh远程连接虚拟主机并切换到/boot分区中,此时在虚拟主机中卸载/boot下的/dev/vda1,系统提示设备正忙无法卸载
在这里插入图片描述
2)我们需要使用fuser -kvm 设备|挂载点命令结束使用该设备的所有进程,完成该操作后即可成功卸载(-k 结束进程, -v 显示详细信息 -m 显示进程)
在这里插入图片描述
c)设备永久挂载
以上所述的设备挂载方式都是临时挂载,当系统重启,这些挂载设定都会消失,当我们要永久挂载设备即指定设备在开机时自动挂载到相应目录中时,需要编写设备挂载策略文件/etc/fstab,在其中添加对应的挂载语句,具体示例如下:

    设备  挂载点 文件系统类型 挂载参数 是否备份 是否检测
示例:/dev/vda1 /boot     xfs    defaults   0    0

注意: 此文件在编写完成后不会马上生效,需要mount -a重新读取/etc/fstab文件,此文件内容编写错误会导致系统启动失败

实验步骤:/etc/fstab编写错误解决方案
1)在这里删除设备挂载策略文件/etc/fstab第二行设备id中的字母a,保存更改后重启系统
在这里插入图片描述
2)系统启动失败,自动进入挽救模式在这里插入图片描述
3)按照提示在操作界面输入超级用户密码进入真实shell环境,修改磁盘挂载策略文件/注释错误行,重启系统成功
在这里插入图片描述
在这里插入图片描述

3、磁盘分区

磁盘在被系统使用前都要进行分区,也就是将硬盘划分为一个个逻辑的区域,每一个分区都有一个确定的起始结束位置。在Linux系统中,主要有MBR和GPT两种分区方式,这两种分区方式的对比如下:

分区方式位数分区表大小支持分区个数支持单个分区大小
legacy(MBR)3264byte主分区最多4个 所有分区不超过16个2.2TB
UEFI(GPT)64128byte理论上无限制(windows系统限制为128个分区)8ZiB

a)MBR分区结构

在这里插入图片描述
如上图所示,MBR分区形式一般有3种,即主分区、扩展分区和逻辑分区。主分区既主DOS分区,由于MBR仅仅为分区表保留了64字节的存储空间,而每个分区占用16字节的空间,所有只能划分4个主分区。当磁盘已被划分了4个主分区时,磁盘剩余空间将无法被使用,因此在磁盘上有3个主分区时,需要将剩下的空间整个划分为扩展分区,扩展分区不是一个真实的分区,只是一个容器,当主分区存储空间占用完或需要新建分区时,可以在扩展分区中进一步划分逻辑分区。

b)GPT分区结构

在这里插入图片描述GPT磁盘分区结构解决了MBR只能分4个主分区的的缺点,理论上说,GPT磁盘分区结构对分区的数量好像是没有限制的,但一般操作系统可能会对此有限制。

c)分区方法

方法一:fdisk /dev/sdb交互式对设备进行分区

参数含义参数含义
m获得帮助t更改分区类型
d删除w保存更改
l列出所有分区类型q退出
n新建g设定分区方式为GPT
p显示分区表o设定分区方式为mbr

实验步骤:
1)fdisk /dev/sdb交互式对设备/dev/vdb进行分区,显示分区表查看分区方式,更改分区方式为MBR(dos)
在这里插入图片描述
2)新建主分区,分区表位置为1,分区起始位置使用默认位置,设定分区大小为100M,显示分区表可以看到建立的分区
在这里插入图片描述
3)q退出,fdisk -l查看磁盘分区情况,看不到在/dev/vdb上建立的分区,这是因为q退出时不保存之前所做的操作
在这里插入图片描述
4)对/dev/vdb使用MBR分区方式连续建立4个主分区,再次新建分区时系统提示需要将一个主分区替换为扩展分区,此时我们需要删除一个主分区,新建扩展分区,将磁盘/dev/vdb上的剩余空间都分给扩展分区,p显示分区表可以看到所有建立的分区
在这里插入图片描述
在这里插入图片描述
5)在建立了扩展分区后,新建分区,p显示分区表可以看到所建立的分区是在扩展分区中划分得到的逻辑分区
在这里插入图片描述
6)保存退出,此时查看系统识别的设备可以看到在/dev/vdb上建立的所有分区
在这里插入图片描述
方法二:parted非交互式对设备进行分区

实验步骤:
1)parted -l查看分区表,可以看到/dev/vdb分区方式未设定,/dev/vda分区方式为msdos即MBR
在这里插入图片描述
2)parted 设备 mklabel msdos/gpt:设定设备分区方式为MBR/GPT
在这里插入图片描述
在这里插入图片描述
3)parted 设备 mkpart 分区类型 分区起始位置 分区结束位置:在/dev/vdb上新建一个大小为100M的主分区
在这里插入图片描述
4)parted 设备 rm 分区号:删除/dev/vdb上建立的1号主分区
在这里插入图片描述

d)设备删除

当我们需要删除设备上所有的分区设定时,可以通过dd if=/dev/zero of=/dev/vdb bs=1M count=1将磁盘设备初始化,即使用空数据覆盖掉磁盘设备中磁盘分区表中的数据
在这里插入图片描述

e)磁盘文件系统

磁盘分区划分好后不能挂载使用该设备,这是因为设备中缺少文件系统(设备管理软件),需要使用mkfs.xfs -K /设备命令格式化设备的文件系统为xfs文件系统,完成上述操作后即可挂载使用该设备,除了xfs文件系统外,磁盘还有FAT、NTFS等多种文件系统,对比如下:

文件系统最大卷最大单个文件大小最大文件个数代表系统
FAT162GB4GB65536DOS / Win95
FAT324GB8TB4177920Win98
NTFS256TB16TB4294967295Win2000以后
EXT332TB2TB32000个子目录RHEL5
EXT41EB16TB32000个子目录RHEL6
XFS16EB8EB无限子目录RHEL7以后

实验步骤:格式化设备文件系统后挂载设备
1)fdisk /dev/sdb交互式对设备/dev/vdb进行分区,分区方式为gpt(也可以为mbr即dos),新建大小为100M的分区
在这里插入图片描述
2)udevadm settle同步分区表,当新建/删除设备分区时需要刷新同步一下设备的磁盘分区表,此时查看系统识别的设备可以看到在/dev/vdb上新建立的分区/dev/vdb1
在这里插入图片描述
3)挂载该设备/dev/vdb1到数据目录/westos中,挂载失败,这是因为设备中缺少文件系统(设备管理软件),mkfs.xfs -K /dev/sdb1格式化设备为xfs文件系统,相当与在/dev/sda1上安装设备管理软件(-K 不丢弃空数据块,使用这一参数可以加快格式化),完成上述操作后即可挂载使用该设备
在这里插入图片描述
4)挂载设备时有三种挂载方式
方式一: blkid查看设备id,使用id挂载设备;
方式二: 使用设备名称挂载设备;
方式三: 编辑设备挂载策略文件/etc/fstab,此文件编写完成后不会立即生效,需要mount -a重新读取该文件
注意: 前两种方式为临时挂载,如果需要永久挂载需要使用第三种方式编写/etc/fstab
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、swap分区

程序在运行时所有数据都存储在内存RAM中,当RAM使用量超过了限额,程序运行有可能出错。为了使系统更加稳定,我们在硬盘上划分一部分空间作为内存缓冲区swap,当内存使用超过限额,内核会把内存中闲置的数据存放到swap中,当程序需要swap分区中的数据时内核将swap分区中的数据再交还给内存进程进行处理。对于swap分区大小建议如下(HIBERNATE指的是关机时自动备份内存数据的物理存储空间,一般不允许/关闭HIBERNATE):

内存大小swap分区建议大小当允许HIBERNATE时建议大小
2GiB以下内存两倍内存3倍
2-8GiB等于物理内存物理内存2倍
8-64GiB4GiB1.5倍物理内存
64GiB以上4GiBHIBERNATE不开

swap分区的管理命令:

swapon -s 				##查看swap分区信息
mkswap 设备 			##格式化设备文件系统为swap格式
swapon 设备 -p 0-32767 	##在系统缓冲区中添加指定设备,-p指定swap设备的优先级
swapoff 设备			##在系统缓冲区中删除指定设备

实验步骤:创建swap分区
1)fdisk /dev/sdb交互式在设备/dev/vdb上创建分区,更改分区的类型为Linuxswap
在这里插入图片描述
在这里插入图片描述
2)同步分区表,格式化新建设备/dev/vdb1的文件系统为swap格式,在系统缓冲区中添加/dev/vdb1,指定其优先级为1(数字越大优先级越高),查看swap分区信息可以看到添加成功
在这里插入图片描述
3)以上操作都为临时操作,如果要永久添加设备到swap分区即使系统在开机时自动挂载新建的swap设备到swap分区中,需要编写设备挂载策略文件 /etc/fstab(参数pri作用等同于-p),此文件编写完成后不会立即生效,需要swapon -a(后不跟任何参数表示重新读取该设备挂载策略文件),完成上述操作后查看swap分区信息可以看到添加成功
在这里插入图片描述
在这里插入图片描述

5、磁盘配额

磁盘配额可以限制指定用户能够使用的磁盘空间即能写入指定设备的最大额度,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行,在服务器管理中这项功能非常重要。

实验步骤:设置磁盘配额
1)fdisk /dev/sdb交互式对设备/dev/vdb进行分区,新建大小为100M的/dev/vdb1设备
在这里插入图片描述
2)mkfs.xfs -K /dev/sdb1格式化设备为xfs文件系统,挂载该设备到/westos目录,挂载完后再去修改文件系统的权限
在这里插入图片描述
3)切换到普通用户中,此时可以一直dd生成文件直到设备空间被占满,这显然是不合理的
在这里插入图片描述
4)回到超级用户卸载设备,重新挂载设备并激活配额参数usrquota,mount查看挂载信息可以看到/dev/vdb1的配额参数被激活
在这里插入图片描述

5)为用户westos设定磁盘配额为20M(默认单位为K),此时普通用户上传文件大小受限,用户westos只能写入20M数据
在这里插入图片描述
在这里插入图片描述
6)以上操作都为临时操作,如果要永久为指定设备设定磁盘配额,需要编写设备挂载策略文件 /etc/fstab(注意这里需要添加配额参数usrquota),此文件编写完成后不会立即生效,需要mount -a重新读取设备挂载策略文件,接着为用户westos设定磁盘配额,完成上述操作后普通用户上传文件大小受限在这里插入图片描述
在这里插入图片描述
7)quotaoff -uv 设备关闭磁盘配额(-u表示显示激活状态-v表示显示过程),此时普通用户上传文件大小不受限
在这里插入图片描述

6、测试习题

1、在虚拟机中添加一块新的硬盘,大小为10G
2、在新硬盘中建立分区并挂在到/westosdir目录中,分区大小为500M
3、设定/westosdir目录中所有用户可以自由新建文件但不能删除不属于自己的文件
4、设定westos用户和lee用户能写入/westosdir目录中的最大数据不能超过10M
5、在系统中添加swap分区,大小为1G,优先级为1
6、以上要求在重启主机后仍然生效

实验步骤:
1)在虚拟存储目录中为westosa创建一个10G大小的新虚拟机硬盘westosa1,创建完成后在虚拟机控制器中将其添加到westosa
在这里插入图片描述
在这里插入图片描述
2)交互式的对设备分区进行划分,得到/dev/vdb1和/dev/vdb2两个分区,更改/dev/vdb2分区的类型为Linuxswap
在这里插入图片描述
3)使用mkfs.xfs -K /设备格式化/dev/vdb1的文件系统为xfs文件系统,使用mkswap /设备格式化/dev/vdb2两个分区文件系统的格式为swap
在这里插入图片描述
4)建立数据目录/westosdir(挂载点),编写设备挂载策略文件/etc/fstab后mount -a 、 swapon -a,此时/dev/vdb1和/dev/vdb2都已挂载,对数据目录/westosdir进行权限设置并设定westos、lee用户的磁盘配额
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5)查看swap分区信息可以看到/dev/vdb2添加成功,同时普通用户westos和lee上传文件大小受限,/westosdir目录中所有用户可以自由新建文件但不能删除不属于自己的文件
在这里插入图片描述
在这里插入图片描述
6)题目完成后,在系统缓冲区中删除设备/dev/vdb2,关闭磁盘配额,删除设备挂载策略文件/etc/fstab中的语句设定,卸载/dev/vdb1,删除/dev/vdb中的两个新建分区,还原实验环境
在这里插入图片描述

以上是关于Linux系统磁盘分区设备挂载及磁盘配额详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux磁盘和文件系统管理

Linux 磁盘分区详解

20磁盘管理—linux磁盘管理详解(分区)

Linux中如何针对用户及组设置磁盘配额

第六章 Linux物理卷卷组逻辑卷和磁盘配额

磁盘配额