6.磁盘配额与进阶文件系统管理

/etc/mtab
/etc/warnquota.conf

1.quota的一般用途和使用限制

       【1-0,1】

2.quota实战
       案例一:【1-3】df  mount  quotacheck  quotaon  edquota quota dd du repquota warnquota
       第一步:使用脚本制作账号环境
      #  vim addacount.sh
 #!/bin/bash
       groupadd myquotagrp
       for username in myquota1  myquota2 myquota3   myquota4 myquota5
       do
           useradd -g myquotagrp  $username
           echo  "passwd" |  passwd --stdin $username
           #setquota -u $username 40000 50000 0 0  /home      ----对每个用户进行quota(edquota -p的方式也可以在脚本中使用,不过要实现有个参照的原始用户)
       done
       # sh addacount.sh
       第二步:查看核心和文件系统是否支持
       # df -h /home     ----查看要进行quota限制的目录是否是独立的文件系统(单独分区)
       # mount | grep home     ----查看文件系统的类型(vfat不支持quota)  
 
        第三步:重新挂载并设置目标文件系统对quoat的支持
                a方式:手动重新挂载(只在本次使用系统有效,重启后市区支持)
   
            # mount -o remount,usrquota,grpquota /home        ----系统将同步更新/etc/mtab,
            # mount | grep home     ---查看是否已经支持quota
                b方式:修改/etc/fstab
                 # vim /etc/fstab        ----最好先备份一个
                      LABEL=/home   /home    ext3    defaults,usrquota,grpquota 1 2      #在defaults后加上那两个参数
                 # umount /home     ----卸载/home
                 # mount -a           ----
                 # mount | grep home    ----查看
                第四步:建立quota记录文件
                 quotacheck     ----扫描文件系统并建立quota的记录文件【1-2】
                 # quotacheck -avug     ----下面启动quota后如果有特殊需求需要重新扫描磁盘并建立quota文件可以加上-mf参数
                 # ll -d /home/a*           ----/home/aquota.user          /home/aquota.group
                第五步:启动quota服务
                 quotaon ,quotaoff【1-4,5】
                 # quotaon  -avug            ----根据/etc/mtab内的filesystem系统设定启动相关quota支持
                           注意:这个指令只在第一次启动quota是需要执行,重启系统后/etc/rc.d/rc.sysinit脚本将在系统启动时自动执行这个指令
                第六步:编辑账号/群组的限值(soft,hard)与宽限时间(grid time)
                edquota(vi)【1-6】
                 # edquota -u myquota1    ----【1-7】
                   【1-8】 ====> 【1-9】
                 将对myquota1的限值复制给其它四个用户
                 # edquota  -p myquota1 -u myquota2
                 # edquota  -p myquota1 -u myquot3
                 # edquota  -p myquota1 -u myquota4
                 # edquota  -p myquota1 -u myquota5
                 # edquota -g  myquotagrp     ---- 修改群组的quota【1-10】
                第七步:查看quuota限制值的报表
                 quota :针对某些用户显示quota报表【1-11】
                 # quota -uvs myquota1 myquota2     ----显示myquota1和myquota2的限额
                 # quota -gvs myquotagrp        ----显示myquotagrp群组的限额
                 repquota : 针对整个文件系统列出报表【1-12】
                 # requota -auvs           ----查询整个文件系统中账户的quota限制情况
                第八步:测试与管理
                # dd if=/dev/zero  of=bigfile bs=1M count=270     ----由于quota的限制,这里会出现一些警告信息(介于soft250-hard300之间)
                # repquota -auv           ----具体查看目前的quota状态(grace将出现值)
                # dd if=/dev/zero  of=bigfile2   bs=1M count=300        ----总容量超过hard,超过的部分将没有办法写入
                # du -sk               ----显示当前目录的总大小,单位为kbit
                
                # warnquota        ----对超过限额者发出警告信,同时也会发给root一封
                # mail            ----查看是否收到警告邮件【1-13】
                # vim  /etc/warnquota.conf            ----自定义警告邮件信息【1-14】
                注:不适用/var/spool/mai(如果在quota控管下)爆表的情况,因为爆表了就不能接收邮件了
               # vim /etc/cron.daily/wornquota            
               /usr/sbin/warnquota        ----加入工作排程,每天早上4:02都会被执行

