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

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阵列;

[[email protected] ~]# mdadm -C md0 -n 3 -l 5 -a yes /dev/sdb /dev/sdc /dev/sdd 
[[email protected] ~]# mdadm -C md1 -n 3 -l 5 -a yes /dev/sde /dev/sdf /dev/sdh 
[[email protected] ~]# 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目录,并使其可以开机自动挂载;

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

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

[[email protected] ~]# cp -a /etc/pam.d /userhome/lvmuser/

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

[[email protected] ~]# lvextend -L 20G /dev/raid_vg/raid_lv
[[email protected] ~]# resize2fs -f /dev/raid_vg/raid_lv

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

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

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

[[email protected] ~]# lvcreate -L 5G -s -p r -n snap_raid  /dev/raid_vg/raid_lv
[[email protected] ~]# mkdir /userhome/snapshot
[[email protected] ~]# mount /dev/raid_vg/raid_lv /userhome/snapshot
[[email protected] ~]# umount /userhome/snapshot
[[email protected] ~]# 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;

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

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

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

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

[[email protected] ~]# btrfs device add /dev/sdd /userhome/btrfs

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

[[email protected] ~]# btrfs balance start -dconvert=raid5 -mconvert=raid5 /userhome/btrfs

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

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

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

[[email protected] ~]# umount /userhome/logs/
[[email protected] ~]# mount /dev/sdb /userhome/btrfs/
[[email protected] ~]# ls /userhome/btrfs/
logs  passwd

原文地址:http://blog.51cto.com/liujingyu/2064927

时间: 2024-10-11 06:14:54

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

在linux中实现软RAID

    前言  在生产环境中不推荐大家使用软RAID,写这篇文章的主要目的是希望大家更好的了解RAID的工作原理: 软RAID就是在系统层面实现RAID功能了,数据处理主要依赖cpu来完成,没有第三方控制处理器和I/O芯片 在linux中是使用内置的md模块,模拟RAID卡,实现软RAID.在内核中有md模块完成将多个物理设备组合成一个逻辑设备    实现方式: 因为linux支持将块设备制作成RAID,可以使用不同磁盘的不同分区组件RAID:但是分区大小必须一样: 一.首先创建几个大小相同的分

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

Linux系统中常用的压缩和解压工具 压缩:以时间换空间的操作: 压缩的原理:标记和替换 压缩比:压缩之前与压缩之后的文件的大小的比值 纯文本文件的压缩比比较大,视频图形等压缩比相对比较小 能够实现压缩功能的工具: compress/uncompress:扩展名.z gzip/gunzip:扩展名.gz bzip2/bunzip2:扩展名.bz2 xz/unxz:扩展名.xz  目前压缩比最高的工具 zip/unzip:扩展名.zip  应用在Windows中 gzip: gzip, gunzi

RAID和逻辑卷管理器(LVM)

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

Linux下做软RAID

1.查看有多少块硬盘可用#fdisk -l嗯,一般而言,留下系统盘不动,其它的盘如果大小相同的话,统统合起来做一个raid. 2.决定做什么类型的raid.raid-0.raid-1.raid-5?如果有三块一样大小的盘(或者更多),那么极力推荐raid-5.否则请根据实际情况选择raid-0或者raid-1 3.卸载已挂载的数据盘首先查看下,要做raid的几块盘是不是已经被挂载过了#mount如果有,那么挨个删除数据.然后用umount卸载.然后,还有,打开/etc/fstab,注释掉那些刚卸

【我的Linux,我做主!】逻辑卷管理LVM的原理与实现方式

今天我们来了解一下LVM的概念.作用以及使用方法,帮助大家了解LVM,并能够使用LVM对您的磁盘系统进行灵活的配置和管理.一,什么是LVMLVM是逻辑卷管理(Logical Volume Manager)的简称,它是对磁盘分区进行管理的一种机制,简历在磁盘和分区之上的一个逻辑层,用来提高磁盘管理的灵活性.通过LVM可以将若干个磁盘分区连接为一个整块的卷组(Volume Group),形成一个存储池.可以在卷组上随意创建逻辑卷(Logical Volume),并进一步在逻辑卷上创建文件系统,与直接

Linux下的磁盘分区和逻辑卷

一.硬盘接口类型 硬盘的接口主要有IDE.SATA.SCSI .SAS和光纤通道等五种类型.其中IDE和SATA接口硬盘多用于家用产品中,也有部分应用于服务器,SATA是一种新生的硬盘接口类型,已经取代了大部分IDE接口应用.SCSI .SAS主要应用于服务器上,普通家用设备一般不支持SCSI和SAS接口.SAS也是是一种新生的硬盘接口类型,可以和SATA以及部分SCSI设备无缝结合.光纤通道最初设计也不是为了硬盘设计开发的接口,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬

linux中的软、硬链接

linux中的软.硬链接 硬链接 硬链接(hard link),如果文件B是文件A的硬链接,则A的inode节点号与B的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的.如果删除了其中一个,对另外一个没有影响.每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收.注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A

linux高级文件系统管理概述:处理交换分区、设置文件系统配额、配置raid和逻辑卷

8月26号,学习了linux(CentOS6.8)文件系统管理,内容颇多,主要分为如下几个部分: 一.处理交换分区和文件及移动介质的使用 二.常见工具free,df,du,dd的使用 三.设置文件系统配额 四.配置raid 五.配置逻辑卷 六.btrfs文件系统 一.处理交换分区和文件及移动介质的使用 交换分区是系统RAM的补充 基本设置包括: 创建交换分区或者文件 使用mkswap写入特殊签名 在/etc/fstab文件中添加适当的条目 使用swapon -a 激活交换空间 1.挂载交换分区

简述raid的种类、级别级Linux系统上软raid的实现

早期由于raid通常用来组合一些廉价的sata接口的硬盘设备来完成冗余. 故早期的全称是: Redundant Array of inexpensive Disks (廉价冗余磁盘阵列). 如今raid也被大部分企业用来组合scsi和sas接口的硬盘设备. 故现在的全称是:Redundant Array of independent  Disks (独立冗余磁盘阵列). raid的主要功能是把主板上的多块硬盘以某种特定的方式组合起来,组织成一个具有特定特性的一个逻辑整体,然后输出给操作系统或应用