磁盘配额与磁盘阵列简介
磁盘配额(Quota)简介
定义和解决的问题
在linux中,因为多用户同时使用磁盘,如果少数几个使用者占用了大部分磁盘空间的话,其他用户就无法使用,所以要对每个用户的使用磁盘的权力进行限制,这就是磁盘配额。磁盘配额主要用来控制以下几点:
1、 限制某个群组能使用的最大磁盘配额;
2、 限制某个用户的最大磁盘配额;
3、 限制某一个目录的最大磁盘配额;
使用限制
1、 在EXT文件系统使用quota限制时,仅能针对整个文件系统来设计,无法针对单一目录在XFS中,可以使用project模式来设计不同目录的磁盘配额;
2、 CentOS7核心是支持quota的,其他版本可能需要自行安装;
3、 quota不限制root,只针对普通用户;
4、 SELinux可能会对quota的功能有影响,使quota仅能针对/home目录;
设定项目
1、 针对对象:群组、个人或单独目录;
2、 限制指标:限制inode用量(限制可以建立的文件数量)和block用量(限制使用的磁盘容量);
3、 hard和soft限制:hard限制(硬性规定)表示使用者的用量绝对不超过这个限值,若超过就会锁住该用户的磁盘使用权,soft限制(柔性劝导)表示超过该值且低于hard值时用户登录会发出警告信息;
4、 宽限时间:介于soft和hard之间时会出现宽限时间,如果在该时间范围内把使用值降到soft以下就没事,如果超过宽限时间使用值还是大于soft,那么最后hard值会变成soft值,磁盘使用权会被锁住;
磁盘阵列简介
定义
磁盘阵列的全名是Redundant Arrays of Inexpensive Disks,RAID,即容错式廉价磁盘阵列。它可以通过一种技术让多个较小的磁盘整合成一个较大的磁盘,用来提升性能、保护数据安全。RAID的等级不同,整合的磁盘性质也不同,主要有以下几种:
RAID-0(等量模式,stripe):效能最佳
这种模式的RAID会先将磁盘切成等量的区块chunk,当一个文件写入RAID时,该文件会按照chunk的大小切好,然后交错的放入各磁盘中,相当于将文件拆成n份等量的放在各磁盘中,这种模式如果用相同容量的磁盘组成时比较好,因为不会出现写入文件过多导致其中一个磁盘满了无法将文件碎片放入。这种模式下磁盘数量越多,读写性能就越好,但是如果其中一个磁盘损坏就会导致文件损毁。
RAID-1(映像模式,mirror):完整备份
当文件写入该RAID时,会将同一份数据完整的保存在多个磁盘中。任何一颗磁盘损毁也不会导致数据丢失,且读取性能很好,因为RAID会同时读取多个磁盘中文件的不同部分。
缺点主要有两点:
一是磁盘的总容量会大大降低,本来加起来500G的容量,如果磁盘数为2的话,只能写入最多总大小250G的文件,如果两个磁盘大小还不一样能写入的就更低。
二是这种模式下写入文件时可能会导致效率变低,如果是软件磁盘阵列效率就会变低,如果是硬件磁盘阵列,磁盘阵列卡会主动复制文件,性能还好。
RAID 1+0 和 RAID 0+1
RAID-0性能好但数据不安全,RAID-1数据安全但性能较差,可以把这两种结合一下形成RAID 1+0 和 RAID 0+1,其中储存设备厂商最推荐的方案就是RAID 1+0,这种模式是先让Disk A+Disk B组成第一组RAID1,让Disk C+Disk D组成第二组RAID1,然后这两组再整合成一组RAID0,如下图:
如果要向磁盘存入一个100M的文件,会先将文件拆成两个50M分别存入两个RAID1系统中,在这两个RAID1系统中再将50M的文件复制多份存在各磁盘。因为文件副本保存了两份,所以即使任何一个磁盘损毁也不会导致文件损坏,且因为文件被拆成了两份存储,读写效率近似变成了原来的两倍,同时具有之前的RAID所有优点。
RAID-5和RAID-6:性能与数据备份的均衡考虑
RAID-5至少需要三颗以上的磁盘才能组成,这种模式的RAID在写入文件时类似RAID-0,文件被拆成n份写入各磁盘中,不过在写入的过程中还要额外在每颗磁盘写入一个同位检查数据,这个数据会记录其他磁盘的备份数据。当RAID-5中有一颗磁盘损毁时,可以凭借其他磁盘的同位检查数据来重建原本磁盘的数据,但如果磁盘损毁数量超过一颗,那整组RAID-5中的文件就无法恢复了,因此RAID-5可写入的总容量是整体磁盘数减去1颗。
RAID-5读取文件的效率较高,与RAID-0相当,但写入文件的速度不一定很快,因为要写入文件的同时要需要计算同位检查码,如果系统的硬件很好写入的速度就较快,但是如果用的是软件磁盘阵列,那就必然需要CPU去计算然后再写入,写入速度会受到一定的影响。
RAID-6和RAID-5类似,只不过允许损坏的磁盘数量最高可以达到两颗,整体磁盘容量也会减少两颗。
预备磁盘Spare Disk
当磁盘阵列的磁盘损毁时,就要将坏掉的磁盘拔除,然后换一颗新的磁盘,再次启动磁盘阵列后,磁盘阵列就会重建原本坏掉的数据,但是这样操作必须手动拔插磁盘然后关机,除非系统支持热拔插,为了解决这个弊端需要预备磁盘的帮助。
预备磁盘就是一颗或多颗没有包含在原本磁盘阵列中的磁盘,平时不会被磁盘阵列使用,当磁盘阵列中有磁盘损毁时,这颗磁盘会被主动拉进磁盘阵列中,然后立即重建数据系统。如果磁盘阵列支持热拔插就直接将坏掉的磁盘拔除,然后插入新的磁盘并将新磁盘设置为预备磁盘即可。这样可以保证磁盘中的数据永远安全。
磁盘阵列的优点
磁盘阵列具有以下优点:
1、 数据安全和可靠性;
2、 提升读写性能;
3、 使单一文件系统具有相当大的容量;
几种RAID的特点对比:
在选择磁盘阵列方案时要考虑到具体的使用场景,如果需要很大磁盘空间且对安全性有要求,则选择RAID5或6,如果高性能的同时要求数据必须快速恢复,那就得选择RAID10搭配SSD来使用。
software RAID和hardware RAID
硬件磁盘阵列(hardware RAID)是通过磁盘阵列卡来完成的,磁盘阵列卡上有专门的芯片处理RAID的任务,此时RAID5计算同位检查码不消耗原系统的IO总线,效能较好,且中高级磁盘阵列卡都支持热拔插,可以在不关机的情况下更换硬盘。
但是磁盘阵列卡价格昂贵,且操作系统也必须拥有磁盘阵列卡的驱动程序才能正常使用,因此就有了软件磁盘阵列(software RAID),它通过软件来模拟多个磁盘,软件磁盘阵列不要求有2颗磁盘才能完成该模式的设置,只要有两个分区就可以设计磁盘阵列。
硬件磁盘阵列本质上还是一个个的实际磁盘,故装置文件名为/dev/sd[a-p];软件磁盘阵列是系统仿真完成的,装置文件名为/dev/md0、/dev/md1..