3. setquota:指令的方式设定quota限额
              案例一:观察账号myquota5原始的quota限额,并将soft/hard更改为100000/200000
              # quota -uv myquota5
              # setquota -u myquota5 100000 200000 /home
              案例二:不更动既有系统的quota实例(/var/spool/mail没有单独分区)
              # cp -a  /var /spool/mail    /home/mail       ----完成复制,这里/home独立分区
              # ln -s /home/mail /var/spool/mail       ----通过镜像的方式建立软链接 
             注意:经过上面的操作,对/home的quota设置回作用在/var/spool/mail上

4.RAID  :容错式廉价磁盘阵列
             一:几种磁盘阵列
             RAID-0(等量模式):效能最佳【1-16】
             RAID-1(印象模式):完整备份 一般写入性能较差 【1-17】
             RAID 0+1   、RAID 1+0:RAID-0 RAID-1结合【1-18】
             RAID 5:效能与数据备份均衡(每颗磁盘加入一个同位检查数据parity)【1-19】
             RAID 6:RAID 5的升级版,用两颗磁盘做parity    
             spare disk:预备磁盘,自动取代磁盘整列中坏掉的硬盘
  二:磁盘阵列的优点总结【1-20】
  三:硬件磁盘整阵列和软件磁盘阵列(software/hardware RAID)
         hardware RDID: /dev/sd[a-p]
 
         software RAID: /dev/md[0......]
              比如entos下的 mdadm【1-21,22】
              案例一:建立一个RAID 5软件磁盘阵列【1-23】
              第一步:为了使案例清楚,先清理一下分区
              # fdisk -l         ----查看全部分区
              # df                 ----查看本系统使用的分区
              # fdisk /dev/hda        ----对/dev/sda这块硬盘进行操作
          Command(m for help):d         ----删除某个分区
              Partition number(1-9):9             ----表示删除地9个分区
              Command(m for help):p          ----预分区结构
              Command(m for help):w            ----将操作写入硬盘(意味着真正执行上面的操作)
              # partprobe                       ----更新核心的分区表
              第二步:用fdisk命令建立5个分割槽
              #fdisk /dev/hda
          Command(m for help):n      ----新建分区
             First...... :           ----Enter
             Last...... : +1000M
             Command(m for help):n      ----新建分区
             First...... :           ----Enter
             Last...... : +1000M
                (一共重复5遍)
            Command(m for help):p        ----预览
            Command(m for help):w        ----写入
            # partprobe                       ----更新核心的分区表
            第三步:用mdadm建置磁盘阵列
           # mdadm --create --auto=yes /dev/md0 --level 5 --raid-devices=4 --spare-devices=1 /dev/hda{6,7,8,9,10}              ----这一个命令就完成了整个RAID 5的建立
           # madam  --detail /dev/md0         ----查看/dev/md0的RAID细节信息【1-24,25】
           # cat /proc/mdstat           ----也可以通过这个文件查看系统的RAID情况【1-26】
           第四步:格式化md0这个装置
           # mkfs -t ext3 /dev/md0             ----md0作为装置被格式化
           # mkdir /mnt/raid
           # mount /dev/md0  /mnt/raid   ----将格式化好的/dev/md0挂载到/mnt/raid
           # df       ----查看一下挂载的设备
          
          案例二:RAID的救援模式【1-27】
           第一步:为了支持案例,先设置磁盘为错误
   # cp -a /etc   /var/log   /mnt/raid         ----复制些文件到RAID
           # df /mnt/raid ; du -su  /mnt/raid/*       ----查看磁盘空间使用情况;查看文档占用空间情况
           第二步:假设/dev/hda8这个装置出错了
           # mdadm --manage /dev/md0  --fail /dev/hda8           ----手动设置其出错,此时RAID会自动用/dev/hda10取代/dev/hda8 RAID 5重建系统
           # mdadm --detail  /dev/md0               ----查看重建的RAID 5的详细信息
           # cat  /proc/mdstat    
           第三步:现在我们手动创建一个新的分区取代坏掉的分区作为spare space
           # fdisk  /dev/hda
         Command(m for help):n     ----创建新分区
           【Enter】 
          +1000M
           Command(m for help):w     ----写入新分区
           #partprobe                ----重建分区表,此时系统多了一个新分区
           #mdadm  --manage /dev/md0 --add /dev/hda11   --remove /dev/hda8    ----重RAID 5中去掉/dev/hda8,加入/dev/hda11
           #mdadm  --detail /dev/md0       ----查看一下是否完成
     四:开机自动启动RAID并自动挂载
      第一步:查看/dev/md0的UUID
      #mdadm --detial /dev/md0 | grep  -i uuid
      第二步:开始设定/etc/mdadm.conf
      #vim /ect.mdadm.conf
      ARRAY /dev/md0 UUID=【上面查到的/dev/md0的uuid】
      第三步:设定开机自动挂载
     #vim /etc/fstab
     /dev/md0     /mnt/raid/   ext3 defaults 1  2
     # umount /dev/md0 ; mount -a       ----重新挂载
     # df   /mnt/raid        ----查看它是否被挂载
               第四步:重启测试
    五:关闭software RAID
               # umount /dev/md0          ----先卸载
               # vim /etc/fstab               ----随启动挂载/dev/md0的指令去掉
                /dev/md0     /mnt/raid/   ext3 defaults 1  2        ----将这一行开机自动挂载的信息删掉或者注释掉
               # mdadm --stop /dev/md0             ----停止software RAID
               # cat /proc/mdstat       ----看看是否成功关闭了
               # vim /etc/mdadm.conf         ----software RAID的配置文件中去掉/dev/md0这个装置
               ARRAY /dev/md0 UUID=【上面查到的/dev/md0的uuid】

