13-高级文件系统管理-Quota,RAID,LVM

配置配额系统
    综述
        在内核中执行
        以文件系统(磁盘分区)为单位启用
        对不同组或者用户的策略不同
        根据块或者节点进行限制
            执行软限制(soft limit)
            硬限制(hard limit)
    1、初始化
        1.1、编辑/etc/fstab,添加分区挂载选项:usrquota、grpquota
        1.2、mount -o remount /dev/sda6     #重新挂载分区使生效
        1.3初始化数据库:quotacheck -cug /home
注意:这里可能会报错(SELinux导致的,先临时关闭setenforce 0,再重新执行)
quotacheck -cug /home
quotacheck: Cannot create new quotafile /home/aquota.user.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
quotacheck: Cannot create new quotafile /home/aquota.group.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied

    2、quotaon、quotaoff    #启用|禁用配额系统
        2.1、启用/home上的磁盘配额功能:quotaon /home
               打印状态:quotaon -p /home
    3、设置
        3.1、编辑配额(默认使用vim编辑器):edquota username

               前三个字段决定空间限制(默认单位kibibyte (1024 bytes),可以使用K,M,G,T),后三个字段决定创建文件数限制(可以使用k,m,g,t代表10^3,10^6,10^9,10^12):

3-高级文件系统管理-Quota,RAID,LVM"

       3.2、也可以使用命令设置配额:setquota usename 4096 5120 40 50 /home
        3.3、查看配额信息:quota username

               注意:达到soft限制后有个宽限期grace,达到宽限期后,也会紧禁止再继续使用磁盘

3-高级文件系统管理-Quota,RAID,LVM"

    4、验证
        su – wang     #目标用户登录
        验证blocks配额:使用dd命令创建大文件,达到soft,报警,达到Hard,禁止再继续使用磁盘
        验证inodes配额:for i in {1..200};do touch file$i;echo file$i is created;done
    5、定义原始标准用户(将user1的用户配额设置复制到user2)
            edquota -p user1 user2
    6、edquota -g groupname     #配置所有属组为groupname的文件加起来的磁盘配额
    7、取消磁盘配额:
        7.1、quotaoff /home              #禁用磁盘配额
        7.2、rm -rf /home/a.quota*    #删除磁盘配额数据库
        7.3、vim /etc/fstab     
        7.4、mount -o remount /home     
    8、报告
        用户调查:quota username
        配额概述:repquota /mountpoint
        其它工具:warnquota
独立磁盘的冗余阵列
RAID:Redundant Arrays of Inexpensive(Independent) Disks
1988年由加利福尼亚大学伯克利分校(University of California-Berkeley) “A Case for Redundant
Arrays of Inexpensive Disks”
多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供
    提高IO能力:磁盘并行读写
    提高耐用性:磁盘冗余来实现
RAID实现的方式:
    外接式磁盘阵列:通过扩展卡提供适配能力
    内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置RAID
    软件RAID:通过软件实现
RAID级别:
    多块磁盘组织在一起的工作方式不同
        RAID-0:条带卷,strip
        RAID-1: 镜像卷,mirror
        …
        RAID-4:多块数据盘异或运算值,存于专用校验盘
        RAID-5:带奇偶校验的条带卷,校验位分散存放于各个硬盘上
        RAID-6:
        RAID-10:
        RAID-01:
    RAID-0:
        读、写性能提升;
        可用空间:N*min(S1,S2,…)
        无容错能力
        最少磁盘数:2, 2+
    RAID-1:
        读性能提升、写性能略有下降;
        可用空间:1*min(S1,S2,…)
        有冗余能力:防止物理损坏,不能防止误删除,镜像不是历史快照
        最少磁盘数:2, 2N
    RAID-5:
        读、写性能提升
        可用空间:(N-1)*min(S1,S2,…)
        有容错能力:允许最多1块磁盘损坏,生产中常额外分配一块空的备用磁盘sparedisk

        最少磁盘数:3, 3+

3-高级文件系统管理-Quota,RAID,LVM"

    RAID-6:
        读、写性能提升
        可用空间:(N-2)*min(S1,S2,…)
        有容错能力:允许最多2块磁盘损坏

        最少磁盘数:4, 4+

