美文网首页Linux初学者学习笔记
20170810 高级文件系统管理

20170810 高级文件系统管理

作者: 哈喽别样 | 来源:发表于2017-08-13 20:09 被阅读5次
    • 文件系统配额管理
    • RAID
    • LVM逻辑卷管理器

    一、文件系统配额管理

    • 文件系统配额:在内核中启用,以文件系统为管理单位,对不同的用户和用户组设置不同的配额管理策略,配额限制单位为节点和块

    • 软限制 (soft limit):超出软限制报警,但不会禁止继续占用文件系统空间

    • 硬限制 (hard limit):超出硬限制直接禁止继续占用文件系统空间

    • 初始化:

      • 分区挂载选项:
        编辑/etc/fstab文件,分区挂载选项增加usrquota(用户配额), grpquota(用户组配额)
      • 初始化数据库:quotacheck命令
    • 执行

      • 开启、取消配额:quotaon, quotaoff
      • 编辑配额 edquota
    • 实验:实现在/home分区对用户hellopeiyang的磁盘配额,达到80M时报警,最多只能使用100M磁盘空间
      命令:

    // step1
    vim /etc/fstab    
    // step 2
    mount -o remount /home
    // step 3
    setenforce 0
    quotacheck -cug /home
    // step 4
    quotaon /home
    quotaon -p /home
    edquota hellopeiyang
    // step 5
    su - hellopeiyang
    dd if=/dev/zero of=file001 bs=1M count=81
    dd if=/dev/zero of=file001 bs=1M count=150
    

    第1步,修改/etc/fstab文件挂载点为/home的条目的挂载选项,将"defaults"改为"usrquota,grpquota",表示挂载时开启对用户、用户组的磁盘配额选项

    第2步,重新挂载后可以看到,挂载选项新增了usrquota和grpquota选项

    第3步,首先用setenforce 0命令禁用会影响磁盘配额操作的SELinux,然后初始化数据库,成功后可以看到/home目录下新增加的两个数据文件

    第4步,开启配额,按照要求配置hellopeiyang用户的配额,注意单位为KB。

    第5步,切换至hellopeiyang用户,在用户家目录下测试配额是否测试成功。可以看到创建文件总容量超出80M时有报警信息,创建文件总容量超出100M时文件写入失败,最多只能达到配额设置的最大值。

    二、RAID

    (一)RAID基本概念

    1. 定义:

    RAID(Redundant Arrays of Independent Disks) 独立磁盘冗余阵列,多个磁盘合成一个阵列来提供更好的性能、冗余

    2. 功能:

    通过磁盘并行读写提高IO能力,通过磁盘冗余提高耐用性

    3. 实现方式:
    • 外接式RAID:通过扩展卡提供能力
    • 内接式RAID:主板集成RAID控制器,安装OS前在BIOS中设置
    • 软件式RAID:通过OS实现
    4. RAID级别:多块磁盘组织在一起的不同工作方式

    主要应用的RAID级别:

    • RAID 0 ,又称条带卷
      磁盘组织方式:

    (1)读、写性能提升;
    (2)可用空间:N*min(S1,S2,...)
    (3)无容错能力
    (4)最少磁盘数:2

    • RAID 1 ,又称镜像卷
      磁盘组织方式:

    (1)读性能提升、写性能略有下降;
    (2)可用空间:1*min(S1,S2,...)
    (3)有冗余能力
    (4)最少磁盘数:2

    • RAID 4
      磁盘组织方式:

    (1)读、写性能提升;
    (2)可用空间:(N-1)*min(S1,S2,...)
    (3)有容错能力:允许最多1块磁盘损坏,但由于校验盘故障率远高于其他磁盘,已被RAID5取代
    (4)最少磁盘数:3

    • RAID 5
      磁盘组织方式:

    (1)读、写性能提升
    (2)可用空间:(N-1)*min(S1,S2,...)
    (3)有容错能力:允许最多1块磁盘损坏
    (4)最少磁盘数:3

    • RAID 6
      磁盘组织方式:

    (1)读、写性能提升
    (2)可用空间:(N-2)*min(S1,S2,...)
    (3)有容错能力:允许最多2块磁盘损坏
    (4)最少磁盘数:4

    • RAID 10
      磁盘组织方式:

    (1)读、写性能提升
    (2)可用空间:N*min(S1,S2,...)/2
    (3)有容错能力:每组镜像最多只能坏一块
    (4)最少磁盘数:4

    • RAID 01
      磁盘组织方式:

    (1)读、写性能提升
    (2)可用空间:N*min(S1,S2,...)/2
    (3)有容错能力:容错能力不及RAID10
    (4)最少磁盘数:4

    (二)软件RAID

    1、RAID设备命名规则:

    /dev/md#,#指数字,如/dev/md0, /dev/md1, /dev/md2

    2、软件RAID实现
    • mdadm 工具介绍:
      Linux软件RAID管理工具,支持的RAID级别:
      RAID0, RAID1, RAID4, RAID5, RAID6, RAID10

    • mdadm 语法格式:
      mdadm [mode] <raiddevice> [options] <component-devices>

    • mode 模式:
      创建(Create)、装配(Assemble)、监控(Monitor)、管理(Manage)

    • <raiddevice> : 设备名,如/dev/md1

    • <component-devices>: 任意块设备,可以是磁盘或磁盘分区

    • 创建模式-C

    -n #            //使用#个块设备来创建此RAID
    -l #            //指明要创建的RAID的级别
    -a {yes|no}     //自动创建目标RAID设备的设备文件
    -c CHUNK_SIZE   //指明块大小
    -x #            //指明空闲盘的个数
    
    • 显示RAID详细信息-D,语法:mdadm -D /dev/md#

    • 管理模式

    -f     //标记指定磁盘损坏
    -a     //添加磁盘
    -r     //移除磁盘
    
    • 观察md状态:cat /proc/mdstat

    • 生成配置文件:mdadm -D -s >> /etc/mdadm.conf

    • 停止设备:mdadm -S /dev/md0

    • 激活设备:mdadm -A -s /dev/md0

    • 强制启动:mdadm -R /dev/md0

    • 删除raid信息:mdadm --zero-superblock /dev/sdb1

    3、实验:软件RAID基本操作
    • 现有5块硬盘/dev/sdb, /dev/sdc, /dev/sdd, /dev/sde, /dev/sdf,大小均为20G。
      (1)将五块硬盘分别分出1个1G大小的分区,先将前四块硬盘的第一个分区构建RAID5,命名为/dev/md0,其中第四块硬盘作为空闲硬盘。建立后,对RAID设备建立ext4文件系统。
    fdisk /dev/sdb   fdisk /dev/sdc...    //分区时注意一定要改变system id为fd
    mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
    // 含义:-C指创建,-a yes指自动创建RAID设备文件,-l 5指RAID级别为5,-n 3指活动设备数为3,
             -x 1指空闲设备数为1
    

    (2)检查RAID设备情况,并将配置文件保存到/etc/mdadm.conf

    mdadm -D /dev/md0
    mdadm -D -s >> /etc/mdadm.conf
    

    红框标注中分别表示了RAID级别,活动、空闲设备数量,chunk的默认大小,每个磁盘设备的具体状态

    (3)将第五块硬盘的第一个分区加入到/dev/md0上

    mdadm –G /dev/md0 –n4 -a /dev/sdf1     
    //-G 指改变活动磁盘阵列的大小,-n4 指活动设备数为4,-a指添加磁盘
    

    (4)模拟第一块硬盘出现故障,查看第四块硬盘的分区是否自动顶替故障设备

    mdadm /dev/md0  -f /dev/sdb1
    mdadm -D /dev/md0
    

    红框中显示/dev/sdb1已经发生故障,而之前空闲的/dev/sde1自动顶替/dev/sdb1的位置

    (5)移除故障设备

    mdadm /dev/md0 -r /dev/sdb1
    mdadm -D /dev/md0
    

    红框显示故障设备/dev/sdb1已经被移除

    (6)停止RAID设备

    mdadm -S /dev/md0
    

    三、LVM 逻辑卷管理器

    (一)LVM逻辑卷管理器的基本概念

    • LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统

    • LVM允许在多个物理设备间重新组织文件系统,创建逻辑卷的大体过程如下:

      • 将设备指定为物理卷PV(Physical Volumes)
      • 物理卷用固定大小的物理区域PE(Physical Extent)定义
      • 将一个或多个物理卷创建成为卷组VG(Volumes Group)
      • 在卷组上建立的逻辑卷LV(Logical Volumes)由PE构成
      • 在逻辑卷上建立文件系统
    • LVM弹性更改逻辑卷容量原理:
      通过交换PE实现弹性更改容量,将逻辑卷的PE转移到其他逻辑卷中以降低容量,从其他逻辑卷转移PE到逻辑卷以增加容量

    (二)LVM逻辑卷管理器实现

    • 物理卷PV管理工具

      • 显示pv信息
        pvs:简要显示pv信息
        pvdisplay:详细显示pv信息
      • 创建pv
        pvcreate /dev/DEVICE
    • 卷组VG管理工具

      • 显示卷组
        vgs:简要显示vg信息
        vgdisplay:详细显示vg信息
      • 创建卷组
        vgcreate [-s #UNIT] VG /dev/DEVICE
      • 管理卷组
        vgextend VG /dev/DEVICE 扩充卷组
        vgreduce VG /dev/DEVICE 压缩卷组
      • 删除卷组
        vgremove
    • 逻辑卷LV管理工具

      • 显示逻辑卷
        lvs:简要显示lv信息
        lvdisplay:详细显示lv信息
      • 创建逻辑卷
        lvcreate -L #[UNIT] -n NAME VG: -L指定大小
        lvcreate -l #%{FREE | VG} -n NAME VG :-l指定百分比,后跟VG指卷组总容量,FREE指卷组未用容量
      • 管理逻辑卷
        lvextend -L [+]#[UNIT] /dev/VG_NAME/LV_NAME
        lvreduce -L [-]#[UNIT] /dev/VG_NAME/LV_NAME
      • 删除逻辑卷
        lvremove /dev/VG_NAME/LV_NAME
      • 重设文件系统大小
        fsadm [options] resize device [new_size[UNIT]]
        resize2fs [options] device [new_size]:仅用于ext2, ext3, ext4
    • 实验3-1:实现逻辑卷:
      有三块硬盘/dev/sdb(20GB), /dev/sdc(10GB), /dev/sdd(5GB)
      (1)创建分区/dev/sdb1(1GB), /dev/sdc1(2GB)
      (2)将/dev/sdb1, /dev/sdc1和/dev/sdd创建为物理卷
      (3)将三个物理卷创建为卷组vg0
      (4)在卷组vg0上创建两个逻辑卷:第一个逻辑卷/dev/vg0/lv0(2GB),第二个逻辑卷/dev/vg0/lv1,其大小为卷组剩余空间的50%
      (5)给两个逻辑卷创建文件系统,均为ext4

    fdisk /dev/sdb   fdisk /dev/sdc               //分区时注意一定要改变system id为8e
    pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd         //创建物理卷
    vgcreate vg0 /dev/sdb1 /dev/sdc1 /dev/sdd     //创建卷组vg0
    lvcreate -L 2G -n lv0 vg0          //创建逻辑卷lv0
    lvcreate -l 50%FREE -n lv1 vg0     //创建逻辑卷lv1
    mkfs -t ext4 /dev/vg0/lv0          //建立逻辑卷lv0的文件系统
    mkfs -t ext4 /dev/vg0/lv1          //建立逻辑卷lv1的文件系统
    
    • 实验3-2:扩展逻辑卷:
      接实验3-1,现在逻辑卷大小:/dev/vg0/lv0为2GB,/dev/vg0/lv1为3GB。现在需要将/dev/vg0/lv0扩展至3GB,/dev/vg0/lv1扩展至6GB。当前卷组vg0大小为8GB,无法直接扩展两个逻辑卷。另有未创建文件系统的磁盘分区/dev/sde1,大小为2GB。
      (1)将/dev/sde1加入到卷组vg0中
      (2)拓展逻辑卷lv0,并且扩展lv0的文件系统
      (3)一条命令实现拓展逻辑卷lv1和其文件系统
    vgdisplay                          //查看当前卷组容量是否满足逻辑卷扩展要求
    fdisk /dev/sde1                    //改变system id为8e
    pvcreate /dev/sde1                 //将/dev/sde1创建为物理卷
    vgextend vg0 /dev/sde1             //将/dev/sde1添加到卷组vg0中
    lvextend -L +1G /dev/vg0/lv0       //将逻辑卷lv0大小添加1GB至3GB
    resize2fs /dev/vg0/lv0 3G          //将逻辑卷lv0的文件系统扩展大小至3GB
    lvextend -r -L 6G /dev/vg0/lv1     //将逻辑卷lv1和其文件系统一并扩展至6GB,
                                       -r选项指同步扩展文件系统大小
    
    • 实验3-3:缩减逻辑卷:
      接实验3-2,将逻辑卷lv1的大小缩减至5GB
    fsck -f /dev/vg0/lv1            //缩减逻辑卷前必须检查磁盘,-f指强制执行
    resize2fs /dev/vg0/lv1 5G       //缩减逻辑卷文件系统大小
    lvreduce -L 5G /dev/vg0/lv1     //缩减逻辑卷大小
    
    • 实验3-4:从逻辑卷中删除正在使用的物理分区(或磁盘):
      接实验3-3,当前逻辑卷lv0大小3GB、逻辑卷lv1大小5GB,卷组vg0大小10GB,卷组空闲容量2GB。物理卷/dev/sdc1大小2GB,可以直接在逻辑卷管理中删除此分区。
    vgdisplay                  //查看卷组空间情况
    pvdisplay                  //查看逻辑卷空间情况
    pvmove /dev/sdc1     
    //虽然卷组空间满足删除/dev/sdc1的要求,但/dev/sdc1的PE已经占满,所以需要将数据移动至其他物理卷
    vgreduce vg0 /dev/sdc1     //卷组中删除物理卷/dev/sdc1
    pvremove /dev/sdc1         //将物理卷/dev/sdc1删除
    

    红框中显示/dev/sdc1的PE已经全部占满,需要先做数据迁移,才能从卷组中删除

    • 实验3-5:迁移逻辑卷:
      接实验3-4,将逻辑卷/dev/vg0/lv1和/dev/vg0/lv2迁移至另一个服务器系统中
      (1)为了防止出现重名,将卷组改名为newvg0
      (2)将逻辑卷改名:lv0改为newlv0,lv1改为newlv1
      (3)冻结卷组newvg0
      (4)将卷组导出,拆除硬盘,安装到新的服务器中
      (5)将卷组导入到新的服务器中
      (6)启用卷组newvg
    vgrename vg0 newvg0                 //卷组改名
    lvrename /dev/newvg0/lv0 newlv0     //逻辑卷改名
    lvrename /dev/newvg0/lv1 newlv1     //逻辑卷改名
    vgchange -an newvg0                 //冻结卷组
    vgexport newvg0                     //导出
    ------拆除硬盘,安装至新的服务器(虚拟机以虚拟磁盘文件的剪切粘贴实现)------
    pvscan                              //扫描物理卷
    vgimport newvg0                     //导入卷组
    vgchange -ay newvg0                 //启用卷组
    
    • 特别注意:以上实验均未涉及挂载过程,实际工作中逻辑卷必须挂载才能够正常使用,所以涉及逻辑卷扩展、缩减、删除、迁移操作前必须先卸载逻辑卷,待设置完成后再进行挂载操作,否则会导致严重的后果。

    (三)LVM逻辑卷管理器快照

    • 快照是特殊的逻辑卷

    • 快照的工作逻辑:

      • 生成快照时只是给快照分配一定的空间,所以快照建立时间很快
      • 当原逻辑卷的内容有改变时,将旧数据复制进快照中
      • 建立的快照大小达到原逻辑卷大小的15-20%即可
    • 快照必须与原逻辑卷同在一个卷组VG

    • 实验3-6:逻辑卷快照的建立和恢复

    1.为现有逻辑卷创建快照

    lvcreate -L 300M -s -n snap-lv0 -p r /dev/vg0/lv0
    

    2.挂载快照

    mkdir -p /mnt/snap
    mount -o ro /dev/vg0/snap-lv0 /mnt/snap
    

    3.恢复快照

    umount /dev/vg0/snap-lv0
    umount /dev/vg0/lv0
    lvconvert --merge /dev/vg0/snap-lv0
    

    第一个红框显示的是逻辑卷lv0内文件file原内容,之后对逻辑卷lv0进行了快照操作,然后对file文件进行了修改,第二个红框显示的是修改后的file文件内容,此时恢复快照,第三个红框显示file文件内容恢复至快照前的样子。

    相关文章

      网友评论

        本文标题:20170810 高级文件系统管理

        本文链接:https://www.haomeiwen.com/subject/fjocrxtx.html