5.逻辑滚动条管理员(Logical Volemn Manager) LVM   弹性调整文件系统的大小
   一.基本知识
               PV【1-28,35】 PE【1-29】 VG【1-30,38】 LV【1-31,41,42】 
               PE和VG的关系【1-32】
               LVM的操作流程【1-33】 
               8e            LVM的标识符
  二.实战
     案例一:从无到有创建LVM【1-34】
       第一步:磁盘初始化
       #fdisk /dev/hda              ----分割出4个新的分区
       #partprobe                ----更新分区表
       #fdisk -l                        ----查看磁盘分区后的情况
       第二步:查看有无PV在系统中,然后将hda{6,7,8,9}建立为PV格式
       # pvscan    ----查看有无PV格式的分区【1-36】
       #pvcreate   /dev/hda{6,7,8,9}         ----将hda{6,7,8,9}建立为PV格式
       #pvscan    ----再查看一下
       #pvdisplay      ----会看到更加详细的信息【1-37】
       第三步:建立VG,指定PE大小
       # vgcreate  -s  16M vbirdvg /dev/hda{6,7,8}        ----将/dev/hda{6,7,8}创建成一个VG,并且指定PE的大小为16M【1-39】
       # vgscan          ----查看vg​【1-39】
       # vgdisplay      ----更加详细地观察【1-40】
       第四步:扩展vbirdvg这个VG,把省下来的/dev/hda9丢给它
       # vgextend vbirdvg /dev/hda9
       # vgdisplay       ----现在再来纤细观察一下
       第五步:对VG建立LVM意义上的分割区LV
       #lvcreate -l 356  -n vbirdlv vbirdvg    ----将virdvg的356个PE统统分配给vbirdlv(根据上面的设定,这里每个PE大小16M,356是自行计算出来的)
       or
       #lvcreate -L 5.56G -n vbirdlv vbirdvg       ----和上面的效果是一样的
       #ll /dev/vbirdlv             ----查看建立好的LV,我们在上面给它取名vbirdlv
       #lvdisplay                      ----【1-43】
       第六步:文件系统阶段
       # mkfs -t ext3  /dev/vbirdvg/vbirdlv        ----将那个LV(要用全名)格式化为ext3格式的 
       # mkdir /mnt/lvm             ----创建一个挂载点
       # mount /dev/vbirdvg/vbird/lv    /mnt/lvm         ----挂载上去
       # df               ----查看一下挂载的情况【1-44】
       
     案例二:放大LV容量【1-45】
       第一步:处理出新的分区
       #fdisk /dev/hda          ----详细参考上面的案例
       #partprobe
       #fdisk -l       ----查看新建号的分区
       第二步:针对新的分区建立新的PV
       # pvcreate /dev/hda10  
       #pvscan
       第三步:利用vgextend加大VG
       # vgextend  vbirdvg /dev/hda10
       # vgdisplay
       第四步:利用lvresize放大LV
       #  vgresize -l +172 /dev/vbirdvg/vbirdlv         ----【1-46】
       #  lvdisplay          ----查看一下
       第五步:利用resize2fs处理文件系统
       # dumpe2fs  /dev/vbirdvg/vbirdlv          ----先查看一下文件系统的superblock【1-47】
       # resize2fs   /dev/vbirdvg/vbirdlv            ----将LV的容量扩充到整个文件系统(可以在线进行哦)
       #df /mnt/lvm;ll /mnt/lvm            ----看看扩充对磁盘及文档的影响,发现磁盘扩容了,但文档没受影响
 
     案例三:缩小LV容量
        第一步:先找出/dev/hda6的容量大小,并尝试计算文件系统需要缩小到多少
       # pvdesplay       ----【1-49】
       # pvscan              ----【1-50】
       第二步:降低文件系统容量
       # umount /mnt/lvm        ----缩小无法在线进行(扩大可以),先将其卸载
       # e2fisk -f /dev/vbirdvg/vbirdlv         ----先进性磁盘检查
       # resize2fs /dev/vbirdvg/vbirdlv  6900M      ----将/dev/vbirdvg/vbirdlv这个LV缩小到6900M
       # mount  /dev/vbirdvg/vbirdlv   /mnt/lvm   ---挂载
       # df /mnt/lvm             ----察看一下 
       第三步:降低LV的容量,/dev/hda6有89个PE
       # lvresize -l -89 /dev/vbirdvg/vbirdlv
       # lvdisplay  ----观察一下现在/dev/vbirdvg/vbirdlv的大小
       # pvdisplay        ----查看一下哪个PV有free的PE,好把等下移除de/dev/hda6中的东西转过去,发现是hda10
       # pvmove /dev/hda6 /dev/hda10       ----将/dev/hda6的PE统统移动给/dev/hda10
       # vgreduce vbirdvg  /dev/hda6            ----将/dev/hda6移出这个LV
       # pvsacn        ----再来观察一下,看看/dev/hda6是否还在/dev/vbirdvg中
       # pvremove /dev/hda6    ----最后将/dev/hda6这个PV干掉,/dev/hda6可以进行其他的用途了

