RAID: Redundant Arrays of Inexpensive Disks,廉价磁盘冗余阵列;
             Redundant Arrays of Independent Disks,独立磁盘冗余阵列;

1988年,UC Berkeley提出的"A case for Redundant Arrays of Inexpensive Disks"旨在将多个相对廉价IDE接口的磁盘组合成一个"阵列",并不是将磁盘简单罗列在一起,而是根据特定规则进行组合,从而可以实现提高IO性能,实现磁盘冗余容错,或者此二功能兼具;

RAID的好处:
        提高IO性能;磁盘并行读写机制;
        提高磁盘耐用性;通过磁盘冗余实现容错;

RAID的级别:
        多块磁盘组织在一起的工作方式;

RAID的实现方式:
        基于硬件实现;
            外接式磁盘阵列:通过扩展接口或扩展插槽提供具有RAID功能的适配硬件设备;
            内接式磁盘阵列:主板集成的RAID控制器;

基于软件模拟实现;
            通过应用程序模拟硬件性能:

RAID的功能级别:
    RAID-0:条带卷,strip
        读写性能提升,
        磁盘可用空间:N*min(S1,S1,S1,S1)
        磁盘空间利用率:100%
        无容错能力
        至少需要2块磁盘

RAID-1:镜像卷,mirror
        提升读性能,写性能下降;
        磁盘可用空间:1*min(S1,S2,...)
        磁盘利用率:1/n
        具备容错能力
        至少需要2块磁盘

RAID-2:
    RAID-3:
    RAID-4:
    RAID-5:带有奇偶校验信息的条带卷;
        提升读写性能
        可用磁盘空间:N-1*min(S1,S2...)
        磁盘利用率:(N-1)/N
        具备容错能力
        至少需要3块磁盘

RAID-6:双重奇偶校验的条带卷;
        提升读写性能
        可用磁盘空间:N-2*min(S1,S2...)
        磁盘利用率:(N-2)/N
        具备容错能力
        至少需要4块磁盘

RAID的混合级别:
        RAID-10
            读写性能提升
            具备容错能力
            磁盘利用率:1/2
            至少需要4块磁盘

RAID-01
            读写性能提升
            具备容错能力
            磁盘利用率:1/2
            至少需要4块磁盘

RAID-50
            读写性能提升
            具备容错能力
            至少需要6块磁盘

JBOD:just a Bunch of Disks,仅仅是一组磁盘;将多块磁盘空间合并成一个更大的连续的存储空间;有人将此方式称为"跨区";

对于RAID,常用的级别
    RAID-0,RAID-1,RAID-5,RAID-10,RAID-50,JBOD

Centos系统上可以提供软件RAID的实现;
    内核中的md(multi devices)模块

mdadm:模块化的工具;
        mdadm - manage MD devices aka Linux Software RAID

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

Currently, Linux supports LINEAR md devices, RAID0 (striping), RAID1 (mirroring), RAID4, RAID5, RAID6, RAID10, MULTIPATH, FAULTY, and CONTAINER.

[mode]:
            创建模式:-C
            装配模式:-A
            监控模式:-F
            管理模式:无选项开关
            增长模式:-G
            混杂模式:-D,-S

create,bulid,brow
                -n:指定参与软RAID的磁盘的数量;
                -l:等级,比如RAID5
                -x:指定阵列中空闲的用于自动故障转换使用的设备数量;
                -c:指定条带化级别的RAID中,每个区块(CHUNK)的大小;
                -a:自动创建目标RAID设备文件;

管理模式:
            -a:向阵列中添加新设备;
            -r:从阵列中移除设备;
            -f:将设备标记为失效;

misc mode:
            -D:显示阵列信息;
                通过输出重定向保存阵列的装配记录;
                    mdadm -D --scan >> /etc/mdadm.conf
            -S:停止阵列功能;

# mdadm -C md0 -n 4 -l 5  -a yes /dev/sdb /dev/sdc /dev/sdd /dev/sde
            # mdadm -S /dev/md0

