linux-运维进阶-12 RAID和LVM

linux-运维进阶-12 RAID和LVM

RAID

RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。

​ 组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。

RAID分类

​ RAID技术经过不断的发展,现在已拥有了从 RAID 0 到 7 八种基本的RAID 级别。另外,还有一些基本RAID级别的组合形式,如RAID 10(RAID 0与RAID 1的组合),RAID 50(RAID 0与RAID 5的组合)等。不同RAID 级别代表着不同的存储性能、数据安全性和存储成本。但我们最为常用的是下面的几种RAID形式。

RAID级别的选择有三个主要因素:可用性(数据冗余)、性能和成本。如果不要求可用性,选择RAID0以获得最佳性能。如果可用性和性能是重要的而成本不是一个主要因素,则根据硬盘数量选择RAID 1。如果可用性、成本和性能都同样重要,则根据一般的数据传输和硬盘的数量选择RAID3、RAID5。

下面以几张图来举例

RAID0

RAID1

RAID5

RAID10(不是读作十,而是一零)

部署磁盘阵列

mdadm

用于管理Linux系统中的软件RAID硬盘阵列,格式为

mdadm [模式] <RAID设备名称> [选项] [成员设备名称]

安装Linux 软阵列管理工具mdadm

[root@localhost ~]# yum install mdadm -y

题目:添加4块20G的硬盘,将硬盘用工具组合成软RAID10(上面有图RAID10)

生成磁盘阵列

参数作用
-a检测设备名称
-n指定设备数量
-l指定RAID级别
-C创建
-v显示过程
-f模拟设备损坏
-r移除设备
-Q查看摘要信息
-D查看详细信息
-S停止RAID磁盘阵列
-x指定备份盘数量

首先用fdisk -l查看系统中的磁盘信息

生成磁盘阵列

[root@localhost ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sd{b,c,d,e}
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# 

查看阵列信息

[root@localhost ~]# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Thu Jan 24 21:29:53 2019
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Jan 24 21:30:20 2019
             State : clean, resyncing 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

     Resync Status : 17% complete

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 681083d9:0b891154:c4a4358f:3511a208
            Events : 2

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde
[root@localhost ~]# 

使用磁盘阵列

使用制作出来的md0,将磁盘分出一个5G大小的分区,格式化为xfs,挂载到/mnt/raid使用

[root@localhost ~]# mkdir /mnt/raid
[root@localhost ~]# fdisk /dev/md0
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x48492670.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-83816447, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83816447, default 83816447): +5G
Partition 1 of type Linux and of size 5 GiB is set

Command (m for help): p

Disk /dev/md0: 42.9 GB, 42914021376 bytes, 83816448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk label type: dos
Disk identifier: 0x48492670

    Device Boot      Start         End      Blocks   Id  System
/dev/md0p1            2048    10487807     5242880   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partprobe 
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
[root@localhost ~]# mount /dev/md0p1 /mnt/raid/
mount: /dev/md0p1 is write-protected, mounting read-only
mount: unknown filesystem type '(null)'
[root@localhost ~]# 

损坏磁盘阵列及修复

