使用RAID与LVM磁盘阵列技术

前言:深入探讨RAID(独立磁盘冗余阵列)与LVM(逻辑卷管理)两大磁盘管理技术。本文将介绍这两种技术的原理、配置方法及优势,帮助读者优化存储性能,提升数据安全性与灵活性。


1.1 RAID (独立冗余磁盘阵列)·

1.1.1 RAID 0 提升速度,不考虑安全

  • RAID 0 技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据一次写入到个个物理硬盘中。
  • RAID 0 技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力
  • 数据被分别写入到不同的硬盘设备中,即disk1和disk2硬盘设备会分别保存数据资料,最终实现分开写入、读取的效果,也就是说它的数据是分开存放的,其中任何一块硬盘发生故障都会损坏整个系统的数据

1.1.2 RAID 1 增加数据安全性

  • 如果生产环境对硬盘设备的读写速度没有要求,而是希望增加数据的安全性时,可以用到RAID 1
  • RAID 1 是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用

虽然注重安全性,但是硬盘设备的利用率下降,真实硬盘空间的可用率只有50%,3块硬盘组成的RAID 1 可用率只有33%

1.1.3 RAID 5 兼顾安全、速度与成本

RAID 5 是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中,就是RAID 5 技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。

1.1.4 RAID 10

RAID 10 是 RAID 1 和 RAID 0 的组合体,至少需要4块硬盘组建,

  • 其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性
  • 然后再对两个RAID 1 的磁盘阵列实施RAID 0 技术,进一步提升高硬盘设备的读写能力
  • 不考虑成本的前提下,RAID 10 的性能都超过了 RAID 5

1.1.5 部署磁盘阵列

