磁盘配额:
当我们在一个指定分区内有多个用户使用时,为了保证磁盘空间的大小,我们可以限制某些用户在该磁盘空间中的使用量,此种功能我们称之为磁盘配额。
初始化:
分区挂载选项:usrquota、grpquota
创建化数据库:quotachek -c
执行:
开启或取消数据库:quotaon、quotaoff
直接编辑配额选项:edquota username
通过命令直接编辑:setquota usename 4096 5120 40 50 /foo
指定多个用户:edquota -p user1 user2
查看配置信息:
用户调查:quota
配额概述:repquota
其他工具:warnquota
举例说明:限制wang用户创建的文件总大小不能超过200M
1、fdisk /dev/sdd 创建一个1G的分区,格式化成ext4文件系统,创建一个目录,将家目录中的文件拷贝移动到该目录中,然后挂载,挂载选项添加usrquota,grpquota,挂载成功后,将.quota目录中的文件拷贝到/home路径下。
mkdir /mnt/quota cp -a /home/* /mnt/quota/ /dev/sdd1 /home ext4 usrquota,grpquota 0 0 mount -a mount -s /dev/sdd1 on /home type ext4 (rw,usrquota,grpquota) cp -a /mnt/quota/* /home/
2、创建配额数据库
root@cenots6.8 ~ # quotacheck -cug /home quotacheck: Cannot create new quotafile /home/aquota.user.new: 权限不够 quotacheck: Cannot initialize IO on new quotafile: 权限不够 quotacheck: Cannot create new quotafile /home/aquota.group.new: 权限不够 quotacheck: Cannot initialize IO on new quotafile: 权限不够 root@cenots6.8 ~ # setenforce 0 (centos6可能会报如上错误) root@cenots6.8 ~ # quotacheck -cug /home
3、启用数据库
root@cenots6.8 ~ # quotaon -p /home ###查看数据库是否启用 group quota on /home (/dev/sdd1) is off ###off 没有启用 user quota on /home (/dev/sdd1) is off root@cenots6.8 ~ # quotaon /home ###启用数据库 root@cenots6.8 ~ # quotaon -p /home ###查看数据库是否启用 group quota on /home (/dev/sdd1) is on ###on 启用 user quota on /home (/dev/sdd1) is on
4、配置配额选项警告值为1,除了下面的方法也可以:setquota wang 102400 204800 0 0 /home 直接编辑。
root@cenots6.8 ~ # edquota wang Disk quotas for user wang (uid 500): Filesystem blocks soft hard inodes soft hard /dev/sdd1 36 102400 204800 9 0 0 ## 超过该值时警告 最大值(单位K)
5、分别创建三个90M的文件测试
wang@cenots6.8 ~ # dd if=/dev/zero of=f1 bs=1M count=90 记录了90+0 的读入 记录了90+0 的写出 94371840字节(94 MB)已复制,0.0834356 秒,1.1 GB/秒 wang@cenots6.8 ~ # dd if=/dev/zero of=f2 bs=1M count=90 sdd1: warning, user block quota exceeded. ############已经警告了 记录了90+0 的读入 记录了90+0 的写出 94371840字节(94 MB)已复制,0.20327 秒,464 MB/秒 wang@cenots6.8 ~ # ll -lh 总用量 180M -rw-rw-r--. 1 wang wang 90M 8月 29 23:42 f1 -rw-rw-r--. 1 wang wang 90M 8月 29 23:43 f2 wang@cenots6.8 ~ # dd if=/dev/zero of=f3 bs=1M count=90 sdd1: write failed, user block limit reached. dd: 正在写入"f3": 超出磁盘限额 记录了20+0 的读入 记录了19+0 的写出 20934656字节(21 MB)已复制,0.12074 秒,173 MB/秒 wang@cenots6.8 ~ # ll -lh 总用量 200M -rw-rw-r--. 1 wang wang 90M 8月 29 23:42 f1 -rw-rw-r--. 1 wang wang 90M 8月 29 23:43 f2 -rw-rw-r--. 1 wang wang 20M 8月 29 23:44 f3 #####此处我们创建了90M的文件但是此处为20M,满足我们设置的200M的需求
6、查看配置信息的命令
wang@cenots6.8 ~ # quota wang Disk quotas for user wang (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sdd1 204800* 102400 204800 6days 12 0 0 root@cenots6.8 ~ # repquota /home *** Report for user quotas on device /dev/sdd1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 52 0 0 10 0 0 wang +- 204800 102400 204800 6days 12 0 0 tom -- 32 0 0 8 0 0
RAID:
raid磁盘冗余阵列作用:
提供io能力:磁盘并行读写
提供其耐用性:提供冗余能力
级别:多块磁盘组织在一起的工作方式有所不同。
raid的实现方式:
外界磁盘阵列:通过扩展卡提供适配能力
内接式raid:主板集成raid控制器
raid-0:
至少需要2块磁盘,A磁盘存放数据块chunk1,B磁盘存放数据块chunk2,同时写入,同时读出,这样读写性能提升,每个磁盘块存放的数据块大小一致,所以磁盘空间以最小的为主。
可用空间:N*min(s1,s2…..)
无容错能力
最小磁盘数:2,2+
raid-1:
至少需要2块磁盘,每块磁盘同事存放同样的数据,A磁盘存放数据块1,B磁盘存放数据块1,然后在同时存放数据块2。
可用空间:1*mi
读性能提升,写性能下降
有容错能力
最小磁盘数:2,2+
raid-4:
至少需要3块磁盘,其中一块A磁盘用于存放校验码,异或值,B磁盘存放数据块chunk1,C磁盘存放数据块chunk2,允许一块磁盘损坏,此时的工作方式叫做降级模式,可以通过校验和和另一个磁盘计算出坏磁盘中的数据,如果在有一块损坏,那就不能工作了。
读写性能提升
有容错能力
可用空间(N-1)*min
最小磁盘数:3,3+
raid-5:
至少需要3块磁盘,第一个数据存第一块盘上,第二个数据存第二块盘上,校验码存第三块盘上,下一次个数据存第三块盘,第二个数据存第2块盘,校验码存第一块盘,第二块盘存校验码,第二个数据放第一块盘,三快盘轮流做校验盘
读写性能提升
有容错能力,允许坏一块盘
最少磁盘数:3,3+
raid-6: 校验码存2次,校验盘2块
读写性能提升
可用空间:(N-2)*min
有容错能力,允许坏2块盘
最少磁盘数:4,4+
raid-01:
两两一组,组成raid0,然后将多个两两一组在组成raid1
读写性能提升
可用空间:N*min/2
有容错能力:每组坏一个该组就不能用了
最少磁盘数:4
raid-10
两两一组,组成raid1,然后将多个两两一组在组成raid0
读写性能提升
可用空间:N*min/2
有容错能力:每组raid允许坏一个
最少磁盘数:4
raid7:
可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式
JBOD:
功能:将多块磁盘的空间合并一个大的连续空间使用;
可用空间:sum(s1,s2,s3.。。)
软RAID
生产环境中,主要使用硬raid,但是我们也可以通过软raid 来模拟硬raid的工作方式。
相关命令:
mdadm:模式化的工具
格式:mdadm [mode] <raiddevice> [options component-devices<>]
支持的raid级别:raid 0 1 4 5 6 10
mode:
创建:-C
装配:-A
监控: -F
管理:-f,-r,-a
<raiddevice>:/dev/md# 任意块设备
-C:创建模式;
-n #:使用#个块设备来创建raid
-l #:指明要创建的raid级别
-a {yes|no}:是否自动创建目标raid的设备文件
-c CHUNK_SIZE:指明块大小
-x #:指明空闲磁盘的个数
-D:显示raid的详细信息;
mdadm -D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏
-a: 添加磁盘
-r: 移除磁盘
观察md的状态:
cat /proc/mdstat
生成配置文件:
mdadm -D -s >> /etc/mdadm.conf
停止md设备:
mdadm -S /dev/md#
激活:
mdadm -A -s /dev/md0
删除raid信息:mdadm -zero-superblock /dev/sdb1
应用举例:创建一个可用空间为1G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
1、首先创建两个1G大小的分区/dev/sdc{1,2},调整ID为fd。
2、创建RAID1
mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdc{1,2} ###创建raid1时,如果要使用备用硬盘,-n 2(此处不能选3) -x 1 root@cenots6.8 ~ # mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Aug 30 09:19:25 2016 Raid Level : raid1 Array Size : 1048704 (1024.13 MiB 1073.87 MB) Used Dev Size : 1048704 (1024.13 MiB 1073.87 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Tue Aug 30 09:19:32 2016 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Name : cenots6.8:0 (local to host cenots6.8) UUID : 7d304fed:b021d2d4:0cc8720b:af8683fb Events : 17 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 1 8 34 1 active sync /dev/sdc2
3、格式化/dev/md0,并挂载
mkfs.ext4 /dev/md0 UUID=d5f1e3db-4f61-4651-9b7a-b2bf82446b59 /mnt/raid ext4 defaults 0 0 root@cenots6.8 ~ # mount -a root@cenots6.8 ~ # mount -s /dev/md0 on /mnt/raid type ext4 (rw) root@cenots6.8 ~ # cd /mnt/raid/ root@cenots6.8 /mnt/raid # touch a root@cenots6.8 /mnt/raid # echo bbbb > a root@cenots6.8 /mnt/raid # cat a bbbb
4、生成配置文件
mdadm -Ds /dev/md0 > /etc/mdadm.conf
5、测试模拟损坏sdc2,然后移除,重新添加,在原有两块raid盘的基础上添加/dev/sdc3
root@cenots6.8 ~ # mdadm /dev/md0 -f /dev/sdc2 ###模拟损坏/dev/sdc2 mdadm: set /dev/sdc2 faulty in /dev/md0 root@cenots6.8 ~ # mdadm -D /dev/md0 ### 查看状态 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 2 0 0 2 removed 1 8 34 - faulty /dev/sdc2 root@cenots6.8 ~ # mdadm /dev/md0 -r /dev/sdc2 ###移除损坏硬盘 mdadm: hot removed /dev/sdc2 from /dev/md0 root@cenots6.8 ~ # mdadm -D /dev/md0 ###查看状态 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 2 0 0 2 removed root@cenots6.8 ~ # mdadm /dev/md0 -a /dev/sdc2 ###重新添加新的硬盘 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 2 8 34 1 active sync /dev/sdc2 root@cenots6.8 ~ # mdadm -G /dev/md0 -n 3 -a /dev/sdc3 ###添加/dev/sdc3 到原有raid mdadm: added /dev/sdc3 raid_disks for /dev/md0 set to 3 root@cenots6.8 ~ # mdadm -D /dev/md0 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 2 8 34 1 active sync /dev/sdc2 3 8 35 2 spare rebuilding /dev/sdc3
6、删除raid
umount /mnt/raid mdadm -S /dev/md0 ###停止raid rm -f /etc/mdadm.conf vi /etc/fstab ###删除挂载点 fdisk /dev/sda ###删除分区 mdadm --zero-superblock /dev/sdd1 ###清楚记录
创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录
root@cenots6.8 ~ # mdadm -C /dev/md0 -l 5 -a yes -n 3 -x 1 -c 256 /dev/sdc{1,2,3,4} mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. root@cenots6.8 ~ # mkfs.ext4 /dev/md0 root@cenots6.8 ~ # mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Aug 30 09:56:31 2016 Raid Level : raid5 Array Size : 2117632 (2.02 GiB 2.17 GB) Used Dev Size : 1058816 (1034.00 MiB 1084.23 MB) Raid Devices : 3 Total Devices : 4 Chunk Size : 256K Name : cenots6.8:0 (local to host cenots6.8) UUID : d1c039d1:44071753:bd67c401:7f2898af Events : 18 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 1 8 34 1 active sync /dev/sdc2 4 8 35 2 active sync /dev/sdc3 3 8 36 - spare /dev/sdc4 root@cenots6.8 ~ # vim /etc/fstab UUID=d5f1e3db-4f61-4651-9b7a-b2bf82446b59 /mydata ext4 defaults 0 0 root@cenots6.8 ~ # mount -a
LVM逻辑卷管理器:
lvm:logical volume manager逻辑卷管理器,通过DM模块设备映射组件,能够将一个或者多个底层的块设备组织成一个逻辑设备的模块。
功能特点:可以动态的扩展和缩减而不影响磁盘中的数据内容。
缺点:lv是通过软件控制的,不是直接存储在物理设备上面,如果有数据损坏不容易恢复,真正使用的时候应该放到有冗余的raid上面。
lvm的创建过程:
假如现在底层有一个硬盘设备或者一个分区,或者一个RAID在或者基于任何块设备进行,现在把这个分区做成物理卷PV(能够自我存储设备),我们可以把PV当中所提供的存储空间,在一个更低的单位上划分多个独立的存储单元,并且把存储把多个存储单元合并在一个高层上形成一个组件,我们成为卷组VG,卷组可以包含多个物理卷,卷组所有可用的空间都是有物理卷PV提供的,卷组类似于扩展分区,不能直接使用,需要分区为逻辑分区,在格式化挂载使用,所以在VG的基础上还要在创建LV组件,lV才是真正的逻辑卷,可以才格式化挂载使用的,lv可以跨越多个PV 可以扩展和缩减,这里也有一个块的概念那就是PE,PE是在创建VG的时候创建的,且默认大小为4M,如果已经创建好了VG了,则不能修改PE的大小,只能重新创建VG修改PE,如果PE已经分配给LV使用,那么这里PE叫做LE。
应用举例:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
1、通过fdisk 创建两个10G的分区/dev/sdb1 、/dev/sdb2,调整分区ID 为8e。
2、创建物理卷PV
pvcreate /dev/sdb{1,2}
pvs 或pvdispaly 可以查看物理卷信息
3、创建卷组,指定PE大小为16M,注意:PE大小只能在此处指定。
vgcreate -s 16M testvg /dev/sdb{1,2}
vgs或vgdisplay 查看卷组VG的信息
4、创建一个5G的逻辑卷LVM
lvcreate -L 5G -n testlv testvg
lvs或lvdisplay查看逻辑卷lvm的信息
ls /dev/mapper 查看testvg-testlv就存在了,可以格式化挂载使用了
5、格式化挂载逻辑卷LVM,成功之后就可以使用了。
mkfs.ext4 -L TESTLV /dev/testvg/testlv
vim /etc/fstab
UUID=5aae9d44-745c-46dc-9c6d-68fce7b159b3 /users ext4 defaults 0 0
mount -a
mount -s
/dev/mapper/testvg-testlv on /users type ext4 (rw)
df -h
/dev/mapper/testvg-testlv 4.8G 10M 4.6G 1% /users
6、扩展卷组VG 和 逻辑卷lVM
pvcreate /dev/sdb3
vgextend testvg /dev/sdb3 如果此时卷组不够用了,可以动态添加卷组VG
vgs或vgdisplay 查看卷组VG的信息
lvextend -L 10G /dev/testvg/testlv 扩展到10G,但是由于扩展的5G没有文件系统,所以df的时候发现,空间没有变为10G,因此需要执行:
resize2fs /dev/testvg/testlv 扩展文件系统 resize2fs只能针对ext类型的文件系统进行扩展,因此在使用xfs 创建lvm时如需扩展要使用xfs_growfs
扩展所有空间:lvextend –r –l +100%FREE /dev/testvg/testlv -r的作用可以替代resize2fs 的功能
df -h
/dev/mapper/testvg-testlv 9.8G 12M 9.3G 1% /users
7、逻辑卷lvm缩减
umount /users
e2fsck -f /dev/testvg/testlv 强制检测和修复
resize2fs /dev/testvg/testlv 3G 调整到3个G
lvreduce -L 3G /dev/testvg/testlv 减小到3个G
mount /dev/testvg/testlv /users 重新挂载
df -h
/dev/mapper/testvg-testlv 2.9G 7.5M 2.7G 1% /users
8、创建快照
lvcreate -s -L 512M -n testlv-snap -p r /dev/testvg/testlv
mount /dev/testvg/testlv-snap /snap
9、如果想移除PV可以做如下操作
pvmove /dev/sdb1 此时执行的操作是将sdb1上面的PE移动到其他物理卷上面
vgreduce testvg /dev/sdb1
pvremove /dev/sdb1
10、删除快照
umount /snap
lvremove /dev/testvg/testlv-snap
11、删除lv、vg、pv
umount /users
lvremove /dev/testvg/testlv
vgremove testvg
pvremove /dev/sdb{1,2,3}
注意:注意快照也是一个逻辑卷,刚创建完成的时候是一个空的磁盘空间,当我们的源数据要修改时,我们就会把源数据拷贝到快照卷中,然后在修改源数据,如果源数据修改多少次,快照卷的文件也不会变化,只是保留创建快照卷之后,文件第一次变化之前的状态,其他文件如果不修改,则不会备份到快照卷中,但是当我们创建完快照卷的时候,我们是可以看到里面是有文件存在的,这是因为里面的文件不是真正存储在快照卷中,打开的时候里面的文件都在我们通过快照卷事实上是提供了访问原卷的另外一个通路,且在设置快照卷大小时,原卷的数据量变化量不要超过快照卷大小。
原创文章,作者:Naruto,如若转载,请注明出处:http://www.178linux.com/42017