磁盘配额在网站、邮件、文件等服务器常见,主要有针对用户、用户组、限制某一目录的的最大磁盘配额。
ext文件系统进能针对整个文件系统配额,xfs可以针对目录配额。配额和文件系统有关。
内核必须支持磁盘配额(CentOS7)。
SELinux下加入特殊权限,可能只能对/home进行配额
针对xfs
针对用户、用户组或个别目录(无法共存)的配额,配额关于容量限制和文件数量限制。,并分软限制和硬限制。
软限制soft在宽限时间grace time下超出并小于硬限制hard的情况下,发出警告。超过宽限时间则软限制的值取代硬限制,锁定使用权。
文件系统的类型查看:df -hT /home
写入参数到/etc/fstab中:vim /etc/fstab 在第四栏添加:usrquota,grpquota
针对配额的限制有:quota/usrquota/uquota针对用户账号 gquota/grpquota针对用户组 pquota/prjquota针对目录。
修改完文件后卸载,重新挂载。检查文件正误,确保系统正常。删除参数时,注销所有一般账户。重新挂载时,注销所有账户。
xfs_quota -x -c "命令如:print列出主机内文件系统参数,df挂载点信息,report磁盘配额,state文件状态"
列出文件系统支持:xfs_quota -x -c "print"
列出挂载点的文件使用情况:xfs_quota -x -c "df -h" /home
列出/home下所有用户的磁盘配额限制值:xfs_quota -x -c "report -ubih" /home
列出目前支持配额的系统是否启用了磁盘配额功能:xfs_quota -x -c "state"
Accounting计算功能,Enforcement实际磁盘配额功能。分用户、组、目录三部分
xfs_quota -x -c "命令如:limit实际限制选项(block inode name,名字为bsoft/bhard/isoft/ihard name),timer设置grace time"
设置用户myquota1的block限制值:xfs_quota -x -c "limit -u bosft=250M bhard=300M myquota1" /home
设置用户组的myquotagrp的block限制值:xfs_quota -x -c "limit -g bosft=950M bhard=1G myquotagrp" /home
设置block的grace time :xfs_quota -x -c "timer -ug -b 14days" /home
测试:xfs_quota -x -c "report -ugbih" /home;xfs_quota -x -c "state"
设置prjquota(针对目录的限制)
首先在/etc/fstab中取消针对用户组的限制然后加入针对目录的限制信息,然后卸载,挂载,重新查看配额状态
建立文件制定方案识别码和目录放在/etc/projects 建立方案名称和标识符在/etc/projid,内容标识码、目录、名称自定
如:echo "10:/home/myquota" >> /etc/projetcs ; echo "myquotaprj:10" >> /etc/projid
然后执行初始化方案:xfs_quota -x -c "project -s myquotaprj"
检查状态:xfs_quota -x -c "print";xfs_quota -x -c "report -pbih" /home;
设置配额限制:xfs_quota -x -c "limit -p bosft=450M bhard=500M myquotaprj" /home
然后检查状态。
配额管理
暂时取消磁盘配额的限制:disable,恢复正常:enable,完全关闭off(重新挂载才可再次启动磁盘配额,用于remove),删除配额限制:remove
如暂时取消用户的磁盘配额的限制:xfs_quota -x -c "disable -u" /home
恢复用户的(其它如 -g -p 在disable选项中):xfs_quota -x -c "disable -u" /home
等。
ext文件系统的配额方案参考:
http://cn.linux.vbird.org/linux_basic/0420quota_1.php
将邮箱和家目录的总和配额限制示例:不同的文件系统下
mv /var/spool/mail /home
ln -s /home/mail /var/spool/mail
然后对/home进行配额
RAID独立冗余磁盘阵列,将多个较小的磁盘组合成为较大的磁盘设备
RAID 0:等量模式,性能最佳:写入RAID时将文件根据chunk的大小切割好,依序写到各个磁盘,数据交错存放,每块磁盘负责的数据量降低,物理安全性降低。
RAID 1:镜像模式,完整备份:同一个数据完整保存在两个磁盘上面。硬盘容量降低一半,写入时写入到各个磁盘。
RAID 10:四块磁盘分为两组,组成两组RAID1,两组RAID1组成一组RAID0。
RAID 5:性能和数据备份的均衡考虑,写入方式同RAID0,但写入了奇偶校验值,磁盘容量减少一块磁盘。支持一块磁盘数据数据损坏的自动恢复情况。需要计算奇偶校验,性能受到影响。
RAID 6:同RAID 5,使用两块磁盘的容量作为奇偶校验,支持两块磁盘的数据恢复。
Spare Disk:热备份磁盘:磁盘损坏时,热备份磁盘替代损坏磁盘,自动数据恢复,并移除损坏磁盘。
硬件磁盘阵列通过磁盘阵列卡来完成,软件磁盘阵列通过软件模拟磁盘阵列。
CentOS提供的mdadm软件支持RAID0 RAID1 RAID5 热备份磁盘等。
硬件磁盘阵列的设备名称为:/dev/sd[a-p]。软件模拟的磁盘名称为:/dev/mdx
使用gdisk工具在gpt分区下创建5个分区测试:假设加入的为sdb{1,2,3,4,5}
创建RAID5 chunk=256K 使用4个磁盘,一个热备份磁盘:
mdadm --create /dev/md0 --auto=yes --level=5 --chunk=256K --raid-devices=4 --spare-device=1 /dev/sdb{1,2,3,4,5}
检查创建结果:mdadm --detail /dev/md0
通过文件检查磁盘阵列的情况:cat /proc/mdstat#中括号的数字表示RAID顺序,S表示热备份U代表正常
格式化stripe(chunk)容量为256KB su=256k容量为4-1,sw=3数据宽度su*3:mkfs.xfs -f -d su=256k,sw=3 -r extsize=768k /dev/md0
挂载和查看:mkdir /srv/raid;mount /dev/md0 /srv/raid; df -hT /srv/raid/
设置磁盘错误:mdadm --manage /dev/md0 --fail /dev/sdb1
删除出错的磁盘:mdadm --manage /dev/md0 --remove /dev/sdb1
添加新的磁盘:mdadm --manage /dev/md0 --add /dev/sdb1
开机自启RAID并挂载:
修改配置文件:vim /etc/mdadm.conf ;: -r !mdadm --detail /dev/md0 | grep -i uuid
设置添加自动挂载并观察是否完成挂载:vim /etc/fstab; : -r ! blkid /dev/md0;umount /dev/md0;mount -a ;df -hT /srv/raid
关闭RAID:卸载,覆盖metadata,停止,覆盖RAID数据,检查。
如:umount /srv/raid ; vim /etc/fstab删除数据; dd if=/dev/zero of=/dev/md0 bs=1M count=50;
mdadm --stop /dev/md0;cat /proc/mdstat;vim /etc/mdadm.conf 删除数据
LVM(逻辑卷管理器),弹性调整文件系统容量,整合物理分区,删除或增加物理分区
物理卷PV 实际分区调整系统标识符为8E,通过pvcreate创建物理卷PV
卷组VG LVM组合形成的大磁盘
物理拓展块PE LVM的最小存储单元。现今使用64位系统和LVM2功能,突破了卷组的大小
逻辑卷 LV 逻辑卷,设备名通常为/dev/vgName/lvName
弹性修改文件系统容量的方案为调整LV中的PE数量
数据写入LV中分线性模式liner(按顺序使用分区容量,建议),交错模式triped(数据拆分,交错写入分区,数据损坏风险大,性能好)
pvscan扫描硬盘中的PV
创建PV,使用其他的卷:pvcreate /dev/sdb{6,7,8,9}
查找:pvscan,显示PV状态:pvdisplay /dev/sdb9,查看分配情况,pvremove让分区不具有PV属性
创建VG:vgcreate -s 16M bai /dev/sdb{6,7,8}#-s后加PE大小
显示各种信息:vgscan;pvscan;vgdisplay bai
增加VG:vgextend bai /dev/sdb9;vgdisplay bai
删除VG中的PV:vgreduce,设置VG是否启动vgchange,删除一个VG:vgremove
创建LV:lvcreate -L 2G -n baiLv bai#-l 以PE数量参考为大小
显示lvscan,状态lvdisplay,增加移除减少调整:lvextend,lvreduce,lvremove,lvresize
lv作为设备,使用全名。
然后格式化,mkfs.xfs /dev/bai/baiLv
创建挂载目录mkdir /srv/lvm,挂载mount /dev/bai/baiLv /srv/lvm,使用df -hT /srv/lvm。
ext系统支持放大和缩小容量,xfs只用xfs_growfs命令扩大文件系统。
扩大:lvresize -L +500M /dev/bai/baiLv
查看:lvscan
实际情况:df -hT /srv/lvm
xfs_growfs /srv/lvm
xfs_info /srv/lvm,显示增加了agcount数量,并增加了区块数量
使用LVM thin Volume动态调整磁盘使用率
从VG中的剩余容量取出500M作为thin pool设备(磁盘容量存储池):lvcreate -L 500M -T bai/baiPool;lvdisplay /dev/bai/baiPool;lvs bai#查看VG信息
产生一个10G的lv设备:lvcreate -V 10G -T bai/baiPool -n baiThin;lvs bai#查看
转化文件系统并挂载:mkfs.xfs /dev/bai/baiThin ; mkdir /srv/thin;mount /dev/bai/baiThin /srv/thin ;df -hT /srv/thin ;lvs bai
LVM的LV磁盘快照:
开始时快照区和系统区共享所有的PE数据,系统区修改前会将原始数据移动到快照区,快照区去掉系统区PE修改过的块。
查看剩余的PE数量:vgdisplay bai
创建baiLv的快照区:lvcreate -s -l 26 -n baiSnap /dev/bai/baiLv;lvdisplay /dev/bai/baiSnap#查看快照容量等
然后挂载;到/srv/snap;;;
做了修改以后,进行还原:
xfsdump -l 0 -L lvm1 -f /home/lvm.dump /srv/snap#备份
卸载umount /srv/snap,删除/dev/bai/baiSnap
卸载umount /srv/lvm
格式化:mkfs.xfs /dev/bai/baiLv
重新挂载:mount /dev/bai/baiLv /srv/lvm
还原:xfsrestore -f /home/lvm.dump -L lvm1 /srv/lvm
ll /srv/lvm
LVM的关闭:
卸载系统上面的 LVM 文件系统 (包括快照与所有 LV);
使用 lvremove 移除 LV ;
使用 vgchange -a n VGname 让 VGname 这个 VG 不具有 Active 的标志;
使用 vgremove 移除 VG:
使用 pvremove 移除 PV;
最后,使用 fdisk 修改 ID
umount /srv/lvm /srv/thin /srv/snap
lvremove /dev/bai/baiThin /dev/bai/baiPool /dev/bai/baiLv
vgchange -a n bai
vgremove bai
pvremove /dev/vda{6,7,8,9}