[root@linuxprobe ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

mdadm: layout defaults to n2

mdadm: layout defaults to n2

mdadm: chunk size defaults to 512K

mdadm: size set to 20954624K

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

------其中,-C参数代表创建一个RAID 阵列卡;-参数显示创建的过程;磁盘阵列设备名称/dev/md0;-a yes 参数代表自动创建设备文件; -n 4 参数代表使用4块硬盘来部署这个阵列;-l 10 代表RAID 10 方案

[root@linuxprobe ~]# mkfs.ext4 /dev/md0

------制作好的RAID 磁盘阵列格式化为ext4 格式

[root@linuxprobe ~]# mkdir /RAID

[root@linuxprobe ~]# mount /dev/md0 /RAID

[root@linuxprobe ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/rhel-root 18G 3.0G 15G 17% /

devtmpfs 905M 0 905M 0% /dev

tmpfs 914M 84K 914M 1% /dev/shm

tmpfs 914M 8.9M 905M 1% /run

tmpfs 914M 0 914M 0% /sys/fs/cgroup

/dev/sr0 3.5G 3.5G 0 100% /media/cdrom

/dev/sda1 497M 119M 379M 24% /boot

/dev/md0 40G 49M 38G 1% /RAID ------创建挂载点,挂载后可用空间为40G

1.1.6 损坏磁盘阵列及修复

1.1.7 磁盘阵列+备份盘

[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/

sdd /dev/sde

mdadm: layout defaults to left-symmetric

mdadm: layout defaults to left-symmetric

mdadm: chunk size defaults to 512K

mdadm: size set to 20954624K

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

[root@linuxprobe ~]# mdadm -D /dev/md0

/dev/md0:

Version : 1.2

Creation Time : Fri May 8 09:20:35 2017

Raid Level : raid5

Array Size : 41909248 (39.97 GiB 42.92 GB)

Used Dev Size : 20954624 (19.98 GiB 21.46 GB)

Raid Devices : 3

Total Devices : 4

Persistence : Superblock is persistent

Update Time : Fri May 8 09:22:22 2017

State : clean

Active Devices : 3

Working Devices : 4

Failed Devices : 0

Spare Devices : 1

Layout : left-symmetric

Chunk Size : 512K

Name : linuxprobe.com:0 (local to host linuxprobe.com)

UUID : 44b1a152:3f1809d3:1d234916:4ac70481

Events : 18

Number Major Minor RaidDevice State

0 8 16 0 active sync /dev/sdb

1 8 32 1 active sync /dev/sdc

4 8 48 2 active sync /dev/sdd

3 8 64 - spare /dev/sde

------参数-l 5 代表RAID的级别,而参数-x 1 则代表有一块备份盘。

1.2 LVM(逻辑卷管理器)

LVM可以允许用户对磁盘资源进行动态调整

逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。

LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组和平。

1.2.1 部署逻辑卷

[root@linuxprobe ~]# pvcreate /dev/sdb /dev/sdc

Physical volume "/dev/sdb" successfully created

Physical volume "/dev/sdc" successfully created

------让新增的两块硬盘支持LVM技术

[root@linuxprobe ~]# vgcreate storage /dev/sdb /dev/sdc

Volume group "storage" successfully created

[root@linuxprobe ~]# vgdisplay

--- Volume group ---

VG Name storage

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 39.99 GiB

PE Size 4.00 MiB

Total PE 10238

Alloc PE / Size 0 / 0 Free PE / Size 10238 / 39.99 GiB

VG UUID KUeAMF-qMLh-XjQy-ArUo-LCQI-YF0o-pScxm1

------把两块硬盘设备加入到storage卷组中,然后vgdisplay查看卷组的状态

[root@linuxprobe ~]# lvcreate -n vo -l 37 storage

Logical volume "vo" created

[root@linuxprobe ~]# lvdisplay

--- Logical volume ---

LV Path /dev/storage/vo

LV Name vo

VG Name storage

LV UUID D09HYI-BHBl-iXGr-X2n4-HEzo-FAQH-HRcM2I

LV Write Access read/write

LV Creation host, time localhost.localdomain, 2017-02-01 01:22:54 -0500

LV Status available

open 0

LV Size 148.00 MiB

Current LE 37

Segments 1

Allocation inherit

Read ahead sectors auto

  • currently set to 8192

Block device 253:2

..................省略部分输出信息.................. ------切割出一个约为150MB的逻辑卷设备;第一种以容量为单位,使用参数-L 例如 使用-L 150MB 生成一个大小为150MB的逻辑卷。第二种以基本单元的个数为单位,所使用参数为-l 每个基本单元的大小为 4MB。例如 --l 37 可以生成一个为37*4MB=148MB的逻辑卷

[root@linuxprobe ~]# mkfs.ext4 /dev/storage/vo

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

38000 inodes, 151552 blocks

7577 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=33816576

19 block groups

8192 blocks per group, 8192 fragments per group

2000 inodes per group

Superblock backups stored on blocks:

8193, 24577, 40961, 57345, 73729

Allocating group tables: done

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

[root@linuxprobe ~]# mkdir /linuxprobe

[root@linuxprobe ~]# mount /dev/storage/vo /linuxprobe

------把生成好的逻辑卷进行格式化,然后挂载使用(/dev/卷组名称/逻辑卷名称)

[root@linuxprobe ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/rhel-root 18G 3.0G 15G 17% /

devtmpfs 905M 0 905M 0% /dev

tmpfs 914M 140K 914M 1% /dev/shm

tmpfs 914M 8.8M 905M 1% /run

tmpfs 914M 0 914M 0% /sys/fs/cgroup

/dev/sr0 3.5G 3.5G 0 100% /media/cdrom

/dev/sda1 497M 119M 379M 24% /boot

/dev/mapper/storage-vo 145M 7.6M 138M 6% /linuxprobe

[root@linuxprobe ~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab

------查看挂载状态,并写入到配置文件,使其永久生效

1.2.2 扩容逻辑卷

扩展前一定要记得卸载设备和挂载点关联

[root@linuxprobe ~]# umount /linuxprobe

[root@linuxprobe ~]# lvextend -L 290M /dev/storage/vo

Rounding size to boundary between physical extents: 292.00 MiB

Extending logical volume vo to 292.00 MiB

Logical volume vo successfully resized

------先卸载,把上一个实验中的逻辑卷vo扩展至290MB

[root@linuxprobe ~]# e2fsck -f /dev/storage/vo

e2fsck 1.42.9 (28-Dec-2013)

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/storage/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks

[root@linuxprobe ~]# resize2fs /dev/storage/vo

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/storage/vo to 299008 (1k) blocks.

The filesystem on /dev/storage/vo is now 299008 blocks long.

------检查硬盘完整性,并重置硬盘容量

[root@linuxprobe ~]# mount -a

[root@linuxprobe ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/rhel-root 18G 3.0G 15G 17% /

devtmpfs 985M 0 985M 0% /dev

tmpfs 994M 80K 994M 1% /dev/shm

tmpfs 994M 8.8M 986M 1% /run

tmpfs 994M 0 994M 0% /sys/fs/cgroup

/dev/sr0 3.5G 3.5G 0 100% /media/cdrom

/dev/sda1 497M 119M 379M 24% /boot

/dev/mapper/storage-vo 279M 2.1M 259M 1% /linuxprobe

------重新挂载硬盘设备并查看挂载状态

1.2.3 缩小逻辑卷

[root@linuxprobe ~]# umount /linuxprobe

e2fsck --f /dev/storage/vo

resize2fs /dev/storage/vo 120M

mount --a

df -h

1.2.4 逻辑卷快照

快照卷的容量必须等同于逻辑卷的容量

快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除

[root@linuxprobe ~]# vgdisplay

--- Volume group ---

VG Name storage

System ID

Format lvm2

Metadata Areas 2

Metadata Sequence No 4

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 1

Open LV 1

Max PV 0

Cur PV 2

Act PV 2

VG Size 39.99 GiB

PE Size 4.00 MiB

Total PE 10238

Alloc PE / Size 30 / 120.00 MiB Free PE / Size 10208 / 39.88 GiB

VG UUID CTaHAK-0TQv-Abdb-R83O-RU6V-YYkx-8o2R0e

..................省略部分输出信息..................

------首先先看看卷组信息

[root@linuxprobe ~]# echo "Welcome to Linuxprobe.com" > /linuxprobe/readme.txt

[root@linuxprobe ~]# ls -l /linuxprobe

total 14

drwx------. 2 root root 12288 Feb 1 07:18 lost+found

-rw-r--r--. 1 root root 26 Feb 1 07:38 readme.txt

------通过卷组的输出信息可以看到,卷组中已经使用了120MB的容量,空闲容量还有39.88GB。然后用重定向往逻辑卷设备所挂载的目录中写入一个文件

[root@linuxprobe ~]# lvcreate -L 120M -s -n SNAP /dev/storage/vo

Logical volume "SNAP" created

[root@linuxprobe ~]# lvdisplay

--- Logical volume ---

LV Path /dev/storage/SNAP

LV Name SNAP

VG Name storage

LV UUID BC7WKg-fHoK-Pc7J-yhSd-vD7d-lUnl-TihKlt

LV Write Access read/write

LV Creation host, time localhost.localdomain, 2017-02-01 07:42:31 -0500

LV snapshot status active destination for vo

LV Status available

open 0

LV Size 120.00 MiB

Current LE 30

COW-table size 120.00 MiB

COW-table LE 30

Allocated to snapshot 0.01%

Snapshot chunk size 4.00 KiB

Segments 1

Allocation inherit

Read ahead sectors auto

  • currently set to 8192

Block device 253:3

..................省略部分输出信息..................

------第1步:使用-s 参数生成一个快照卷,使用-L参数制定切割的大小。另外,还需要在命令后面写上针对哪个逻辑卷执行的快照操作[root@linuxprobe ~]# dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M

1+0 records in

1+0 records out

104857600 bytes (105 MB) copied, 3.35432 s, 31.3 MB/s

[root@linuxprobe ~]# lvdisplay

--- Logical volume ---

LV Path /dev/storage/SNAP

LV Name SNAP

VG Name storage

LV UUID BC7WKg-fHoK-Pc7J-yhSd-vD7d-lUnl-TihKlt

LV Write Access read/write

LV Creation host, time localhost.localdomain, 2017-02-01 07:42:31 -0500

LV snapshot status active destination for vo

LV Status available

open 0

LV Size 120.00 MiB

Current LE 30

COW-table size 120.00 MiB

COW-table LE 30

Allocated to snapshot 83.71%

Snapshot chunk size 4.00 KiB

Segments 1

Allocation inherit

Read ahead sectors auto

  • currently set to 8192

Block device 253:3

------第2步:在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,完后再查看快照卷的状态,发现存储空间占的用量上升了

[root@linuxprobe ~]# umount /linuxprobe

[root@linuxprobe ~]# lvconvert --merge /dev/storage/SNAP

Merging of volume SNAP started.

vo: Merged: 21.4%

vo: Merged: 100.0%

Merge of snapshot into logical volume vo has finished.

Logical volume "SNAP" successfully removed

------第3步:为了校验SNAP快照卷的效果,需要对逻辑卷进行快照还原还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载

[root@linuxprobe ~]# mount -a

[root@linuxprobe ~]# ls /linuxprobe/

lost+found readme.txt

------第4步:快照卷会被自动删除,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的100MB的垃圾文件也被清除了

1.2.5 删除逻辑卷

顺序删除逻辑卷、卷组、物理卷设备

[root@linuxprobe ~]# umount /linuxprobe

[root@linuxprobe ~]# vim /etc/fstab

[root@linuxprobe ~]# lvremove /dev/storage/vo

[root@linuxprobe ~]# vgremove storage

[root@linuxprobe ~]# pvremove /dev/sdb /dev/sdc

相关推荐
VVVVWeiYee11 分钟前
项目2路由交换
运维·服务器·网络·网络协议·信息与通信
lifeng43211 小时前
Jenkins集成部署(图文教程、超级详细)
运维·jenkins
白手小弟2 小时前
python wxauto库实现微信自动化发送信息、回复、添加好友等
运维·自动化
ii_best2 小时前
ios按键精灵自动化的脚本教程:自动点赞功能的实现
运维·ios·自动化
3DVisionary2 小时前
数字图像相关DIC技术用于机械臂自动化焊接全场变形测量
运维·数码相机·自动化·焊接变形实验·数字图像相关dic技术·自动化焊接全场变形测量·非接触高精度环境适应性全场测量
小伍_Five2 小时前
透视网络世界:计算机网络习题的深度解析与总结【前3章】
服务器·网络·计算机网络
芷栀夏2 小时前
如何在任何地方随时使用本地Jupyter Notebook无需公网IP
服务器·ide·tcp/ip·jupyter·ip
G鲲鹏展翅Y2 小时前
jupyter-lab与实验室服务器远程链接
服务器·jupyter
IT机器猫3 小时前
Docker完整技术汇总
运维·docker·容器
无所不在的物质3 小时前
Jenkins基础教程
运维·云原生·自动化·jenkins