3-高级文件系统管理-Quota,RAID,LVM"

    RAID-10:
        读、写性能提升
        可用空间:N*min(S1,S2,…)/2
        有容错能力:每组镜像最多只能坏一块
        最少磁盘数:4, 4+
    RAID-01、RAID-50
    RAID7:可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式
    JBOD:Just a Bunch Of Disks
        功能:将多块磁盘的空间合并一个大的连续空间使用
            可用空间:sum(S1,S2,…)
    常用级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
软RAID:
    mdadm:为软RAID提供管理界面
    结合内核中的md(multi devices)
    RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等等
mdadm命令:manage MD devices aka Linux Software RAID (aka:as known as)
模块化工具
支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
mdadm [mode] <raiddevice> [options] <component-devices>
    模式[mode]:
        装配:-A, –assemble
        建造:-B, –build
        创建:-C, –create
        监控:-F, –follow, –monitor
        增长:-G, –grow
        增量:-I, –incremental
        管理:–manage(可省略), -f,–force; -r,–remove;-c, –config=; -a, –auto={ no,yes,md,mdp,part}; -s, –scan;
    <raiddevice>: /dev/md# 或者 /dev/md/NAME
    <component-devices>: 块设备,磁盘或分区
    -C: 创建模式
        -l, –level=:RAID级别
        -n, –raid-devices=: 组装RAID的设备数量
        -x, –spare-devices=:分配给RAID的空闲设备数量
        -a {yes|no}:自动应答创建目标RAID设备的设备文件
        -c, –chunk=: 块大小,单位kiBytes
    -D:显示RAID详细信息
        mdadm -D|–detail /dev/md/raid
    -G,–grow:增长模式
    –manage:管理模式
        -f: 标记指定磁盘为损坏
        -a: 添加磁盘
        -r: 移除磁盘
    从内存观察md状态:
        cat /proc/mdstat
示例:
    创建RAID步骤:
        创建并定义RAID设备:mdadm -C /dev/md/raid -a yes -l 5 -n 3 -x 1  /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
        等同于: mdadm --create /dev/md/raid --auto=yes --level=5 --raid-devices=3 --spare-devices=1 /dev/sd{b,c,d,e}1
        对整个RAID设备创建文件系统:mkfs.ext4  /dev/md/raid
        挂载分区:mkdir /mnt/raid && mount /dev/md/raid /mnt/raid
        检查RAID设备的状况:mdadm -D /dev/md/raid 或 cat /proc/mdstat
        生成配置文件:mdadm -D -s >> /etc/mdadm.conf
        开机自动挂载:echo "`blkid /dev/md/md_raid | cut -d' ' -f2` /mnt/raid ext4 defaults 0 0" >> /etc/fstab

    软RAID测试和修复:
        标记故障设备为faulty        #mdadm /dev/md/raid -f /dev/sdb1        移除故障设备        #mdadm /dev/md/raid -r /dev/sdb1        添加新设备        #mdadm /dev/md/raid -a /dev/sdb9

    软RAID管理:
        生成配置文件:mdadm -D -s >> /etc/mdadm.conf
        停止RAID:mdadm -S /dev/md/raid
        扫描配置文件/etc/mdadm.conf并组装RAID:mdadm -As /dev/md/raid
        强制运行:mdadm -R /dev/md/raid
        增加新的设备成员(不可逆):mdadm /dev/md/raid -G -n 4 -a /dev/sdf1
    删除RAID步骤:
        卸载RAID挂载点:umount devicename|mountpoint        停止RAID:mdadm -S /dev/md/raid        清空RAID信息:mdadm --zero-superblock /dev/sdb1        移除磁盘或者删除分区:fdisk或dd if=/dev/zero of=/dev/sdb1 bs=512 count=1 && partx -d /dev/sdb        删除mdadm配置信息:sed -i '/md0/d' /etc/mdadm.conf        删除fsatb配置信息:sed -i '/md0/d' /etc/fstab

TIPS:
#准备实验用分区#创建扩展分区echo -e "n\ne\n4\n\n+20G\nw\n" | fdisk /dev/sdb#创建逻辑分区for (( i = 0; i < 3; i++ )); do echo -e "n\nl\n\n+1G\nw\n" |fdisk /dev/sdb; done#更改分区的ID为“fd  Linux raid auto”for i in {5..7}; do echo -e "t\n$i\nfd\nw\n" |fdisk /dev/sdb; done

