RAID 与 LVM 磁盘阵列技术

物理设备的命名规则

在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。

常见的硬件设备及其文件名称

硬件设备文件名称
IDE设备/dev/hd[a-d]
SCSI/SATA/U盘/dev/sd[a-z]
virtio设备/dev/vd[a-z]
软驱/dev/fd[0-1]
打印机/dev/lp[0-15]
光驱/dev/cdrom
鼠标/dev/mouse
磁带机/dev/st0或/dev/ht0

由于现在的IDE设备已经很少见了,所以一般的硬盘设备都是以“/dev/sd”开头。而一台主机上可以有多块硬盘,因此系统采用a~z来代表26块不同的硬盘(默认从a开始分配)

主分区或扩展分区的编号从1开始,到4结束;
逻辑分区从编号5开始。

分析一下/dev/sda5这个设备文件名称包含哪些信息

在这里插入图片描述
首先,/dev/目录中保存的应当是硬件设备文件;其次,sd表示的是存储设备;然后,a表示系统中同类接口中第一个被识别到的设备;最后,5表示这个设备是一个逻辑分区。一言以蔽之,“/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件”。

硬盘相关的知识

正是因为计算机有了硬盘设备,我们才能够在玩游戏的过程中或游戏通关之后随时存档,而不用每次重头开始。硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用446字节,分区表占用64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。

在这里插入图片描述

为了解决分区个数不够的问题,可以将第一个扇区的分区表中16字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另外一个分区。也就是说,扩展分区其实并不是一个真正的分区,而更像是一个占用16字节分区表空间的指针—一个指向另外一个分区的指针。这样一来,用户一般会选择使用3个主分区加1个扩展分区的方法,然后在扩展分区中创建出数个逻辑分区,从而来满足多分区(大于4个)的需求。

在这里插入图片描述

一、RAID(独立冗余磁盘阵列)

1.1 RAID 简介

  RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列) 技术是1988 年,加利福尼亚大学伯克利分校首次提出并定义了 RAID 技术的概念。RAID 技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。

  RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。

1.2 RAID的几种工作模式

1.2.1 RAID 0 (存储性能)

  RAID 0 技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样一来,在最理想的状态下,硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。通俗来说,RAID 0 技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力。如图 7-1 所示,数据被分别写入到不同的硬盘设备中,即 disk1 和 disk2 硬盘设备会分别保存数据资料,最终实现分开写入、读取的效果。
在这里插入图片描述

1.2.1 RAID 1(数据安全)

  尽管 RAID 0 技术提升了硬盘设备的读写速度,但是它是将数据依次写入到各个物理硬盘中,也就是说,它的数据是分开存放的,其中任何一块硬盘发生故障都会损坏整个系统的
数据。因此,如果生产环境对硬盘设备的读写速度没有要求,而是希望增加数据的安全性时,就需要用到 RAID 1 技术了。

   RAID 1 技术它是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。

在这里插入图片描述

   RAID 1 技术虽然十分注重数据的安全性,但是因为是在多块硬盘设备中写入了相同的数据,因此硬盘设备的利用率得以下降,从理论上来说,RAID1 硬盘空间的真实可用率只有 50%,由三块硬盘设备组成的 RAID 1 磁盘阵列的可用率只有 33%左右,以此类推。而且,由于需要把数据同时写入到两块以上的硬盘设备,这无疑也在一定程度上增大了系统计算功能的负载。

1.2.3 RAID 5(RAID0和RAID1折中方案)

  RAID5 技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5 磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷; RAID 5 技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试
重建损坏的数据。RAID 这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。

  RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。
在这里插入图片描述

