linux逻辑卷管理器pv pe vg lv

1、pv:物理卷。

实际的分区要调整系统标识符(system ID)成为8e(LVM的标示),然后在经过pvcreate的命令将它转成lvm最底层的物理卷(pv),之后才能将这些pv加以利用,调整system ID的方法就是fdisk。

2、vg,卷用户组。

所谓的lvm大磁盘就是将许多pv整合成一个vg,所以vg就是lvm组合起来的大磁盘。那么这个大磁盘最大可以达到多少容量呢?与下面说的pe有关。因为每个vg最多仅能包含65534个pe而已。如果使用lvm默认的参数,则一个vg最大可以达到256G的容量。

3、pe、物理扩展块。

lvm默认使用4MB的pe块。而lvm的vg最多能含有65534个pe,因此默认的lvmvg会有4M*65534/1024=256G.它是整个lvm最小的存储块,也就是说,其实我们的文件数据都是由写入pe来处理的。简单的说,这个pe有点像文件系统里面的block大小。

4、lv、逻辑卷。

最终的vg还会被切割成lv,这个lv就是最后可以被格式化使用的类似分区。那么lv是否可以随意指定大小呢?当然不行!既然pe是整个lvm的最小存储单位,那么lv的大小就与pe有关。也就是pe大小的整数倍。

5、LVM组件实现流程图。


数据写入到lv的时候,有两种模式,线性模式和交错模式。

线性模式:

假如我有/dev/sda1,/dev/sdb2这两个分区加入到vg当中,并且整个vg只有一个lv时,那么所谓的线性模式就是当/dev/sda1容量用完后,/dev/sdb2硬盘的容量才会被用到。这是默认的并且是我们建议的模式。

交错模式:

跟线性模式相反,一条数据拆成两部分,分别写入/dev/sda1和/dev/sdb2的意思。有点像raid0.如此一来,一份数据用两块盘来写入,理论上,读写性能会比较好。

LVM最主要的用处是在实现一个可以弹性调整容量的文件系统上,而不是在新建一个性能为主的磁盘上所以,我们应该利用的是LVM可以弹性管理整个分区大小的用途。而如果想提高性能,直接raid即可,不必用lvm。

6、LVM实战

就用目前我这边有的一块盘5G的盘,之前做raid实验的时候,也是用的这块盘/dev/sdb

a、先分出4个分区,每个分区的容量为1G左右,且system ID需要为8e。

b、全部的分区整合为一个VG,VG名称设置为vfoxvg;且PE的大小为16M;

c、全部的vg容量都给lv,lv的名称为vfoxlv;

d、最终将这个lv格式化为ext3的文件系统,且挂载在/mnt/lvm中。

step1:

分区并改system ID:

分区并且更改分区的system id为8e
fdisk /dev/sdb
Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 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: 0x0a31f03b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+   5  Extended
/dev/sdb5               1         132     1060227   8e  Linux LVM
/dev/sdb6             133         264     1060258+  8e  Linux LVM
/dev/sdb7             265         396     1060258+  8e  Linux LVM
/dev/sdb8             397         528     1060258+  83  Linux

Command (m for help): t
Partition number (1-8): 8
Hex code (type L to list codes): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1
Hex code (type L to list codes): 8e
Changed system type of partition 8 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 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: 0x0a31f03b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+   5  Extended
/dev/sdb5               1         132     1060227   8e  Linux LVM
/dev/sdb6             133         264     1060258+  8e  Linux LVM
/dev/sdb7             265         396     1060258+  8e  Linux LVM
/dev/sdb8             397         528     1060258+  8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

partprobe

让内核重新加载磁盘分区。如果busy,直接reboot。

上面的sdb[5-8]就是我要用到的4块盘。

step2:

pv阶段,命令说明:

pvcreate:将物理分区新建成为pv;

pvscan:查询目前系统中任何具有pv的 磁盘;

pvdisplay:显示出目前系统上pv的状态;

pvremove:将pv属性删除,让该分区不具有pv属性;