保存装配信息:
            # mdadm -D --scan  >> /etc/mdadam.conf

mdadm -A /dev/md0

将添加进来的磁盘,三个一组建立三组RAID-5阵列;

[root@localhost ~]# mdadm -C md0 -n 3 -l 5 -a yes /dev/sdb /dev/sdc /dev/sdd
[root@localhost ~]# mdadm -C md1 -n 3 -l 5 -a yes /dev/sde /dev/sdf /dev/sdh
[root@localhost ~]# mdadm -C md2 -n 3 -l 5 -a yes /dev/sdj /dev/sdi /dev/sdk

LVM--Logical Volume Management ,逻辑卷管理器;
LVM2-LVM version 2
    使用纯软件的方式组织一个或多个底层的物理块设备,将他们重新定义为一个逻辑块设备的解决方案;

利用linux内核中的dm模块实现;
    dm:device mapper,设备映射;

dm模块可以将一个或多个底层设备,按照预期规划组织成特定的形式,从而实现更高级的逻辑磁盘管理方式;

需要用户空间中的命令向dm 模块发出系统调用,才可以进行逻辑块设备管理;

使用DM模块实现LVM观念里的一般性步骤:
        1.创建并标识物理卷,PV
        2.基于PV创建卷组,即逻辑块设备(VG),同时指定PE的大小;
            注意:一旦卷组创建完成,则PE的大小将固定下来,其值无法再次进行修改;如果想要调整PE的大小,只能重新定义卷组;
        3.在已有的卷组中,创建逻辑卷;
        4.需要在逻辑卷中创建文件系统(高级格式化);
        5.挂载;

物理卷的管理:
    注意:如果想要让一个基本分区称为物理卷,必须将分区的系统ID修改为8e;

物理卷管理的相关命令:
        pvcreate:将普通的块设备创建为物理卷的设备;创建物理卷 ;
        pvremove:将物理卷设备转变为普通快设备;删除物理卷;
        pvdisplay:显示物理卷的详细信息;
        pvs:显示物理卷的简短信息;
        pvmove:将某个物理卷中的所有被LV占用的PE移动到其他的物理卷中;

卷组管理的相关命令:
        vgcreate
            格式:
                vgcreate [options] voliumegroupname  PhysicalDevicePath [PhysicalDevicePath...]
            -s:用于指定PE的大小,默认单位为MiB,默认大小为4MiB
                vgcreate -s 1M qhdlink /dev/sdb /dev/sdc
        vgreduce:从卷组中移除物理卷;
            注意:必须保证被移除的物理卷上没有被占用的PE;如果有,则需要先对物理卷执行pvmove命令;
        vgextend:想卷组中添加物理卷;
        vgdisplay:显示卷组的详细信息;
        vgs:显示卷组的简短信息;

逻辑卷管理的相关命令:
        lvcreate:创建逻辑卷
            -L:指定逻辑卷的大小,其值不能超出卷组的容量;
            -l|--extents LogicalExtentsNumber[%{VG|PVS|FREE|ORIGIN}]:在创建逻辑卷时,指定逻辑卷中包含的LE的数量或者某个特定值的百分比;
            -i:在创建逻辑卷时;以条带的方式创建,并指明在逻辑卷上的条带的数量;
            -n:指明逻辑卷的名称;
            -s: 创建快照卷;
            -p:创建逻辑卷时指明此逻辑卷的操作权限;
            -a:
                -ay:创建逻辑卷的命令执行之后立即激活逻辑卷
                -an:创建逻辑卷的命令执行之后

# lvcreate -L 5G -n class18 qhdlink
        
        lvs
        lvdisplay
        lvextend:扩展逻辑卷的物理边界;
            -L [+]SIZE[kKmMgG] /PATH/TO/LV

resize2fs [-f] /PATH/TO/LV

注意:扩展逻辑卷的空间,可以在线运行;

# lvextend -L +10G /dev/qhdlink/class18
          # resize2fs -f /dev/qhdlink/class18

