1.Quota
quota用于限制硬盘的使用量,比较常见的情况有:
一般使用方式有:
quota的使用限制:
quota的设定参数:
2. quota的使用流程
1.文件系统支持
ext2/3可以支持quota,但是也还需要手动设置。
- [root@www ~]# mount -o remount,usrquota,grpquota /home
- [root@www ~]# mount | grep home
- /dev/hda3 on /home type ext3 (rw,usrquota,grpquota)
上面这种方式设置了这次开机中可以使用quota(向文件系统中加入了usrquota和grpquota属性,这样只是在/etc/mtab中写入)
如果要永久支持quota,那就必须写入到/etc/ftab中
2.建立 quota 记录文件
其实 Quota 是透过分析整个文件系统中,每个使用者(群组)拥有的文件总数与总容量, 再将这些资料记录在该档案系统的最顶层目录,然后在该记录文件中再使用每个帐号(或群组)的限制值去规范硬盘使用量的。 所以设置这个 Quota 记录文件就显的非常的重要。
quotacheck :扫瞄文件系统并建立 Quota 的记录文件
- [root@www ~]# quotacheck [-avugfM] [/mount_point]
- 选项与参数:
- -a :扫瞄所有在 /etc/mtab 内,含有 quota 支援的 filesystem,加上此参数后,
- /mount_point 可不必写,因为扫瞄所有的 filesystem 了嘛!
- -u :针对使用者扫瞄档案与目录的使用情况,会建立 aquota.user
- -g :针对群组扫瞄档案与目录的使用情况,会建立 aquota.group
- -v :显示扫瞄过程的资讯;
- -f :强制扫瞄档案系统,并写入新的 quota 设定档 (危险)
- -M :强制以读写的方式扫瞄档案系统,只有在特殊情况下才会使用。
quotacheck 的选项只要记得‘ -avug ’一起下达即可。
指令执行完毕后,在文件系统的顶层目录下,会生成aquota.group和aquota.user两个记录文件。
3.Quota 启动、 关闭与限制值设定
- [root@www ~]# quotaon [-avug]
- [root@www ~]# quotaon [-vug] [/mount_point]
- 选项与参数:
- -u :针对使用者启动 quota (aquota.user)
- -g :针对群组启动 quota (aquota.group)
- -v :显示启动过程的相关讯息;
- -a :根据 /etc/mtab 内的 filesystem 设定启动有关的 quota ,若不加 -a 的话,
- 则后面就需要加上特定的那个 filesystem 喔!
这个‘ quotaon -auvg ’的指令几乎只在第一次启动 quota 时才需要进行!因为下次等你重新启动系统时, 系统的 /etc/rc.d/rc.sysinit 这个初始化脚本就会自动的下达这个指令了
quotaoff :关闭 quota 的服务
- [root@www ~]# quotaoff [-a]
- [root@www ~]# quotaoff [-ug] [/mount_point]
- 选项与参数:
- -a :全部的 filesystem 的 quota 都关闭 (根据 /etc/mtab)
- -u :仅针对后面接的那个 /mount_point 关闭 user quota
- -g :仅针对后面接的那个 /mount_point 关闭 group quota
edquota :编辑帐号/群组的限值与宽限时间
- [root@www ~]# edquota [-u username] [-g groupname]
- [root@www ~]# edquota -t <==修改宽限时间
- [root@www ~]# edquota -p 范本帐号 -u 新帐号
- 选项与参数:
- -u :后面接帐号名称。可以进入 quota 的编辑画面 (vi) 去设定 username 的限制值;
- -g :后面接群组名称。可以进入 quota 的编辑画面 (vi) 去设定 groupname 的限制值;
- -t :可以修改宽限时间。
- -p :复制范本。那个 范本帐号 为已经存在并且已设定好 quota 的使用者,
- 意义为‘将 范本帐号 这个人的 quota 限制值复制给 新帐号 ’!
edquota是呼叫 vi 来进行设定的。
setquota :直接于指令中设定 quota 限额
- [root@www ~]# setquota [-u|-g] 名称 block(soft) block(hard) inode(soft) inode(hard) 档案系统
这样就可以在sh中批量设定用户的quota。
4.Quota 限制值的报表
quota :单一用户(组群)的 quota 报表
- [root@www ~]# quota [-uvs] [username]
- [root@www ~]# quota [-gvs] [groupname]
- 选项与参数:
- -u :后面可以接 username ,表示显示出该使用者的 quota 限制值。若不接 username
- ,表示显示出执行者的 quota 限制值。
- -g :后面可接 groupname ,表示显示出该群组的 quota 限制值。
- -v :显示每个用户在 filesystem 的 quota 值;
- -s :使用 1024 为倍数来指定单位,会显示如 M 之类的单位!
repquota :针对档案系统的限额做报表
- [root@www ~]# repquota -a [-vugs]
- 选项与参数:
- -a :直接到 /etc/mtab 搜寻具有 quota 标志的 filesystem ,并报告 quota 的结果;
- -v :输出的资料将含有 filesystem 相关的细部资讯;
- -u :显示出使用者的 quota 限值 (这是预设值);
- -g :显示出个别群组的 quota 限值。
- -s :使用 M, G 为单位显示结果
5.文件目录以及不同文件系统的quota设置
不能对单个文件目录进行quota设置,但是可以通过ln链接的方式链接到有quota设置的文件系统目录下。如:
这样,/var/spool/mail 这个目录也做了quota设置
需要注意的是,由于目前新的 distributions 大多有使用 SELinux 的机制, 因此你要进行如同上面的目录搬移时,在许多情况下可能会有使用上的限制!或许你得要先暂时关闭 SELinux 才能测试, 也或许你得要自行修改 SELinux 的规则才行!
3.Software RAID
RAID是容错式廉价硬盘阵列,有几种不同的level:
RAID-0 (等量模式, stripe):
RAID-0 只要有任何一颗硬盘损毁,在 RAID 上面的所有资料都会遗失而无法读取。
RAID-1 (映射模式, mirror):完整备份
硬盘利用率只有50%,但能提供安全性
RAID 0+1,RAID 1+0
结合了RAID-0和 RAID-1
RAID 5:效能与资料备份的均衡考量
RAID-5 至少需要三颗以上的硬盘才能够组成这种类型的硬盘阵列,如上图所示,每个循环写入时,都会有部分的同位检查码 (parity) 被记录起来,并且记录的同位检查码每次都记录在不同的磁碟, 因此,任何一个磁碟损毁时都能够藉由其他磁碟的检查码来重建原本磁碟内的资料喔!不过需要注意的是, 由于有同位检查码,因此 RAID 5 的总容量会是整体磁碟数量减一颗。以上图为例, 原本的 3 颗磁碟只会剩下 (3-1)=2 颗磁碟的容量。而且当损毁的磁碟数量大于等于两颗时,这整组 RAID 5 的资料就损毁了。
由于 RAID 5 仅能支援一颗磁碟的损毁,因此近来还有发展出另外一种等级,就是 RAID 6 ,这个 RAID 6 则使用两颗磁碟的容量作为 parity 的储存,因此整体的磁碟容量就会少两颗,但是允许出错的磁碟数量就可以达到两颗了
Spare Disk:预备硬盘的功能:
当磁碟阵列的磁碟损毁时,就得要将坏掉的磁碟拔除,然后换一颗新的磁碟。
也可以直接设置一个硬盘为Spare Disk,有备无患
硬盘阵列的优点:
software, hardware RAID
hardware RAID通过硬盘阵列卡来实现,性能好,但比较昂贵
software RAID使用软件来实现 ,需要消耗额外的cpu和i/o(但以现在硬件条件,没什么问题)。而且对整块硬盘或者单个分区都可以进行RAID。
硬体硬盘阵列在 Linux 底下看起来就是一颗实际的大硬盘,因此硬体硬盘阵列的装置档名为 /dev/sd[a-p] ,因为使用到 SCSI 的模组之故。至于软体硬盘阵列则是系统模拟的,因此使用的装置档名是系统的装置档, 档名为 /dev/md0, /dev/md1...,两者的装置档名并不相同
4.software RAID的使用
创建:
- [root@www ~]# mdadm --detail /dev/md0
- [root@www ~]# mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N \
- > --level=[015] --spare-devices=N /dev/sdx /dev/hdx...
- 选项与参数:
- --create :为建立 RAID 的选项;
- --auto=yes :决定建立后面接的软体磁碟阵列装置,亦即 /dev/md0, /dev/md1...
- --raid-devices=N :使用几个磁碟 (partition) 作为磁碟阵列的装置
- --spare-devices=N :使用几个磁碟作为备用 (spare) 装置
- --level=[015] :设定这组磁碟阵列的等级。支援很多,不过建议只要用 0, 1, 5 即可
- --detail :后面所接的那个磁碟阵列装置的详细资讯
需要注意的是,创建之前要准备好硬盘或者分区
格式化与挂载使用 RAID:
- [root@www ~]# mkfs -t ext3 /dev/md0
- # 有趣吧!是 /dev/md0 做为装置被格式化呢!
- [root@www ~]# mkdir /mnt/raid
- [root@www ~]# mount /dev/md0 /mnt/raid
/dev/md0是之前创建好的RAID
RAID 错误的救援模式:
- [root@www ~]# mdadm --manage /dev/md[0-9] [--add 装置] [--remove 装置] [--fail 装置]
- 选项与参数:
- --add :会将后面的装置加入到这个 md 中!
- --remove :会将后面的装置由这个 md 中移除
- --fail :会将后面的装置设定成为出错的状态
开机自动启动 RAID 并自动挂载:
software RAID 也是有配置文件的,这个配置文件在 /etc/mdadm.conf !这个配置文件内容很简单, 你只要知道 /dev/md0 的 UUID 就能够配置这个文件
- [root@www ~]# mdadm --detail /dev/md0 | grep -i uuid
- UUID : 7c60c049:57d60814:bd9a77f1:57e49c5b
- # 后面那一串资料,就是这个装置向系统注册的 UUID 识别码!
- # 开始设定 mdadm.conf
- [root@www ~]# vi /etc/mdadm.conf
- ARRAY /dev/md0 UUID=7c60c049:57d60814:bd9a77f1:57e49c5b
- # RAID装置 识别码内容
- # 开始设定开机自动挂载并测试
- [root@www ~]# vi /etc/fstab
- /dev/md0 /mnt/raid ext3 defaults 1 2
- [root@www ~]# umount /dev/md0; mount -a
- [root@www ~]# df /mnt/raid
- Filesystem 1K-blocks Used Available Use% Mounted on
- /dev/md0 2916920 188464 2580280 7% /mnt/raid
- # 你得确定可以顺利挂载,并且没有发生任何错误!
关闭 software RAID(重要!):
如果你只是将 /dev/md0 卸载,然后忘记将 RAID 关闭, 结果就是....未来你在重新分割 /dev/hdaX 时可能会出现一些莫名的错误状况!
- # 1. 先卸载且删除设定档内与这个 /dev/md0 有关的设定:
- [root@www ~]# umount /dev/md0
- [root@www ~]# vi /etc/fstab
- /dev/md0 /mnt/raid ext3 defaults 1 2
- # 将这一行删除掉!或者是注解掉也可以!
- # 2. 直接关闭 /dev/md0 的方法!
- [root@www ~]# mdadm --stop /dev/md0
- mdadm: stopped /dev/md0 <==不��唆!这样就关闭了!
- [root@www ~]# cat /proc/mdstat
- Personalities : [raid6] [raid5] [raid4]
- unused devices: <none> <==看吧!确实不存在任何阵列装置!
- [root@www ~]# vi /etc/mdadm.conf
- ARRAY /dev/md0 UUID=7c60c049:57d60814:bd9a77f1:57e49c5b
- # 一样啦!删除他或是注解他!
5.LVM
LVM 的重点在于‘可以弹性的调整 filesystem 的容量!’
LVM 可以整合多个实体 partition 在一起, 让这些 partitions 看起来就像是一个硬盘一样!而且,还可以在未来新增或移除其他的实体 partition 到这个 LVM 管理的硬盘当中。
LVM的创建过程:
用法比较繁琐,先知道大概,等要用到再说吧