LVM和RAID

Stella981
• 阅读 474
RAID: 
    Redundant Arrays of Inexpensive Disks
                        Independent

    Berkeley: A case for Redundent Arrays of Inexpensive Disks RAID

        提高IO能力:
            磁盘并行读写;
        提高耐用性;
            磁盘冗余来实现

        级别:多块磁盘组织在一起的工作方式有所不同;
        RAID实现的方式:
            外接式磁盘阵列:通过扩展卡提供适配能力
            内接式RAID:主板集成RAID控制器
            Software RAID:

    级别:level
        RAID-0:0, 条带卷,strip; 
        RAID-1: 1, 镜像卷,mirror;
        RAID-2
        ..
        RAID-5:
        RAID-6
        RAID10
        RAID01

        RAID-0: 以条带形式将数据均匀分布在阵列的各个磁盘上;
            读、写性能提升;
            可用空间:N*min(S1,S2,...)
            无容错能力
            最少磁盘数:2, 2+
            适用领域:视频生成和编辑、图形编辑,其它需要大的传输带宽的操作;

        RAID-1:以镜像为冗余方式,对虚拟磁盘上的数据做多份拷贝,放在成员磁盘上
            读性能提升、写性能略有下降;
            可用空间:1*min(S1,S2,...)
            有冗余能力
            最少磁盘数:2, 2+
            适用领域:财务、金融等高可用、高安全的数据存储环境

        RAID-4:数据交叉存储在2块硬盘中,再由第3块硬盘存储数据的校验码;
            1101, 0110, 1011

        RAID-5:采用独立存取的阵列方式,校验信息被均匀的分散到阵列的各个磁盘上;
            读、写性能提升
            可用空间:(N-1)*min(S1,S2,...)
            有容错能力:1块磁盘
            最少磁盘数:3, 3+
            适用领域:文件服务器、email服务器、web服务器等环境,数据库应用
        RAID-6:用2块盘做校验盘,校验码存两次;
            读、写性能提升
            可用空间:(N-2)*min(S1,S2,...)
            有容错能力:2块磁盘
            最少磁盘数:4, 4+

        
        混合类型
            RAID-10:结合RAID1和RAID0,先镜像,再条带化;
                读、写性能提升
                可用空间:N*min(S1,S2,...)/2
                有容错能力:每组镜像最多只能坏一块;
                磁盘数:2n(n>=2)
                优点:读性能很高,写性能比较好,数据安全性好,允许同时有N个磁盘失效;
                缺点:利用率只有50%,开销大;
                适用领域:多用于要求高可用性和高安全性的数据库应用;
            RAID-01:先分成两组做成RAID-0,再把组成的RAID-0做成RAID-1;不符合常用方法,每一组有一块坏的硬盘可能性大;

            RAID-50、RAID7
                适用领域:大型数据库服务器、应用服务器、文件服务器等应用;
            JBOD:Just a Bunch Of Disks
                功能:将多块磁盘的空间合并一个大的连续空间使用;
                可用空间:sum(S1+S2+,...)

        常用级别:
                RAID-0 性能最好
                RAID-1 冗余度最高,开销高
                RAID-5
                RAID-10 开销高
                RAID-50
                JBOD

        实现方式:
            硬件实现方式
            软件实现方式 

            CentOS 6上的软件RAID的实现:
                结合内核中的md(multi devices)

                mdadm:模式化的工具
                    命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
                        支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10; 

                    模式:
                        创建:-C
                        装配: -A
                        监控: -F
                        管理:-f, -r, -a

                    <raiddevice>: /dev/md#
                    <component-devices>: 任意块设备


                    -C: 创建模式
                        -n #: 使用#个块设备来创建此RAID;
                        -l #:指明要创建的RAID的级别;
                        -a {yes|no}:自动创建目标RAID设备的设备文件;
                        -c CHUNK_SIZE: 指明块大小;(默认512k)
                        -x #: 指明空闲盘的个数;

                        例如:创建一个#G可用空间的RAID5;
                            [root@study ~]# mdadm -C /dev/md0 -n 3 -x 1 -a yes -l 5 /dev/sdb{5,6,7,8}
                            [root@study ~]# mke2fs -t ext4 /dev/md0
                            [root@study /]# mount /dev/md0 /mydata
                            [root@study /]# mdadm -D /dev/md0

                    -D:显示raid的详细信息;
                        mdadm -D /dev/md#

                    管理模式:
                        -f: 标记指定磁盘为损坏;
                        -a: 添加磁盘
                        -r: 移除磁盘

                    观察md的状态:
                        cat /proc/mdstat

                    -S: 停止md设备
                        mdadm -S /dev/md#

                watch命令:
                    -n #: 刷新间隔,单位是秒;

                    watch -n# 'COMMAND'

        练习1:创建一个可用空间为10G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录;
        练习2:创建一个可用空间为10G的RAID10设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录;

    博客作业:raid各级别特性;