lvreduce:缩减逻辑卷的物理边界;
         resize2fs [-f] /PATH/TO/LV LV_SIZE
             注意:
                 1.在缩减逻辑卷空间时,先缩减逻辑边界,再缩减物理边界;
                 2.缩减逻辑卷空间钱,先卸载并停用逻辑卷,缩减之后,在启用挂载即可;
                 3.建议在缩减逻辑卷之前,对文件系统进行检测,以保证数据一致性;

缩减逻辑卷的示例:
                 # umount /mnt/lvm
                 # e2fsck /dev/qhdlink/class18
                 # resize2fs -f /dev/qhdlink/class18 10G
                 # lvchange -an /dev/qhdlink/class18
                 # lvreduce -L 10G /dev/qhdlink/class18
                 # lvchange -ay /dev/qhdlink/class18
                 # mount /dev/qhdlink/class18 /mnt/lvm

逻辑卷的快照:
             快照:其本身也是逻辑卷,可以将其视为做快照的目标逻辑卷的另外一个访问路径;

快照逻辑卷是一种特殊的逻辑卷,再其创建之初,其存储空间并没有任何消耗;只有当原来的逻辑卷中的数据发生变化时,才会消耗快照卷空间;

快照卷中只包含原有逻辑卷中被更改的数据或自生成快照逻辑卷之后快照卷中更改的数据;

快照卷也可以使用lvextend进行扩容;

通常来说。快照卷和原卷会公用很多的PE,因此快照卷与原卷就必须在同一个VG上;在从快照卷备份数据的过程中,必须要保证,变化的数据的文件的总量不能超过快照卷的大小;

创建快照卷:
                 lvcreate -L SIZE_SNAPSHOP -s -p r -n LV_NAME_SNAPSHOT /PATH/TO/LV_ORIGIN

示例:
                 # lvcreate -L 5G -s -p r -n snap_class18  /dev/qhdlink/class18
                 # mkdir /mnt/snapshot
                 # mount /dev/qhdlink/snap_class18 /mnt/snapshot

完成数据备份之后:
                 # umount /mnt/snapshot
                 # lvremove /dev/qhdlink/snap_class18

lvm练习:

1.将上述三个RAID-5设备做成物理卷,选择两个物理卷用于创建卷组raid_vg,要求PE大小为16MB;将另一个物理卷以卷组扩展的方式加入到卷组中;而后在卷组中创建大小为5GB的逻辑卷raid_lv,将其挂载至/userhome目录,并使其可以开机自动挂载;

[root@localhost ~]# pvcreate /dev/md/localhost.localdomain\:md0
[root@localhost ~]# pvcreate /dev/md/localhost.localdomain\:md1
[root@localhost ~]# pvcreate /dev/md/localhost.localdomain\:md2
[root@localhost ~]# vgcreate -s 16M raid_vg /dev/md125 /dev/md126
[root@localhost ~]# vgextend raid_vg /dev/md127
[root@localhost ~]# lvcreate -n raid_lv -L 5G raid_vg
[root@localhost ~]# mkdir /userhome/
[root@localhost ~]# mount /dev/raid_vg/raid_lv  /userhome/

2.创建新用户lvmuser,其家目录为/userhome/lvmuser,而后,使用该目录登录系统,复制/etc/pam.d目录至其家目录中;

[root@localhost ~]# cp -a /etc/pam.d /userhome/lvmuser/

3.在线扩展raid_lv至20GB,要求lvmuser用户的文件不能丢失;

[root@localhost ~]# lvextend -L 20G /dev/raid_vg/raid_lv
[root@localhost ~]# resize2fs -f /dev/raid_vg/raid_lv

4.缩减raid_lv至15GB,要求lvmuser用户的文件不能丢失;

[root@localhost ~]# umount /userhome/
[root@localhost ~]# e2fsck /dev/raid_vg/raid_lv
[root@localhost ~]# resize2fs -f /dev/raid_vg/raid_lv  15G
[root@localhost ~]# lvchange -an /dev/raid_vg/raid_lv
[root@localhost ~]# lvreduce -L 15G /dev/raid_vg/raid_lv
[root@localhost ~]# lvchange -ay /dev/raid_vg/raid_lv
[root@localhost ~]# mount /dev/raid_vg/raid_lv /userhome/

