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 ~]#
移除成功。