1.2.4 RAID 10(RAID 1+RAID 0 组合体)

  鉴于 RAID 5 技术是因为硬盘设备的成本问题对读写速度和数据的安全性能而有了一定的妥协,但是大部分企业更在乎的是数据本身的价值而非硬盘价格,因此生产环境中主要使用 RAID 10 技术。

  顾名思义,RAID 10 技术是 RAID 1+RAID 0 技术的一个“组合体”。RAID 10 技术需要至少 4 块硬盘来组建,其中先分别两两制作成 RAID 1 磁盘阵列,以保证数据的安全性;然后再对两个 RAID 1 磁盘阵列实施 RAID 0 技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏 50%的硬盘设备而不丢失数据。由于 RAID 10 技术继承了 RAID 0 的高读写速度和 RAID 1 的数据安全性,在不考虑成本的情况下 RAID 10 的性能都超过了 RAID 5,因此当前成为广泛使用的一种存储技术
在这里插入图片描述

1.3 部署磁盘阵列

  1. 添加 4 块硬盘设备来制作一个 RAID 10 磁盘阵列
    在这里插入图片描述
    mdadm 命令用于管理 Linux 系统中的软件 RAID 硬盘阵列,格式为
mdadm [模式] <RAID设备名称> [选项] [成员设备名称]

mdadm 命令的常用参数和作用

参数作用
-a检测设备名称
-n指定设备数量
-l指定RAID级别
-C创建
-v显示过程
-f模拟设备损坏
-r移除设备
-Q查看摘要信息
-D查看详细信息
-S停止RAID磁盘阵列
  1. 使用 mdadm 命令创建 RAID 10,名称为“/dev/md0”
[root@localhost ~]$ lsblk #查看可用块设备的信息

[root@localhost ~]$ yum -y install mdadm
[root@localhost ~]$ 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 阵列卡
  • -v 参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0 就是创建后的RAID 磁盘阵列的名称
  • -a yes 参数代表自动创建设备文件
  • -n 4 参数代表使用 4 块硬盘来部署这个 RAID 磁盘阵列
  • -l 10 参数则代表 RAID 10 方案
  • 最后再加上 4 块硬盘设备的名称
  1. 把制作好的 RAID 磁盘阵列格式化为 ext4 格式
[root@localhost ~]$ mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013) 
Filesystem label= 
OS type: Linux 
Block size=4096 (log=2)
Fragment size=4096 (log=2) 
Stride=128 blocks, Stripe width=256 blocks 
2621440 inodes, 10477312 blocks 
523865 blocks (5.00%) reserved for the super user 
First data block=0 
Maximum filesystem blocks=2157969408 
320 block groups 
32768 blocks per group, 32768 fragments per group 
8192 inodes per group 
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
4096000, 7962624 
Allocating group tables: done 
Writing inode tables: done 
Creating journal (32768 blocks): done 
Writing superblocks and filesystem accounting information: done
  1. 创建挂载点然后把硬盘设备进行挂载操作。挂载成功后可看到可用空间为40GB
[root@localhost ~]$ mkdir /RAID
[root@localhost ~]$ mount /dev/md0 /RAID
[root@localhost ~]$ 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
  1. 查看/dev/md0 磁盘阵列的详细信息,并把挂载信息写入到配置文件中,使其永久生效
[root@localhost ~]$ mdadm -D /dev/md0
/dev/md0: 
Version : 1.2 
Creation Time : Tue May 5 07:43:26 2017 
Raid Level : raid10 
Array Size : 41909248 (39.97 GiB 42.92 GB) 
Used Dev Size : 20954624 (19.98 GiB 21.46 GB) 
Raid Devices : 4 
Total Devices : 4 
Persistence : Superblock is persistent 
Update Time : Tue May 5 07:46:59 2017 
State : clean 
Active Devices : 4 
Working Devices : 4 
Failed Devices : 0 
Spare Devices : 0 
Layout : near=2 
Chunk Size : 512K 
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : cc9a87d4:1e89e175:5383e1e8:a78ec62c 
Events : 17 
Number Major Minor RaidDevice State 
0 8 16 0 active sync /dev/sdb 
1 8 32 1 active sync /dev/sdc 
2 8 48 2 active sync /dev/sdd 
3 8 64 3 active sync /dev/sde




