每天一个新知识之Linux的LVM逻辑卷管理

一、什么是LVM逻辑卷

1、什么是逻辑卷

许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。

LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。注意/boot分区不能基于LVM创建,必须独立出来。

2、关于逻辑卷的几个概念

  • PE (Physical Extend)物理拓展

PE是用来保存数据的最小单元,数据实际上都是写入PE,PE的大小是可以配置的,默认是4MB。

  • PV (Physical Volume)物理卷

PV是物理硬盘或物理分区。

  • VG (Volume Group)卷组

VG是卷组,有多个物理卷组成,这些物理卷可以是同一个硬盘的不同分区也可以是不同硬盘上的不同分区,可以理解为一个逻辑分区。

  • LV (Logical Volume)逻辑卷

卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个分区我们称为逻辑卷。逻辑卷是可以格式化和读写的。

在这里插入图片描述

3、如何建立LVM

  • 对物理硬盘进行分区(也可以是整块物理硬盘)

  • 建立物理卷(PV)

  • 把物理卷整合为卷组(VG)

  • 把卷组划分为逻辑卷(LV)

4、相关命令

  • pvcreate

    pvcreate用于建立物理卷,命令格式为:

    pvcreate [设备文件名称]
    
  • pvscan

    pvscan用于查看系统中是否有物理卷。

  • pvdisplay

    pvdisplay用于查看物理卷详细状态。

  • pvremove

    pvremove用于删除物理卷,命令格式为:

    pvremove [物理卷名称]
    
  • vgcreate

    vgcreate用于创建物理卷组,命令格式为:

    vgcreate [选项] [卷组名] [物理卷名]
    
    常用选项说明
    -s用于指定PE大小
  • vgscan

    vgscan用于查看系统中是否有卷组。

  • vgdisplay

    vgdisplay用于查看卷组的详细状态

  • vgextend

    vgextend用于扩展卷组容量,命令格式为:

    vgextend [卷组名] [物理卷名]
    
  • vgreduce

    vgreduce用于缩减卷组容量,命令格式为:

    vgreduce [卷组名] [物理卷名]
    
  • vgremove

    vgremove 用于删除卷组,命令格式为:

    vgremove [卷组名]
    
  • lvcreate

    lvcreate用于创建逻辑卷,命令格式为:

    lvcreate [选项] [-n 逻辑卷名] [卷组名]
    
    常用选项说明
    -n <逻辑卷名>指定逻辑卷名
    -l <个数>按照PE个数指定逻辑卷大小,但是需要进行容量换算
    -L <容量>指定逻辑卷大小,单位MB、GB、TB等
  • lvscan

    lvscan用于查看系统中是否有逻辑卷。

  • lvdisplay

    lvdisplay用于查看逻辑卷的详细状态。

  • lvresize

    lvresize用于调整逻辑卷大小,命令格式为:

    lvresize [选项] [逻辑卷设备文件名] #选项与lvcreate类似,使用+代表增加空间,使用-代表减少空间,直接指定数值代表设定逻辑卷大小为指定的数值
    
  • resize2fs

    resize2fs用于调整分区大小,命令格式为:

    resize2fs [选项] [设备文件名] [新大小]	#常用选项为-f,强制调整
    
  • lvremove

    lvremove用于删除逻辑卷,执行删除操作前请现将逻辑卷卸载。

二、创建逻辑卷ulv

1、对物理硬盘进行分区

操作之前已经增加了一块20G的硬盘,并使用fdisk对硬盘分了四个分区,分别为sdb1,sdb2,sdb3,sdb4。

