您的位置:首页 > 运维架构 > Linux

LVM逻辑管理器(Logical volume Manager)

2016-06-29 21:50 351 查看
由于本人是linux小白,现在在自学linux目前学到了LVM就把LVM的实验步骤整理了一下,有什么错误请大家多多指点!注:以下内容借鉴鸟哥的linux私房菜 LVM的重点在于可以弹性的调整文件系统的容量!而并非在于性能与数据保全上面。需要文件的读写性能可以使用RAID。LVM可以整个多个物理分区,让这些分区看起来就像一个磁盘一样。而且还可以在将来的其他的物理分区或将其从这个LVM上删除。

1.1 什么是LVMPV,PE,VG,LV的意义

LVM的全名是Logical Volume Manager ,中文可以翻译为逻辑管理器。之所以成为“卷”可能是因为可以将文件系统向卷一样伸长或缩短之故吧!LVM的做法是将几个物理的分区(或磁盘)通过软件组合成为一块看起来独立的大磁盘(VG),然后将这些大磁盘在经过分成可以使用的分区(LV),最终就就够挂载使用了。但是为什么这样的系统可以进行扩充或缩小呢?其实与一个称为PE的选项有关。Physical Volume,PV,物理卷

我们实际的分区需要调整系统标识符(system ID)成为8e(LVM的标识符),然后再通过pvcreate的命令将它转化为LVM最底层的物理卷(PV),之后才能将这些PV加以利用,调整systemID的方法就是使用fdisk工具

Volume Group,VG,卷组

所谓的LVM大磁盘就是将许多PV整合成这个VG,所以VG就是LVM组合起来的大磁盘。这个大磁盘默认的最大容量是256GB,该结果与PE的大小有关,每个VG最多可以包含65534个PE,而每个PE的默认大小是4MB,一次默认的LVMVG会有4M*65534/(1024M/G)=256GB。PE是LVM中最小的存储单位,我们的文件数据都是由PE来处理的,简单地说PE就像文件系统里的block大小。所以调整PE的大小会影响到VG的最大容量

Logical Volume,LV,逻辑卷

最终的VG还会被切成LV,这个LV就是最后可以被格式化使用的类型分区率。LV不可以随意指定大小。既然PE是整个LVM对的最小存储单位,那么LV的大小就与再次LV内的PE总数有关。为了方便用户利用LVM来管理其系统,因此LV的设备文件通常指定为“/dev/VGNAME/LVNAME 注:VGNAME是VG的名称;LVNAME是LV的名称”的样式。

1.2 LVM的实现流程

1、 先将磁盘通过fdisk命令进行分区
2、 将新建好的分区建为PV格式
3、 将全部的分区整个成一个VG,将VG的名称设置为vbirdv;且PE大小为16MB
4、 最终将VG容量都丢给LV,LV的名称设置为vbirdlv
5、 最终将LV格式化为ext3的文件系统,并挂载到/mnt/lvm下

1.3 实验步骤

× 创建分区

[root@localhost ~]# fdisk /dev/sdb 注:使用fdisk工具对/dev/sdb这块磁盘进行分区,由于笔者电脑中只有两块磁盘,本次实验将使用不同的分区代替磁盘。

Command(m for help): n
Command action l logical (5 or over) p primary partition (1-4)lFirst cylinder (1963-3917, default 1963):Using default value 1963Last cylinder, +cylinders or +size{K,M,G} (1963-3917, default 3917):+5G 如上示例创建sdb5、sdb6、sdb7、sdb8四个分区(可以根据自己的习惯创建分区笔者使用的是扩展分区)
更改system ID

Command(m for help): t
Partitionnumber (1-8): 5
Hex code(type L to list codes): 8e
Changedsystem type of partition 8 to 8e (Linux LVM)

Command(m for help): t
Partition number (1-8): 6Hex code(type L to list codes): 8e
Changedsystem type of partition 8 to 8e (Linux LVM)

Command(m for help): t
Partition number (1-8): 7Hex code(type L to list codes): 8e
Changedsystem type of partition 8 to 8e (Linux LVM)

Command(m for help): t
Partition number (1-8): 8Hex code(type L to list codes): 8e
Changedsystem type of partition 8 to 8e (Linux LVM)
注:将分区类型改为8e(其实没有设置成8e也没关系,不过某些LVM的检测命令可能会检测不到该分区。)
Command(m for help): p