[root@localhost ~]$ echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

1.4 损坏磁盘阵列及修复

   之所以在生产环境中部署 RAID 10 磁盘阵列,是为了提高硬盘存储设备的读写速度及数
据的安全性,但由于我们的硬盘设备是在虚拟机中模拟出来的,因此对读写速度的改善可能
并不直观,因此说 RAID 磁盘阵列损坏后的处理方法,这样大家在步入运维岗位后遇到类似问题时,也可以轻松解决。
   在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用 mdadm 命令将其移除,然后查看 RAID 磁盘阵列的状态,可以发现状态已经改变。

[root@localhost ~]$ mdadm /dev/md0 -f /dev/sdb #-f模拟设备损坏
mdadm: set /dev/sdb faulty in /dev/md0

[root@localhost ~]$ mdadm -D /dev/md0 #查看详细信息
/dev/md0: 
Version : 1.2 
Creation Time : Fri May 8 08:11:00 2017 
Raid Level : raid10 
Array Size : 41909248 (39.97 GiB 42.92 GB) 
Used Dev Size : 20954624 (19.98 GiB 21.46 GB) 
Raid Devices : 4 
Total Devices : 4 
Persistence : Superblock is persistent 
Update Time : Fri May 8 08:27:18 2017 
State : clean, degraded 
Active Devices : 3 
Working Devices : 3 
Failed Devices : 1 
Spare Devices : 0 
Layout : near=2 
Chunk Size : 512K 
Name : linuxprobe.com:0 (local to host linuxprobe.com) 
UUID : f2993bbd:99c1eb63:bd61d4d4:3f06c3b0 
Events : 21 
Number Major Minor RaidDevice State 
0 0 0 0 removed 
1 8 32 1 active sync /dev/sdc 
2 8 48 2 active sync /dev/sdd 
3 8 64 3 active sync /dev/sde 
0 8 16 – faulty /dev/sdb

  在 RAID 10 级别的磁盘阵列中,当 RAID 1 磁盘阵列中存在一个故障盘时并不影响 RAID 10 磁盘阵列的使用。当购买了新的硬盘设备后再使用 mdadm 命令来予以替换即可,在此期间我们可以在/RAID 目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到 RAID 磁盘阵列中。

[root@localhost ~]$ umount /RAID
[root@localhost ~]$ mdadm /dev/md0 -a /dev/sdb
[root@localhost ~]$ mdadm -D /dev/md0
/dev/md0: 
 Version : 1.2 
 Creation Time : Mon Jan 30 00:08:56 2017 
 Raid Level : raid10 
 Array Size : 41909248 (39.97 GiB 42.92 GB) 
 Used Dev Size : 20954624 (19.98 GiB 21.46 GB) 
 Raid Devices : 4 
 Total Devices : 4 
 Persistence : Superblock is persistent 
 Update Time : Mon Jan 30 00:19:53 2017 
 State : clean 
 Active Devices : 4 
 Working Devices : 4 
 Failed Devices : 0 
 Spare Devices : 0 
 Layout : near=2 
 Chunk Size : 512K 
 Name : localhost.localdomain:0 (local to host localhost.localdomain) 
 UUID : d3491c05:cfc81ca0:32489f04:716a2cf0 
 Events : 56 
 Number Major Minor RaidDevice State
 4 8 16 0 active sync /dev/sdb
 1 8 32 1 active sync /dev/sdc
 2 8 48 2 active sync /dev/sdd
 3 8 64 3 active sync /dev/sde 
[root@localhost ~]$ mount –a

二、LVM(逻辑卷管理器)

2.1 LVM 简介

  LVM(Logical Volume Manager)逻辑卷管理,是在硬盘分区和文件系统之间添加的一个逻辑层,为文件系统屏蔽下层硬盘分区布局,并提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在硬盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越物理硬盘。当服务器添加了新的硬盘后,管理员不必将原有的文件移动到新的硬盘上,而是通过LVM直接扩展文件系统来跨越物理硬盘。

  LVM就是通过将底层的物理硬盘封装,然后以逻辑卷的方式呈现给上层应用。当我们对底层的物理硬盘进行操作时,不再是针对分区进行操作,而是通过逻辑卷对底层硬盘进行管理操作