练习:
1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/mnt/raid1目录
#创建RAID1mdadm -C /dev/md/raid1 -a yes -l1 -n2 -x1 /dev/sdb[5-7]mkfs.ext4 /dev/md/raid1 -L raid1mkdir -p /mnt/raid1 && mount /dev/md/raid1 /mnt/raid1#生成配置文件mdadm -D -s >> /etc/mdadm.conf#添加fstab条目开机自动挂载echo "`blkid /dev/md/raid1 | cut -d' ' -f2` /mnt/raid1 ext4 defaults 0 0" >> /etc/fstab

2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mnt/raid5目录
#创建RAID5mdadm -C /dev/md/raid5 -a yes -l5 -c 256 -n3 /dev/sd{c,d,e}mkfs.ext4 /dev/md/raid5 -L raid5mkdir -p /mnt/raid5 && mount /dev/md/raid5 /mnt/raid5#生成配置文件mdadm -D -s >> /etc/mdadm.conf#添加fstab条目开机自动挂载echo "`blkid /dev/md/raid5 | cut -d' ' -f2` /mnt/raid5 ext4 defaults 0 0" >> /etc/fstab

LVM:逻辑卷管理器
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
允许在多个物理设备间重新组织文件系统
    将设备指定为物理卷
    用一个或者多个物理卷来创建一个卷组
    物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
    在物理卷上创建的逻辑卷是由物理区域(PE)组成
    可以在逻辑卷上创建文件系统
3-高级文件系统管理-Quota,RAID,LVM"
LVM: Logical Volume Manager, Version: 2
dm: device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块
设备名:/dev/dm-#
软链接:
    /dev/mapper/VG_NAME-LV_NAME
        /dev/mapper/vol0-root
    /dev/VG_NAME/LV_NAME
        /dev/vol0/root
LVM可以弹性的更改LVM的容量
    通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量
pv管理工具
    显示物理卷信息
        pvs:简要显示物理卷信息
        pvdisplay
    创建物理卷
        pvcreate PhysicalVolume [PhysicalVolume…]
