在linux系统中,由于是多用户、多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中有几个用户大量占掉了硬盘的空间的话,那肯定会影响到其他用户的使用。因此这就适当限制硬盘的空间给用户,以妥善分配系统资源。如果想要让磁盘的容量公平分配,这个时候就要靠quota的帮忙。

    Quota的使用限制:

  • 仅能针对整个文件系统:quota实际在运行的时候,是针对整个文件系统、整个分区进行限制的。
  • 内核必须支持quota
  • 只对一般身份用户有效:并不是所有在Linux上面的账号都可以设置quota,如root就不能设置quota,因为整个系统所有的数据几乎都是它的。   

    Quota的规范设置选项:

  • 容量限制或文件数量限制(block或inode)

            限制inode用量:管理用户可以新建的“文件数量”;

                    限制block用量:管理用户磁盘容量的限制,较常见的为这种方式。

  • soft/hard

       不管是inode/block,限制值都有两个,分别是soft和hard。

       hard:表示用户的用量绝对不会超过这个限制,若超过系统则会锁住该用户的

                  磁盘使用权。

       soft:表示用户在低于soft限值时,可以正常使用磁盘,但若超过soft且低于

                 hard的限值时,可以正常使用磁盘,但若超过soft且低于hard的限值

                 每次用户登录系统时,系统会主动发出磁盘即将爆满的警告信息,且会

                  给予一个宽限时间(gracetime)。

实践Quota流程1:文件系统支持

         先查下/home是否是个独立的文件系统:

                  #df   -h    /home

       查询一下/home的文件系统:

               #mount  |  grep  home

        如果只是想要在这次开机中实验quota,那么可以使用如下方式来加入quota的支持

           #mount  -o   remount,usrquota,grpquota  /home

        如果想开机自动挂载,那么:

            #vim  /etc/fstab (如图红线部分)

         

          然后再重新挂载下/etc/fstab这个文件: #mount  -a

实践Quota流程2:新建Quota配置文件

   quotacheck:扫描文件系统并新建Quota的配置文件

      #quotacheck  -cvug  /home  或    #quotacheck -avug

          -c :  表示创建数据(data)文件,这时须写上挂载点啊

          -a  :  扫描在/etc/fstab文件里,含有quota支持的文件系统。加上此参数后,挂载点可不必写。

             -u : 针对用户的扫描文件和目录的使用情况,会创建aquota.user.

             -g  :针对用户的扫描文件和目录的使用情况,会创建aquota.group. 

 

实践Quota流程3:Quota启动、关闭与限制值设置

  quotaon :   启动quota的服务

    #quotaon   -avug  或  #quotaon  -ug   /home

  quotaoff  :   关闭quota的服务

     #quotaoff   -avug  或  #quotaoff  [-ug]   /home

   edquota : 编辑用户/用户组的限值和宽限时间

         #edquota  -u  user1  (我系统中有个user1的用户)

#单位为KB

 可以用 #edquota -t  来修改宽限时间。

实践Quota流程4: Quota限制值的报表

     #quota   -u   user1  或  #repquota   /home

 

                            软件磁盘阵列(Software RAID)

独立磁盘冗余数组RAID, Redundant Array of Independent Disks)简称磁盘数组, 其基本思想就是把多个相对便宜的硬盘组合起来,成为一个磁盘数组组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单 颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘数组组对于电脑来说, 看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID- 10,RAID-50。

RAID 0

RAID 0

将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O, 速度最快。RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中。 所以,在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失。

RAID 1

RAID 1

两组以上的N个磁盘相互作镜像, 在一些多线程操作系统中能有很好的读取速度,另外写入速度有微小的降低。除非拥有相同数据的主磁盘与镜像同时损坏,否则只要一个磁盘正常即可维持运作,可 靠性最高。RAID 1就是镜像。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据 备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID上磁盘利用率最低的一个级别。

RAID 5

RAID 5

RAID Level 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5 至少需要三颗硬盘, RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信 息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和 相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低 而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度相当的慢,若使用“回写高速缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶 校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。

 软件磁盘阵列的设置

     下面的做的是RAID5,利用4个分区组成RAID5;每个分区100MB大小;利用1个分区设置为sparedisk(预备磁盘);

 

如图所示我的五个分区(/dev/sda{5,6,7,8,9})

 

--create :  为新建RAID的参数

--auto  :  决定新建后面的软件磁盘阵列设备,即/dev/md0

--raid-devices=N : 使用几个磁盘作为磁盘阵列的设备。

--spare-devices=N : 使用几个磁盘作为备用(spare)的设备。

--level=【015】 :  级别

--detail   :  磁盘阵列设备的详细信息

也可以查阅如下文件来查看系统软件磁盘阵列的情况:#cat  /proc/mdstat

格式化和挂载使用RAID

  #mkfs  -t  ext3  /dev/md0

   #mount  /dev/md0   /mnt

 将出错的磁盘删除并加入新磁盘

#mdadm  --manage  /dev/md0  --add  /dev/sda10  --remove  /dev/hda8

 若是想关闭软件RAID,先卸载#umount /dev/md0然后再

#mdadm  --stop  /dev/md0

 

                                逻辑卷管理器(Logical Volume Manager)

什么是LVM:PV,PE,VG,LV的意义

  • PV,物理卷:实际分区需要调整系统标示符(system ID)成为8e(LVM的标识符),然后再经过pvcreate的命令将它转成LVM最低层的物理卷(PV)。
  • VG,卷用户组:所谓的LVM大磁盘就是将许多PV整合成这个VG,所以VG就是LVM组合起来的大磁盘。
  • PE,物理扩展块:LVM默认使用4MB的PE块。它是整个LVM最小的存储块,简单说,这个PE就是有点像文件系统里面的block大小。
  • LV,逻辑卷:最终的VG还会被切成LV,这个LV就是最后可以被格式化使用的类似分区。

LVM的实现流程:

 

LVM实践

#fdisk  /dev/sda

#partprobe

如上图所示,上面的/dev/sda{6,7,8,9}这四个分区就是我们的物理分区。

PV阶段

#pvcreate  /dev/sda{6,7,8,9}          将物理分区新建成为PV;

#pvdisplay                                    显示出目前系统上面的PV状态、信息;

VG阶段

#vgcreate  vg1  /dev/sda{6,7,8}       创建vg,

    -s : 后面接PE的大小

#vgdisplay                                       显示目前系统上的VG状态、信息;

假设我们要增加这个VG的容量,可以这样做:

#vgextend  vg1  /dev/sda9

LV阶段
#lvcreate  -l  100  -n  vg1lv  vg1

  -l : 后面接PE的“个数”;-L : 后面接容量; -n : 后面接LV的名称;

#ll   /dev/vg1/vg1lv

#lvdisplay

文件系统阶段

#mkfs -t  ext3   /dev/vg1/vg1lv

#mount   /dev/vg1/vg1lv    /mnt/lvm

#df

放大LV容量

#vgextend  vg1 /dev/sda5

#lvresize -l + 25  /dev/vg1/vg1lv

#resize2fs  /dev/vg1/vg1lv

缩小LV容量

#umount  /dev/vg1/vg1lv

#e2fsck  -f  /dev/vg1/vg1lv

#resize2fs  /dev/vg1/vg1lv  400M

#mount /dev/vg1/vg1lv  /mnt/lvm

#lvresize  -l   -25   /dev/vg1/vg1lv

#pvmove  /dev/sda9  /dev/sda5

#vgreduce  /dev/sda9

#pvremove  /dev/sda9