Disk/dev/sdb: 107.4 GB, 107374182400 bytes
255heads, 63 sectors/track, 13054 cylinders
Units =cylinders of 16065 * 512 = 8225280 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Diskidentifier: 0x74429a75

Device Boot Start End Blocks Id System
/dev/sdb1 1 3917 31463271 5 Extended
/dev/sdb5 1 393 3156709+ 8e Linux LVM
/dev/sdb6 394 1308 7349706 8e Linux LVM
/dev/sdb7 1309 1962 5253223+ 8e Linux LVM
/dev/sdb8 1963 2616 5253223+ 8e Linux LVM
Command(m for help): w
The partitiontable has been altered!

Callingioctl() to re-read partition table.
Syncingdisks.
使用p命令查看创建好的分区,确认无误后按w保存并退出。

[root@localhost~]# partprobe 注:强制让内核重新找一次分区表

[root@localhost~]# fdisk -l

Disk/dev/sdb: 107.4 GB, 107374182400 bytes
255heads, 63 sectors/track, 13054 cylinders
Units =cylinders of 16065 * 512 = 8225280 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Diskidentifier: 0x74429a75

Device Boot Start End Blocks Id System
/dev/sdb1 1 3917 31463271 5 Extended
/dev/sdb5 1 393 3156709+ 8e Linux LVM
/dev/sdb6 394 1308 7349706 8e Linux LVM
/dev/sdb7 1309 1962 5253223+ 8e Linux LVM
/dev/sdb8 1963 2616 5253223+ 8e Linux LVM

1.4、PV阶段
pv:physical volume(实际额)
1)创建pv
pvcreate
2)删除pv
pvremove
3)扫描pv
pvscan
4)查看pv
pvdisplay
5)移动pv
pvmove

检查系统上是否存在PV,然后将/dev/sdb5~8新建成为PV格式

[root@localhost~]# pvscan
PV /dev/sda2 VGVolGroup lvm2 [39.51 GiB / 0 free] Total:1 [39.51 GiB] / in use: 1 [39.51 GiB] / in no VG: 0 [0 ] 注:这个PV创建系统的时候自带的,与本次实验无关 创建PV

[root@localhost ~]# pvcreate/dev/sdb{5,6,7,8} Physicalvolume "/dev/sdb5" successfully created Physicalvolume "/dev/sdb6" successfully created Physicalvolume "/dev/sdb7" successfully created Physicalvolume "/dev/sdb8" successfully created 注:这个命令可以一下创建多个PV比单个穿件简便不少 [root@localhost ~]# pvscan PV/dev/sda2 VG VolGroup lvm2 [39.51 GiB / 0 free] PV/dev/sdb5 lvm2 [3.01GiB] PV/dev/sdb6 lvm2 [7.01GiB] PV/dev/sdb7 lvm2 [5.01 GiB] PV/dev/sdb8 lvm2 [5.01GiB]Total: 5[59.55 GiB] / in use: 1 [39.51 GiB] / in no VG: 4 [20.04 GiB]
这就分别显示每个PV的信息与系统所有的PV信息。尤其是最有一行,显示的是:整体PV的量/已经被使用到VG的量/剩余的PV量 更详细的显示PV信息

[root@localhost~]# pvdisplay
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name VolGroup
PV Size 39.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 10114
Free PE 0
Allocated PE 10114
PV UUID C8Soc4-4V1F-I3LI-YyJr-KnEP-urtx-xXpKjh

"/dev/sdb5" is a newphysical volume of "3.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb5
VG Name
PV Size 3.01 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID IYkvra-xyFA-mB1U-7wvs-fhf4-I4Qg-88C3mG

"/dev/sdb6" is a newphysical volume of "7.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb6 ←实际的分区设备名称
VG Name ←因为尚未分配出去所以空白
PV Size 7.01 GiB ←就是容量的说明
Allocatable NO ←是否已被分配
PE Size 0 ←在此PV内的PE大小
Total PE 0 ←共分出几个PE
Free PE 0 ←没被LV用掉的PE
Allocated PE 0 ←尚可分配出去的PE数量
PV UUID gErjmF-t2Wb-jFI4-qLZ4-4lze-1oU9-O7HdRb

"/dev/sdb7" is a newphysical volume of "5.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb7
VG Name
PV Size 5.01 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID CqHwxm-ZfFT-KHju-SkS0-bXNN-Q70X-hYkjb0