6.LVM的系统快照【1-55】
       案例一:快照区的建立
       第一步:有一接着上一个案例已经没有了剩余的PE,所以先把/dev/hda6加回来
       # vgdiisplay     ----看看vbirdvg还有多少剩余的VG
       # pvcreate /dev/hda6         ----重新将/dev/hda6创建为一个PV 
       # vgextend   vbirdvg /de/hda6   ----增加到vbirdvg
       #vgdisplay     ----查看一下
       第二步:利用lvcreate建立系统快照区
       # lvcreate -l 60 -s -n vbirdss /dev/vbirdvg/vbirdlv         ----系统快照区其实就是一个LV,这里用lvcreate创建,分配60个PE给它,取名为vbirdss,被快照的LV为/dev/vbirdlv【1-51】
       # lvdisplay         ----【1-52】
       # mkdir /mnt/snapshot             ----建一个快照区的挂载点
       # mount /dev/vbirdvg/vbirdss   /mnt/snapshot        ----挂载
       #df          ----看一下快照区和被快照区的容量【1-53】
       # umount /mnt/snapshot             ----查看完毕卸载掉
      
       案例二:利用快照区复原系统
       第一步:现将被快照的区域做些修改
       # df  /mnt/lvm     ----查看一下现在的样子
       # ll  /mnt/lvm
       # rm -r /mnt/lvm/log      ----删些资料
       #cp -a /boot/lib  /sbin/     /mnt/lvm    ---复制些资料进来
       # ll  /mnt/lvm           ----看看变化
       #lvdisplay      /dev/vbirdvg/vbirdss      ----看看快照区是否已经发生了变化
       第二步: 利用快照区将原本的文件系统备份
      # mount  /dev/vbirdvg/vbirdss /mnt/snapshot            ----将快照区挂载到文件系统
      # df           ----【1-54】
      # mkdir -p /backups         ----创建这个根文件夹
      # cd /mnt/snapshot
      # tar -jcv  -f  /backups/lvm.tar.bz2*         ----创建备份文件到/backups
      注意:/mnt/lvm         ----被快照的文件系统/dev/vbirdvg/vbirdlv挂载的位置
                /mnt/snapshot        ----快照区挂载的位置
                /backups/lvm.tar.bz2           ----快照区备份
                复原/mnt/lvm中的内容需要先将其格式化,但这样一来,其所有的内容又会快照到/mnt/snapshot,所以不能直接将/mnt/snapshot直接复制到/mut/lvm
      # umount /mnt/snapshot               ----快照区的内容已经备份到当前系统的文件系统了,所以可以卸载了
      # lvremove      /dev/vbirdvg/vbirdss           ----将/dev/vbirdvg/vbirdlv这个LV从VG中去掉(这个LV奖不再存在)
      # umount  /mnt/lvm         ----格式化之前先从文件系统卸载
      # mkfs -t ext3  /dev/vbirdvg/vbirdlv      ----将这个将被复原的LV格式化
      # mount  /dev/vbirdvg/vbirdlv  /mnt/lvm  ----格式化后挂载回来
      # tar -jxv -f /backups/lvm.tar.bz2  /mnt/lvm        ----将备份的快照区的内容解压到之前被快照的/dev/vbirdvg/vbirdlv中
      # ll /mnt/lvm        ----看看复原了没
      案例三:利用快照区进行各种联系与测试,再以原系统还原快照区
     第一步:建一个大一点的快照区,将/dev/hda6全部的PE都给快照区
     # lvcreate -s -l 89 -n  vbirdss /dev/vbirdvg/vbirdlv         ----创建快照区(-s)
     # lvdisplay   /dev/vbirdvg/vbirdss           ----观察一下新建的快照区
     第二步:隐藏vbirdlv(这个当做备份区来用,防止用户更动我们将其卸载),挂载vbirdss
     # umount /mnt/lvm        ----卸载用来生成快照的备份区域
     # mount /dev/vbirdvg/vbirdss  /mnt/snapshot      ----挂载快照区
     # df /mnt/snapshot           ----看看快早去磁盘信息
     第三步:对快照区做些更动(模拟用户恶搞)
     # rm -r /mnt/snapshot/etc  /mnt/snapshot/log
     # cp -a /boot  /lib  /sbin  /mnt/snapshot     
     # ll   /mnt/snapshot
    第四步:快照区发生变化了,那么被快照的区域有没有变化呢(没有)
    # mount /dev/vbirdvg/vbird/lv  /mnt/lvm ; ll /mnt/lvm
    # umount /mnt/lvm
    # umoutn /mnt/snapshot
    # lvremove /dev/vbirdvg/vbirdss     ----先干掉快照区LV
    # lvremove /dev/vbirdvg/vbirdlv      ----再干掉原系统区LV
    # vgchange -a n vbirdvg
    # vgremove vbirdvg
    # pvremove  /dev/hda{6,7,8,9,10}