[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb
…………
[root@localhost ~]# mdadm -D /dev/md0
…………
[root@localhost ~]# umount /raid
[root@localhost ~]# mount –a
[root@localhost ~]# df –h
…………

停止磁盘阵列

umount卸载已经挂载的分区,用fdisk删除阵列硬盘上的分区

[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# partprobe 
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
[root@localhost ~]# 

LVM

​ LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

什么是逻辑卷管理器?

  • LVM 是逻辑盘卷管理(Logical Volume Manager)的简称,它是 Linux 环境下对卷进行方便操作的抽象层。
  • LVM 是建立在硬盘和分区之上的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,从而提高磁盘分区管理的灵活性。
  • LVM允许在多个物理设备间重新组织文件系统,包括重新设定文件系统的大小。

概念区分

PV(物理卷):
  • 物理卷(physical volume, PV)在 LVM 系统中处于最底层
  • 物理卷可以是整个硬盘、硬盘上的分区或从逻辑上与磁盘分区具有同样功能的设备(如:RAID)
  • 物理卷是 LVM 的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与 LVM 相关的管理参数
VG(卷组):
  • 卷组(Volume Group, VG)建立在物理卷之上,它由一个或多个物理卷组成
  • 卷组创建之后,可以动态添加物理卷到卷组中,在卷组上可以创建一个或多个“LVM 分区”(逻辑卷)
  • 一个 LVM 系统中可以只有一个卷组,也可以包含多个卷组
  • LVM 的卷组类似于非LVM系统中的物理硬盘
LV(逻辑卷):
  • 逻辑卷(Logical Volume, LV)建立在卷组之上,它是从卷组中“切出”的一块空间
  • 逻辑卷创建之后,其大小可以伸缩
  • LVM 的逻辑卷类似于非 LVM 系统中的硬盘分区,在逻辑卷之上可以建立文件系统 (比如 /home 或者 /usr 等)

创建逻辑卷过程

添加一块20G和一块10G的硬盘(物理卷大小不需要一样,没有硬性要求)

物理卷操作

将两块硬盘变为物理卷

[root@localhost ~]# pvcreate /dev/sd{b,c}
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
[root@localhost ~]# 

查看系统中的物理卷

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   10.00g 10.00g
  /dev/sdc          lvm2 ---   20.00g 20.00g

扫描系统中的物理卷

[root@localhost ~]# pvscan 
  PV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]
  PV /dev/sdb                       lvm2 [10.00 GiB]
  PV /dev/sdc                       lvm2 [20.00 GiB]
  Total: 3 [<49.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 2 [30.00 GiB]

查看物理卷详细信息

[root@localhost ~]# pvdisplay /dev/sdb
  "/dev/sdb" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               R1Tcud-WHmk-JfIV-0Zh3-0bg3-enz0-SK81CJ
   
[root@localhost ~]# 

pvdisplay后面不加某一块物理卷,那么显示的就是系统中所有的物理卷的详细信息

卷组操作

创建卷组aaa,将两个物理卷加入到卷组里

[root@localhost ~]# vgcreate aaa /dev/sd{b,c}
  Volume group "aaa" successfully created
[root@localhost ~]# 

查看系统中卷组用命令vgs,扫描用vgscan,查看详细信息用vgdisplay,用法和pv那套命令一样

[root@localhost ~]# vgdisplay aaa
  --- Volume group ---
  VG Name               aaa
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29.99 GiB
  PE Size               4.00 MiB
  Total PE              7678
  Alloc PE / Size       0 / 0   
  Free  PE / Size       7678 / 29.99 GiB
  VG UUID               sIRezl-w3K2-9o2i-wDjV-szxH-7mbY-5RW0jW
   
[root@localhost ~]# 

逻辑卷操作

创建一个逻辑卷system,大小为1G,要求指定大小的时候使用基本单元

[root@localhost ~]# lvcreate -n system -l 250 aaa
  Logical volume "system" created.
[root@localhost ~]# lvdisplay /dev/aaa/system 
  --- Logical volume ---
  LV Path                /dev/aaa/system
  LV Name                system
  VG Name                aaa
  LV UUID                Qnfuv6-a0lS-WRy6-s0Uo-4pFS-Y1yf-y4Jd9v
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-01-24 21:52:17 -0500
  LV Status              available
  # open                 0
  LV Size                1000.00 MiB
  Current LE             250
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
[root@localhost ~]# 

创建逻辑卷network,大小为3G,不需要用基本单元指定大小

[root@localhost ~]# lvcreate -n network -L 3G aaa
  Logical volume "network" created.
[root@localhost ~]# lvdisplay /dev/aaa/network 
  --- Logical volume ---
  LV Path                /dev/aaa/network
  LV Name                network
  VG Name                aaa
  LV UUID                pga3dS-2S08-dit2-2Wm1-ZA7x-OPa8-tLxUtr
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-01-24 21:54:51 -0500
  LV Status              available
  # open                 0
  LV Size                3.00 GiB
  Current LE             768
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
   
[root@localhost ~]# 

将system格式化为xfs,挂载到/mnt/aaa_system

[root@localhost ~]# mkfs.xfs /dev/aaa/system 
meta-data=/dev/aaa/system        isize=512    agcount=4, agsize=64000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=256000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# partprobe 
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
[root@localhost ~]# mkdir /mnt/aaa_system
[root@localhost ~]# mount /dev/aaa/system /mnt/aaa_system/
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.3G   16G   8% /
devtmpfs                 476M     0  476M   0% /dev
tmpfs                    488M     0  488M   0% /dev/shm
tmpfs                    488M  7.7M  480M   2% /run
tmpfs                    488M     0  488M   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/mapper/aaa-system   997M   33M  965M   4% /mnt/aaa_system
[root@localhost ~]# 

逻辑卷在系统中的两种表示方式

第一种:/dev/[卷组名]/[逻辑卷]

[root@localhost ~]# ll /dev/aaa/system 
lrwxrwxrwx. 1 root root 7 Jan 24 21:55 /dev/aaa/system -> ../dm-2

第二种:/dev/mapper/[卷组名]-[逻辑卷]

[root@localhost ~]# ll /dev/mapper/aaa-system 
lrwxrwxrwx. 1 root root 7 Jan 24 21:55 /dev/mapper/aaa-system -> ../dm-2
[root@localhost ~]# 

逻辑卷扩容

发现system只有1G大小远远不够用,至少要有5G的空间才够用,所以要将system扩容到5G

[root@localhost ~]# umount /mnt/aaa_system
[root@localhost ~]# e2fsck -f /dev/aaa/system 
[root@localhost ~]# lvextend -L 10G /dev/aaa/system
[root@localhost ~]# resize2fs /dev/aaa/system
[root@localhost ~]# mount /dev/aaa/system /mnt/aaa_system

逻辑卷快照

相当于是磁盘的备份

[root@localhost ~]# echo "helloworld" > /mnt/aaa_system/hello.txt

创建快照:
[root@localhost ~]# lvcreate -L 10G -s -n SNAP /dev/aaa/system
  Reducing COW size 10.00 GiB down to maximum usable size 1004.00 MiB.
  Logical volume "SNAP" created.
[root@localhost ~]# lvdisplay 
......

[root@localhost ~]# rm -f /mnt/aaa_system/hello.txt 
[root@localhost ~]# 

还原快照:
[root@localhost ~]# umount /mnt/eagle_system
[root@localhost ~]# lvconvert --merge /dev/eagleslab/SNAP

本篇到此结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值