磁盘配额(Quota)磁盘阵列(RAID)逻辑卷轴管理器(LVM)学习记录
磁盘配额(quota)
对于用户,群组,或文件夹的大小(blocks)或数量(inodes)做出限制
限制分为软限制(soft)与硬限制(hard),当容量超过软限制时,系统会倒计时警告,若到宽限时间之前不减少容量,则不可新增文件
启用Quota
对于哪个文件系统启用就要首先要写入/etc/fstab
uuid 挂载点 文件系统 defaults, usrquota,[grpquota|prjquota] 0 0
usrquota
为对用户启用限制,grpquota
为对群组的限制,prjquota
为对目录的限制。
注意:后两者不可同时出现;修改完要重新挂载 (对\
好像没用)
Quota指令
以下特指xfs文件系统
xfs_quota -x -c "command" 挂载点
-x:专家模式,后续才能加-c
-c:后面接指令。(反正带着这俩就是了)
command:
print
:列出文件系统的资料,及是否支持quotareport -[ugr] -b -i
: 列出对谁做了quota,block和inode的情况state
: 支持quota的文件系统的信息limit [-ug] b[soft|hard]=N i[soft|hard]=N 用户名
:对于用户或群组限制容量或文件数量timer [-ug] [-bir] Ndays
:宽限时间disable
:暂时取消限制,但是仍运作。类似于selinux的permissiveenable
:恢复管制off
:关闭quota。重新挂载后可以恢复,无法用enable恢复remove
:在off后执行这条指令将所用用户的限制去掉
与ext家族对照,来自鸟哥的linux私房菜
Quota实例
用户zc在/home下容量的软限制250M,硬限制300M
xfs_quota -x -c "limit -u bsoft=250M hsoft=300M zc" /home
对user群组容量的软限制950M,硬限制1G
xfs_quota -x -c "limit -g bsoft=950M hsoft=1G user /home
设置宽限时间为14天
xfs_quota -x -c "timer -ug -b 14days" /home
观察quota
xfs_quota -x -c "report -ugibh" /home
xfs_quota -x -c "state" /home
软件磁盘阵列
把一堆小磁盘组成一个具有大容量,安全的磁盘
常见的组合方法:
- raid0 数据同时写到多个磁盘中去,效率高,冗余性无
- raid1 数据写的时候写两份,就是完全备份,效率无,安全性高
- raid5 每次写入的时候留一个校验
- raid10 先组成raid1,再组成raid0
建立方法
madam --create /dev/md[0-9] --auto=yes --level=[0|1|5|10] --chunk=NK --raid-devices=N --spare-devices=N /dev/sdx{0,1,2,..} /dev/hdx{0,1,2,..}
参数
--create
:建立raid选项--auto=yes
:加不加无所谓--chunk=NK
:每个装置的chunk或stripe的大小,据说与xfs格式化是大小一致好,可以不写--raid-devices=N
:使用几个磁盘(分区)阵列--spare-devices=N
:使用几个作为备用磁盘,阵列磁盘出问题可以立即顶上--level
:使用哪种阵列方法/dev/sda....
:磁盘的数应等于阵列+备用磁盘数
建立好了之后直接mkfs.xfs
格式化使用就可
想开机挂载的话写入/etc/fstab
即可
观察已建立装置
mdadm --detail /dev/md0
出错救援方法
mdadm --manage /dev/md0 --[add|remove|fail] 装置
参数
--add
:将后面的装置加入md--remove
:将后面的装置从md中移除--fail
:使后面的装置处于出错状态
例子
mdadm --manage /dev/md0 --fail /dev/sdb3
此时sdb3会立即出错,备用磁盘会顶上去,接下来要做的是移除sdb3,加入新的磁盘作为备份磁盘
移除sdb3
mdadm --manage /dev/md0 --remove /dev/sdb3
拔出sdb3这块磁盘,插入新的磁盘后加入raid
mdadm --manage /dev/md0 --add /dev/sdb3
关闭RAID(极重要!)
果然重要,我刚开始没按步骤,然后导致磁盘一直显示busy,不能做他用
- 如果挂载了,umount卸载了;如果写入/etc/fstab了,删除对应的行
- 先覆盖掉RAID的metadata及XFS的superblock
dd if=/dev/zero of=/dev/md0 bs=1M count=50
一定注意别覆盖错了,不然磁盘直接完蛋 - 卸载md0
mdadm --stop /dev/md0
- 一定将组raid的文件系统的头全部覆盖掉,因为RAID的相关数据备份其中了,不然重启了他自动又组,(我遇到的问题是,将盘格式化了,再分盘,用的时候显示不能用,使用partprobe,所有的文件系统(分区)又冒出了md0的标志)
dd if=/dev/zero of=/dev/sdb1 bs=1M coumt=50
....
- 此时查看可以发现没有raid了
cat /proc/mdstat
6.下面这个文件里如果又关于md0的东西,抹掉他
vim /etc/mdadm.conf
逻辑卷轴管理器(LVM)
对我来说LVM的主要作用可以扩容,即弹性调整filesystem的容量,快照姑且算是一个吧
LVM的组成
- PV 将filesystem(一个磁盘或一个分区)做成PV才能给PG使用
- PG 由一个PV或多个PV组成,可以动态增减PV
- LV 从PG中切出来,这是实实在在要用的,直接格式化成文件系统使用,可以增减(但是需要文件系统的支持,xfs只支持增,ext支持增减)
- PE 最基本的单位吧,一般来说忽略就好,类似于block的东西,组成PG
制作LVM的指令
简单来说就是先将fs格式化成PV,然后制作PG,而后制作LV,格式化LV就可以使用啦
PV阶段
pvscan
:查找系统有没有PVpvdisplay /dev/sdxx
:查看一个PV的详情pvcreate /dev/sdx{1,2,3,...}
:建立PV们
VG阶段
常用的指令
vgscan
:查找vgvgdisplay vlm1
:显示vlm1这个VG的状态vgcreate -s N vlm1 /dev/sdx{1,2,3}
:使用这一堆pv建立vlm1,-s指定PE的大小,可以省略vgextend vlm1 /dev/va8
:扩增vlm1vgreduce
:移除pvvgchange
:设定vg是否启动(active),删除要给vg前使用vgchange -a n vlm1
使其关闭vgremove
:删除一个vg
LV阶段
lvscan
lvdisplay /dev/lvm1/zclv
lvsreate -L N -n zclv lvm1
:-L后为zclv这个LV的容量或者用-l指定pe个数lvremove /dev/lvm1/zclv
:删除一个LVlvextend -L +500M /dev/lvm1/zclv
:扩增zclv500Mlvreduce
:缩减LVlvresize
:调整LV大小
文件系统阶段
建立文件系统
mkfs.xfs /dev/lvm1/zclv
扩增文件系统
xfs_growfs lv挂载点
查看文件系统信息
xfs_info lv挂载点
快照
说说理解
先对一个lv建立1G的快照空间
lvcreate -s -L 1G -n zcsnap /dev/lvm1/zclv
然后将快照挂载到挂载点,
mount -o nouuid /dev/lvm1/zcsnap /srv/snapshot
挂载后df可以看到snap和zclv的目录是一样的
接下来我的理解就是,zclv有修改的时候,当删除了东西,东西会移动到快照区。
恢复的时候
- 将快照区的东西备份
xfsdump -l 0 -L lv1 -M lv1 -f /home/lv1.dump /srv/snapshot
备份的时候,快照独立空间里的内容和zclv中未修改的内容都会被备份。这里使用tar备份也可以 - 卸载快照区,使用
lvremove
将快照去移除 - 将zclv格式化
- 将备份的东西恢复到zclv中
xfsrestore -f /home/lv1.dump -L lvm1 /srv/lvm
此时建立快照时的东西就全部回去了
========================
补充:如果快照去够大的话就不用挂载快照区和执行备份,想恢复的时候直接把zclv格式化就可以了,然后再挂载快照,把东西移动回去,上面挂载,备份的原因是如果快照区太小,格式化zclv的时候东西会把快照区撑爆,所以先备份一下,防止快照区不能完全保留下来zclv中的东西