"/dev/sdb8" is a newphysical volume of "5.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb8
VG Name
PV Size 5.01 GiB
Allocatable NO
PE Size 0
TotalPE 0
Free PE 0
Allocated PE 0
PV UUID ty3uai-DtDD-h2QC-n01u-psKJ-7Blf-cvQAiL

注:由于PE是新建VG的时候才给予的参,因此在这里看到的PV里面PE会是0
而且也没有多余的PE可供分配(allocatable)

1.5、VG阶段
g:volume group(卷组)
1)创建vg
Vgcreate 2)删除vg
vgremove
3)扫描vg
vgscan
4)查看vg
vgdisplay
5)移动vg
gmove
6)扩展vg
vgextend
7)缩减vg
vgreduce
与VG不同,PV的名称是自定义的!我们知道PV的名称其实就是分区的设备文件名,但是这个VG名称则可以随便你自己取。在下面例子当中将VG取名为vbirdvg。新建这个VG的流程是这样的。 创建VG

[root@localhost ~]# vgcreate -s 16Mvbirdvg /dev/sdb{5,6,7}
Volumegroup "vbirdvg" successfully created
以上字段的意思为将/dev/sdb5-7创建为一个VG,且指定PE大小为16MB。
注:-s后面跟的是PE的大小(size),单位可以是M、G、T(大小写均可)。

[root@localhost ~]# vgscan
Readingall physical volumes. This may take awhile...
Foundvolume group "vbirdvg" using metadata type lvm2
Foundvolume group "VolGroup" using metadata type lvm2
注:以上信息可以看出vbirdvg已经创建成功

[root@localhost ~]# pvscan
PV/dev/sdb5 VG vbirdvg lvm2 [3.00 GiB / 3.00 GiB free]
PV/dev/sdb6 VG vbirdvg lvm2 [7.00 GiB / 7.00 GiB free]
PV/dev/sdb7 VG vbirdvg lvm2 [5.00 GiB / 5.00 GiB free]
PV/dev/sda2 VG VolGroup lvm2 [39.51 GiB / 0 free]
PV/dev/sdb8 lvm2 [5.01GiB]
Total:5 [59.52 GiB] / in use: 4 [54.51 GiB] / in no VG: 1 [5.01 GiB]

注:从以上信息中可以看出有三个PV被占用,有一个空闲(/dev/sdb8)

更详细的显示出VG的信息

[root@localhost ~]# vgdisplay
---Volume group ---
VGName vbirdvg
SystemID
Format lvm2
MetadataAreas 3
MetadataSequence No 1
VGAccess read/write
VGStatus resizable
MAXLV 0
CurLV 0
OpenLV 0
MaxPV 0
CurPV 3
ActPV 3
VGSize 15.00 GiB ←整体的VG容量有这么大
PESize 16.00 MiB ←内部每个PE的大小
Total PE 960 ←总共的PE数量共有这么多
Alloc PE / Size 0 / 0
Free PE / Size 960 / 15.00 GiB
VGUUID QaQ6X4-U9RP-wW7m-bgWA-UJvY-4Kg5-6jmvye
注:深色三行指的是PE能够使用的情况!由于尚未创建LV,因此所有的PE均可自由使用。
---Volume group ---
VGName VolGroup
SystemID
Format lvm2
MetadataAreas 1
MetadataSequence No 3
VGAccess read/write
VGStatus resizable
MAXLV 0
CurLV 2
OpenLV 2
MaxPV 0
CurPV 1
ActPV 1
VGSize 39.51 GiB
PESize 4.00 MiB
TotalPE 10114
AllocPE / Size 10114 / 39.51 GiB
Free PE / Size 0 / 0
VG UUID madnL1-qOMP-r9EC-36w9-0bO0-KeyZ-z0znMh
注:VolGroup是创建系统时自带,本实验将无视该内容

这样我们就创建一个VG了,假设我们要增加这个VG的容量,我们可以使用刚才保留的/dev/sdb8增加VG容量。
扩展VG

[root@localhost~]# vgextend vbirdvg /dev/sdb8
ume group"vbirdvg" successfully extended
注:这个命令可以将PV(/dev/sdb8)丢给vbirdvg。