5.对raid_lv创建快照,并尝试基于快照备份数据,验证快照的功能;

[root@localhost ~]# lvcreate -L 5G -s -p r -n snap_raid  /dev/raid_vg/raid_lv
[root@localhost ~]# mkdir /userhome/snapshot
[root@localhost ~]# mount /dev/raid_vg/raid_lv /userhome/snapshot
[root@localhost ~]# umount /userhome/snapshot
[root@localhost ~]# lvremove /dev/raid_vg/raid_lv

btrfs:
    文件系统
    Btree-FS,Better FS ,Butter FS
    2007年由Oracle开源,得到IBM,Intel等厂商的支持,其开发目的就就是为了替换ext3/4,成为下一代linux上的标准文件系统;

在2014年8月之前,btrfs都是技术预览版(Technical Preview)

btrfs的特性:
        1.可扩展性:
        2.多物理卷支持;
        3.写时复制的数据更新机制(CoW);
            更新、修改等操作是在复制之后替换指针;
        4.数据及元数据的校验码;
        5.子卷管理;
        6.快照,快照的快照;文件的快照;
        7.透明压缩,隐形压缩;

创建btrfs:
        mkfs.btrfs | mkfs -t btrfs
            mkfs.btrfs - create a btrfs filesystem
            格式:
                mkfs.btrfs [options] device [device ...]

常用选项:
                -d|-date <type>:为数据存储指明硬件设备的组织形式;
                    raid0, raid1, raid5, raid6, raid10 or single
                -m|--metadata <profile>:为元数据的存储指明硬件设备的组织形式:
                    Valid values are raid0, raid1, raid5, raid6, raid10, single or dup
                -L|--label <string>:为即将创建的btrfs指定文件系统卷标;
                -O|--features <feature1>[,<feature2>...]:指定btrfs文件系统的特性,如果想要查看能够提供哪些特性,使用mkfs.btrfs -O list-all查看;

透明压缩功能的支持:
    # mount -o compress={lzo|zlib} DECICE MOUNT_POINT

btrfs命令:
        btrfs - control a btrfs filesystem

btrfs <command> [<args>]

<command>:
            filesystem:
                btrfs filesystem <subcommand> <args>

df [options] <path>:显示btrfs文件系统的空间利用率;
                    label [<dev>|<mountpoint>] [<newlabel>]:查看或设置btrfs文件系统的卷标;
                    resize [<devid>:][+/-]<size>[kKmMgGtTpPeE]|[<devid>:]max <path>:在线修改文件系统的大小;
                    show [options] [<path>|<uuid>|<device>|<label>]:查看btrfs文件系统的信息;
                    sync <path>:强制将内存中的数据同步至文件系统;
                    usage [options] <path> [<path>...]:查看btrfs文件系统上各硬件设备的磁盘使用率;

device:
                btrfs device <subcommand> <args>

add [-Kf] <dev> [<dev>...] <path>:向btrfs系统中添加新设备
                    remove <dev> [<dev>...] <path>:向btrfs系统中删除设备

balance:
                btrfs balance <subcommand> <args>

start [options] <path>:在线调整跨设备的chunk;修改数据以及元数据的组织方式
                        -d[<filters>]
                            -dconvert={raid0, raid1, raid5, raid6, raid10, single}
                        -m[<filters>]
                            -mconvert={raid0, raid1, raid5, raid6, raid10, single,dup}
                        -s[<filters>]
                            -sconvert={raid0, raid1, raid5, raid6, raid10, single}
                    pause <path>:
                        暂停正在运行平衡的操作
                    cancel <path>:
                        撤销此前正在运行或暂停的平衡操作;
                    status [-v] <path>:
                        查看平衡过程的状态;
                    resume <path>:
                        恢复被打断的过程;