2.2 LVM 基础术语

  • 物理存储介质(The physical media):LVM存储介质,可以是硬盘分区、整个硬盘、raid阵列或SAN硬盘。设备必须初始化为LVM物理卷,才能与LVM结合使用。

  • 物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质比较却包含与LVM相关的管理参数,创建物理卷可以用硬盘分区,也可以用硬盘本身。

  • 卷组VG(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,一个卷组VG由一个或多个物理卷PV组成。可以在卷组VG上建立逻辑卷LV。

  • 逻辑卷LV(logical volume):类似于非LVM系统中的硬盘分区,逻辑卷LV建立在卷组VG之上。在逻辑卷LV之上建立文件系统。

  • 物理块PE(physical Extent):物理卷PV中可以分配的最小存储单元,PE的大小可以指定,默认为4MB

  • 逻辑块LE(Logical Extent):逻辑卷LV中可以分配的最小存储单元,在同一卷组VG中LE的大小和PE是相同的,并且一一相对

在这里插入图片描述

总结:多个磁盘/分区/raid-->多个物理卷PV-->合成卷组VG-->从VG划分出逻辑卷LV-->格式化LV,挂载使用。

2.3 部署逻辑卷

  一般而言,在生产环境中无法精确地评估每个硬盘分区在日后的使用情况,因此会导致原先分配的硬盘分区不够用。比如,伴随着业务量的增加,用于存放交易记录的数据库目录
的体积也随之增加;因为分析并记录用户的行为从而导致日志目录的体积不断变大,这些都会导致原有的硬盘分区在使用上捉襟见肘。而且,还存在对较大的硬盘分区进行精简缩容的情况。可以通过部署 LVM 来解决上述问题

lvm常用的命令

功能物理卷(PV)管理命令卷组(VG)管理命令逻辑卷(LV)管理命令
scan 扫描pvscanvgscanlvscan
create 创建pvcreatevgcreatelvcreate
display 显示pvdisplayvgdisplaylvdisplay
remove 移除pvremovevgremovelvremove
extend 扩展vgextendlvextend
reduce 减少vgreducelvreduce

添加两块硬盘

在这里插入图片描述

  1. 让新添加的两块硬盘设备支持 LVM 技术,创建物理卷PV
[root@localhost ~]$ pvcreate /dev/sdb /dev/sdc
 Physical volume "/dev/sdb" successfully created 
 Physical volume "/dev/sdc" successfully created

[root@localhost ~]$ pvdisplay
#pvs也可以查看
 --- Physical volume ---
  PV Name               /dev/sdb #实际的 partition 设备名称
  VG Name                  #卷组名称,因为尚未分配出去,所以空白
  PV Size               20.00 GiB  #容量说明
  Allocatable           no   #是否已被分配
  PE Size               0 #在此 PV 内的 PE 大小
  Total PE              0 #共分区出几个 PE
  Free PE               0 #没被 LV 用掉的 PE
  Allocated PE          0 #尚可分配出去的 PE 数量
  PV UUID               S3I4wO-e8Ei-G4t3-vXhL-YF0C-afvp-VQRWSL

  1. 把两块硬盘设备加入到 storage 卷组VG中,然后查看卷组的状态。
格式:vgcreate [-s N[mgt]] VG名称 PV名称 
		选项与参数: 
		-s :后面接 PE 的大小 (size),单位可以是 m, g, t (大小写均可)

[root@localhost ~]$ vgcreate storage /dev/sdb /dev/sdc
 Volume group "storage" successfully created

[root@localhost ~]$ vgdisplay #后面可以跟卷组名
#vgs 也可以查看
 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  #整体的 VG 容量
 PE Size 4.00 MiB   #内部每个 PE 的大小
 Total PE 10238     #总共的 PE 数量
 Alloc PE / Size 0 / 0 Free PE / Size 10238 / 39.99 GiB
 VG UUID KUeAMF-qMLh-XjQy-ArUo-LCQI-YF0o-pScxm1 
………………省略部分输出信息………………


#改变卷组名称
[root@localhost ~]$ vgrename storage vg_probe

增加VG的容量

将剩余的 PV (/dev/sda8) 丢给 vbirdvg 吧!

[root@localhost ~]$ vgextend vbirdvg /dev/sda8
Volume group "vbirdvg" successfully extended

[root@localhost ~]$ vgdisplay vbirdvg
  1. 切割出一个约为 150MB 的逻辑卷LV设备。
    这里需要注意切割单位的问题。在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的参数为-L。例如,使用-L 150M 生成一个大小为 150MB 的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为 4MB。例如,使用-l 37 可以生成一个大小为 37×4MB=148MB 的逻辑卷。
格式:lvcreate [-l N] [-n LV名称] VG名称
	选项与参数: 
		-L :后面接容量,容量的单位可以是 M,G,T 等,要注意的是,最小单位为 PE, 因此这个数量必须要是 PE 的倍数,若不相符,系统会自行计算最相近的容量。 
		-l :后面可以接 PE 的“个数”,而不是数量。若要这么做,得要自行计算 PE 数。 
		-n :后面接的就是 LV 的名称

[root@localhost ~]$ lvcreate -l 37 -n vo storage
Logical volume "vo" created


[root@localhost ~]$ 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 
………………省略部分输出信息………………
  1. 把生成好的逻辑卷进行格式化,然后挂载使用。

Linux 系统会把 LVM 中的逻辑卷设备存放在/dev 设备目录中(实际上是做了一个符号链
接),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组
名称/逻辑卷名称)。