[root@localhost ~]# vgdisplay --- Volume group --- VG Name vbirdvg 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 20.00 GiB PE Size 16.00 MiB Total PE 1280 ←可以看出PE数已经增加 Alloc PE / Size 0 / 0 Free PE / Size 1280 / 20.00 GiB VG UUID QaQ6X4-U9RP-wW7m-bgWA-UJvY-4Kg5-6jmvye --- Volume group --- VG Name VolGroup 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 39.51 GiB PE Size 4.00 MiB Total PE 10114 Alloc PE / Size 10114 /39.51 GiB Free PE / Size 0 / 0 VG UUID madnL1-qOMP-r9EC-36w9-0bO0-KeyZ-z0znMh 1.6.、LV阶段
创建出VG这个大磁盘之后,再来就是要新建分区。这个分区就是所谓的LV。假设我们将刚才那个vbirdvg磁盘分成vbirdlv,整个VG的容量都会被分配到vbirdlv里面去。 LV命令:1)创建LV
lvcreate
2)删除lv
lvremove
3)扫描lv
lvscan
4)查看lv
lvdisplay
5)移动lv
lvmove
6)缩减lv
lvreduce
7)扩展lv
lvextend
创建LV

[root@localhost ~]#lvcreate -L 20G -n vbirdlv vbirdvg Logical volume "vbirdlv" created注:-L后面接容量,容量的单位可以是M、G、T等,需要注意的是最小单位为PE,因此这个数量必须要是PE的倍数,若不相符,系统会自行计算最相近的容量。lvcreate后面也可以跟小写的“-l”若使用小写的-l则需要跟PE的“个数”,而不是数量,若要这么做,得要自行计算PE数。 -n:后面接的是LV的名称。 从vgdisplay可以看出VG共有20G,所以-L后面跟20G 查看LV的详细信息

[root@localhost~]# lvdisplay --- Logical volume --- LV Path /dev/vbirdvg/vbirdlv LV Name vbirdlv VG Name vbirdvg LV UUID p89ztk-RQFc-YG5j-20Xc-QtJ9-uYdR-DU5bfZ LV Write Access read/write LV Creation host, time localhost, 2016-06-27 22:10:32 +0800 LV Status available # open 0 LV Size 20.00 GiB ←这个LV的容量这么大 Current LE 1280 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/VolGroup/lv_root LV Name lv_root VG Name VolGroup LV UUID JNU6kK-z5rp-xkTU-lB9F-98yj-WcZc-E1AXrH LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-04-07 06:36:29 +0800 LV Status available # open 1 LV Size 37.57 GiB Current LE 9618 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/VolGroup/lv_swap LV Name lv_swap VG Name VolGroup LV UUID w1qlH9-6odx-Q4Es-tVAt-n3gn-JOjx-1v7QQY LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-04-07 06:36:32 +0800 LV Status available # open 1 LV Size 1.94 GiB Current LE 496 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 注:我们整个分区已经准备好,接下来就是针对LV进行处理。要注意的是,VG的名称是vbirdvg,但是LV的名称必须使用全名!即/dev/vbirdvg/vbirdlv。后续的处理都是这样的!笔者就犯过这样的错误,不注意的话很容易搞错。 7、 文件系统阶段

× 格式化、挂载、查看LV

[root@localhost ~]#mkfs -t ext3 /dev/vbirdvg/vbirdlv
mke2fs 1.41.12 (17-May-2010)文件系统标签=操作系统:Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0blocks1310720 inodes, 5242880 blocks262144 blocks (5.00%) reserved forthe super user第一个数据块=0Maximum filesystem blocks=4294967296160 block groups32768 blocks per group, 32768fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768,98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 正在写入inode表: 完成 Creating journal (32768 blocks): 完成Writing superblocks and filesystemaccounting information: 完成 This filesystem will be automaticallychecked every 29 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override. [root@localhost ~]# mkdir /mnt/lvm ←/mnt下创建一个名为lvm的文件夹[root@localhost ~]# mount/dev/vbirdvg/vbirdlv /mnt/lvm ←将LV分区挂载到新建的文件夹下 [root@localhost ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/mapper/VolGroup-lv_root 38776280 5019072 31787444 14% /tmpfs 243140 72 243068 1% /dev/shm/dev/sda1 495844 34907 435337 8% /boot/dev/mapper/vbirdvg-vbirdlv 20642428 176196 19417656 1% /mnt/lvm 注:其实Lv的名称构成为/dev/vbirdvg/vbirdlv是为了让用户直观德找到我们所需要的数据,实际上LVM的设备是放置到/dev/mapper/目录下!此时LV已经建好了,可以自有应用/mnt/lvm中的所有资源。 1.8、 放大LV容量