subvolume:
                btrfs subvolume <subcommand> [<args>]

create [-i <qgroupid>] [<dest>]<name>:
                        创建子卷;
                    delete [options] <subvolume> [<subvolume>...]:
                        删除子卷;
                    snapshot [-r] <source> <dest>|[<dest>/]<name>
                        为指定的子卷创建快照卷;

ext系列文件系统和btrfs之间安全转换:
        btrfs-convert
                btrfs-convert - convert from ext2/3/4 filesystem to btrfs
                    btrfs-convert [options] <device>

从ext转换至btrfs:
                        btrfs-convert /dev/sde1
                    从btrfs回滚至ext:
                        btrfs-convert -r /dev/sde1

注意:转换操作需要提前将设备卸载;

Btrfs练习:
    1.删除一、二两个题目中的LV、VG、PV及RAID-5,将任意两个物理磁盘联合在一起建立btrfs;

[root@localhost ~]# lvremove /dev/raid_vg/raid_lv
[root@localhost ~]# vgremove /dev/raid_vg
[root@localhost ~]# pvremove /dev/raid_vg
[root@localhost ~]# pvremove /dev/md125 /dev/md126 /dev/md127
[root@localhost ~]# mkfs.btrfs -L Btrfs /dev/sdb /dev/sdc

2.将btrfs挂载,并向其中写入数据(可以复制文件或目录,可以创建文件或目录);

[root@localhost ~]# mount /dev/sdb /userhome/btrfs/
[root@localhost ~]# cp /etc/passwd /userhome/btrfs/
[root@localhost ~]# head -1 /userhome/btrfs/passwd
root:x:0:0:root:/root:/bin/bash

3.尝试向btrfs中添加几个新的物理设备,并移除原有的几个物理设备,但始终保证其磁盘数量超过三个;

[root@localhost ~]# btrfs device add /dev/sdd /userhome/btrfs

4.将btrfs的数据和元数据的组织形式都改为RAID-5;

[root@localhost ~]# btrfs balance start -dconvert=raid5 -mconvert=raid5 /userhome/btrfs

5.在btrfs上创建子卷,记录子卷ID后,卸载父卷并尝试挂载子卷;

[root@localhost ~]# btrfs subvolume creat /userhome/btrfs/logs
[root@localhost ~]# umount /userhome/btrfs/
[root@localhost ~]# mkdir /userhome/logs
[root@localhost ~]# mount -o subvolid=260 /dev/sdb /userhome/logs

6.卸载子卷后再挂载父卷,并为之前的子卷创建快照卷,利用快照卷完成子卷中数据的备份;

[root@localhost ~]# umount /userhome/logs/
[root@localhost ~]# mount /dev/sdb /userhome/btrfs/
[root@localhost ~]# ls /userhome/btrfs/
logs  passwd

转载于:https://blog.51cto.com/liujingyu/2064927