LVM2:

    LVM: Logical Volume Manager, Version: 2

    dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;
        /dev/dm-#

    /dev/mapper/VG_NAME-LV_NAME
        /dev/mapper/vol0-root
    /dev/VG_NAME/LV_NAME
        /dev/vol0/root

    pv管理工具:
        pvs:简要pv信息显示
        pvdisplay:显示pv的详细信息

        pvcreate /dev/DEVICE: 创建pv

    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

        lvremove /dev/VG_NAME/LV_NAME

    扩展逻辑卷:
        # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
        # resize2fs /dev/VG_NAME/LV_NAME

    缩减逻辑卷:
        # 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

    快照:snapshot
        lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name

    练习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创建快照,并尝试基于快照备份数据,验正快照的功能;


文件系统挂载使用:
    挂载光盘设备:
        光盘设备文件:
            IDE: /dev/hdc
            SATA: /dev/sr0

            符号链接文件:
                /dev/cdrom
                /dev/cdrw
                /dev/dvd
                /dev/dvdrw

        mount -r /dev/cdrom /media/cdrom
        umount /dev/cdrom

    dd命令:convert and copy a file
        用法:
            dd if=/PATH/FROM/SRC of=/PATH/TO/DEST 
                bs=#:block size, 复制单元大小;
                count=#:复制多少个bs;

            磁盘拷贝:
                dd if=/dev/sda of=/dev/sdb

            备份MBR
                dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

            破坏MBR中的bootloader:
                dd if=/dev/zero of=/dev/sda bs=256 count=1

        两个特殊设备:
            /dev/null: 数据黑洞;
            /dev/zero:吐零机;

    博客作业:lvm基本应用,扩展及缩减实现;

回顾:lvm2, dd
    lvm: 边界动态扩展或收缩;快照;
        pv --> vg --> lv
            PE:
            LE:

    dd: 复制
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
4天前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
御弟哥哥 御弟哥哥
3年前
RAID在数据库存储上的应用
随着单块磁盘在数据安全、性能、容量上呈现出的局限,磁盘阵列(RedundantArraysofInexpensive/IndependentDisks,RAID)出现了,RAID把多块独立的磁盘按不同的方式组合起来,形成一个磁盘组,以获得比单
Stella981 Stella981
2年前
Raid5和Raid6读写速度一点实例对比(非严谨)
以前一直纠结,存储文件系统底层究竟用raid5做到读写和安全的兼顾,还是选择raid6以安全为主导牺牲性能呢?今日就给大家一点参考!数据源主机A型号:群晖1817,硬盘8个硬盘类型:sata10T存储冗余类型:raid5数据同步主机B型号:群晖18015,硬盘12个硬盘类型:sas16T存储冗余类型:raid6同步软件
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
2年前
Mysql优化理论知识
参考文章http://blog.51cto.com/lizhenliang/2095526(1)硬件优化如果有条件一定要SSD固态硬盘代替SAS机械硬盘,将RAID级别调整为RAID10,相对于RAID1和RAID5有更好的读写性能,毕竟数据库的压力主要来自磁盘I/O方面。Linux内核有一个特性,会从物理内存中划分
Stella981 Stella981
2年前
Git@OSC 服务器关于 RAID 的一个问题处理
R720存储服务器配置了8个磁盘,购买的时候要求不做任何RAID,可是出厂的时候还是变成4个RAID0,在RAID管理器里删除RAID的时候安装系统无法识别到磁盘。打了戴尔的金牌客服电话了解到具体的解决办法如下:配置阵列卡遇到的问题:在删除所有的raid后,重启系统,安装时不能识别到物理硬盘。 这个问题是由于阵列卡的不
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
5个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这