文章目录
1.LVM
1.1 LVM概述
Logical Volume Manager,逻辑卷管理
● 能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性.
● /boot分区用于存放引导文件,不能基于LVM创建
● LVM可以用于给绝大部分的分区使用,但是/boot分区除外.
1.2 LVM机制
PV (Physical Volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或一整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(PE),从而构成物理卷。
VG (Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷。
LV (Logical Volume,逻辑卷)
从卷组中分割出的一块空间,形成逻辑卷。使用mkfs等工具可在逻辑卷上创建文件系统。
类比理解:
PV、VG(也就是PV池)、LV之间的关系,可以形象的理解为做狮子头的过程——PV是一块一块的猪肉,PE是剁碎的肉沫,VG是将所有肉沫揉成一堆的肉团,LV是从一堆肉沫中挖出一部分,捏成众多的狮子头。
1.3 LVM管理命令
主要命令
注意:
创建逻辑卷的时候,是从前往后,也就是先创建物理卷,在创建卷组,最后创建逻辑卷;但是删除逻辑卷的时候,是从后往前删除,也就是先删除逻辑卷,在删除卷组,最后删除物理卷。
建立物理卷:pvcreate 设备名1 [设备名2…](分区或磁盘)
建立卷组:==vgcreate 卷组名 物理卷名1 物理卷名2
建立逻辑卷:lvcreate -L 指定容量大小 -l 指定PV数量 -n 逻辑卷名 卷组名
扩容卷组:vgextend -L +大小 /dev/卷组名
扩容逻辑卷:lvextend -L +大小 /dev/卷组名/逻辑卷名
2. 实战演练:创建并扩容逻辑卷
2.1 创建并扩容逻辑卷步骤
(1)关闭主机,添加三块新硬盘,重启主机;
(2)先使用fdisk工具将其中的两块磁盘设备/dev/sdb、/dev/sdc划分出主分区sdb1、sdc1,并且把分区类型的ID标记号改为"8e";
fdisk /dev/sdb /dev/sdc
n
#第一次回车,创建主分区
#第二次回车,选择分区号,默认为1
#第三次回车,填写起始扇区,默认为2048
#第四次回车,填写终止扇区,默认为41943039
t
8e #更改分区类型为'8e',Linux LVM类型
w
fdisk -l
(3)创建物理卷;
pvcreate /dev/sdb1 /dev/sdc1
pvscan #物理卷由分区/dev/sdc1和/dev/sdb1构成
pvdisplay
(4)创建卷组,卷组名为vg01;
vgcreate vg01 /dev/sd[bc]1 #在物理卷[/dev/sdb1 /dev/sdc1]基础上创建卷组vg01
vgdisplay #已成功创建卷组vg01
(5)创建逻辑卷,逻辑卷名为lv01,容量为30GB,生成的文件路径为/dev/vg01/lv01;
lvcreate -L 30G -n lv01 vg01 #在卷组vg01基础上创建逻辑卷lv01
lvdisplay
(6)对逻辑卷进行格式化,创建XFS文件系统,并挂载到/data目录下;
mkfs -t xfs /dev/vg01/lv01 #将新创建的逻辑卷/dev/vg01/lv01格式化为xfs类型
mkdir /data
mount /dev/vg01/lv01 /data #将xfs文件系统挂载到/data目录下
df -hT
(7)逻辑卷再扩容
先将可以进行扩容的设备进行分区,然后再扩容;
vgdisplay
lsblk #列出系统中所有可用块设备信息
fdisk /dev/sdd #可扩容设备
n
#第一次回车,创建主分区
#第二次回车,选择分区号,默认为1
#第三次回车,填写起始扇区,默认为2048
#第四次回车,填写终止扇区,默认为41943039
t
8e #更改分区类型为'8e',Linux LVM类型
w
fdisk /dev/sdd -l
先创建物理卷,再扩展卷组;
pvcreate /dev/sdd1 #为分区/dev/sdd1创建物理卷
vgextend vg01 /dev/sdd1 #将/dev/sdd1作为卷组abc的扩展卷组
vgdisplay
扩容逻辑卷;
lvextend -L +20G /dev/vg01/lv01 #将逻辑卷/dev/vg01/lv01再扩容20G,+号代表再原来基础上扩展增加20G大小,不带+号代表指定大小
lvdisplay /dev/vg01/lv01 #查看指定逻辑卷/dev/abc/abc01的扩容情况
LV Size 50.00 GiB #逻辑卷已扩容
刷新XFS文件系统;
df -hT
/dev/vg01/lv01 xfs 30G #(此处显示并未扩容成功) 33M 30G 1% /data
xfs_growfs /dev/vg01/lv01 #刷新XFS文件系统容量
df -hT
/dev/vg01/lv01 xfs 50G #(再次查看已经扩容成功) 33M 50G 1% /data
lsblk #查看系统中所有可用块设备信息
2.2 例题演练:创建LVM逻辑卷
写出用2块50G的新硬盘创建100G容量大小的LVM逻辑卷/dev/abc/abc01的步骤,并通过自动挂载的方式正常使用。
fdisk /dev/sdb fdisk /dev/sdc #并且把分区类型的ID标记号改为“8e”
pvcreate /dev/sdb1 /dev/sdc1
vgcreate abc /dev/sdb1 /dev/sdc1
lvcreate -L 100G -n abc01 abc
mkfs -t xfs /dev/abc/abc01
vim /etc/fstab
/dev/abc/abc01 /opt xfs defaults 0 0
mount -a
2.3 逻辑卷再扩容总结
pvcreate /dev/sdd1 #先创建物理卷/dev/sdd1
vgextend vgname1 /dev/sdd1 #扩容卷组vgname1
lvextend -L +20G [-r] /dev/vgname1/lvname1 #扩容逻辑卷lvname1
xfs_growfs /dev/vgname1/lvname1 #刷新XFS文件系统容量 (上一步中加入-r选项,也可以起到刷新系统容量的效果,那么该句可以省略)
resize2fs /dev/vgname1/lvnamei1 #刷新EXT4类型文件系统容量(上一步中加入-r选项,也可以起到刷新系统容量的效果,那么该句可以省略)
3. 磁盘配额
3.1 磁盘配额概述
当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,同时也可能会出现服务程序崩溃、系统无法启动等故障。
为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。
在CentOS系统中,不同的文件系统使用不同磁盘配额配置管理工具。例如,XFS文件系统通过xfs_quota工具进行管理,EXT3/4文件系统通过quota工具进行管理。
实现磁盘限额的条件
● 需要Linux内核支持
● 安装xfsprogs与quota软件包
Linux磁盘限额的特点
● 作用范围:针对指定的文件系统(分区)
● 限制对象:用户帐号、组帐号
● 限制类型:磁盘容量、文件数量
● 限制方法:软限制、硬限制
3.2 磁盘配额管理
验证磁盘配额功能
● 切换到设置配额的分区(挂载目录)
● 创建指定数量的文件:使用touch命令,或cp命令
● 创建指定容量的文件:使用dd命令,或cp命令
查看配额使用情况
xfs_quota -x -c ‘report选项’ ‘挂载点’
● report常用选项
-a、-i、-b、-u、-g
3.3 启用磁盘配额支持
启用文件系统的配额支持
添加usrquota、grpquota挂载参数
3.4 磁盘配额应用实例
CentOS 7中设置磁盘配额步聚
(1)检查是否己交装xfsprogs和xfs_quota软件包;
rpm -q xfsprogs quota
(2)以支持配额功能的方式挂载文件系统;
umount /data/ #卸载原先没有添加配额参数的挂载
df -hT
mount -o usrquota,grpquota /dev/vg01/lv01 /data #添加挂载参数"usrquota,grpquota"用于增加对用户、组配额功能的支持
###或者采用下面永久挂载文件系统的方式
vim /etc/fstab #永久添加挂载参数,增加对用户和组配额功能的支持
/dev/vg01/lv01 /data xfs defaults,usrquota,grpquota 0
umount /dev/vg01/lv01 #卸载挂载目录
mount -a #-a选项,将/etc/fstab的所有内容重新加载
df -hT #查看是否挂载成功
mount #查看配额参数设置
/dev/mapper/vg01-lv01 on /data type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
(3)编辑用户和组账号的配额设置;
useradd zhangsan #创建用户zhangsan
echo '123' | passwd --stdin zhangsan
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 zhangsan' /data/ #设置对zhangsan用户的配额要求
补充知识点
#同时限制磁盘容量和文件数
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 zhangsan' /data/ #设置对zhangsan用户的配额要求
-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c:表示直接调用管理命令。
-u:指定用户账号对象
-g:指定组账号对象
-v:显示详细信息
bsoft:设置磁盘容量的软限制数值(默认单位为KB)。
bhard:设置磁盘容量的硬限制数值(默认单位为KB)。
isoft:设置磁盘文件数的软限制数值。
ihard:设置磁盘文件数的硬限制数值。
#仅限制磁盘容量
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M zhanqsan' /opt/
#仅限制文件数
xfs_quota -x -c 'limit -u isoft=4 ihard=5 zhangsan' /opt/
(4)查看磁盘容量和文件数限制;
xfs_quota -c 'quota -uvh zhangsan' /data/ #查看zhangsan用户的磁盘容量限制
xfs_quota -c 'quota -uvh -i zhangsan' /data/ #查看zhangsan用户的文件数限制
(5)验证磁盘配额功能;
chmod 777 /data/
su - zhangsan #直接切换到zhangsan用户的家目录中
cd /data/
dd if=/dev/zero of=./test1.txt bs=10M count=9 #指定文件输入输出设备,并指定拷贝块的大小90M
ll -h
exit
知识点补充:
#验证磁盘容量超限
dd if=/dev/zero of=/data/test.txt bs=10M count=12
#验证磁盘文件数超限
touch {aa,bb,cc,cc,dd,ee,ff}.txt
dd命令是一个设备转换和连续复制命令
"if=”指定输入设备(或文件)
"of=”指定输出设备(或文件)
“bs=”指定读取数据块的大小
"count=”指定读取数据块的数量
/dev/zero “零“设备文件,可以无限的提供空字符。常用来生成一个特定大小的文件。
(6)查看配额使用情况;
root用户下查看对zhangsan用户的磁盘配额限制;
xfs_quota -c 'quota -uvh -i zhangsan' /data/ #root用户下查看zhangsan用户对/data目录的磁盘文件数限制
xfs_quota -c 'quota -uvh zhangsan' /data/ #root用户下查看zhangsan用户对/data目录的配额容量限制
zhangsan用户下创建超出硬限制容量大小的零设备文件内容;
su - zhangsan #再次切换到zhangsan用户
cd /data
ls
rm -rf test1.txt #zhangsan用户删除test1.txt文件
dd if=/dev/zero of=./test1.txt bs=10M count=12 #指定文件输入输出设备,并指定拷贝块的大小120M
ll -h
zhangsan用户下创建超出硬限制文件数的文件;
rm -rf test1.txt #删除test1.txt文件
touch file{1..10}
ll
touch file11
touch: 无法创建"file11": 超出磁盘限额
exit
root用户下查看磁盘容量和文件数的限制情况;
xfs_quota -x -c 'report -a' #root用户下查看所有用户的磁盘容量配额限制以及使用情况
xfs_quota -x -c 'report -abih' #root用户下以人性化方式,查看所有用户的磁盘容量b和文件数限制i以及配额使用情况
zhangsan用户下添加80M的文件内容;
su zhangsan
cd /data/
echo aaaaa > file1 #将aaaaa写入file1文件
ll
dd if=/dev/zero of=./file2 bs=10M count=8 #将80M的容量从零设备写入到当前目录下的file2文件
ll -h
exit
xfs_quota -x -c 'report -abih' #root用户下以人性化方式,查看所有用户的磁盘容量和文件数限制以及配额使用情况
3.5 磁盘配额总结
(1)安装软件 xfsprogs quota
yum install -y xfsprogs quota
(2)以支持配额功能挂载
mount -o usrquota,grpquota /dev/vgname1/lvnamel /挂载点目录/
(3)配置磁盘配额
xfs_quota -x -c 'limit -u/-g bsoft=xxx bhard=XXX isoft=xxx ihard=XXX 用户名/组名' 挂载点目录/
(4)验证磁盘配额
容量验证 dd if=/dev/zero of=挂载点目录/XXX文件 bs=数据块大小 count=复制次数
文件数量验证 touch等命令创建文件
(5)查看配额使用情况
xfs_quota -x -c 'report -abih'
4.linux磁盘被占满,如何清理磁盘空间?
解决思路:
先检查磁盘为什么会被占满,找出占满磁盘空间的大文件;然后确定该文件是被什么进程使用,如果是业余进程正在使用该大文件,则不能删除该文件并杀死进程,需要用空数据内容重定向覆盖该大文件数据;如果是普通进程正在使用该大文件,可以直接删除该文件并杀死进程。
(1) 使用df -hT查看磁盘空间大小,在’已用%’一栏,找出使用占比空间最大的分区文件;
(2) 在第一层根目录中使用du -h --max-depth=1命令,查找占用空间最大的文件;
或者使用du -a|sort -rn|head -5命令,直接查看并显示系统中占用空间最大的5个文件;
(3)使用find ./share/ -size +100G -type f命令,找出大于100G的文件名
(4)找到占用空间最大的文件,通过lsof 文件名,查看该文件是否正在被使用;
查询时,若返回了相应的pid,就表明有进程正在使用该文件。
(5)若是业务进程,就使用空数据内容重定向覆盖该大文件数据内;如果是普通进程正在使用该文件,可以直接删除该文件,使用lsof -n | grep deleted命令查找使用该文件进程的id号,然后根据id号杀死该进程(kill -9 pid),将磁盘空间释放出来。