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) | 32 | 64byte | 主分区最多4个 所有分区不超过16个 | 2.2TB |
UEFI(GPT) | 64 | 128byte | 理论上无限制(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等多种文件系统,对比如下:
文件系统 | 最大卷 | 最大单个文件大小 | 最大文件个数 | 代表系统 |
---|---|---|---|---|
FAT16 | 2GB | 4GB | 65536 | DOS / Win95 |
FAT32 | 4GB | 8TB | 4177920 | Win98 |
NTFS | 256TB | 16TB | 4294967295 | Win2000以后 |
EXT3 | 32TB | 2TB | 32000个子目录 | RHEL5 |
EXT4 | 1EB | 16TB | 32000个子目录 | RHEL6 |
XFS | 16EB | 8EB | 无限子目录 | 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-64GiB | 4GiB | 1.5倍物理内存 |
64GiB以上 | 4GiB | HIBERNATE不开 |
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系统磁盘分区设备挂载及磁盘配额详解的主要内容,如果未能解决你的问题,请参考以下文章