【1-55】

7.在RAID上面建置LVM,最后在将其从系统中完全去掉
第一步:构建RAID 5
# fdisk -n       ----用该命令分区
# fdisk -l       ----看一下分区怎么样【1-57】
# mdadm --create --auto=yes /dev/md0  --level 5 --raid-devices=4 --spare-devices=1 /dev/hda{6,7,8,9,10}     ----建好磁盘阵列/dev/md0,拥有4块分区和1个备份区
第二步:构建LVM
# pvcreate /dev/md0           ----为磁盘阵列创建PV
# vgcreate raidvg /dev/md0          ----为磁盘阵列的所有分区创建VG
# lvcreate -L 2.82G -n raidlv raidvg        ----创建LV,将所有VG给raidlv
# lvdisplay      ----查看一下
第三步:挂载到文件系统
# mkfs -t ext3 /dev/raidvg/raidlv
# mkdir -p /mnt/raidlvm ;mount /dev/vbirdvg/vbirdlv /mnt/raidlvm
第四步:清除
# umount /mnt/raidlvm
# lvremove /dev/raidvg/raidlv
# vgchange  -a n raidvg        ----让VG不活动
# vgremove raidvg
# pvremove /dev/md0
# mdadm --stop /dev/md0   ----关闭RAID 5 /dev/md0
# fdisk /dev/hda         ----还原分割槽


原文地址:https://www.cnblogs.com/eli01/p/3559656.html