刚才和大家说到LVM最大的特色就是弹性调整磁盘容量,下面我们将 演示如何放大LVM容量,具体步骤如下:1) 创建新的分区,将system ID改为8e;
2) 利用pvcreate构建PV;
3) 利用vgextend将PV加入我们的vbirdvg;
4) 通过resize2fs将文件系统的容量却是增加;

创建新分区

[root@localhost lvm]# fdisk /dev/sdbswitch off the mode (command 'c') and change display units tosectors (command 'u').
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes255 heads, 63 sectors/track, 13054 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x74429a75
Device Boot Start End Blocks Id System/dev/sdb1 1 3917 31463271 5 Extended/dev/sdb5 1 393 3156709+ 8e Linux LVM/dev/sdb6 394 1308 7349706 8e Linux LVM/dev/sdb7 1309 1962 5253223+ 8e Linux LVM/dev/sdb8 1963 2616 5253223+ 8e Linux LVM
Command (m for help): nCommand action l logical (5 or over) p primary partition (1-4)lFirst cylinder (2617-3917, default 2617): Using default value 2617G
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes255 heads, 63 sectors/track, 13054 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x74429a75
Device Boot Start End Blocks Id System/dev/sdb1 1 3917 31463271 5 Extended/dev/sdb5 1 393 3156709+ 8e Linux LVM/dev/sdb6 394 1308 7349706 8e Linux LVM/dev/sdb7 1309 1962 5253223+ 8e Linux LVM/dev/sdb8 1963 2616 5253223+ 8e Linux LVM/dev/sdb9 2617 3009 3156741 83 Linux
Command (m for help): tPartition number (1-9): 9Hex code (type L to list codes): 8eChanged system type of partition 9 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes255 heads, 63 sectors/track, 13054 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x74429a75
Device Boot Start End Blocks Id System/dev/sdb1 1 3917 31463271 5 Extended/dev/sdb5 1 393 3156709+ 8e Linux LVM/dev/sdb6 394 1308 7349706 8e Linux LVM/dev/sdb7 1309 1962 5253223+ 8e Linux LVM/dev/sdb8 1963 2616 5253223+ 8e Linux LVM/dev/sdb9 2617 3009 3156741 8e Linux LVM
Command (m for help): wThe partition table has been altered!
Calling ioctl() to re-read partition table.
源忙.The kernel still uses the old table. The new table will be used atthe next reboot or after you run partprobe(8) or kpartx(8)Syncing disks.
[root@localhostlvm]# partprobe 创建新的PV

[root@localhost ~]# pvcreate /dev/sdb9
Physical volume"/dev/sdb9" successfully created [root@localhost ~]# pvscan
PV /dev/sdb5 VG vbirdvg lvm2 [3.00 GiB / 0 free]
PV /dev/sdb6 VG vbirdvg lvm2 [7.00 GiB / 0 free]
PV /dev/sdb7 VG vbirdvg lvm2 [5.00 GiB / 0 free]
PV /dev/sdb8 VG vbirdvg lvm2 [5.00 GiB / 0 free]
PV /dev/sdb9 lvm2 [3.00 GiB / 0 free]
PV /dev/sda2 VG VolGroup lvm2 [39.51 GiB / 0 free]
Total: 6 [62.51 GiB] / inuse: 6 [62.51 GiB] / in no VG: 0 [0 ] 注:可以看出/dev/sdb9是新加入尚未使用的
加大VG使用vgextend功能

