大家好,欢迎来到IT知识分享网。
第十四章 磁盘配额(Quota)与进阶文件系统管理
14.1 磁盘配额(Quota)的应用与实作
- Quota的一般用途
Quota比较常使用的几个情况是:- 针对WWW server,例如:每个人的网页空间的容量限制
- 针对mail server,例如:每个人的邮件空间限制
- 针对file server,例如,每个人最大的可用网络硬盘空间(教学环境中最常见!
上头讲的是针对网络服务的设计,如果是针对Linux系统主机上面的设定那么使用的方向有底下这一些: - 限制某一群组所能使用的最大磁盘配额(使用群组限制)
- 限制某一用户的最大磁盘配额(使用用户限制)
- 限制某一目录(directory,project)的最大磁盘配额
- Quata 的使用限制
- 在EXT文件系统家族仅能针对整个filesystem
- 核心必须支持quota
- 只对一般身份使用者有效
- 若启用SELinux,非所有目录均可定quota
不同的文件系统在quota的处理情况上不太相同,因此这里要特别强调,进行quota前,先确认你的文件系统吧。
- Quata 的规范设定项目:
- 分别针对用户、群组或个别目录(user,group&project):
- 容量限制或文件数量限制(block或inode)
- 限制inode用量:可以管理使用者可以建立的【文件数量】
- 限制block用量:管理用户磁盘容量的限制,较常见为这种方式
- 柔性劝导与硬性规定(soft/hard)
- hard: 表示使用者的用量绝对不能超过这个限制值
- soft: 若超过soft且低于hard的限值,每次用户登入系统时,系统会主动发出磁盘即将爆满的警告讯息,且会给予一个宽限时间(grace tiem)。
- 会倒数计时的宽限时间(grace time)
14.2 软件磁盘阵列(Software RAID)
- RAID-0(等量模式,stripe):效能最佳
- RAID-1(映像模式,mirror):完整备份
- RAID1+0,RAID0+1
- RAID 5:效能与数据备份的均衡考虑
- Spare Disk: 预备磁盘的功能:
14.2.3 软件磁盘阵列的设定
软件磁盘阵列的设定很简单呢?因为你只要使用一个指令即可!那就是mdadm这个指令。
mdadm --detail /dev/md0
mdadm --create /dev/md[0-9] --auto=yes --level=[015] --chunk=NK --raid-devices=N --spare-devices=N /dev/sdx dev/hdx...
选项与参数:
--create: 为建立RAID的选项
--auto=yes: 决定建立后面接的软件磁盘陣列装置,亦即/dev/md0,/dev/md1
--chunk=NK: 决定这个装置的chunk大小,也可以当成stripe大小,一般是64K或512K
--raid-devices=N: 使用几个磁盘(partition作为磁盘陣列的装置
--spare-devices=N: 使用几个磁盘作为备用(spare)装置
--level=[015]: 设定这组磁盘陣列的等级。支持很多,不过建议只要用0,1,5即可。
--detail: 后面所接的那个磁盘陣列装置的详细信息
上面的语法中,最后面会接许多的装置文件名,这些装置文件名可以是整颗磁盘,例如/dev/sdb,也可以是分区槽,例如/dev/sdb1之类。不过,这些装置文件名的总数必须要等于–raid-devices与–spare-devices的个数总和才行!
范例:
mdadm --create /dev/md0 --auto=yes --level=5 --chunk=256K --raid-devices=4 --spare-devices=1 /dev/vda{5,6,7,8,9}
- 格式化与挂载使用RAID
mkfs.xfs -f -d su=256k,sw=3 -r extsize=768k /dev/md0
12.2.4 仿真RAID错误的救援模式
俗话说“天有不测风云,人有旦夕祸福”,谁也不知道你的磁盘阵列内的装置啥时候会出差错,因此,了解一下软件磁盘阵列的救援还是必须的!底下我们就来玩一玩救援的机制吧!首先来了解一下mdadm这方面的语法:
mdadm --manage /dev/md[0-9] [--add 装置] [--remove 装置] [--fail 装置]
选项与参数:
-add: 会将后面的装置加入这个md中
--remvoe: 会将后面的装置由这个md中移除
--fail: 会将后面的装置设定成为出错的状态
14.2.5 开机自动启动RAID并自动挂载
mdadm --detail /dev/md0 | grep -i uuid #查看UUID
#开始设定mdadm.conf
vim /etc/mdadm.conf
ARRAY /dev/md0 UUID=2256da5f:4870775e:cf2fe320:4dfabbc6
# 开始设定开机自动挂载并测试
blkid /dev/md0
/dev/md0: UUID="494cb3e1-5659-4efc-873d-d0758baec523" TYPE="xfs"
vim /etc/fstab
UUID=494cb3e1-5659-4efc-873d-d0758baec523 /srv/raid xfs defaults 0 0
14.2.6 关闭软件RAID(重要)
如果是测试用的软件RAID,要关闭RAID,如果忘记关闭,未来你在重新分区/dev/vdaX时可能会出现一些莫名的错误状况啦!所以才需要关闭software RAID的步骤!那如何关闭呢?也是简单到爆炸!(请注意,确认你的/dev/md0确实不要用且要关闭了才进行底下的玩意儿)
1. 先卸除且删除配置文件内与这个/dev/md0有关的设定:
umount /srv/raid
vim /etc/fstab
UUID=494cb3e1-5659-4efc-873d-d0758bace523 /srv/raid xfs defaults 0 0 # 删除或是注释掉这一行
2. 先覆盖掉RAID的metadata以及XFS的superblock,才关闭/dev/md0的方法
dd if=/dev/zer0 of=/dev/md0 bs=1M count=50
mdadm --stop /dev/md0
dd if=/dev/zero of=/dev/vda5 bs=1M count=10
dd if=/dev/zero of=/dev/vda6 bs=1M count=10
dd if=/dev/zero of=/dev/vda7 bs=1M count=10
dd if=/dev/zero of=/dev/vda8 bs=1M count=10
dd if=/dev/zero of=/dev/vda9 bs=1M count=10
vim /etc/mdadm.conf
ARRAY /dev/md0 UUID=2256da5f:4870775e:cf2fe320:4dfabbc6
# 删除或是注释掉这一行
14.3 逻辑滚动条管理员(Logical Volume Manager)
LVM的重点在于【可以弹性的调整filesystem的容量!】而并非在于效能与数据安全上面。LVM可以整合多个实体partition在一起,让这些partition看起来就像是一个磁盘一样!而且,还可以在未来新增或移除其他的实体partition到这个LVM管理的磁盘当中。
14.3.1 什么是LVM:PV,PE,VG,LV的意义
- Physical Volume,PV,实体滚动条
我们实际的partition(或disk)需要调整系统标识符(systemID)成为8e(LVM的标识符),然后再经过pvcreate的指令将他转成LVM最底层的实体滚动条(PV),之后才能够将这些PV加以利用!调整systemID的方式就是透过gdisk啦! - Volume Group,VG,滚动条群组
所谓的LVM大磁盘就是将许多PV整合成这个VG的东西就是啦!所以VG就是LVM组合起来的大磁盘! - Physical Extent,PE,实体范围区块
LV预设使用4MB的PE区块,他是整个LVM最小的储存区块,也就是说,其实我们的文件资料都是籍由写入PE来处理的。简单的说,这个PE就有点像文件系统里面的block大小啦。 - Physical Volume,逻辑滚动条
这个LV就是最后可以被格式化使用的类似分区槽的咚咚了!LV的大小就与在此LV内的PE总数有关。为了方便用户利用LVM来管理其系统,因此LV的装置文件名通常指定为【/dev/vgname/lvname】的格式。
14.3.2 LVM实作流程
-
DISK阶段(实际的磁盘)
gdisk -l /dev/vda #其实system ID不改也没关系!只是为了让管理员清楚知道该partition的内容,操作过程略过 -
PV阶段
要建立PV其实很简单,只要直接使用pvcreate即可!
-
pvcreate: 将实体partition建立成为PV
-
pvscan: 搜寻目前系统里面任何具有PV的磁盘
-
pvdisplay: 显示出目前系统上面的PV状态
-
pvremote:将PV属性移除,让该partition不具有PV属性
pvcreate /dev/vda{5,6,7,8}
-
更详细的列示也系统上面的每个PV的个别信息
pvdisplay /dev/vda5
- VG阶段
-
vgcreate: 建立VG的指令。
-
vgscan: 搜寻系统上面的VG
-
vgdisplay: 显示目前系统上面的VG状态
-
vgextend: 在VG内增加额外的PV
-
vgreduce: 在VG内移除PV
-
vgchange: 设定VG是否启动(active)
-
vgremove:删除一个VG
vgcreate [-s N[mgt]] VG名称 PV名称 选项与参数: -s: 后面接PE的大小(size),单位可以是m,g,t(大小写均可) vgvreate -s 16M vbird /dev/vda{5,6,7}
- LV阶段
创造出VG这个大磁盘之后,再来就是要建立分区啦!这个分区就是所谓的LV啰!
-
lvcreate: 建立LV啦
-
lvscan: 查询LV
-
lvdisplay: 显示LV
-
lvextend: 在LV里面增加容量
-
lvreduce: 在LV里面减少容量
-
lvremove: 删除一个LV
-
lvresize: 对LV进行容量大小的调整
lvcreate [-L N[mgt]] [-n LV名称] VG名称 lvcreate [-l] [-n LV名称] VG名称 选项与参数: -L:后面接容量,容量的单位可以是M.G.T等,要注意的是,最小单位PE.因此这个数量必须是PE的倍数,若不相符,系统会自动计算最相近的容量。 -l: 后面接PE的【个数】 -n: 后面接的是LV的名称 范例: lvcreate -L 2G -n vbirdlv vbirdvg
14.3.3 放大LV容量
放大文件系统时,需要底下这些流程的:
- VG阶段需要有剩余的容量
- LV阶段产生更多的可用容量
- 文件系统阶段的放大
其中最后一个步骤最重要!我们在第7章当中知道,整个文件系统在最初格式化的时候就建立了inode/block/superblock等信息,要改变这些信息是很难的!不过因为文件系统格式化的时候建置的是多个block group,因此我们可以透过在文件系统当中增加block group的方式来增减文件系统的量!而增减block group就是利用xfs_growfs啰!所以最后一步是针对文件系统处理的,前面几步则是针对LVM的实际容量大小!
Tips因此,严格来说,放大文件系统并不是没有进行【格式化】喔!放大文件系统时,格式化的位置在于该装置后来新增的部份,装置的前面已经存在的文件系统则没有变化。而新增的格式化过的数据,再反馈回原本的superblock这样而已。
范例:
lvresize -L +500M /dev/vbirdvg/vbirdlv
xfs_info /srv/lvm
xfs_growfs /srv/lvm
xfs_info /srv/lvm
df -Th /srv/lvm
14.3.5 LVM的LV磁盘快照
快照就是将当时的系统信息记录下来,就好像照相记录一般!未来若有任何资料更动了,则原始资料会被搬移到快照区,没有被更动的区域则由快照区与文件系统共享。
- 传统快照区的建立
lvcreate -s -l 26 -n vbirdsnap1 /dev/vbirdvb/vbirdlv
# 上述的指令中最重要的是那个 -s的选项,代表是snapshot快照功能之意!
# -n后面接快照区的装置名称,/dev/…则是要被快照的LV完整档名
# -l 后面则是使用多少个PE来作为这个快照区使用。
-
利用快照区复原系统
-
利用快照区将原本的filesystem备份,我们使用xfsdump来处理
xfsdump -l 0 -L lvm1 -M lvm1 -f /home/lvm.dump /srv/snapshot1
-
将vbirdsnap1卸除并移除(因为里面的内容已经备份起来了)
umount /srv/snapshot1 lvremove /dev/vbirdvg/vbirdsnap1 umount /srv/lvm mkfs -f /dev/vbirdvg/vbirdlv mount /dev/vbirdvg/vbirdlv /srv/lvm xfsrestore -f /home/lvm.dump -L lvm1 /srv/lvm ll /srv/lvm
-
会玩LVM还不行!你必须要会移除系统内的LVM喔!因为你的实体partition已经被使用到LVM去,如果你还没有将LVM关闭就直接将那些partition删除或转为其他用途的话,系统是会发生很大的问题的!所以啰,你必须要知道如何将LVM的装置关闭并移除才行!会不会很难呢?其实不会啦!依据下面的流程来处理即可:
- 先卸除系统上面的LVM文件系统(包括快照与所有LV)
- 使用lvremove移除LV
- 使用vgchange -a n VGname让VGname这个VG不具有Active的标志
- 使用vgremove移除VG
- 使用pvremove移除PV
- 最后,使用fdisk修改ID回来啊!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32229.html