• 随堂练习 RAID和逻辑卷 LVM


    RAID:Redundant Arrays of Inexpensive(Independent) Disks 廉价(独立)磁盘冗余阵列
    1988年由加利福尼亚大学伯克利分校(University of California-Berkeley) “A Case for RedundantArrays of Inexpensive Disks”,多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供

    RAID功能实现

      提高IO能力,磁盘并行读写

      提高耐用性,磁盘冗余算法来实现

    RAID实现的方式

      外接式磁盘阵列:通过扩展卡提供适配能力

      内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置

      软件RAID:通过OS实现,比如:群晖的NAS

    RAID级别
    级别:多块磁盘组织在一起的工作方式有所不同
    RAID-0:条带卷,strip
    RAID-1:镜像卷,mirror
    RAID-2
    ..
    RAID-5
    RAID-6
    RAID-10
    RAID-01
    RAID级别

    RAID 0

      读、写性能提升

      可用空间:N*min(S1,S2,...)

      无容错能力

      最少磁盘数:2, 2+

    RAID 1

      读性能提升、写性能略有下降

      可用空间:1*min(S1,S2,...)

      有冗余能力

      最少磁盘数:2, 2N

    RAID 4

      多块数据盘异或运算值存于专用校验盘

      磁盘利用率 (N-1)/N

      有冗余能力

      至少3块硬盘才可以实现

    RAID 5

      读、写性能提升

      可用空间:(N-1)*min(S1,S2,...)

      有容错能力:允许最多1块磁盘损坏

      最少磁盘数:3, 3+

    RAID 6

      读、写性能提升

      可用空间:(N-2)*min(S1,S2,...)

      有容错能力:允许最多2块磁盘损坏

      最少磁盘数:4, 4+

    RAID 1 0

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

    RAID 0 1

      多块磁盘先实现RAID0,再组合成RAID1

    RAID 5 0

      多块磁盘先实现RAID5,再组合成RAID0

    其他级别

    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:模式化的工具,支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
    命令的语法格式:

    mdadm [mode] <raiddevice> [options] <component-devices>

    常用选项说明

    模式:
      创建: -C
      装配: -A
      监控: -F
      管理: -f, -r, -a
    <raiddevice>: /dev/md#
    <component-devices>: 任意块设备
    -C     创建模式
    -n #   使用#个块设备来创建此RAID
    -l #    指明要创建的RAID的级别
    -a {yes|no}  自动创建目标RAID设备的设备文件
    -c CHUNK_SIZE   指明块大小,单位k
    -x #   指明空闲盘的个数
    -D  显示raid的详细信息
    mdadm -D /dev/md#
    管理模式:
    -f   标记指定磁盘为损坏
    -a  添加磁盘
    -r   移除磁盘
    观察md的状态: cat /proc/mdstat

    范例

    #使用mdadm创建并定义RAID设备
    mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1

    #用文件系统对每个RAID设备进行格式化
    mkfs.xfs /dev/md0

    #使用mdadm检查RAID设备的状况
    mdadm --detail|D /dev/md0

    #增加新的成员
    mdadm –G /dev/md0 –n4 -a /dev/sdf1

    #模拟磁盘故障
    mdadm /dev/md0 -f /dev/sda1

    #移除磁盘
    mdadm /dev/md0 –r /dev/sda1

    #在备用驱动器上重建分区
    mdadm /dev/md0 -a /dev/sda1

    #系统日志信息
    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

    逻辑卷管理器 (LVM)

    LVM 介绍

    LVM: Logical Volume Manager 可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,允许在多个物理设备间重新组织文件系统

    LVM可以弹性的更改LVM的容量

    通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量

    实现过程
      将设备指定为物理卷

      用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的

      在物理卷上创建的逻辑卷, 是由物理区域(PE)组成

      可以在逻辑卷上创建文件系统并挂载

    第一个逻辑卷对应设备名:/dev/dm-#

    dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块
    软链接:
      /dev/mapper/VG_NAME-LV_NAME
      /dev/VG_NAME/LV_NAME

    范例

    /dev/mapper/vol0-root
    /dev/vol0/root

    实现逻辑卷

    相关工具来自于 lvm2 包

    [root@centos8 ~]# yum -y install lvm2

    pv管理工具

    显示pv信息

    pvs:简要pv信息显示
    pvdisplay

    创建pv

    pvcreate /dev/DEVICE

    删除pv

    pvremove /dev/DEVICE

    vg管理工具

    显示卷组

    vgs
    vgdisplay

    创建卷组

    vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath

    [PhysicalDevicePath...]

    管理卷组

    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

    删除卷组
      先做 pvmove
      再做 vgremove

    lv管理工具

    显示逻辑卷

    lvs
    Lvdisplay

    创建逻辑卷

    lvcreate -L #[mMgGtT] -n NAME VolumeGroup

    范例

    lvcreate -l 60%VG -n mylv testvg

    lvcreate -l 100%FREE -n yourlv testvg

    删除逻辑卷

    lvremove /dev/VG_NAME/LV_NAME

    重设文件系统大小

    fsadm [options] resize device [new_size[BKMGTEP]]

    resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]

    xfs_growfs /mountpoint

    范例

    #创建物理卷
    pvcreate /dev/sda3

    #为卷组分配物理卷
    vgcreate vg0 /dev/sda3

    #从卷组创建逻辑卷
    lvcreate -L 256M -n data vg0

    # mkfs.xfs /dev/vg0/data
    #挂载
    mount /dev/vg0/data /mnt/data#

    扩展和缩减逻辑卷

    在线扩展逻辑卷

    lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
    #针对ext
    resize2fs /dev/VG_NAME/LV_NAME

    #针对xfs
    xfs_growfs MOUNTPOINT

    lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME

    缩减逻辑卷

    注意:缩减有数据损坏的风险,建议先备份再缩减,xfs文件系统不支持缩减

    umount /dev/VG_NAME/LV_NAME

    e2fsck -f /dev/VG_NAME/LV_NAME

    resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]

    lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

    mount

    范例

    [root@centos8 ~]# blkid /dev/vg0/mysql
    /dev/vg0/mysql: UUID="94674607-2196-4015-9194-4632ac23f36a" TYPE="ext4"

    [root@centos8 ~]# lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    mysql vg0 -wi-a----- 2.99g

    [root@centos8 ~]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    devtmpfs 391676 0 391676 0% /dev
    tmpfs 408092 0 408092 0% /dev/shm
    tmpfs 408092 5792 402300 2% /run
    tmpfs 408092 0 408092 0% /sys/fs/cgroup
    /dev/sda2 104806400 2274504 102531896 3% /
    /dev/sda3 52403200 398576 52004624 1% /data
    /dev/sda1 999320 130848 799660 15% /boot
    tmpfs 81616 0 81616 0% /run/user/0
    /dev/mapper/vg0-mysql 3022704 9204 2840240 1% /data/mysql

    # 第一步

    [root@centos8 ~]# umount /data/mysql
    [root@centos8 ~]# resize2fs /dev/vg0/mysql 1G
    resize2fs 1.44.6 (5-Mar-2019)
    Please run 'e2fsck -f /dev/vg0/mysql' first.

    #第二步
    [root@centos8 ~]# fsck -f /dev/vg0/mysql
    fsck from util-linux 2.32.1
    e2fsck 1.44.6 (5-Mar-2019)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/mapper/vg0-mysql: 14/196224 files (0.0% non-contiguous), 31009/784384
    blocks

    #第三步
    [root@centos8 ~]# resize2fs /dev/vg0/mysql 1G
    resize2fs 1.44.6 (5-Mar-2019)
    Resizing the filesystem on /dev/vg0/mysql to 262144 (4k) blocks.
    The filesystem on /dev/vg0/mysql is now 262144 (4k) blocks long.

    [root@centos8 ~]# lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    mysql vg0 -wi-a----- 2.99g

    [root@centos8 ~]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    devtmpfs 391676 0 391676 0% /dev
    tmpfs 408092 0 408092 0% /dev/shm
    tmpfs 408092 5792 402300 2% /run
    tmpfs 408092 0 408092 0% /sys/fs/cgroup
    /dev/sda2 104806400 2274504 102531896 3% /
    /dev/sda3 52403200 398576 52004624 1% /data
    /dev/sda1 999320 130848 799660 15% /boot
    tmpfs 81616 0 81616 0% /run/user/0

    [root@centos8 ~]# mount -a

    [root@centos8 ~]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    devtmpfs 391676 0 391676 0% /dev
    tmpfs 408092 0 408092 0% /dev/shm
    tmpfs 408092 5792 402300 2% /run
    tmpfs 408092 0 408092 0% /sys/fs/cgroup
    /dev/sda2 104806400 2274504 102531896 3% /
    /dev/sda3 52403200 398576 52004624 1% /data
    /dev/sda1 999320 130848 799660 15% /boot
    tmpfs 81616 0 81616 0% /run/user/0
    /dev/mapper/vg0-mysql 966584 7676 890096 1% /data/mysql

    [root@centos8 ~]# df -h
    Filesystem   Size   Used Avail   Use%   Mounted on
    devtmpfs    383M      0   383M   0%     /dev
    tmpfs     399M      0   399M   0%   /dev/shm
    tmpfs     399M   5.7M     393M   2%            /run
    tmpfs       399M   0       399M   0%   /sys/fs/cgroup
    /dev/sda2   100G   2.2G   98G   3%   /
    /dev/sda3   50G     390M   50G   1%   /data
    /dev/sda1   976M   128M  781M    15%   /boot
    tmpfs     80M    0    80M   0%    /run/user/0

    [root@centos8 ~]# lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    mysql vg0 -wi-ao---- 2.99g

    [root@centos8 ~]# umount /data/mysql
    #第四步
    [root@centos8 ~]# lvreduce -L 1G /dev/vg0/mysql
    WARNING: Reducing active logical volume to 1.00 GiB.
    THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce vg0/mysql? [y/n]: y
    Size of logical volume vg0/mysql changed from 2.99 GiB (766 extents) to 1.00
    GiB (256 extents).
    Logical volume vg0/mysql successfully resized.

    #第五步
    [root@centos8 ~]# mount -a

    [root@centos8 ~]# lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    mysql vg0 -wi-ao---- 1.00g

    [root@centos8 ~]# df -h
    Filesystem   Size   Used   Avail   Use%   Mounted   on
    devtmpfs    383M   0     383M   0%    /dev
    tmpfs     399M        0               399M   0%      /dev/shm
    tmpfs     399M   5.7M    393M   2%      /run
    tmpfs     399M   0               399M   0%   /sys/fs/cgroup
    /dev/sda2   100G   2.2G     98G     3%   /
    /dev/sda3   50G     390M    50G     1%   /data
    /dev/sda1   976M   128M   781M   15%   /boot
    tmpfs     80M      0       80M      0%        /run/user/0
    /dev/mapper/vg0-mysql  944M   7.5M   870M  1%           /data/mysql

    逻辑卷快照

    逻辑卷快照原理

    快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝,对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择,快照只有在它们和原来的逻辑卷不同时才会消耗空间,建立快照的卷大小小于等于原始逻辑卷,也可以使用lvextend扩展快照
    逻辑卷管理器快照

    快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享

    逻辑卷快照工作原理

      在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间

      当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中

      快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

    由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量

    快照特点:

      备份速度快,瞬间完

      应用场景是测试环境,不能完成代替备份

      快照后,逻辑卷的修改速度会一定有影响

    实现逻辑卷快照

    范例

    mkfs.xfs /dev/vg0/data

    mount /dev/vg0/data/ /mnt/data

    #为现有逻辑卷创建快照
    lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data

    #挂载快照
    mkdir -p /mnt/snap

    mount -o ro,nouuid /dev/vg0/data-snapshot /mnt/snap

    #恢复快照
    umount /dev/vg0/data-snapshot

    umount /dev/vg0/data

    lvconvert --merge /dev/vg0/data-snapshot

    #删除快照
    umount /mnt/snap

    lvremove /dev/vg0/data-snapshot

    练习
    1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
    2、 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录
    3、扩展testlv至7G,要求archlinux用户的文件不能丢失
    4、收缩testlv至3G,要求archlinux用户的文件不能丢失
    5、对testlv创建快照,并尝试基于快照备份数据,验证快照的功能

  • 相关阅读:
    Linux-获取当前正在执行脚本的绝对路径
    Linux-SSL和SSH和OpenSSH,OpenSSL有什么区别
    Nginx-SSI
    Linux-TCP/IP TIME_WAIT状态原理
    Linux-IP地址后边加个/8(16,24,32)是什么意思?
    Nginx-/etc/sysctl.conf 参数解释
    Linux-内核缓存区和write行为
    常用音频软件:Cool edit pro
    常用音频软件:Wavesufer
    【转】智能音箱技术概览
  • 原文地址:https://www.cnblogs.com/xuanlv-0413/p/13230185.html
Copyright © 2020-2023  润新知