磁盘配额
磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要,但对单机用户来说意义不大。
磁盘配额程序对硬盘配额的限制 :
最低限制( soft ):这是最低限制容量。用户在宽限期间之内,它的容量可以超过最低限制,但必须在宽限时间之内将磁盘容量降低到最低限制的容量限制范围之内。
最高限制( hard ):这是“绝对不能超过”的容量。通常最高限制会比最低限制高。
宽限时间:宽限之间是指当用户使用的空间超过了最低限制,却还没有到最高限制时,在这个“宽限时间”内,就必须请用户将使用的磁盘空间降低到最低限制之下,否则则不允许在写入。反之,则宽限时间取消
系统默认没有配额,所以要打开配额的设置,再配置配额的参数
以root身份测试:
mount -o userquota /dev/vdb1 /pub ##挂载,加上配额参数打开,默认是不开的,所以要-o
quotaon -uv /dev/vdb1 ##启动磁盘配额,在添加这个参数后,打开权限配额,打开的是mount添加的/dev/vdbn
edquota -u student ... ##给student修改配额
##edquota 编辑权限配额 -u student 因为mount添加了student ,所以这时候可以编辑student的权限配额 ,但是,要看实际,能写的最大的也就是容量的大小
Disk quotas for user student (uid 100):
filesystem blocks soft hard inodes soft hard
/dev/vdb1 0 0 4000 1 0 0
##blocks : 实际拥有多少 hard : 多大的文件,大小限制 hard : 多少个文件,个数限制
以student身份测试:
su - student
dd if=/dev/zero of=/pub/file bs=1M count=1000 ##截取文件,count的单位默认是M
quota ##这个命令仅仅用来“显示”当前某个用户或者组的磁盘配额值。
quota -uvs //这个是显示当前用户的配额值
-u:表示显示用户的配额
-g:表示显示组的配额
-v:显示每个文件系统的磁盘配额
-s:可以选择用Inode或者磁盘容量的限制值来显示
Disk quotas for user student (uid 100):
filesystem blocks quota limit grace files quota limit grace
/dev/vdb1 204800* 0 2048000 1 0 0
- 注意,用户配额是直接卸载配额的数据库里面,所以再次挂载上的时候,你写的东西还在,不是写在某一个配置文件里面
永久修改配额:
之前的设定,一旦重新挂就取消配额了
vim /etc/fstab
//reboot重启之后测试生效
磁盘阵列
raid 1 :读取数据时用两块硬盘完成,这两块硬盘内的数据完全相同,容量大小不变,读取速度翻倍,适用于网站
raid 0 :写入数据时用两块硬盘完成,这两块硬盘写入数据各一半,容量大小翻倍,写入速度翻倍,适用于论坛
raid 5 :0+1 raid 0 + raid 1 但都不如单个
在这里没有三块硬盘,是三块分区通过程序来实现的raid,此raid比真正的硬盘效果差很多
软raid只能作0,1,5三个
创建
fdisk /dev/vdb #创建三个分区
t ----> fd ##全变成raid (改变类型只是便于成功性更高)
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3} #制作双磁盘一个闲置
#-a (auto) -n (--raid-devices) -l (level) -x(--spare-devices)
mkfs.xfs /dev/md0 #格式化raid
mount /dev/md0 /mnt/ #挂载
watch -n 1 'cat /proc/mdstat; df -h /mnt' #监控
//创建了三个raid类型分区
//搭建阵列
//格式化,挂载
删除
mdadm -D /dev/md0 ##查看raid状态信息
mdadm /dev/md0 -f /dev/vdb2 ##f使一块硬盘无效化,2挂掉就会直接启用三,安全性的体现
mdadm /dev/md0 -r /dev/vdb2 ##r删除指定硬盘
mdadm /dev/md0 -a /dev/vdb2 ##a添加指定硬盘,添加后,二就成为备用的了
umount /dev/md0 #取消挂载
mdadm -S /dev/md0 #停止使用
fdisk /dev/vdb #删除磁盘 d -> 1 -> d -> 2 -> d -> 3 -> wq
partprobe #同步分区表
##在一块硬盘损坏后,另一块硬盘自动补上开始同步数据,最主要的是在此时对挂载并没有影响,即在替换过程中raid可以继续使用。
//-f参数的影响
//-r参数的影响
//-a参数的影响
//卸载,关闭
//删除分区
磁盘空间的拉伸:lvm逻辑卷
通常一个磁盘分区的大小是固定的,随着时间的推移及应用的深入,会发现磁盘分区的空间会越来越小,甚至有时只有通过重新分区的方式来扩大分区的空间,而重新分区的代价往往就是需要重新安装操作系统。但是有了LVM技术,我们只需要将新的磁盘空间添加到空间不足的分区中即可。
PV VG LV的建立
桔子模型:
桔子模型:将桔子榨成汁,然后将果汁倒入大杯子,用的时候将果汁倒入小杯子,小杯子的果汁用完后,从大杯子里加入,大杯子果汁没有了,继续拿桔子榨汁。
上述模型中,PV相当于桔子,即硬盘,VG相当于大杯子,LV相当于小杯子
L : 物理分区,PV 安装了lvm的,PE里面的一份,VG 一个大的容器,用完了就加,LVM:到出来一点用,不够了再到出来,这样就不怕不够用了
查看LVM命令:pvs|pvdisplay vgs|vgdisplay lvs|lvdisplay
实际含义:
物理卷(Physical Volume, PV): 物理卷可以是一个磁盘,也可以是磁盘中的一个分区。它为LVM提供了存储介质。
逻辑卷组(Logical Volume Group, LVG): 可以把逻辑卷组想象成一个存储池,或者是逻辑硬盘。物理卷与物理卷在硬件上可以是不连续的,但把多个物理卷加入逻辑卷组后,就可以把这个逻辑卷组看成一个存储空间连续的逻辑硬盘,在这块硬盘上,可以创建多个逻辑卷(LV)。
逻辑卷(Logical Volume, LV): 可以将卷组划分成若干个逻辑卷,相当于在逻辑硬盘上划分出几个逻辑分区,每个逻辑分区上都可以创建具体的文件系统。
下面是一个lvm使用的例子 :
下面开始创建lvm逻辑卷
监控
watch -n 1 'pvs;echo ===========;vgs;echo ===========;lvs;echo ===========;df -h /mnt'
fdisk /dev/vdb ##创建一个分区,并且标识为LVM
n ----> t ----> 8e ----> wq ##格式8e,l查看
创建 :
pvcreate /dev/vdb1 ##创造pv(小容器)
vgcreate vg0 /dev/vdb1 ##创造vg(大容器)
lvcreate -L 100M -n lv0 vg0 #给自己喝的杯子添加(创建一个lv并且分得200M空间)
mkfs.xfs /dev/vg0/lv0 #同时给自己喝的杯子格式化文件系统
mount /dev/vg0/lv0 /mnt #挂载
ll /dev/mapper/vg0-lv0 #查看
ll /dev/vg0/lv0 #和上面同一个东西
//创建完成,只要挂载上,最下面的也会显示
拉伸逻辑卷
拉伸:
lvextend -L 150M /dev/vg0/lv0 #lv扩充(扩充到150M)
xfs_growfs /dev/vg0/lv0 #文件系统的扩充
fdisk /dev/vdb #pv不够了,添加,通过增加磁盘分区,标识也为LVM
## 添加都是在线的,不用卸载,缩减需要卸载
pvcreate /dev/vdb2 #将所做的分区重新创建一个pv
vgextend vg0 /dev/vg0/lv0 #扩充容器
lvextend -L 300M /dev/vg0/lv0 #扩充杯子
xfs_growfs /dev/vg0/lv0 #扩充文件系统
##直接lvextend空间,空间是不会同步到之前的lv空间的,需要进行格式化,但不能直接格式化,会删除之前的数据,所以使用"xfs_growfs",xfs文件系统只能添加空间,不能缩小空间。
//扩充
//这是在添加磁盘之后,又加进去了
//用新加的磁盘继续进行扩容
逻辑卷的缩减
换文件系统
##ext4文件系统相比较xfs来说,可以拉伸和缩减空间。
##在做拉伸之前,需要将/dev/vg0/lv0格式化成ext4文字格式
umount /mnt/ #取消挂载
mkfs.ext4 /dev/vg0/lv0 #换成ext4
##因为xfs不能缩,所以变成ext4,那么同步就用resize2fs,不能用xfs_growfs,缩减用到的也是resize2fs
blkid ##查看文件系统格式
lvextend -L 400M /dev/vg0/lv0 #扩充lv
resize2fs /dev/vg0/lv0 ##格式化添加的空间,于xfs的格式化方法不同
缩减:
umount /mnt/ #取消挂载,在进行空间缩减之前必须取消挂载
e2fsck -f /dev/vg0/lv0 #检测是否可以缩减,对分区进行扫描,在缩减过度时会提示
resize2fs /dev/vg0/lv0 200M #先缩减文件系统
mount /dev/vg0/lv0 /mnt #挂载
lvreduce -L 100M /dev/vg0/lv0 #缩减硬件
##切记顺序,先缩减文件系统,再缩减硬件!!
##如果先缩减了硬件,不会缩减成功,需要将硬件再扩充回去,然后继续按标准顺序来
//更换文件系统
//缩减文件系统
//先缩软件,再缩硬件
磁盘移除
取出正在用的pv
pvmove /dev/vdb1 /dev/vdb2 #将文件转移到 /dev/vdb2,如果移除的硬盘没有数据,可以忽略
vgreduce vg0 /dev/vdb1 #将vdb1的空间从vg0中拿出来
pvremove /dev/vdb2 #从pv中移除vdb1
##移除磁盘时必须先确保没有数据,将磁盘从vg0中拿出来,然后再从pv中移除。
//将文件转移
//将vdb1空间从vg0拿出来
//从pv中删除vdb1
lvm快照
在挂载后使用文件时有时会误删一些数据,删除后无法恢复,但是可以使用LVM快照对数据进行备份,在错误操作后可以还原。
主要的步骤:
写 —> 卸载 —> 快照 —> 挂载快照 —> 写/改 —> 卸载快照 —> 删除快照 —>重新挂载本体,文件还在
touch /mnt/file{1..100}
ls /mnt/
rm -rf /mnt/*
ls /mnt/
touch /mnt/file{1..100}
umount /mnt ##快照时必须先取消挂载
df
ls /mnt/
lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0 #对/dev/vg0/lv0进行快照
mount /dev/vg0/lv0-backup /mnt/ ##将快照后的文件挂载
ls /mnt/
rm -rf /mnt/*
ls /mnt/
umount /mnt/ ##取消挂载
lvremove /dev/vg0/lv0-backup ##移除快照
//创建
//删除
逻辑卷的删除
df 查看
umount /mnt/ 取消挂载
df 查看
lvremove /dev/vg0/lv0-backup 删除lv快照
lvremove /dev/vg0/lv0 删除lv
vgremove vg0 删除vg
pvremove /dev/vdb2 删除 pv
##完成后可以通过pvs,vgs,lvs来检测是否删除。
-
-
-
//从左边监控来看。已经全部删除完毕,下面用pvs,vgs,lvs查看,也都不会再有了