别人的Linux私房菜(15)磁盘配额与高级文件系统管理

磁盘配额在网站、邮件、文件等服务器常见,主要有针对用户、用户组、限制某一目录的的最大磁盘配额。

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}

 

转载于:https://www.cnblogs.com/bai2018/p/10746976.html

你可能感兴趣的:(别人的Linux私房菜(15)磁盘配额与高级文件系统管理)