centos——基础——lvm(创建、扩容)、交换分区创建

一、LVM简介(LVM是 Logical Volume Manager(逻辑卷管理)的简写)

可以让分区变得弹性,可以随时随地的扩大和缩小分区大小,前提是该分区是LVM格式的。lvm需要使用的软件包为lvm2,一般在CentOS发行版中都已经预安装了。

PV(Physical Volume)即物理卷

硬盘分区后(还未格式化为文件系统)使用pvcreate命令可以将分区创建为pv,要求分区的system ID为8e,即为LVM格式的系统标识符。

VG(Volume Group)即卷组

将多个PV组合起来,使用vgcreate命令创建成卷组,这样卷组包含了多个PV就比较大了,相当于重新整合了多个分区后得到的磁盘。虽然VG是整合多个PV的,但是创建VG时会将VG所有的空间根据指定的PE大小划分为多个PE,在LVM模式下的存储都以PE为单元,类似于文件系统的Block。

PE(Physical Extend)

PE是VG中的存储单元。实际存储的数据都是存储在这里面的。

LV(Logical Volume)

VG相当于整合过的硬盘,那么LV就相当于分区,只不过该分区是通过VG来划分的。VG中有很多PE单元,可以指定将多少个PE划分给一个LV,也可以直接指定大小(如多少兆)来划分。划分为LV之后就相当于划分了分区,只需再对LV进行格式化即可变成普通的文件系统。

通俗地讲,非LVM管理的分区步骤是将硬盘分区,然后将分区格式化为文件系统。而使用LVM,则是在硬盘分区为特定的LVM标识符的分区后将其转变为LVM可管理的PV,其实PV仍然类似于分区,然后将几个PV整合为类似于磁盘的VG,最后划分VG为LV,此时LV就成了LVM可管理的分区,只需再对其格式化即可成为文件系统。

LE(logical extent)

PE是物理存储单元,而LE则是逻辑存储单元,也即为lv中的逻辑存储单元,和pe的大小是一样的。从vg中划分lv,实际上是从vg中划分vg中的pe,只不过划分lv后它不再称为pe,而是成为le。

LVM之所以能够伸缩容量,其实现的方法就是将LV里空闲的PE移出,或向LV中添加空闲的PE。

LVM的写入机制

LV是从VG中划分出来的,LV中的PE很可能来自于多个PV。在向LV存储数据时,有多种存储机制,其中两种是:

  • 线性模式(linear):先写完来自于同一个PV的PE,再写来自于下一个PV的PE。
  • 条带模式(striped):一份数据拆分成多份,分别写入该LV对应的每个PV中,所以读写性能较好,类似于RAID 0。
    尽管striped读写性能较好也不建议使用该模式,因为lvm的着重点在于弹性容量扩展而非性能,要实现性能应该使用RAID来实现,而且使用striped模式时要进行容量的扩展和收缩将比较麻烦。默认的是使用线性模式。

LVM实现图解

在这里插入图片描述

LVM常用命令汇总

动作PV阶段VG阶段LV阶段
查找(scan)pvscanvgscanlvscan
新建(create)pvcreatevgcreatelvcreate
显示(display)pvdisplayvgdisplaylvdisplay
增加(extend)vgextendlvextend(lvresize)
减少(reduce)vgreducelvreduce(lvresize)
删除(remove)pvremovevgremovelvremove
改变容量(resize)lvresize
改变属性(attribute)pvchangevgchangelvchange

二、LVM实操

1、物理磁盘

1.1 物理磁盘插入确认
[root@localhost ~]# fdisk -l
……
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors			# 新加磁盘
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
……
1.2 对物理磁盘进行分区
[root@localhost ~]# fdisk /dev/sdb 			# 对/dev/sdb进行分区
Command (m for help): p			# 打印分区表
   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n			# 添加一个新分区
Select (default p): 			# 默认回车,创建主分区
Partition number (1-4, default 1): 			# 分区编号
First sector (2048-41943039, default 2048): 			# 定义起始扇区,直接回车即可
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G			# 创建一个5G的分区
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): p			# 打印分区表
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux					# 查看新建的 5G 的分区

Command (m for help): w			# 保存并退出



[root@localhost ~]# partprobe /dev/vdb 				# 刷新分区表
1.3 查看磁盘分区信息
[root@localhost ~]# fdisk -l /dev/sdb			# 跟上面的分区编辑中的 p 作用一样

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xbb5d8a79

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux				# 查看新建的 5G 的分区
You have new mail in /var/spool/mail/root

2、物理卷 pv(跳过此步骤也可行)

2.3 创建物理卷
[root@localhost ~]# pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created.
2.4 可以通过pvs和pvdisplay查看物理卷相关信息(不加参,查看所有)
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
  /dev/sdb1         lvm2 ---    5.00g 5.00g


[root@localhost ~]# pvdisplay 
……
  "/dev/sdb1" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               9CYPtz-2KS6-I1jb-fRbO-y61A-dwHZ-VPyMpA

3、卷组 vg

物理卷 pv 创建好之后,才可以创建卷组

