20170810 高级文件系统管理

  • 文件系统配额管理
  • 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",表示挂载时开启对用户、用户组的磁盘配额选项

20170810 高级文件系统管理_第1张图片

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

20170810 高级文件系统管理_第2张图片

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

20170810 高级文件系统管理_第3张图片

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

20170810 高级文件系统管理_第4张图片

第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 ,又称条带卷
    磁盘组织方式:
20170810 高级文件系统管理_第5张图片

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

  • RAID 1 ,又称镜像卷
    磁盘组织方式:
20170810 高级文件系统管理_第6张图片

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

  • RAID 4
    磁盘组织方式:
20170810 高级文件系统管理_第7张图片

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

  • RAID 5
    磁盘组织方式:
20170810 高级文件系统管理_第8张图片

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

  • RAID 6
    磁盘组织方式:
20170810 高级文件系统管理_第9张图片

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

  • RAID 10
    磁盘组织方式:
20170810 高级文件系统管理_第10张图片

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

  • RAID 01
    磁盘组织方式:
20170810 高级文件系统管理_第11张图片

(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] [options]

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

  • : 设备名,如/dev/md1

  • : 任意块设备,可以是磁盘或磁盘分区

  • 创建模式-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
20170810 高级文件系统管理_第12张图片

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

mdadm -D /dev/md0
mdadm -D -s >> /etc/mdadm.conf
20170810 高级文件系统管理_第13张图片

红框标注中分别表示了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
20170810 高级文件系统管理_第14张图片

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

(5)移除故障设备

mdadm /dev/md0 -r /dev/sdb1
mdadm -D /dev/md0
20170810 高级文件系统管理_第15张图片

红框显示故障设备/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构成
    • 在逻辑卷上建立文件系统
20170810 高级文件系统管理_第16张图片
  • 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的文件系统
20170810 高级文件系统管理_第17张图片
  • 实验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选项指同步扩展文件系统大小
20170810 高级文件系统管理_第18张图片
20170810 高级文件系统管理_第19张图片
  • 实验3-3:缩减逻辑卷:
    接实验3-2,将逻辑卷lv1的大小缩减至5GB
fsck -f /dev/vg0/lv1            //缩减逻辑卷前必须检查磁盘,-f指强制执行
resize2fs /dev/vg0/lv1 5G       //缩减逻辑卷文件系统大小
lvreduce -L 5G /dev/vg0/lv1     //缩减逻辑卷大小
20170810 高级文件系统管理_第20张图片
  • 实验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删除
20170810 高级文件系统管理_第21张图片

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

20170810 高级文件系统管理_第22张图片
  • 实验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                 //启用卷组
20170810 高级文件系统管理_第23张图片
20170810 高级文件系统管理_第24张图片
  • 特别注意:以上实验均未涉及挂载过程,实际工作中逻辑卷必须挂载才能够正常使用,所以涉及逻辑卷扩展、缩减、删除、迁移操作前必须先卸载逻辑卷,待设置完成后再进行挂载操作,否则会导致严重的后果。

(三)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
20170810 高级文件系统管理_第25张图片

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

你可能感兴趣的:(20170810 高级文件系统管理)