vg管理工具
    显示卷组
        vgs
        vgdisplay
    创建卷组
        vgcreate [-s #[bBsSkKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
    管理卷组
        vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
        vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
    删除卷组
        先做pvmove,再做vgremove
lv管理工具
    显示逻辑卷
        lvs
        Lvdisplay
    创建逻辑卷
        lvcreate -L #[bBsSkKmMgGtTpPeE] -n NAME VolumeGroup
        -l:PE块个数;-L:空间大小;-n:名字
    删除逻辑卷
        lvremove /dev/VG_NAME/LV_NAME
    重设文件系统大小
        fsadm [options] resize device [new_size[BKMGTEP]]
        resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
扩展逻辑卷:
    # lvextend|lvresize -r -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME    #-r选项同时调整文件系统    # resize2fs /dev/VG_NAME/LV_NAME    #扩容后单独调整文件系统    撑满空闲PE空间:# lvextend|lvresize -r -L +100%FREE /dev/VG_NAME/LV_NAME

缩减逻辑卷:(注意ext4可以缩减,但必须离线缩减,xfs不能缩减)
    # umount /dev/VG_NAME/LV_NAME    # fsck -f /dev/VG_NAME/LV_NAME     #检查文件系统    # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]   #扩容前单独调整文件系统    # lvreduce|lvresize -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME    #-r选项同时调整文件系统    # mount /dev/VG_NAME/LV_NAME MOUNTPOINT

创建逻辑卷lv:
    创建物理卷        pvcreate /dev/sda3    从物理卷创建卷组        vgcreate vg0 -s 16M /dev/sda3    从卷组创建逻辑卷        lvcreate -L 256M -n lv1  vg0    为逻辑卷创建文件系统        mkfs.ext4 /dev/vg0/lv1    挂载逻辑卷        mkdir /mnt/lv1 && mount  /dev/vg0/lv1 /mnt/lv1    开机自动挂载逻辑卷        echo -e "`blkid /dev/vg0/lv1 | cut -d' ' -f2` /mnt/lv1 ext4  defaults 0 0" >> /etc/fstab

逻辑卷管理器快照
    快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
    对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择。
    快照只有在它们和原来的逻辑卷不同时才会消耗空间。
        在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
        当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
        快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据
        建立快照的卷大小只需要原始逻辑卷的15%~20%就够了。也可以使用lvextend放大快照。
    快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
    由于快照区与原本的LV共用很多PE的区块,因此快照区与被快照的LV必须在同一个VG.系统恢复的时候的文件数量不能高于快照区的实际容量.
使用LVM快照:
    为现有逻辑卷创建快照        #lvcreate -s -n lv1_snap -l 64 -p r /dev/vg0/lv1    挂载快照        #mkdir -p /mnt/lv1_snap        #mount -o ro /dev/vg0/lv1_snap /mnt/lv1_snap    删除快照        #umount /mnt/lv1_snap        #lvremove /dev/vg0/lv1_snap

TIPS:
#准备实验用分区#创建扩展分区echo -e "n\ne\n4\n\n\nw\n" | fdisk /dev/sdb#创建逻辑分区for (( i = 0; i < 3; i++ )); do echo -e "n\nl\n\n+1G\nw\n" |fdisk /dev/sdb; done#更改分区的ID为“8e  Linux LVM”for i in {5,6}; do echo -e "t\n$i\n8e\nw\n" |fdisk /dev/sdb; done

练习:
1、创建一个至少有两个PV组成的大小为20G的名为vgtest的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷lvtest;挂载至/users目录
pvcreate /dev/sdb{5,6}vgcreate -s 16M vgtest /dev/sdb{5,6}lvcreate -L 5G -n lvtest vgtestmkfs.ext4 /dev/vgtest/lvtest -L vgtest-lvtestmkdir -p /users && mount /dev/vgtest/lvtest /users

2、 新建用户archlinux,要求其家目录为/users/archlinux ,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录
useradd archlinux -d /users/archlinuxsu - archlinuxcp /etc/pam.d ~

3、扩展lvtest至7G,要求archlinux用户的文件不能丢失
lvextend -L 7G /dev/vgtest/lvtestresize2fs /dev/vgtest/lvtest

4、收缩lvtest至3G,要求archlinux用户的文件不能丢失
umount /dev/vgtest/lvtest fsck -f /dev/vgtest/lvtest#resize2fs /dev/vgtest/lvtest 3Glvresize -r -L 3G /dev/vgtest/lvtestmount /dev/vgtest/lvtest /users

5、对lvtest创建快照,并尝试基于快照备份数据,验证快照的功能
lvcreate -s -L 1G -p r -n lvtest_snap /dev/vgtest/lvtestmkdir /mnt/lvtest_snap  && mount /dev/vgtest/lvtest_snap /mnt/lvtest_snap

原创文章,作者:Leion,如若转载,请注明出处:http://www.178linux.com/71179

(0)
上一篇 2017-03-16 14:07
下一篇 2017-03-16 15:52

相关推荐

  • Linux的常见文件类型

      在linux中,文件的类型和权限通常以【-rwxr-xr-x】来表示,文件以第一个字符来表示不同的文件类型,具体如下。   – :普通文件;颜色为灰白色   d :目录文件;颜色为蓝色   b :块设备文件;颜色为黄色   c :字符设备文件;颜色为黄色   p :管道文件;颜色为绿…

    Linux干货 2016-10-20
  • http://www.jianshu.com/p/f1d0739b141f

    Linux干货 2017-07-30
  • 文本处理

    cat,tac,rev,more,less,head,tail,cut,wc,sort,uniq,grep,
    正则表达式,扩展正则表达式

    2018-03-13
  • 计算机编程简史图

       这个图片太经典了,本来想翻译的,后来觉得这么经典的图片可能早已被人翻译了,简单的Google一下,果然有人翻译了。那我就把英文版和中文版都转过来吧。我们可以看到,其中很大一部分人都和Unix有着不解之缘(参见《Unix传奇上篇,Unix传奇下篇》) 英文原版 中文翻译版 什么也不说了,直接上图(图片比较大,单击图片看大图) 计算机编…

    Linux干货 2015-04-02
  • LVS详解

    LVS详解 LVS(Linux Virtual Server),意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 LVS 是一个工作在四层的负载均衡器,实现和 iptables/netfilter 类似,工作在内核空间的 TCP/IP 协议栈上,LVS 工作在 INPUT H…

    Linux干货 2016-11-11
  • linux第一周学习

      一周过去了,这周学习并新认识了不少内容。由一开始的萌逼状态,逐步清晰的认识了不少内容。相信我会越来越好的。 文件与目录 touch touch newfile         创建空文件touch oldfile          更新文件的三个…

    Linux干货 2017-09-02

评论列表(2条)

  • 马哥教育
    马哥教育 2017-03-20 09:45

    赞一个,继续努力哦