查询系统中现有pv
[root@srcxtts ~]# pvscan
  PV /dev/sda2   VG vg_srcxtts   lvm2 [24.51 GiB / 0    free]
  Total: 1 [24.51 GiB] / in use: 1 [24.51 GiB] / in no VG: 0 [0   ]

[root@srcxtts ~]# pvcreate /dev/sdb{5,6,7,8}
  Can't open /dev/sdb5 exclusively.  Mounted filesystem?
  Physical volume "/dev/sdb6" successfully created
  Physical volume "/dev/sdb7" successfully created
  Physical volume "/dev/sdb8" successfully created

发现sdb5报错了。
[root@srcxtts ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md127 : inactive sdb5[0]
      1027585 blocks super 1.2
       
unused devices: <none>
发现mdadm里面有sdb5的信息,我这个盘之前通过mdadm做过raid5,重新划分了磁盘,但是mdadm已经关闭并且正常卸载md0,不知道为啥还是出现了这个问题?

先不管,停掉它。

[root@srcxtts ~]# mdadm --stop /dev/md127 
mdadm: stopped /dev/md127
[root@srcxtts ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
unused devices: <none>
现在发现没有了。

重建sdb5为pv

[root@srcxtts ~]# pvcreate /dev/sdb5
WARNING: software RAID md superblock detected on /dev/sdb5. Wipe it? [y/n] y
  Wiping software RAID md superblock on /dev/sdb5.
  Physical volume "/dev/sdb5" successfully created
[root@srcxtts ~]#

pvscan
[root@srcxtts ~]# pvscan
  PV /dev/sda2   VG vg_srcxtts      lvm2 [24.51 GiB / 0    free]
  PV /dev/sdb5                      lvm2 [1.01 GiB]
  PV /dev/sdb6                      lvm2 [1.01 GiB]
  PV /dev/sdb7                      lvm2 [1.01 GiB]
  PV /dev/sdb8                      lvm2 [1.01 GiB]
  Total: 5 [28.55 GiB] / in use: 1 [24.51 GiB] / in no VG: 4 [4.04 GiB]
[root@srcxtts ~]# 
发现一切正常。
pvdisplay
[root@srcxtts ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_srcxtts
  PV Size               24.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              6274
  Free PE               0
  Allocated PE          6274
  PV UUID               kSsqJo-EKgD-74zD-xuzJ-HVfO-TKdt-mduJO2
   
  "/dev/sdb5" is a new physical volume of "1.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb5
  VG Name               
  PV Size               1.01 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               KfVUlD-M3Ka-gOwn-gSbT-yx5e-fE1j-7YjTSR
   
  "/dev/sdb6" is a new physical volume of "1.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb6
  VG Name               
  PV Size               1.01 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               2sgPk8-OFn5-QhiQ-Oc5I-o0aw-mXaK-9f9Zds
   
  "/dev/sdb7" is a new physical volume of "1.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb7
  VG Name               
  PV Size               1.01 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               nbgBAM-nRLn-ws1W-5oA6-VfN3-HJYF-oEtPPe
   
  "/dev/sdb8" is a new physical volume of "1.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb8                       ==>实际的分区设备名称
  VG Name                                               ==>因为尚未分配vg,所以空白
  PV Size               1.01 GiB                        ==>pv容量说明
  Allocatable           NO                              ==>是否已经分配,结果NO
  PE Size               0                               ==>在此pv内的pe大小
  Total PE              0                               ==>共分出多少pe
  Free PE               0                               ==>未被lv用掉的pe
  Allocated PE          0                               ==>尚可分配出去的pe数量
  PV UUID               6w3VpI-MxqW-yEsC-36c3-qnBH-Qail-7KXt1b
   
[root@srcxtts ~]# 

因为pe是在新建vg时才能与的参数,所以在这里看到的pv里面的pe都是0.而且也没有多于的pe可供分配(allocatable).

vg阶段

命令说明:

vgcreate:就是主要新建vg的命令,它的参数较多下面介绍。

vgscan:查找系统上面目前是否有vg的存在。

vgdisplay:显示目前系统上面的vg状态。

vgextend:在vg内增加额外的pv;

vgreduce:在vg内删除pv;

vgchange:设置vg时是否启动(active);

vgremove:删除一个vg;

与pv不同,vg的名称是自己创建时候定义的,而pv就是用的设备文件名。

vgcreate [-s N[mgt]] VG名称 PV名称

参数:

-s:后面接pe的大小(size),单位可以是m、g、t(大小写均可)。

vgcreate -s 16M vfoxvg /dev/sdb{5,6,7,8} 
[root@srcxtts ~]# vgcreate -s 16M vfoxvg /dev/sdb{5,6,7,8} 
  Volume group "vfoxvg" successfully created
[root@srcxtts ~]# 
创建一个名为vfoxvg的vg,名称自已定。指定pe的大小是16M,并且由哪些pv组成,pv的名称是直接由设备文件名得来,创建pv的时候并未指定。

vgscan
[root@srcxtts ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vfoxvg" using metadata type lvm2
  Found volume group "vg_srcxtts" using metadata type lvm2
[root@srcxtts ~]# 

再重新查看下pv发现sdb[5-8]已经指定了vg名称了。
[root@srcxtts ~]# pvscan
  PV /dev/sdb5   VG vfoxvg       lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sdb6   VG vfoxvg       lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sdb7   VG vfoxvg       lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sdb8   VG vfoxvg       lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sda2   VG vg_srcxtts   lvm2 [24.51 GiB / 0    free]
  Total: 5 [28.51 GiB] / in use: 5 [28.51 GiB] / in no VG: 0 [0   ]
[root@srcxtts ~]# 
vgdisplay
[root@srcxtts ~]# vgdisplay
  --- Volume group ---
  VG Name               vfoxvg
  System ID             
  Format                lvm2
  Metadata Areas        4
  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                4
  Act PV                4
  VG Size               4.00 GiB
  PE Size               16.00 MiB
  Total PE              256
  Alloc PE / Size       0 / 0   
  Free  PE / Size       256 / 4.00 GiB
  VG UUID               HT3gmf-nsOg-xTX5-7plY-OubW-bKZx-Duc5Y8
   
  --- Volume group ---
  VG Name               vg_srcxtts
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               24.51 GiB
  PE Size               4.00 MiB
  Total PE              6274
  Alloc PE / Size       6274 / 24.51 GiB
  Free  PE / Size       0 / 0   
  VG UUID               fgnH6f-ZAJJ-9vde-RUTK-w131-pSSO-wmKu8q
   
[root@srcxtts ~]# 

pvdisplay
[root@srcxtts ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb5
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.38 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              64
  Free PE               64
  Allocated PE          0
  PV UUID               KfVUlD-M3Ka-gOwn-gSbT-yx5e-fE1j-7YjTSR
   
  --- Physical volume ---
  PV Name               /dev/sdb6
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.41 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              64
  Free PE               64
  Allocated PE          0
  PV UUID               2sgPk8-OFn5-QhiQ-Oc5I-o0aw-mXaK-9f9Zds
   
  --- Physical volume ---
  PV Name               /dev/sdb7
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.41 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              64
  Free PE               64
  Allocated PE          0
  PV UUID               nbgBAM-nRLn-ws1W-5oA6-VfN3-HJYF-oEtPPe
   
  --- Physical volume ---
  PV Name               /dev/sdb8
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.41 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              64
  Free PE               64
  Allocated PE          0
  PV UUID               6w3VpI-MxqW-yEsC-36c3-qnBH-Qail-7KXt1b
   
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_srcxtts
  PV Size               24.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              6274
  Free PE               0
  Allocated PE          6274
  PV UUID               kSsqJo-EKgD-74zD-xuzJ-HVfO-TKdt-mduJO2
   
[root@srcxtts ~]# 

扩展该vg的量

把剩余的磁盘在分一个/dev/sdb9出来。
对sdb9创建pv
pvcreate /dev/sdb9
[root@srcxtts ~]# pvcreate /dev/sdb9
  Physical volume "/dev/sdb9" successfully created
[root@srcxtts ~]# 
[root@srcxtts ~]# pvscan
  PV /dev/sdb5   VG vfoxvg          lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sdb6   VG vfoxvg          lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sdb7   VG vfoxvg          lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sdb8   VG vfoxvg          lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sda2   VG vg_srcxtts      lvm2 [24.51 GiB / 0    free]
  PV /dev/sdb9                      lvm2 [972.65 MiB]
  Total: 6 [29.46 GiB] / in use: 5 [28.51 GiB] / in no VG: 1 [972.65 MiB]
[root@srcxtts ~]#

把新pv加到vg里面去。
vgextend vfoxvg /dev/sdb9
[root@srcxtts ~]# vgextend vfoxvg /dev/sdb9
  Volume group "vfoxvg" successfully extended
[root@srcxtts ~]# 
查询vgdisplay
[root@srcxtts ~]# vgdisplay
  --- Volume group ---
  VG Name               vfoxvg
  System ID             
  Format                lvm2
  Metadata Areas        5
  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                5
  Act PV                5
  VG Size               4.94 GiB
  PE Size               16.00 MiB
  Total PE              316
  Alloc PE / Size       0 / 0   
  Free  PE / Size       316 / 4.94 GiB
  VG UUID               HT3gmf-nsOg-xTX5-7plY-OubW-bKZx-Duc5Y8

删除vg
[root@srcxtts ~]# vgremove vfoxvg
  Volume group "vfoxvg" successfully removed

删除一个pv
[root@srcxtts ~]# vgreduce vfoxvg /dev/sdb9
  Removed "/dev/sdb9" from volume group "vfoxvg"
[root@srcxtts ~]# 

创建LV阶段

命令说明:

lvcreate:新建lv;

lvscan:查询系统上面的lv;

lvdisplay:显示系统上面的lv状态;

lvextend:在lv里面增加容量;

lvreduce:在lv里面减少容量;

lvremove:删除一个lv;

lvresize:对lv进行容量大小的调整;

lvcreate [-L N[mgt]] [-n LV名称] VG名称

参数:

-L:后面接容量,单位可以是m/g/t等,要注意的是,最小单位是pe,因为这个数量必须是pe的整数倍,若不相符,系统会自动计算最接近的容量。

-l:后面接PE的个数,而不是数量。

-n:后面接的就是lv的名称。

更多说明查阅man lvcreate

将整个vg都分配给一个lv

创建lv
[root@srcxtts ~]# lvcreate -l 256 -n vfoxlv vfoxvg
  Logical volume "vfoxlv" created
[root@srcxtts ~]# 
[root@srcxtts ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vfoxvg/vfoxlv                                                ==>这个才是lv的全名
  LV Name                vfoxlv
  VG Name                vfoxvg
  LV UUID                KRkLEz-cRJo-k3lL-qJHo-6Ie5-XNQu-LA8oQ9
  LV Write Access        read/write
  LV Creation host, time srcxtts, 2018-05-08 15:55:51 +0800
  LV Status              available
  # open                 0
  LV Size                4.00 GiB                                                        ==>LV容量大小
  Current LE             256
  Segments               4
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

下面就可以对lv进行文件系统格式化了。特别注意的是,vg的名称是vfoxvg可以拿来直接用,但是lv的名称必须使用全名/dev/vfoxvg/vfoxlv才行。

下面就可以对lv进行文件系统模式的格式化了。
[root@srcxtts ~]# mkfs -t ext3 /dev/vfoxvg/vfoxlv
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1073741824
32 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 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@srcxtts ~]# 
创建挂载点并挂载
[root@srcxtts ~]# mkdir /mnt/lvm
[root@srcxtts ~]# mount /dev/vfoxvg/vfoxlv /mnt/lvm
[root@srcxtts ~]# df -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_srcxtts-lv_root
                       21G   11G  8.4G  57% /
tmpfs                 2.0G  304K  2.0G   1% /dev/shm
/dev/sda1             477M   60M  392M  14% /boot
/dev/mapper/vfoxvg-vfoxlv
                      4.0G  137M  3.7G   4% /mnt/lvm
[root@srcxtts ~]# 

7、放大lv

放大lv容量
本例把/dev/sdb9那个分区扩展到lv中去,做如下的步骤。
1、fdisk设置新的具有8e system ID的分区;(本例前面已做)
2、利用pvcreate构建pv。(本例前面已做)
3、利用vgextend讲pv加入到我们的vfoxvg;
4、利用lvresize将新加入的pv内的pe加入到vfoxlv中;
5、通过resize2fs将文件系统的容量确实增加;

剩下的我们从第三步开始做:

把pv加入的vg中
[root@srcxtts ~]# vgextend vfoxvg /dev/sdb9
  Volume group "vfoxvg" successfully extended
[root@srcxtts ~]# vgdisplay vfoxvg
  --- Volume group ---
  VG Name               vfoxvg
  System ID             
  Format                lvm2
  Metadata Areas        5
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                5
  Act PV                5
  VG Size               4.94 GiB
  PE Size               16.00 MiB
  Total PE              316
  Alloc PE / Size       256 / 4.00 GiB
  Free  PE / Size       60 / 960.00 MiB
  VG UUID               zFGofA-DOMn-z1I3-0aHu-2S6I-EGGy-Y5wELr
   
[root@srcxtts ~]# 
发现已经分配了256个pe,还剩60个pe。

放大lv吧(对名为/dev/vfoxvg/vfoxlv的lv增加60个pe)
lvresize -l +60 /dev/vfoxvg/vfoxlv
[root@srcxtts ~]# lvresize -l +60 /dev/vfoxvg/vfoxlv
  Extending logical volume vfoxlv to 4.94 GiB
  Logical volume vfoxlv successfully resized
[root@srcxtts ~]#

lresize语法较简单,基本可以用-l(pe个数)或-L(实际存储大小)来实现,增加使用+ ,减少使用-
[root@srcxtts ~]# lvdisplay /dev/vfoxvg/vfoxlv
  --- Logical volume ---
  LV Path                /dev/vfoxvg/vfoxlv
  LV Name                vfoxlv
  VG Name                vfoxvg
  LV UUID                KRkLEz-cRJo-k3lL-qJHo-6Ie5-XNQu-LA8oQ9
  LV Write Access        read/write
  LV Creation host, time srcxtts, 2018-05-08 15:55:51 +0800
  LV Status              available
  # open                 1
  LV Size                4.94 GiB
  Current LE             316
  Segments               5
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

[root@srcxtts ~]# df /mnt/lvm -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/vfoxvg-vfoxlv
                      4.0G  137M  3.7G   4% /mnt/lvm
[root@srcxtts ~]# 
发现lv的大小变大了,但是文件系统的大小并未变化。
查看原本文件系统中superblock的记录情况
dumpe2fs /dev/vfoxvg/vfoxlv
resize2fs [-f] [device] [size]
参数:
-f :强制进行resize的操作
[device]:设备的文件名
[size]:可以加也可以不加。如果加上size的话,那么就必须要给予一个单位,譬如M,G等。如果没有size的话,那么默认使用整个分区的容量。


完整的将lv的容量扩充到整个文件系统

resize2fs /dev/vfoxvg/vfoxlv

[root@srcxtts ~]# resize2fs /dev/vfoxvg/vfoxlv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vfoxvg/vfoxlv is mounted on /mnt/lvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vfoxvg/vfoxlv to 1294336 (4k) blocks.
The filesystem on /dev/vfoxvg/vfoxlv is now 1294336 blocks long.

[root@srcxtts ~]# 

[root@srcxtts ~]# df /mnt/lvm -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/vfoxvg-vfoxlv
                      4.9G  137M  4.5G   3% /mnt/lvm
[root@srcxtts ~]# 
发现文件系统已经变大了。

8、减少lv。

减少lv,我们以减少sdb6为例
pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb6
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.41 MiB
  Allocatable           yes (but full)
  PE Size               16.00 MiB
  Total PE              64
  Free PE               0
  Allocated PE          64
  PV UUID               2sgPk8-OFn5-QhiQ-Oc5I-o0aw-mXaK-9f9Zds
[root@srcxtts ~]# pvscan
  PV /dev/sdb5   VG vfoxvg       lvm2 [1.00 GiB / 0    free]
  PV /dev/sdb6   VG vfoxvg       lvm2 [1.00 GiB / 0    free]
  PV /dev/sdb7   VG vfoxvg       lvm2 [1.00 GiB / 0    free]
  PV /dev/sdb8   VG vfoxvg       lvm2 [1.00 GiB / 0    free]
  PV /dev/sdb9   VG vfoxvg       lvm2 [960.00 MiB / 0    free]
  PV /dev/sda2   VG vg_srcxtts   lvm2 [24.51 GiB / 0    free]
  Total: 6 [29.45 GiB] / in use: 6 [29.45 GiB] / in no VG: 0 [0   ]
[root@srcxtts ~]# 
剩余空间应该是1024M*3+960M=4032M

直接降低文件系统容量

resize2fs /dev/vfoxvg/vfoxlv 4032M
[root@srcxtts ~]# resize2fs /dev/vfoxvg/vfoxlv 4032M
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vfoxvg/vfoxlv is mounted on /mnt/lvm; on-line resizing required
On-line shrinking from 1294336 to 1278464 not supported.
[root@srcxtts ~]# 
看来在线缩小文件系统不支持,4032M这个地方制定容量不能用小数点
[root@srcxtts ~]# resize2fs /dev/vfoxvg/vfoxlv 4.875G
resize2fs 1.41.12 (17-May-2010)
resize2fs: 无效的新大小:4.875G

[root@srcxtts ~]# 

卸载文件系统

[root@srcxtts ~]# umount /mnt/lvm
[root@srcxtts ~]# df -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_srcxtts-lv_root
                       21G   11G  8.4G  57% /
tmpfs                 2.0G  304K  2.0G   1% /dev/shm
/dev/sda1             477M   60M  392M  14% /boot
[root@srcxtts ~]#

再次执行缩小lv

[root@srcxtts ~]# resize2fs /dev/vfoxvg/vfoxlv 4032M
resize2fs 1.41.12 (17-May-2010)
请先运行 'e2fsck -f /dev/vfoxvg/vfoxlv'.

[root@srcxtts ~]# 
发现要求做磁盘检查,按照要求做吧。
e2fsck -f /dev/vfoxvg/vfoxlv

[root@srcxtts ~]# e2fsck -f /dev/vfoxvg/vfoxlv
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vfoxvg/vfoxlv: 11/327680 files (0.0% non-contiguous), 55423/1294336 blocks
[root@srcxtts ~]# 

检查完毕,再次做缩小lv

[root@srcxtts ~]# resize2fs /dev/vfoxvg/vfoxlv 4032M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vfoxvg/vfoxlv to 1032192 (4k) blocks.
The filesystem on /dev/vfoxvg/vfoxlv is now 1032192 blocks long.

[root@srcxtts ~]# 
成功。

重新挂载

mount /dev/vfoxvg/vfoxlv /mnt/lvm
[root@srcxtts ~]# df -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_srcxtts-lv_root
                       21G   11G  8.4G  57% /
tmpfs                 2.0G  304K  2.0G   1% /dev/shm
/dev/sda1             477M   60M  392M  14% /boot
/dev/mapper/vfoxvg-vfoxlv
                      3.9G  137M  3.6G   4% /mnt/lvm
[root@srcxtts ~]#
文件系统大小已经下来了。

后面就是将lv的容量降低:

lvresize -l -64 /dev/vfoxvg/vfoxlv
[root@srcxtts ~]# lvresize -l -64 /dev/vfoxvg/vfoxlv
  WARNING: Reducing active and open logical volume to 3.94 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vfoxlv? [y/n]: y
  Reducing logical volume vfoxlv to 3.94 GiB
  Logical volume vfoxlv successfully resized
[root@srcxtts ~]# 
下面就是将pv移除vg了。

先确认pe是否都已经删除了。

[root@srcxtts ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb5
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.38 MiB
  Allocatable           yes (but full)
  PE Size               16.00 MiB
  Total PE              64
  Free PE               0
  Allocated PE          64
  PV UUID               KfVUlD-M3Ka-gOwn-gSbT-yx5e-fE1j-7YjTSR
   
  --- Physical volume ---
  PV Name               /dev/sdb6
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.41 MiB
  Allocatable           yes (but full)
  PE Size               16.00 MiB
  Total PE              64
  Free PE               0
  Allocated PE          64
  PV UUID               2sgPk8-OFn5-QhiQ-Oc5I-o0aw-mXaK-9f9Zds
   
  --- Physical volume ---
  PV Name               /dev/sdb7
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.41 MiB
  Allocatable           yes (but full)
  PE Size               16.00 MiB
  Total PE              64
  Free PE               0
  Allocated PE          64
  PV UUID               nbgBAM-nRLn-ws1W-5oA6-VfN3-HJYF-oEtPPe
   
  --- Physical volume ---
  PV Name               /dev/sdb8
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.41 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              64
  Free PE               4
  Allocated PE          60
  PV UUID               6w3VpI-MxqW-yEsC-36c3-qnBH-Qail-7KXt1b
   
  --- Physical volume ---
  PV Name               /dev/sdb9
  VG Name               vfoxvg
  PV Size               972.65 MiB / not usable 12.65 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              60
  Free PE               60
  Allocated PE          0
  PV UUID               ReNYHF-gE61-z5iq-KBhE-c6U4-okbt-gJPs6X
发现sdb6的free pe是0,而空闲的sdb9的大小不足以放下整个sdb6.而sdb8刚好使用的pe是60个,这个大小跟sdb9的空闲pe大小相同,可以把sdb8remove到sdb9上面来。所以我们就改变目标把sdb8移除来释放空间。
把sdb8的使用空间全部移动到sdb9
pvmove /dev/sdb8 /dev/sdb9
pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb8
  VG Name               vfoxvg
  PV Size               1.01 GiB / not usable 11.41 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              64
  Free PE               64
  Allocated PE          0
  PV UUID               6w3VpI-MxqW-yEsC-36c3-qnBH-Qail-7KXt1b
   
  --- Physical volume ---
  PV Name               /dev/sdb9
  VG Name               vfoxvg
  PV Size               972.65 MiB / not usable 12.65 MiB
  Allocatable           yes (but full)
  PE Size               16.00 MiB
  Total PE              60
  Free PE               0
  Allocated PE          60
  PV UUID               ReNYHF-gE61-z5iq-KBhE-c6U4-okbt-gJPs6X
ok,发现移动完成后,sdb8的空间全部释放出来了。

把pv从vg里面移除:

vgreduce vfoxvg /dev/sdb8
[root@srcxtts ~]# vgreduce vfoxvg /dev/sdb8
  Removed "/dev/sdb8" from volume group "vfoxvg"
[root@srcxtts ~]#

查看pvscan,发现空出来一个pv,就是我们刚才释放的sdb8。

[root@srcxtts ~]# pvscan
  PV /dev/sdb5   VG vfoxvg          lvm2 [1.00 GiB / 0    free]
  PV /dev/sdb6   VG vfoxvg          lvm2 [1.00 GiB / 0    free]
  PV /dev/sdb7   VG vfoxvg          lvm2 [1.00 GiB / 0    free]
  PV /dev/sdb9   VG vfoxvg          lvm2 [960.00 MiB / 0    free]
  PV /dev/sda2   VG vg_srcxtts      lvm2 [24.51 GiB / 0    free]
  PV /dev/sdb8                      lvm2 [1.01 GiB]
  Total: 6 [29.46 GiB] / in use: 5 [28.45 GiB] / in no VG: 1 [1.01 GiB]
[root@srcxtts ~]# 

然后把sdb8对应的pv删掉,释放sdb8。

[root@srcxtts ~]# pvremove /dev/sdb8
  Labels on physical volume "/dev/sdb8" successfully wiped
[root@srcxtts ~]# 

这样文件系统和实际的lv与vg都变小了,而且那个/dev/sdb8可以拿出来,进行其他的用途。


9、LVM的关闭

按照如下步骤:
a、先卸载系统上面的lvm文件系统(包括快照与所有lv)
b、使用lvremove删除lv。
c、使用vgchange -an VGname让VGname这个VG不具有active的标志;
d、使用vgremove删除VG;
e、使用pvremove删除PV;

f、最后,使用fdisk将system ID修改回来;

[root@srcxtts ~]# vgdisplay
  --- Volume group ---
  VG Name               vfoxvg
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  15
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               3.94 GiB
  PE Size               16.00 MiB
  Total PE              252
  Alloc PE / Size       252 / 3.94 GiB
  Free  PE / Size       0 / 0   
  VG UUID               zFGofA-DOMn-z1I3-0aHu-2S6I-EGGy-Y5wELr
   
  --- Volume group ---
  VG Name               vg_srcxtts
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               25.52 GiB
  PE Size               4.00 MiB
  Total PE              6532
  Alloc PE / Size       6532 / 25.52 GiB
  Free  PE / Size       0 / 0   
  VG UUID               fgnH6f-ZAJJ-9vde-RUTK-w131-pSSO-wmKu8q
   
[root@srcxtts ~]# 

我们以关闭名为vfoxvg的vg来进行说明:

[root@srcxtts ~]# df -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_srcxtts-lv_root
                       22G   11G  9.4G  54% /
tmpfs                 2.0G  308K  2.0G   1% /dev/shm
/dev/sda1             477M   60M  392M  14% /boot
/dev/mapper/vfoxvg-vfoxlv
                      3.9G  137M  3.6G   4% /mnt/lvm
[root@srcxtts ~]# 

执行命令umount /mnt/lvm

[root@srcxtts ~]# df -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_srcxtts-lv_root
                       22G   11G  9.4G  54% /
tmpfs                 2.0G  308K  2.0G   1% /dev/shm
/dev/sda1             477M   60M  392M  14% /boot
[root@srcxtts ~]# 
删除lv

lvremove /dev/vfoxvg/vfoxlv

[root@srcxtts ~]# lvremove /dev/vfoxvg/vfoxlv
Do you really want to remove active logical volume vfoxlv? [y/n]: y
  Logical volume "vfoxlv" successfully removed
[root@srcxtts ~]# 
使名为vfoxvg的vg不在活跃

vgchange -a n vfoxvg

[root@srcxtts ~]# vgchange -a n vfoxvg
  0 logical volume(s) in volume group "vfoxvg" now active
[root@srcxtts ~]# 
然后就可以移除vg了

vgremove vfoxvg

[root@srcxtts ~]# vgremove vfoxvg
  Volume group "vfoxvg" successfully removed
[root@srcxtts ~]# 
然后就可以移除pv了。

先查询下要移除的pv

[root@srcxtts ~]# pvscan
  PV /dev/sda2   VG vg_srcxtts      lvm2 [24.51 GiB / 0    free]
  PV /dev/sdb8   VG vg_srcxtts      lvm2 [1.01 GiB / 0    free]
  PV /dev/sdb5                      lvm2 [1.01 GiB]
  PV /dev/sdb6                      lvm2 [1.01 GiB]
  PV /dev/sdb7                      lvm2 [1.01 GiB]
  PV /dev/sdb9                      lvm2 [972.65 MiB]
  Total: 6 [29.50 GiB] / in use: 2 [25.52 GiB] / in no VG: 4 [3.98 GiB]
[root@srcxtts ~]# 

移除pv

pvremove /dev/sdb{5,6,7,9}

[root@srcxtts ~]# pvremove /dev/sdb{5,6,7,9}
  Labels on physical volume "/dev/sdb5" successfully wiped
  Labels on physical volume "/dev/sdb6" successfully wiped
  Labels on physical volume "/dev/sdb7" successfully wiped
  Labels on physical volume "/dev/sdb9" successfully wiped
[root@srcxtts ~]# 

再次查看pv

[root@srcxtts ~]# pvscan
  PV /dev/sda2   VG vg_srcxtts   lvm2 [24.51 GiB / 0    free]
  PV /dev/sdb8   VG vg_srcxtts   lvm2 [1.01 GiB / 0    free]
  Total: 2 [25.52 GiB] / in use: 2 [25.52 GiB] / in no VG: 0 [0   ]
[root@srcxtts ~]#
移除成功。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值