[root@localhost ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ef1e2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         281     2048000   83  Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3             281         412     1048576   82  Linux swap / Solaris
Partition 3 does not end on cylinder boundary.
/dev/sda4             412        2611    17669120    5  Extended
/dev/sda5             412        2611    17668096   83  Linux

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5049f506

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         600     4819468+  83  Linux
/dev/sdb2             601        1200     4819500   83  Linux
/dev/sdb3            1201        1800     4819500   83  Linux
/dev/sdb4            1801        2610     6506325   83  Linux

2、建立物理卷

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created
  Physical volume "/dev/sdb4" successfully created
  [root@localhost ~]# pvscan 					#查看系统中的物理卷
  PV /dev/sdb1         lvm2 [4.60 GiB]
  PV /dev/sdb2         lvm2 [4.60 GiB]
  PV /dev/sdb3         lvm2 [4.60 GiB]
  PV /dev/sdb4         lvm2 [6.20 GiB]
  Total: 4 [19.99 GiB] / in use: 0 [0   ] / in no VG: 4 [19.99 GiB]
[root@localhost ~]# pvdisplay 					#查看物理卷详细状态
  "/dev/sdb1" is a new physical volume of "4.60 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               4.60 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               B4cReu-dIAR-miFw-n3Rl-FNFg-Zlfa-MAVaXO
   
  "/dev/sdb2" is a new physical volume of "4.60 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               4.60 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               2N237g-z8B3-oN3T-9W11-5Y4E-Q3XB-KHXSso
   
  "/dev/sdb3" is a new physical volume of "4.60 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               4.60 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               cyS3GB-FhsD-ca5z-pz9q-hFV7-KT8V-iMMB3I
   
  "/dev/sdb4" is a new physical volume of "6.20 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb4
  VG Name               
  PV Size               6.20 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               YBsq9M-HMP4-V170-7RHs-0yfH-YwE0-JFBg4k


#如需删除物理卷需要使用pvremove命令
#例如,删除/dev/sdb4
#pvremove /dev/sdb4

3、建立卷组

[root@localhost ~]# vgcreate -s 8MB uvg /dev/sdb1 /dev/sdb2 /dev/sdb3 
  Volume group "uvg" successfully created
[root@localhost ~]# vgscan 							#查看系统中的卷组
  Reading all physical volumes.  This may take a while...
  Found volume group "uvg" using metadata type lvm2
[root@localhost ~]# vgdisplay 						#查看卷组详细状态
  --- Volume group ---
  VG Name               uvg
  System ID             
  Format                lvm2
  Metadata Areas        3
  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                3
  Act PV                3
  VG Size               13.78 GiB
  PE Size               8.00 MiB
  Total PE              1764
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1764 / 13.78 GiB
  VG UUID               9WTfdw-7KIu-cABA-iQsq-QPc1-s1e0-sn91Iv
[root@localhost ~]# vgextend uvg /dev/sdb4 				#扩展卷组容量
  Volume group "uvg" successfully extended
[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               uvg
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               19.98 GiB
  PE Size               8.00 MiB
  Total PE              2558
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2558 / 19.98 GiB
  VG UUID               9WTfdw-7KIu-cABA-iQsq-QPc1-s1e0-sn91Iv
 
 #缩减卷组容量
 #vgreduce uvg /dev/sdb4
 #删除卷组
 #vgremove uvg
 

4、建立逻辑卷

[root@localhost ~]# lvcreate -L 5G -n ulv uvg			#再卷组uvg中新建逻辑卷ulv大小5G
  Logical volume "ulv" created.
[root@localhost ~]# mkfs
mkfs          mkfs.cramfs   mkfs.ext2     mkfs.ext3     mkfs.ext4     mkfs.ext4dev  mkfs.msdos    mkfs.vfat        
[root@localhost ~]# mkfs -t ext4 /dev/uvg/ulv 			#格式化逻辑卷ulv
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 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

正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# mkdir /disk_lv						#创建逻辑卷挂载点/disk_lv
[root@localhost ~]# mount /dev/uvg/ulv /disk_lv/		#挂在逻辑卷ulv到/disk_lv
[root@localhost ~]# mount
/dev/sda5 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda2 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/uvg-ulv on /disk_lv type ext4 (rw)			#挂在成功

[root@localhost ~]# lvscan 								#查看系统中的逻辑卷
  ACTIVE            '/dev/uvg/ulv' [5.00 GiB] inherit
[root@localhost ~]# lvdisplay 							#查看逻辑卷详细状态
  --- Logical volume ---
  LV Path                /dev/uvg/ulv
  LV Name                ulv
  VG Name                uvg
  LV UUID                F18DlR-zdID-X2Oj-DWs0-KT4c-kfvO-OuTcoX
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-06-17 17:53:30 +0800
  LV Status              available
  # open                 1
  LV Size                5.00 GiB
  Current LE             640
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

#在/disk_lv中建立测试文件testfile在对逻辑卷ulv进行扩容验证文件是否会丢失
[root@localhost ~]# dd if=/dev/zero of=/disk_lv/testfile bs=1M count=10
记录了10+0 的读入
记录了10+0 的写出
10485760字节(10 MB)已复制,0.0181527 秒,578 MB/秒
[root@localhost ~]# ls /disk_lv/
lost+found  testfile
[root@localhost ~]# ls /disk_lv/
lost+found  testfile
[root@localhost ~]# 
[root@localhost ~]# lvre
lvreduce  lvremove  lvrename  lvresize  
[root@localhost ~]# lvre
lvreduce  lvremove  lvrename  lvresize  
[root@localhost ~]# lvresize -L 10G /dev/uvg/ulv 		#改变逻辑卷大小为10G
  Size of logical volume uvg/ulv changed from 5.00 GiB (640 extents) to 10.00 GiB (1280 extents).
  Logical volume ulv successfully resized
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/uvg/ulv
  LV Name                ulv
  VG Name                uvg
  LV UUID                F18DlR-zdID-X2Oj-DWs0-KT4c-kfvO-OuTcoX
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-06-17 17:53:30 +0800
  LV Status              available
  # open                 1
  LV Size                10.00 GiB
  Current LE             1280
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
[root@localhost ~]# df -h /disk_lv/
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/uvg-ulv  4.8G   20M  4.6G   1% /disk_lv

#虽然逻辑卷大小已经改变了,但是分区大小未改变,需要在调整下分区大小
[root@localhost ~]# resize2fs /dev/uvg/ulv 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/uvg/ulv is mounted on /disk_lv; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/uvg/ulv to 2621440 (4k) blocks.
The filesystem on /dev/uvg/ulv is now 2621440 blocks long.

[root@localhost ~]# df -h /disk_lv/
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/uvg-ulv  9.8G   22M  9.2G   1% /disk_lv

#验证下之前创建的文件
[root@localhost ~]# ls /disk_lv/
lost+found  testfile

#删除逻辑卷
#umount /dev/uvg/ulv 						#删除前需要先卸载
#lvremo	/dev/uvg/ulv						#删除逻辑卷
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值