3.1 创建卷组
[root@localhost ~]# vgcreate myvg /dev/sdb1 			# 创建名字是myvg的卷组,磁盘空间来自sdb1
  Volume group "myvg" successfully created
3.2 查看卷组
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
……
  myvg     1   0   0 wz--n-  <5.00g <5.00g


[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               <5.00 GiB
  PE Size               4.00 MiB
  Total PE              1279
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1279 / <5.00 GiB
  VG UUID               QzgxDN-RxIP-xtez-mH4f-xfe6-H1Kr-gHSrso
……

4、逻辑卷 lv

卷组 vg 创建好之后,才可以创建逻辑卷 LV

4.1 创建逻辑卷
[root@localhost ~]# lvcreate -L 4.9G -n mylv myvg 		# 创建逻辑卷,名为mylv,大小4.9G,空间来自myvg这个卷组
  Rounding up size to full physical extent 4.90 GiB
4.2 查看逻辑卷
[root@localhost ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
……                                                
  mylv myvg   -wi-a-----   4.90g                                                    


[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                93TIxH-XRek-4M5U-lyNs-QnUy-ZuJw-dnS2QK
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2022-02-23 00:46:27 +0800
  LV Status              available
  # open                 0
  LV Size                4.90 GiB
  Current LE             1255
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
……

5、格式化逻辑卷并挂载

[root@localhost ~]# mkfs.xfs /dev/myvg/mylv 			# 格式化逻辑卷为xfs格式
meta-data=/dev/myvg/mylv         isize=512    agcount=4, agsize=321280 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1285120, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


[root@localhost ~]# blkid /dev/myvg/mylv			# TYPE="xfs"既格式化成功
/dev/myvg/mylv: UUID="df286dba-435d-495e-9708-0e66e2414efa" TYPE="xfs"
[root@localhost ~]# mkdir /test
[root@localhost ~]# mount /dev/myvg/mylv /test/			# 挂载逻辑卷mylv到  /test
[root@localhost ~]# vim /etc/fstab				# 设置开机挂载
/dev/myvg/mylv /test xfs defaults 0 0

[root@localhost ~]# mount -a			# 启用&测试开机挂载

6、扩展逻辑卷

[root@localhost ~]# lvscan				# 找出要扩展的逻辑卷
  ACTIVE            '/dev/myvg/mylv' [4.90 GiB] inherit
……
[root@localhost ~]# blkid /dev/myvg/mylv			# 原lvm卷 TYPE="xfs"
/dev/myvg/mylv: UUID="df286dba-435d-495e-9708-0e66e2414efa" TYPE="xfs"



[root@localhost ~]# fdisk /dev/sdb 				# 创建物理卷 pv
Command (m for help): n
Select (default p): 
Partition number (2-4, default 2): 
First sector (10487808-41943039, default 10487808): 
Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039): +10G
Command (m for help): p  
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    31459327    10485760   83  Linux

Command (m for help): w


[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# vgextend myvg /dev/sdb2				# 扩展卷组 vg
  Physical volume "/dev/sdb2" successfully created.

[root@localhost ~]# lsblk
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
│ └─myvg-mylv   253:2    0  4.9G  0 lvm  /test
└─sdb2            8:18   0   10G  0 part


[root@localhost ~]# lvextend -L 9.9G /dev/myvg/mylv				# 扩展逻辑卷 lvm 
  Rounding size to boundary between physical extents: 9.90 GiB.
  New size given (2535 extents) not larger than existing size (2560 extents)

xfs_growfs  /dev/myvg/mylv    # 刷新,适用于xfs文件系统
resize2fs   /dev/myvg/mylv    # 刷新,适用于ext文件系统

7、添加交换分区

为你的系统额外添加一个 512MiB 的交换分区,此交换分区应在系统启动时自动挂载,不要删除或以任何方式改动系统上原有的交换分区。

[root@localhost ~]# fdisk /dev/sdb 	  # 修改磁盘 vdb
Command (m for help): n 		  # 添加新分区
Partition number (3,4, default 3): 		# 直接回车(默认)
First sector (31459328-41943039, default 31459328): 		# 直接回车(默认)
Last sector, +sectors or +size{K,M,G} (31459328-41943039, default 41943039): +512M
Command (m for help): w 		  # 保存分区表,并退出

[root@localhost ~]# partprobe /dev/sdb 	 # 刷新分区表
[root@localhost ~]# mkswap /dev/sdb3 	 # 格式化自建分区 sdb3
[root@localhost ~]# vim /etc/fstab
/dev/sdb3 swap swap defaults 0 0

[root@localhost ~]# swapon -a 	# 启用 fstab 中的交换设备
[root@localhost ~]# swapon -s 	# 查看交换分区信息
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	2097148	1239352	-2
/dev/sdb3                              	partition	524284	0	-3

8、最终结果

[root@localhost ~]# lsblk
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
│ └─myvg-mylv   253:2    0   10G  0 lvm  /test
├─sdb2            8:18   0   10G  0 part 
│ └─myvg-mylv   253:2    0   10G  0 lvm  /test
└─sdb3            8:19   0  512M  0 part [SWAP]
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值