Linux操作篇之分区/磁盘扩容(二)
一、swap分区扩容
Linux中,free 命令可以查看内存和swap分区的使用情况。
swap分区是用于当内存不够用时,可以暂时的使用swap分区代替内存使用(相当于Windows中的虚拟内存)。swap分区也是可以进行扩容的。
关闭新增的swap分区(swapoff /dev/sdb1)
设置完成后,可以写入配置文件,使之永久生效。
上面设备名可以写UUID,UUID上面格式化的时候系统有显示。
二、LVM逻辑卷
前面记录了新添加硬盘进行分区以实现扩容的目的。但是比如一个目录在sda1分区中,数据量大且sda1剩余空间不足,这时候新添加的硬盘但却无法对sda1分区进行扩容(就相当于电脑上连接U盘,但是却无法给电脑C盘进行扩容)。针对这种情况,就出现LVM。
1、概念:LVM(Logical volume Manager)是逻辑卷管理的简称。
2、步骤:首先将一整个硬盘或者分区建立成为物理卷(PV),之后可以将一个或者多个物理卷合并成为一个或者多个卷组(VG),然后再将卷组划分出逻辑卷(相当于分区,可直接设置挂载)。物理扩展(PE)在LVM中,是保存数据的最小单位(4MB)。硬盘上保存数据的最小单位是块(默认4KB)两者是区别的。
3、优点:可随时按需求改变逻辑卷大小,充分利用硬盘空间。实现对磁盘空间的高度管理能力。
4、现在Linux安装时,若选择默认的安装方式,系统会自动选择LVM模式。(/boot 分区必须选择普通的分区中,若放在LVM中,系统不会正常启动)
举例测试:
如上图,我的根目录已经使用率超过99%,需扩容。但是按照常规的做法就是换硬盘(非虚拟机)。这样是非常麻烦的。现在我可以在添加一硬盘,分两个分区,一个分区加入根所在的逻辑卷进行扩容,一个分区新建逻辑卷,然后对根所在的逻辑卷扩容。
1、分区并改变成为LVM模式。
首先,使用fdisk 命令,对新加硬盘(/dev/sdb)进行分区(我这里分出两个10GB)。
之后,查看分区情况,可以看到新建的分区是83(标准分区),使用 t 命令,将83改为 8e(Linux LVM)。
保存退出后,可以使用fdisk 命令查看确保一下准确性。
有时候划分分区,使用 fdisk -l 是可以看到sdb2 的 但是/dev下却没有这个设备名,重启就可以了。
2、建立物理卷。
pvcreate 设备名 (如 /dev/sdb 或 /dev/sdb1)。
可以使用pvscan命令查看物理卷
3、将sdb1物理卷加入到sda2(也就是根所在)的卷组中。
vgextend centos /dev/sdb1 (其中,centos 是卷组名,上面可以看到卷组名)
4、新建一卷组centos1,将sdb2加入。
5、提取卷组centos中的容量扩展到根。
使用lvdisplay 可以看到根的逻辑卷组路径
又由于实际容量是小于10GB,所有添加9.9GB。
上面这一步也可以使用 lvresize 命令来增加容量。 -L 指定大小,单位是(KB、GB、TB等),“+”代表增加的大小;“-”代表减小的大小;直接写容量代表为指定大小。
由于是xfs的文件系统,所以使用xfs_growfs命令,使其自动扩展到最大。
6、提取centos1卷组中的容量,新建一个test1的逻辑卷。
命令: lvcreate -L 9.9G -n test1 centos1
-L 指定逻辑卷的大小(实际容量小于10GB,我这里选择9.9GB)
-n 指定逻辑卷的名称
7、补充:
a、也可将物理卷从卷组中删除(缩减容量),使用命令(vgreduce 卷组名 设备名);(vgreduce -a 可以删除所有未使用的物理卷)。
b、删除卷组 (vgremove 卷组名)
c、上面试验中,centos1的卷组中的容量不能加到根。(因为根的逻辑卷是属于centos卷组中的)。
d、在线扩展逻辑卷大小使用 lvextend 命令;新建逻辑卷并指定大小是使用 lvcreate 命令。
三、磁盘配额(只能限制普通用户)
概念:可以限制用户(组)的可使用容量大小(组配额不是平均分配,所以极少使用);可以限制用户的文件个数;可以设置软限制(例如80GB),硬限制(例如100GB),用户可以使用超过80GB,但不能超过100GB;还存在一个时间限制,当用户使用超过80GB未超过100GB时,默认7天
在 centos 7 以前的版本中
条件:
1、系统内核必须支持磁盘配额。
grep CONFIG_QUOTA /boot/config-3.10.0-862.el7.x86_64
2、系统安装了quota工具。
3、建立分区、挂载、写入配置文件(/etc/fstab)、重启生效。
在centos7以前的版本中,可以通过 mount -o remount,usrquota,grpquota /dev/sdb1 来进行临时开启磁盘配额功能。
查看挂载情况
4、建立磁盘配额配置文件
使用(quotacheck 选项 分区)命令
选项:-a 扫描/etc/mtab文件中的所有启用磁盘配额功能的分区。加入此参数,后面就不需要再写分区了。
-c 重新扫描并建立新的配置文件(覆盖原有的配置文件)
-u 建立用户配额的配置文件(aquota.user)
-g 建立组配额的配置文件(aquota.group)
-v 显示扫描过程
-m 若扫描的是根分区,添加此选项,以强制扫描
一般使用:quotacheck -augv 即可。命令执行完成后,会生成两个配置文件(aquota.user与aquota.group)
5、配置磁盘配额配置文件
生成的文件可以使用(edquota 选项 用户或组名)命令,来打开上面的两个配置文件(打开之后,与vi编辑器使用方式一致)。
选项:-u 用户名 为用户配额
-g 组名 为组配额
-t 设置宽限时间
-p 可以复制已设置好的配额用于其他用户或组
文件打开之后参数:
6、启动配置好的配置文件:
quotaon 选项 分区名
选项:-a 依据/etc/mtab文件中的配额分区,启动所有的配额分区。(这时候不需要加分区名)
-u 启动用户配额
-g 启动组配额
-v 显示启动过程信息
可直接使用 (quotaon -augv);(quotaoff 选项 分区)关闭所有配额分区(quotaoff -a)。
7、查询磁盘配额信息
quota与repquota
quota 选项 用户名或组 查询用户或组的配额信息
选项:-u 查询用户配额
-g 查询组配额
-v 显示详信息
-s 以换算成习惯单位(GB、MB)
repquota 选项 分区名 查询整个分区的磁盘配额信息
选项:与上面一致,多了一个 -a 选项,是自动根据 /etc/mtab 中的信息查询配额。
在centos7之后的版本中
由于使用的是xfs文件系统,所以需要使用(xfs_quota 选项 分区)
选项:-x 使用专家模式
-c 可以使命令交互运行,按照所写代码顺序运行。
-V 显示版本
在xfs文件系统中,不存在配额配置文件,需要进入专家模式进行配置。
专家模式中,有以下几个选项:
path:显示路径及开启的quota功能。
report:报告文件系统配额信息。
state:显示全部的文件系统配额信息。
limit:进行限制。参数包括([-g | -p | -u] bsoft=N | bhard=N | isoft=N | ihard=N | rtbsoft=N | rtbhard=N -d | id | name)设置配额块限制(bhard/bsoft)、inode计数限制(ihard/isoft)和/或实时块限制(rtbhard/rtbsoft)。
timer:宽限时间。
举例:
配置配额
测试(test目录权限777,lisi用户拥有写权限。)
(使用lisi用户,执行dd命令,模拟写入文件)
上面图所示,写入的文件大小48MB。已超过软限制但还未超过硬限制。再次写入一个文件。
上面写入的文件大小为10MB,但只写入了2MB的文件。此时已达到硬限制。
当再次尝试写入时,提示磁盘配额超出,已无法在次写入。