[root@localhost ~]#vgextend vbirdvg /dev/sdb9 Volumn group “vbirdvg”successfully extended [root@localhost ~]# vgdisplay --- Volume group --- VG Name vbirdvg System ID Format lvm2 Metadata Areas 5 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 5 Act PV 5 VG Size 23.00 GiB PE Size 16.00 MiB Total PE 1472 Alloc PE / Size 1280 / 23.00 GiB Free PE / Size 192/ 3GB VG UUID QaQ6X4-U9RP-wW7m-bgWA-UJvY-4Kg5-6jmvye --- Volume group --- VG Name VolGroup 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 39.51 GiB PE Size 4.00 MiB Total PE 10114 Alloc PE / Size 10114 / 39.51 GiB Free PE / Size 0 / 0 VG UUID madnL1-qOMP-r9EC-36w9-0bO0-KeyZ-z0znMh root@localhost ~]# lvresize –l +192 /dev/vbirdvg/vbirdlv Extending logical volume vbirdlvto 23 GB Logical volume vbirdlvsuccessfully resized注:本次使用-l只是为了给大家演示-l的用法这样就增加LV了。Lvresize的用法很简单,基本上同样通过-l或-L来增加。 [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vbirdvg/vbirdlv LV Name vbirdlv VG Name vbirdvg LV UUID p89ztk-RQFc-YG5j-20Xc-QtJ9-uYdR-DU5bfZ LV Write Access read/write LV Creation host, timelocalhost, 2016-06-27 22:10:32 +0800 LV Status available # open 0 LV Size 23.00 GiB Current LE 1472 Segments 5 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/VolGroup/lv_root LV Name lv_root VG Name VolGroup LV UUID JNU6kK-z5rp-xkTU-lB9F-98yj-WcZc-E1AXrH LV Write Access read/write LV Creation host, timelocalhost.localdomain, 2016-04-07 06:36:29 +0800 LV Status available # open 1 LV Size 37.57 GiB Current LE 9618 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/VolGroup/lv_swap LV Name lv_swap VG Name VolGroup LV UUID w1qlH9-6odx-Q4Es-tVAt-n3gn-JOjx-1v7QQY LV Write Access read/write LV Creation host, timelocalhost.localdomain, 2016-04-07 06:36:32 +0800 LV Status available # open 1 LV Size 1.94 GiB Current LE 496 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 [root@localhost ~]# df -h /mnt/lvmFilesystem Size Used Avail Use% Mounted on/dev/mapper/vbirdvg-vbirdlv 20G 173M 19G 1% /mnt/lvm注:可以看出最终结果中LV真的有放大到23G,但文件系统没有增加。而且,我们的LVM可以在线直接处理,并不需要给它umount。
使用resize2fs

[root@localhost lvm]# dumpe2fs /dev/vbirdvg/vbirdlvdumpe2fs 1.41.12 (17-May-2010)Filesystem volume name: <none>Last mounted on: <not available>Filesystem UUID: b0560ee1-443e-4230-a3bd-0d13d4d39891Filesystem magic number: 0xEF53Filesystem revision #: 1 (dynamic)Filesystem features: has_journal ext_attr resize_inodedir_index filetype needs_recovery sparse_super large_fileFilesystem flags: signed_directory_hash Default mount options: (none)Filesystem state: cleanErrors behavior: ContinueFilesystem OS type: LinuxInode count: 1310720Block count: 5242880 这个文件系统的block总数Reserved block count: 262144Free blocks: 5116557Free inodes: 1310708First block: 0Block size: 4096Fragment size: 4096Reserved GDT blocks: 1022Blocks per group: 32768 多少个block设置成为一个blockFragments per group: 32768Inodes per group: 8192Inode blocks per group: 512Filesystem created: Mon Jun 27 22:17:05 2016Last mount time: Mon Jun 27 22:41:45 2016Last write time: Mon Jun 27 22:41:45 2016Mount count: 2Maximum mount count: 29Last checked: Mon Jun 27 22:17:05 2016Check interval: 15552000 (6 months)Next check after: Sat Dec 24 22:17:05 2016Reserved blocks uid: 0 (user root)Reserved blocks gid: 0 (group root)First inode: 11Inode size: 256Required extra isize: 28Desired extra isize: 28Journal inode: 8Default directory hash: half_md4Directory Hash Seed: 624a67f4-a148-425e-bb32-59ad7534feeaJournal backup: inode blocksJournal features: (none)日志大小: 128MJournal length: 32768Journal sequence: 0x0000000eJournal start: 1 Group 0: (Blocks 0-32767) ←括号内为block的号码 主 superblock at 0, Group descriptors at 1-2 保留的GDT块位于 3-1024 Block bitmap at 1025 (+1025), Inode bitmap at 1026 (+1026) Inode表位于 1027-1538 (+1027) 31222 free blocks, 8180 free inodes, 2 directories 可用块数: 1545-6151, 6153-32767 可用inode数: 12-13, 15-8192 ….(中间省略)……. Group 159: (Blocks 5210112-5242879) 这是本系统中最后一个group Block bitmap at 5210112 (+0), Inode bitmap at 5210113 (+1) Inode表位于 5210114-5210625 (+2) 32254 free blocks, 8192 free inodes, 0 directories 可用块数: 5210626-5242879 可用inode数: 1302529-1310720注:以上信息是文件系统内的superblock的记录情况。
[root@localhostlvm]# resize2fs -f /dev/vbirdvg/vbirdlv
resize2fs1.41.12 (17-May-2010)zingrequiredolddesc_blocks = 2, new_desc_blocks = 2ocks.Thefilesystem on /dev/vbirdvg/vbirdlv is now 6029312 blocks long. 注:
-f:强制进行resize的操作;
-f后面跟设备名还可以在设备名后面跟大小,可以加也可以不加,如果加上size的话必须给定一个单位(M、G等)如果没有size的话默认使用整个分区量来处理。 [root@localhost ~]# df -h /mnt/lvmFilesystem Size Used Avail Use% Mounted on/dev/mapper/vbirdvg-vbirdlv 23G 173M 22G 1% /mnt/lvm [root@localhost ~]# ls -l/mnt/lvm/总用量 20drwx------. 2 root root 16384 6月 27 22:17 lost+found-rwxr-xr-x. 1 root root 23 6月 2722:29 test.sh 注:Lvm中的数据依然存在。如果你已经有填数据在lvm扇区中,这个数据是不会死掉的,还会在以前原本的扇区当中。1.9、 缩小LV容量