[root@localhost ~]$ 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@localhost ~]$ mkdir /linuxprobe 

[root@localhost ~]$ mount /dev/storage/vo /linuxprobe
  1. 查看挂载状态,并写入到配置文件,使其永久生效
[root@localhost ~]$ df -h 

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

2.4 扩容逻辑卷

如果 VG 容量不足, 最简单的方法就是再加硬 盘!然后将该硬盘使用上面讲过的 pvcreate 及 vgextend 增加到该 VG 内即可!
卷组是由两块硬盘设备共同组成的。用户在使用存储设备时感知不到设备底层的架构和布局,更不用关心底层是由多少块硬盘组成的,只要卷组中有足够的资源,就可以一直为逻辑卷扩容。扩展前请一定要记得卸载设备和挂载点的关联。

#不卸载设备也可以
[root@localhost ~]$ umount /linuxprobe

使用lvresize也可以
lvresize -L +500M /dev/vbirdvg/vbirdlv

  1. 把上一个实验中的逻辑卷 vo 扩展至 290MB
[root@localhost ~]$ 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
  1. 检查硬盘完整性,并重置硬盘容量
[root@localhost ~]$ 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@localhost ~]$ 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.
  1. 重新挂载硬盘设备并查看挂载状态
[root@localhost ~]$ mount -a
[root@localhost ~]$ df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.4G   16G   9% /
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/storage-vo   279M  2.1M  261M   1% /linuxprobe

2.5 卷组VG扩容

LVM空间不够时,添加一块新硬盘时使用。

#查看vg信息
[root@localhost ~]$ vgdisplay
[root@localhost ~]$ vgs
  VG  #PV #LV #SN Attr   VSize  VFree
  vg1   1   2   0 wz--n- <2.00g 1.70g
  vg2   1   0   0 wz--n-  1.98g 1.98g

#创建PV
[root@localhost ~]$ pvcreate /dev/sdbd