linux中的软RAID实现,逻辑卷和btrfs文件系统相关推荐

  1. 在Linux中配置软 RAID,使用mdadm命令创建RAID5, RAID设备的数据恢复

    1.在Linux中配置软 RAID RAID(Redundant Array of Inexpensive Disks,独立磁盘完余阵列)用于将多个廉价的小型磁盘驱动器合并成一个磁盘阵列,以提高存储性 ...

  2. Linux进阶篇--磁盘阵列(RAID)和逻辑卷管理

    磁盘阵列RAID RAID:RedundantArrays of Inexpensive(Independent)Disks 早期被称为RedundantArrays of Inexpensive D ...

  3. 配置软RAID与逻辑卷

    磁盘分区 结构:/dev/sda1 [sd 表接口 a表硬盘编号 1表分区编号] 分区类型: MBR:主分区 + 扩展分区(包含逻辑分区) <= 4 ,逻辑分区可以一直分,最大2TB,扩展分区不 ...

  4. Linux中硬盘分区、创建逻辑卷

    1.先添加一块硬盘 点击添加----->点击硬盘----->点击下一步 类型为SCSI(S),下一步 选中创建新虚拟磁盘 指定磁盘大小,这里以20G为例,下一步,完成. 2.使用lsblk ...

  5. linux 软raid小时,在linux中实现软RAID

    前言 在生产环境中不推荐大家使用软RAID,写这篇文章的主要目的是希望大家更好的了解RAID的工作原理: 软RAID就是在系统层面实现RAID功能了,数据处理主要依赖cpu来完成,没有第三方控制处理器 ...

  6. linux重新识别逻辑卷,linux – 从已删除的LVM逻辑卷恢复ext4文件系统的任何方法?...

    前几天,当我在Vmware下的 Linux客户端上扩展磁盘时,我有一个适当的大脑放屁时刻.我将Vmware磁盘文件扩展到所需的大小然后我做了我通常在没有LVM的Linux客户端上做的事情:我删除了LV ...

  7. 压缩工具,神奇的RAID以及逻辑卷管理的PE,PA,LV,VG

    Linux系统中常用的压缩和解压工具 压缩:以时间换空间的操作: 压缩的原理:标记和替换 压缩比:压缩之前与压缩之后的文件的大小的比值 纯文本文件的压缩比比较大,视频图形等压缩比相对比较小 能够实现压 ...

  8. 如何在linux下做软raid

    如何在linux下做软raid?希望以下介绍能对朋友们有所帮助和启发! 在虚拟机系统中添加一块10g的硬盘为sdb,将硬盘分5个逻辑盘分别是sdb{5,6,7,8,9},每个盘的大小是1G. 首先利用 ...

  9. Linux下的磁盘分区和逻辑卷

    一.硬盘接口类型 硬盘的接口主要有IDE.SATA.SCSI .SAS和光纤通道等五种类型.其中IDE和SATA接口硬盘多用于家用产品中,也有部分应用于服务器,SATA是一种新生的硬盘接口类型,已经取 ...

最新文章

  1. Javascript 数字时钟
  2. 普通交换机不需要任何设置,也不能设置
  3. 127.0.0.1与localhost的区别
  4. parameter与localparam使用区别
  5. bzoj1572 [Usaco2009 Open]工作安排Job
  6. A*算法(最佳优先搜索)
  7. ICMPV6协议及NDP协议
  8. 看黑马程序员视频学习之节点操作之复制节点
  9. 如何在Windows下像Mac一样优雅开发
  10. 软件测试工程师企业级培训视频教程
  11. C#编写IE插件的一些经验
  12. 人体颈椎神经分布图高清,颈椎部神经分布图高清
  13. 证件照尺寸像素规格,证件照尺寸怎么修改
  14. 原生方式android 商城,WooCommerce商城原生android完整客户端源码(CiyaShop)
  15. Android 自定义跑马灯文字
  16. 讯时网站管理系统通杀0DAY漏洞
  17. 湖南工程学院CSDN高校俱乐部简介
  18. VS CODE Python 包路径报错解决方案could not be resolved
  19. CUDA安装和检测【全】(nvcc命令找不到的解决办法)
  20. iPad 使用技巧:虚拟键盘与实体键盘

热门文章

  1. iis php mysql 一键安装_LNMP(Nginx服务,MySQL 服务,安装PHP服务 手动安装技术文档)
  2. python画圆形螺旋线_这个Python项目,一秒生成可爱像素风图片
  3. 计算机与音乐课题,泉州实验小学《小学音乐学科教学与信息技术整合的研究》结题报告...
  4. 【视频课】StyleGAN人脸生成与年龄表情编辑:原理与实践
  5. 【赠书】重磅好书联邦学习实战来袭!你值得拥有一本
  6. 【AI产品】超长文详解作业帮产品逻辑和技术原理
  7. 中国石材胶市场需求现状调研与前景预测分析报告2022版
  8. 全球及中国水产加工市场消费潜力分析与投资规模建议报告2022版
  9. ADO Execute 方法
  10. 位居全国第一- 丰收节交易会·内蒙古:名特优新农产品数量