[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb5
VG Name vbirdvg
PV Size 3.01 GiB / not usable 10.75 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 192
Free PE 0
Allocated PE 192
PV UUID IYkvra-xyFA-mB1U-7wvs-fhf4-I4Qg-88C3mG注:从以上信息得知/dev/sdb5有多大,而且含有192个PE的量。那如果要使用resize2fs是,则减去7.01GB就可以了。 [root@localhost ~]# pvscan
PV /dev/sdb5 VG vbirdvg lvm2 [3.00 GiB / 0 free]
PV /dev/sdb6 VG vbirdvg lvm2 [7.00 GiB / 0 free]
PV /dev/sdb7 VG vbirdvg lvm2 [5.00 GiB / 0 free]
PV /dev/sdb8 VG vbirdvg lvm2 [5.00 GiB / 0 free]
PV /dev/sdb9 VG vbirdvg lvm2 [3.00 GiB / 0 free]
PV /dev/sda2 VG VolGroup lvm2 [39.51 GiB / 0 free]
Total: 6 [62.51 GiB] / in use: 6 [62.51 GiB] /in no VG: 0 [0 ] 注:从以上信息可以看出去除/dev/sdb5剩余容量为20GB(7+5+5+3=20)卸载/mnt/lvm

[root@localhost ~]# umount/mnt/lvm

进行磁盘检查

[root@localhost ~]# e2fsck -f/dev/vbirdvg/vbirdlv
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vbirdvg/vbirdlv:12/1507328 files (0.0% non-contiguous), 138659/6029312 blocks
降低文件系统的容量

[root@localhost ~]# resize2fs/dev/vbirdvg/vbirdlv 20Gresize2fs 1.41.12 (17-May-2010)Resizing the filesystem on/dev/vbirdvg/vbirdlv to 5242880 (4k) blocks.The filesystem on/dev/vbirdvg/vbirdlv is now 5242880 blocks long.注:有可能出现容量不能够写小数点为的时候大家可以把G换算成M就可以了。 降低LV的容量

[root@localhost ~]# lvresize -l-192 /dev/vbirdvg/vbirdlv WARNING: Reducing active and open logical volume to 20.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reducevbirdlv? [y/n]: y ←会有警告信息,但是我们的实际数据量还是比16G要小,所以就按y Reducing logical volume vbirdlv to 20.00 GiB Logical volume vbirdlv successfully resized注:降低LV的量,同时我们知道/dev/sdb5有192个PE [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vbirdvg/vbirdlv LV Name vbirdlv VG Name vbirdvg LV UUID p89ztk-RQFc-YG5j-20Xc-QtJ9-uYdR-DU5bfZ LV Write Access read/write LV Creation host, time localhost, 2016-06-27 22:10:32 +0800 LV Status available # open 1 LV Size 20.00 GiB Current LE 1280 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/VolGroup/lv_root LV Name lv_root VG Name VolGroup LV UUID JNU6kK-z5rp-xkTU-lB9F-98yj-WcZc-E1AXrH LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-04-07 06:36:29 +0800 LV Status available # open 1 LV Size 37.57 GiB Current LE 9618 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/VolGroup/lv_swap LV Name lv_swap VG Name VolGroup LV UUID w1qlH9-6odx-Q4Es-tVAt-n3gn-JOjx-1v7QQY LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-04-07 06:36:32 +0800 LV Status available # open 1 LV Size 1.94 GiB Current LE 496 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 注:这样就将LV缩小了,接下来就是要将/dev/sdb5移出vbirdvg这个VG之外。我们在移出之前我们要先确定/dev/sdb9里面的PE完全不被使用后才能将/dev/sdb5抽离
/dev/sdb9移出vbirdvg

[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb5 VG Name vbirdvg PV Size 3.01 GiB /not usable 10.72 MiB Allocatable yes (butfull) PE Size 16.00 MiB Total PE 192 Free PE 0 Allocated PE 192 PV UUID IYkvra-xyFA-mB1U-7wvs-fhf4-I4Qg-88C3mG --- Physical volume --- PV Name /dev/sdb6 VG Name vbirdvg PV Size 7.01 GiB /not usable 9.45 MiB Allocatable yes (butfull) PE Size 16.00 MiB Total PE 448 Free PE 0 Allocated PE 448 PV UUID gErjmF-t2Wb-jFI4-qLZ4-4lze-1oU9-O7HdRb --- Physical volume --- PV Name /dev/sdb7 VG Name vbirdvg PV Size 5.01 GiB /not usable 10.10 MiB Allocatable yes (butfull) PE Size 16.00 MiB Total PE 320 Free PE 0 Allocated PE 320 PV UUID CqHwxm-ZfFT-KHju-SkS0-bXNN-Q70X-hYkjb0 --- Physical volume --- PV Name /dev/sdb8 VG Name vbirdvg PV Size 5.01 GiB /not usable 10.10 MiB Allocatable yes (butfull) PE Size 16.00 MiB Total PE 320 Free PE 0 Allocated PE 320 PV UUID ty3uai-DtDD-h2QC-n01u-psKJ-7Blf-cvQAiL --- Physical volume --- PV Name /dev/sdb9 VG Name vbirdvg PV Size 3.01 GiB /not usable 10.75 MiB Allocatable yes PE Size 16.00 MiB Total PE 192 Free PE 192 Allocated PE 0 PV UUID PaBXJr-hpTK-hcvU-8Uxh-odDw-QNEX-dTeL0V --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 39.51 GiB /not usable 3.00 MiB Allocatable yes (butfull) PE Size 4.00 MiB Total PE 10114 Free PE 0 Allocated PE 10114 PV UUID C8Soc4-4V1F-I3LI-YyJr-KnEP-urtx-xXpKjh 注:先确认/dev/sdb5是否将PE都删除了 通过查看上述信息可以看出在/dev/sdb9上有没有使用的PE刚好和/dev/sdb5上的PE一样大,我们需要将PE从/dev/sdb5转移到/dev/sdb9

转移PE

[root@localhost ~]# pvmove/dev/sdb5 /dev/sdb9 /dev/sdb5: Moved: 0.0% /dev/sdb5: Moved: 26.0% /dev/sdb5: Moved: 52.1% /dev/sdb5: Moved: 78.1% /dev/sdb5: Moved: 100.0% 注:Pvmove 来源pv 目标pv,可以将/dev/sdb5中的数据全部移动到/dev/sdb9中。/dev/sdb5移出vbirdvg

[root@localhost ~]# vgreduce vbirdvg/dev/sdb5 Removed "/dev/sdb5" from volumegroup "vbirdvg"
[root@localhost~]# pvscanPV /dev/sdb6 VG vbirdvg lvm2 [7.00 GiB / 0 free] PV /dev/sdb7 VG vbirdvg lvm2 [5.00 GiB / 0 free]
PV /dev/sdb8 VG vbirdvg lvm2 [5.00 GiB / 0 free]
PV /dev/sdb9 VG vbirdvg lvm2 [3.00 GiB / 0 free]
PV /dev/sda2 VG VolGroup lvm2 [39.51 GiB / 0 free]
PV /dev/sdb5 lvm2 [3.01 GiB]
Total: 6 [62.52 GiB] / in use: 5 [59.51 GiB]/ in no VG: 1 [3.01 GiB] [root@localhost ~]# pvremove /dev/sdb5
Labels on physical volume"/dev/sdb5" successfully wiped注:/dev/sdb5已经空出来了,可以去让他做别的事情了!基本上是完成了,LVM快照请参考文章http://bella41981.blog.51cto.com/10603572/1795009
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux volume system