[root@localhost ~]$ pvs
  PV         VG  Fmt  Attr PSize  PFree
  /dev/sdb1  vg1 lvm2 a--  <2.00g 1.70g
  /dev/sdb2  vg2 lvm2 a--   1.98g 1.98g
  /dev/sdb3      lvm2 ---   2.00g 2.00g
  /dev/sdb4      lvm2 ---   2.00g 2.00g
 
 #扩容 VG
[root@localhost ~]$ vgextend vg1 /dev/sdbd
  Volume group "vg1" successfully extended

#再次查看 VG,查看是否扩容
[root@localhost ~]$ vgs
  VG  #PV #LV #SN Attr   VSize VFree
  vg1   2   2   0 wz--n- 3.99g <3.70g
  vg2   1   0   0 wz--n- 1.98g  1.98g
[root@localhost ~]$ pvs
  PV         VG  Fmt  Attr PSize  PFree
  /dev/sdb1  vg1 lvm2 a--  <2.00g  1.70g
  /dev/sdb2  vg2 lvm2 a--   1.98g  1.98g
  /dev/sdb3  vg1 lvm2 a--  <2.00g <2.00g
  /dev/sdb4      lvm2 ---   2.00g  2.00g

2.6 缩小逻辑卷

相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,其丢失数据的风险更大。所以在生产环境中执行相应操作时,一定要提前备份好数据。另外 Linux 系统规定,在对 LVM 逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了保证我们的数据安全)。在执行缩容操作前记得先把文件系统卸载掉。

[root@localhost ~]$ umount /linuxprobe
  1. 检查文件系统的完整性
#用于检查使用 Linux ext2 档案系统的 partition 是否正常工作
[root@localhost ~]$ 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/74000 files (0.0% non-contiguous), 15507/299008 blocks
  1. 把逻辑卷 vo 的容量减小到 120MB。
#resize2fs 命令是用来增大或者收缩未加载的“ext2/ext3/ext4”文件系统的大小
[root@localhost ~]$ resize2fs /dev/storage/vo 120M 
resize2fs 1.42.9 (28-Dec-2013) 
Resizing the filesystem on /dev/storage/vo to 122880 (1k) blocks. 
The filesystem on /dev/storage/vo is now 122880 blocks long. 

[root@localhost ~]$ lvreduce -L 120M /dev/storage/vo 
 WARNING: Reducing active logical volume to 120.00 MiB 
 THIS MAY DESTROY YOUR DATA (filesystem etc.) 
Do you really want to reduce vo? [y/n]: y 
 Reducing logical volume vo to 120.00 MiB 
 Logical volume vo successfully resized
  1. 重新挂载文件系统并查看系统状态
[root@localhost ~]$ mount -a 
[root@localhost ~]$ df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.4G   16G   9% /
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/storage-vo   113M  1.6M  103M   2% /linuxprobe

2.7 删除逻辑卷

当生产环境中想要重新部署 LVM 或者不再需要使用 LVM 时,则需要执行 LVM 的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。

  1. 取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数
[root@localhost ~]$ umount /linuxprobe 
[root@localhost ~]$ vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Dec  7 06:03:57 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=6f6757b6-9b67-44a2-a816-0785cdb35858 /boot                   xfs     defaults        0 0

  1. 删除逻辑卷设备,需要输入 y 来确认操作
[root@localhost ~]$ lvremove /dev/storage/vo 
Do you really want to remove active logical volume vo? [y/n]: y
 Logical volume "vo" successfully removed
  1. 删除卷组,此处只写卷组名称即可,不需要设备的绝对路径
[root@localhost ~]$ vgremove storage 
 Volume group "storage" successfully removed
  1. 删除物理卷设备
[root@localhost ~]$ pvremove /dev/sdb /dev/sdc 
 Labels on physical volume "/dev/sdb" successfully wiped 
 Labels on physical volume "/dev/sdc" successfully wiped

新添加一块硬盘制作LVM卷并进行分区挂载

https://www.cnblogs.com/hellojesson/p/4582908.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值