LVM逻辑卷创建管理——我是新手

时间:2024-04-07 19:35:09

LVM逻辑卷创建管理

我还是扩展一下这个LVM逻辑卷这一方面的知识面,LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现。

LVM逻辑卷创建管理——我是新手

由这张图可以看出,其实PV就是我们一开始主机的磁盘分区,将其System ID 改为8e就可转化为PV,而多个PV可以组成一个VG,这是我们可以将这个VG暂时的看成一块“虚拟磁盘”,而这块磁盘是由多个PE组成的,这里可以将PE认为是block(以为PE是LVM的最小存储块),而VG又可以划分为多个LV,LV相当于是LVM的分区。

LVM(逻辑分区管理)中的几个概念:

PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。

VG(volume group):卷组建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。

LV(logical volume):逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。

PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。

LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

卷组描述区域:卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中逻辑卷、逻辑卷中物理区域的分配等所有信息,它是在使用pvcreate建立物理卷时建立的。

下面我们来对整个LVM的工作原理进行一个总结:

(1)物理磁盘被格式化为PV,空间被划分为一个个的PE

(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内

(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘

(4)LV直接可以格式化后挂载使用

(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

这些都是需要用到的命令

LVM逻辑卷创建管理——我是新手

我们用到的版本是CentOS 7

[[email protected] ~]# cat /etc/redhat-release         #查看系统版本

CentOS Linux release 7.2.1511 (Core)

[[email protected] ~]# uname -r                            #查看系统内核版本

3.10.0-327.el7.x86_64

[[email protected] ~]# uname -m                           #查看系统是否64位

x86_64

LVM逻辑卷创建管理——我是新手

首先我们还是做服务之前先把奇葩的防火墙给关掉,因为很多规则会撞到墙,注意是服务端和客户端都要做这个操作

[[email protected] ~]# iptables -F

[[email protected] ~]# iptables -X

[[email protected] ~]# iptables -Z

[[email protected] ~]# iptables -L   

[[email protected] ~]# setenforce 0

LVM逻辑卷创建管理——我是新手

[[email protected] ~]#vi /etc/sysconfig/selinux               #修改SELINUX

LVM逻辑卷创建管理——我是新手

首先我们先添加一块3块硬盘,为了方便区分我们把每一块硬盘的大小做了区分,大小分别为5G、6G和7G,硬盘的类型还是默认的SCSI版本。

LVM逻辑卷创建管理——我是新手

[[email protected] dev]# fdisk -l              #可以列出所有的分区,包括没有挂上的分区和usb设备,查看硬盘及分区信息;

LVM逻辑卷创建管理——我是新手

我们可以看见下面就是挂载上的硬盘

LVM逻辑卷创建管理——我是新手

由于硬盘的主引导记录中仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计只能存储4个分区的数据。也就是说,一块物理硬盘只能划分为4个主分区磁盘。并且MBR最大仅支持2TB的硬盘,在现在这个连4T都不稀奇的时代,MBR出场的机会恐怕会越来越少。

sda和hda的区别:

sd代表的是SCSI,SATA接口硬盘

hd代表IDE接口的硬盘

sda和hda最后面的a都代表的是第一块硬盘

sda1和hda1则代表的是该硬盘的第一分区

 

[[email protected] dev]# fdisk /dev/sdb                        #对sdb硬盘进行分区

LVM逻辑卷创建管理——我是新手

Command (m for help): m                               #就会输出帮助;

LVM逻辑卷创建管理——我是新手

a     切换可引导标志(活动分区/引导分区之间切换)

b     编辑BSD磁盘标签

c     设置DOS操作系统兼容标记(兼容/不兼容之间切换)

d     删除一个分区

g     创建一个新的空GPT分区表

G     创建一个ILIX(SGI)分区表

l      列出已知分区类型

m    显示帮助信息

n     添加新分区

o     创建一个新的空DOS分区表

p     显示磁盘当前的分区表

q     退出不保存更改

s      创建一个新的空白的Sun磁盘标签

t      更改分区的系统ID

u     显示/输入单元

v     验证磁盘分区表

w    将分区表写入磁盘并退出(保存并退出)

x     额外功能(仅专家)

Command (m for help): n                  #添加新分区;

Select (default p): p                           #添加一个主分区

分区号(1-4,默认1):                          #默认的分区账号

第一扇区(2044-1048 575,默认2048):      #默认的话就自动分一个号码

使用默认值2048

LVM逻辑卷创建管理——我是新手

最后扇区,+扇区或+大小{k,m,g}(20481085599,默认10485759): #像这里我打错了一个符号发现删除不了我们可以按住Ctrl+Backapace就可以了

LVM逻辑卷创建管理——我是新手

Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +2G        #+2G

我们再依照上面的步骤再加一个新的分区为1G。

LVM逻辑卷创建管理——我是新手

Command (m for help): p                                #打印分区表

LVM逻辑卷创建管理——我是新手

Command (m for help):  w                       #写入磁盘,保存并退出,否则之前的操作都无效。

分区表已经更改了!

调用IOCLT()来重新读取分区表。

同步磁盘。

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# pvcreate /dev/sdb1 /dev/sdb2          #将新创建的两个分区/dev/sdb1 /dev/sdb2转化成物理卷PV

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# vgcreate  vg01 /dev/sdb1 /dev/sdb2      #创建卷组 vg01 ,这个是个名字可以更改,并将刚才创建好的两个物理卷加入该卷组.

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# vgdisplay             #查看物理卷

LVM逻辑卷创建管理——我是新手

以下就是显示的Vg的名字vg01、大小为2.99G

以及默认PE大小为4MB,PE是卷组的最小存储单元

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# lvcreate -n lv01 -l 100 vg01       #创建一个名字为Lv01大小为100的逻辑卷

逻辑卷“LV01”创建。

lvcreate主要参数:

-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节

-l 指定逻辑卷的大小(LE数)

-n 后面跟逻辑卷名

-s 创建快照

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# lvdisplay       #显示逻辑卷属性显示LVM逻辑卷空间大小、读写状态和快照信息等属性。

LVM逻辑卷创建管理——我是新手

下面显示就是LV的详细参数

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# pvscan                        #扫描当前系统中所有硬盘的物理卷

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# mkfs -t ext4 /dev/vg01/lv01              #使用mkfs在逻辑卷LV01上创建ext4文件系统.

MKE2FS 1.42.9(23-DEC-2013)

文件系统标签=

操作系统类型:Linux

块大小=1024(log=0)

片段大小=1024(log=0)

步长=0个块,条带宽度=0个块

102400个节点,409600个块

为超级用户保留的20480个块(5%)

第一数据块=1

最大文件系统块=34078720

50方块群

每组8192个块,每组8192个片段

每组2048个节点

存储在块上的超级块备份:

8193, 24577, 40961、57345, 73729, 204801、221185, 401409

分配组表:完成

写入索引表:完成

创建日志(8192个块):完成

编写超级块和文件系统会计信息:完成

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# df -Th           #查看挂载

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# mkdir /mnt/lv01                        #创建一个挂载的目录随便命名LV01

[[email protected] ~]# mount /dev/vg01/lv01 /mnt/lv01/            #挂载到新创建的目录下面

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# vim /etc/fstab

LVM逻辑卷创建管理——我是新手

为了查看/mnt/LV01是否设置正确,可以先卸载逻辑卷LV01,然后使用mount –a 使内核重新读取/mnt/LV01,看是否能够自动挂载.

LVM逻辑卷创建管理——我是新手

当逻辑卷不够用了,如何扩展。

[[email protected] ~]# fdisk /dev/sdc              #为了实验接着我们又在另外一块硬盘上面下手LVM逻辑卷创建管理——我是新手

添加分区步骤同上,为了方便我分别创建了两个1G的分区,看一下图片

LVM逻辑卷创建管理——我是新手

 [[email protected] ~]# pvcreate /dev/sdc{1,2}              #创建一个pv

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# lsblk -f                 #列出所有块设备信息

LVM逻辑卷创建管理——我是新手

通过partx工具让内核重读磁盘分区表,partx命令告用来诉内核当前磁盘的分区情况

选项

-a        增加制定的分区或读磁盘新增的分区

-d        删除制定或所有的分区

-l        列出分区

--type    指定分区类型。dos,bsd,solaris,unix,或者gpt

--nr      M-N 指定分区范围

[[email protected] ~]# partx -s /dev/sdc         #显示磁盘分区信息

LVM逻辑卷创建管理——我是新手

partprobe: 用于重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。

-d 不更新内核

-s 显示磁盘分区汇总信息

-h 显示帮助信息

-v 显示版本信息

[[email protected] ~]# vgcreate -s 8M kk /dev/sdc1 /dev/sdc2           #创建名为kk卷组上的物理卷的8MPE大小

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# vgdisplay             查看一下

LVM逻辑卷创建管理——我是新手

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# lvcreate  -L 1.98G kk /dev/sdc1 /dev/sdc2     #因为上面vg大小为1.98G所以只能创建这么大 的LV卷

LVM逻辑卷创建管理——我是新手

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# mkfs -t ext4 /dev/kk/lvol0   #指定格式

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# mkdir /mnt/lv02          #创建一个挂载目录

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# mount /dev/kk/lvol0 /mnt/lv02         #挂载目录

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# df -Th           #看一下挂载

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# lvreduce -L -400M /dev/kk/lvol0      #缩小逻辑卷400M

//警告:将活动逻辑卷减少到1.59 GIB

//这可能破坏您的数据(文件系统等)。

//你真的想减少LVOL0吗?[Y/N]:Y

//逻辑卷KK/LVOL0的大小从1.98 GIB(254个扩展)变为1.59个GIB(204个扩展)。

//逻辑卷LVOL0成功调整大小。

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# lvdisplay              #查看一下逻辑卷发现已经变成了1.59GiB了

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# mount /dev/mapper/kk-lvol0  /mnt/lv02       #我挂载一下发现除了问题

安装:错误的FS类型,坏的选项,坏的超级块/DEV/MAPPER/KK-LVRO0,

缺少代码页或辅助程序或其他错误

在某些情况下,在SysLog-Type中找到有用的信息。

尾巴等。

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# resize2fs -f /dev/mapper/kk-lvol0 1500M        #这种情况我又重新缩小了一下逻辑卷

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# mount /dev/mapper/kk-lvol0  /mnt/lv02              #重新挂载一下

LVM逻辑卷创建管理——我是新手

[[email protected] ~]# df -h                           #看一下发现已经挂载上了

LVM逻辑卷创建管理——我是新手

大功告成!

总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。