一、前言

LVM,逻辑卷管理工具,它的作用是提供一种灵活的磁盘管理办法。通常我们的某个分区用完了,想要扩容,很麻烦。但是用lvm就可以很方便的扩容,收缩。

看它的原理图:

它的原理大致是:首先将磁盘做成物理卷,然后物理卷再组成卷组,卷组下面再划分逻辑卷。

二、实现一个lvm

步骤:

2.1 做物理卷。

首先看看我们的磁盘/dev/sdb的分区情况:

[root@ruanwenwu02 ~]# fdisk -l /dev/sdb

磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2f45f776 设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 6293504 7931903 819200 83 Linux
/dev/sdb3 2099200 6293503 2097152 5 Extended
/dev/sdb5 2101248 4198399 1048576 83 Linux
/dev/sdb6 4200448 5838847 819200 83 Linux

接下来,我们把sdb1,sdb2,sdb5的分区id修改为8e:

[root@ruanwenwu02 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。 命令(输入 m 获取帮助):t
分区号 (1-3,5,6,默认 6):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):t
分区号 (1-3,5,6,默认 6):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):t
分区号 (1-3,5,6,默认 6):5
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2f45f776 设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 8e Linux LVM
/dev/sdb2 6293504 7931903 819200 8e Linux LVM
/dev/sdb3 2099200 6293503 2097152 5 Extended
/dev/sdb5 2101248 4198399 1048576 8e Linux LVM
/dev/sdb6 4200448 5838847 819200 83 Linux Partition table entries are not in disk order

如果是新创建的分区,找不到的话,使用partprobe命令刷新一下。

运行pvcreate命令,创建物理卷(physical volum)

[root@ruanwenwu02 ~]# pvs
-bash: pvs: 未找到命令
[root@ruanwenwu02 ~]# pvdisplay
-bash: pvdisplay: 未找到命令

发现这些命令都没有的话,那么就需要安装lvm2:

[root@ruanwenwu02 ~]# yum install lvm2
已加载插件:fastestmirror
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): extras/7/x86_64/primary_db | 129 kB 00:00:00
(2/2): updates/7/x86_64/primary_db

安装好之后,就可以使用pvcreate命令了:

[root@ruanwenwu02 ~]# pvcreate /dev/sdb1
WARNING: ext2 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext2 signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[root@ruanwenwu02 ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@ruanwenwu02 ~]# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created.

运行pvs或者pvdisplay命令能查看当前的物理卷:

[root@ruanwenwu02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 1.00g 1.00g
/dev/sdb2 lvm2 --- 800.00m 800.00m
/dev/sdb5 lvm2 --- 1.00g 1.00g
[root@ruanwenwu02 ~]# pvdisplay
"/dev/sdb2" is a new physical volume of "800.00 MiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 800.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID FS2sy9-BTxn-XzCz-6ZBH-fL04-r1mB-p2EH91 "/dev/sdb5" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb5
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD "/dev/sdb1" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc

2.2 创建卷组

[root@ruanwenwu02 ~]# vgcreate vg1 /dev/sdb
sdb sdb1 sdb2 sdb3 sdb5 sdb6
[root@ruanwenwu02 ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
Volume group "vg1" successfully created
[root@ruanwenwu02 ~]# vgcreate vg2 /dev/sdb5
Volume group "vg2" successfully created
[root@ruanwenwu02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.77g 1.77g
vg2 1 0 0 wz--n- 1020.00m 1020.00m
[root@ruanwenwu02 ~]# vgdisplay
--- Volume group ---
VG Name vg2
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 1020.00 MiB
PE Size 4.00 MiB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 1020.00 MiB
VG UUID aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63 --- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 1.77 GiB
PE Size 4.00 MiB
Total PE 454
Alloc PE / Size 0 / 0
Free PE / Size 454 / 1.77 GiB
VG UUID qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7

使用vgs或者vgdisplay可以看到卷组。

2.3 创建逻辑卷

现在我们创建了两个卷组,一个是vg1的1.7G,一个是vg2的1G。接下来我们创建逻辑卷:

[root@ruanwenwu02 ~]# lvcreate -L 200M -n lv1 vg1
Logical volume "lv1" created.

创建的逻辑需要被格式化之后才可以使用:

[root@ruanwenwu02 ~]# mke2fs -t ext4 /dev/vg1/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729 Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

我们采用的ext4的文件系统格式化的,使用xfs的文件系统格式化也是可以的。

我们把格式化完成之后/dev/vg1/lv1挂载到/mnt目录下

[root@ruanwenwu02 ~]# mkdir /mnt/vg1
[root@ruanwenwu02 ~]# mount /dev/vg1/lv1 /mnt/vg1/
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt/vg1
[root@ruanwenwu02 ~]# cat /etc/passwd >> /mnt/vg1/passwd
[root@ruanwenwu02 ~]# cat !$
cat /mnt/vg1/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ruanwenwu:x:1000:1000::/home/ruanwenwu:/bin/bash

到这里,我们的逻辑卷创建也结束了。

如果,我们要删除一个物理卷怎么操作呢?

[root@ruanwenwu02 ~]# pvremove /dev/sdb2
PV /dev/sdb2 is used by VG vg1 so please use vgreduce first.
(If you are certain you need pvremove, then confirm by using --force twice.)
/dev/sdb2: physical volume label not removed.
[root@ruanwenwu02 ~]# man vdreduce
没有 vdreduce 的手册页条目
[root@ruanwenwu02 ~]# man vgreduce
[root@ruanwenwu02 ~]# man vgreduce
[root@ruanwenwu02 ~]# vgreduce vg1 /dev/sdb2
Removed "/dev/sdb2" from volume group "vg1"
[root@ruanwenwu02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 1 0 wz--n- 1020.00m 820.00m
vg2 1 0 0 wz--n- 1020.00m 1020.00m
[root@ruanwenwu02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a-- 1020.00m 820.00m
/dev/sdb2 lvm2 --- 800.00m 800.00m
/dev/sdb5 vg2 lvm2 a-- 1020.00m 1020.00m
[root@ruanwenwu02 ~]# pvremove /dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped.
[root@ruanwenwu02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a-- 1020.00m 820.00m
/dev/sdb5 vg2 lvm2 a-- 1020.00m 1020.00m

代码里碰到一个问题。如果一个物理卷已经被加入一个卷组里,需要使用vgreduce命令把这个物理卷从卷组里删除,然后再运行pvremove命令。

除了删除物理卷之外,逻辑卷也是可以删除的,使用命令lvremove /dev/vg1/lv1。

[root@ruanwenwu02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 200.00m
[root@ruanwenwu02 ~]# lvremove /dev/vg1/lv1
Logical volume vg1/lv1 contains a filesystem in use.
[root@ruanwenwu02 ~]# pwd
/root
[root@ruanwenwu02 ~]# rm -rf /dev/vg1/lv1/*
[root@ruanwenwu02 ~]# !lv
lvremove /dev/vg1/lv1
Logical volume vg1/lv1 contains a filesystem in use.
[root@ruanwenwu02 ~]# umount /dev/vg1/lv1
[root@ruanwenwu02 ~]# !lv
lvremove /dev/vg1/lv1
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
Logical volume "lv1" successfully removed
[root@ruanwenwu02 ~]# lvs
[root@ruanwenwu02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a-- 1020.00m 1020.00m
/dev/sdb5 vg2 lvm2 a-- 1020.00m 1020.00m

现在我们再次将逻辑卷加回来:

[root@ruanwenwu02 ~]# history|grep lvcreate
235 lvcreate -L 200M -n lv1 vg1
273 history|lvcreate
274 history|grep lvcreate
[root@ruanwenwu02 ~]# lvcreate -L 200M -n lv1 vg1
WARNING: ext4 signature detected on /dev/vg1/lv1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/vg1/lv1.
Logical volume "lv1" created.
[root@ruanwenwu02 ~]# mke2fs -t ext4 /dev/vg1/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729 Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 [root@ruanwenwu02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 200.00m
[root@ruanwenwu02 ~]# mount /dev/vg1/lv1 /mnt/vg1/
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt/vg1

到这里,我们的LVM基本上做完了。我们来梳理一下我们现有有了那些东西:

物理卷:

[root@ruanwenwu02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a-- 1020.00m 820.00m
/dev/sdb5 vg2 lvm2 a-- 1020.00m 1020.00m

卷组:

[root@ruanwenwu02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 1 0 wz--n- 1020.00m 820.00m
vg2 1 0 0 wz--n- 1020.00m 1020.00m

物理卷:

[root@ruanwenwu02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 200.00m

三、接下来讲如何扩容。

(先以ext4文件系统举例)

[root@ruanwenwu02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 200.00m
[root@ruanwenwu02 ~]# lvresize -L 300M /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
Logical volume vg1/lv1 successfully resized.
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt/vg1
[root@ruanwenwu02 ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
/dev/vg1/lv1 is mounted.
e2fsck: 无法继续, 中止.

这说明ext4文件系统扩容的话需要先umount:

[root@ruanwenwu02 ~]# lvresize -L 300M /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
Logical volume vg1/lv1 successfully resized.
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt/vg1
[root@ruanwenwu02 ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
/dev/vg1/lv1 is mounted.
e2fsck: 无法继续, 中止. [root@ruanwenwu02 ~]# umount /dev/vg1/lv1
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@ruanwenwu02 ~]# lvresize -L 300M /dev/vg1/lv1
New size (75 extents) matches existing size (75 extents).
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@ruanwenwu02 ~]# mount /dev/vg1/lv1
mount: 在 /etc/fstab 中找不到 /dev/vg1/lv1
[root@ruanwenwu02 ~]# e2fsck /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
/dev/vg1/lv1: clean, 11/51200 files, 12115/204800 blocks
[root@ruanwenwu02 ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
请先运行 'e2fsck -f /dev/vg1/lv1'. [root@ruanwenwu02 ~]# resize2fs -f /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 307200 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 307200 blocks long. [root@ruanwenwu02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 300.00m
[root@ruanwenwu02 ~]# mount /dev/vg1/lv1
mount: 在 /etc/fstab 中找不到 /dev/vg1/lv1
[root@ruanwenwu02 ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/77824 files (0.0% non-contiguous), 15987/307200 blocks
[root@ruanwenwu02 ~]# lvresize /dev/vg1/lv1
No command with matching syntax recognised. Run 'lvresize --help' for more information.
[root@ruanwenwu02 ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 307200 blocks long. Nothing to do! [root@ruanwenwu02 ~]# ls -ld /dev/vg1/lv1
lrwxrwxrwx. 1 root root 7 11月 4 12:42 /dev/vg1/lv1 -> ../dm-0
[root@ruanwenwu02 ~]# mount /dev/vg1/lv1 /mnt/vg1/
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv1 287M 2.1M 266M 1% /mnt/vg1

总结一下步骤:

 lvresize -L 300M  /dev/vg1/lv1  重新设置卷大小

 e2fsck -f /dev/vg1/lv1 检查磁盘错误  (ext4执行)

 resize2fs /dev/vg1/lv1 更新逻辑卷信息(ext4执行)

 xfs_growfs /dev/vg1/lv1  xfs文件系统需要执行

到这里扩容就成功了。

四、缩容

步骤:

缩减逻辑卷(xfs不支持)
先umount e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext) resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext) lvresize -L 100M /dev/vg1/lv1 重新设置卷大小

实验:

[root@ruanwenwu02 ~]# umount /dev/vg1/lv1
[root@ruanwenwu02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 100.00m
[root@ruanwenwu02 ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
[root@ruanwenwu02 ~]# resize2fs /dev/vg1/lv1 100M
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 102400 blocks long. Nothing to do! [root@ruanwenwu02 ~]# resize2fs /dev/vg1/lv1 50M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 51200 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 51200 blocks long. [root@ruanwenwu02 ~]# lvresize -L 50M /dev/vg1/lv1
Rounding size to boundary between physical extents: 52.00 MiB.
WARNING: Reducing active logical volume to 52.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 52.00 MiB (13 extents).
Logical volume vg1/lv1 successfully resized.
[root@ruanwenwu02 ~]# mount /dev/vg1/lv1 /mnt/vg1/
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv1 45M 1.1M 40M 3% /mnt/vg1

五、扩展卷组

步骤:

fdisk /dev/sdb  新增/dev/sdb5(逻辑分区8e)  2G

 pvcreate /dev/sdb5

 vgextend vg1 /dev/sdb5

 lvresize -L 100M  /dev/vg1/lv1  重新设置卷大小

先创建一个分区,创建物理分区,将物理分区添加到卷组,然后重新分配卷大小。

[root@ruanwenwu02 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。 命令(输入 m 获取帮助):t
分区号 (1-3,5,6,默认 6):6
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):q [root@ruanwenwu02 ~]# pvcreate /dev/sdb6
WARNING: ext4 signature detected on /dev/sdb6 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb6.
Physical volume "/dev/sdb6" successfully created.
[root@ruanwenwu02 ~]# vgex
vgexport vgextend
[root@ruanwenwu02 ~]# vgex
vgexport vgextend
[root@ruanwenwu02 ~]# vgextend vg1 /dev/sdb6
Volume group "vg1" successfully extended
[root@ruanwenwu02 ~]# vgdisplay -v
--- Volume group ---
VG Name vg2
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 1020.00 MiB
PE Size 4.00 MiB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 1020.00 MiB
VG UUID aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63 --- Physical volumes ---
PV Name /dev/sdb5
PV UUID 6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD
PV Status allocatable
Total PE / Free PE 255 / 255 --- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.77 GiB
PE Size 4.00 MiB
Total PE 454
Alloc PE / Size 13 / 52.00 MiB
Free PE / Size 441 / 1.72 GiB
VG UUID qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7 --- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID x6wfyb-ZMDC-eGmK-8TRH-cVX5-JZB2-u0ZYID
LV Write Access read/write
LV Creation host, time ruanwenwu02, 2017-11-04 11:52:34 +0800
LV Status available
# open 1
LV Size 52.00 MiB
Current LE 13
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0 --- Physical volumes ---
PV Name /dev/sdb1
PV UUID lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc
PV Status allocatable
Total PE / Free PE 255 / 242 PV Name /dev/sdb6
PV UUID QsRgrb-3vmW-Jte1-o5Qv-JvgZ-oNnO-MJkOoG
PV Status allocatable
Total PE / Free PE 199 / 199

六、命令整理:

6.1 fdisk diskname -> t ->8e

修改磁盘分区为lvm类型。

6.2 pvcreate partionname

创建物理分区

6.4 pvremove

删除物理分区

6.3 vgcreate vg1 /dev/sdb1 /dev/sdb2

创建卷组

6.4 vgremove

移除卷组

6.5 lvcreate -L 200M -n lv1 vg1

创建逻辑卷

6.6 lvresize -L 300M /dev/vg1/lv1

扩容逻辑卷大小

6.7 扩容之后的操作

 e2fsck -f /dev/vg1/lv1 检查磁盘错误  (ext4执行)

 resize2fs /dev/vg1/lv1 更新逻辑卷信息(ext4执行)

 xfs_growfs /dev/vg1/lv1  xfs文件系统需要执行

6.8 缩容操作

先umount

 e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext)

 resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)

 lvresize -L 100M  /dev/vg1/lv1  重新设置卷大小

6.9 列出卷组的详细信息

[root@ruanwenwu02 ~]# vgdisplay -v
--- Volume group ---
VG Name vg2
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 1020.00 MiB
PE Size 4.00 MiB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 1020.00 MiB
VG UUID aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63 --- Physical volumes ---
PV Name /dev/sdb5
PV UUID 6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD
PV Status allocatable
Total PE / Free PE 255 / 255 --- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.77 GiB
PE Size 4.00 MiB
Total PE 454
Alloc PE / Size 13 / 52.00 MiB
Free PE / Size 441 / 1.72 GiB
VG UUID qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7 --- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID x6wfyb-ZMDC-eGmK-8TRH-cVX5-JZB2-u0ZYID
LV Write Access read/write
LV Creation host, time ruanwenwu02, 2017-11-04 11:52:34 +0800
LV Status available
# open 1
LV Size 52.00 MiB
Current LE 13
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0 --- Physical volumes ---
PV Name /dev/sdb1
PV UUID lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc
PV Status allocatable
Total PE / Free PE 255 / 242 PV Name /dev/sdb6
PV UUID QsRgrb-3vmW-Jte1-o5Qv-JvgZ-oNnO-MJkOoG
PV Status allocatable
Total PE / Free PE 199 / 199

七、总结

LVM的命令还是比较多的,有机会多看看多练练吧。

Linux学习 LVM ***的更多相关文章

  1. Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的创建及使用

    在上一篇随笔里面 Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理, ...

  2. [Linux 存储管理] LVM结构

    linux的LVM灵活且功能强大,当然越强大的就越难理解.lvm和硬盘大致关系应该如下,如果有误请大家左证. lvm中快照功能强大到,很多db的备份都依赖于这个功能,所以不能不理解和熟悉. <鸟 ...

  3. Linux 学习笔记之超详细基础linux命令 Part 7

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 6----------------- ...

  4. linux学习之centos(三):mysql数据库的安装和配置

    前言:mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库, ...

  5. linux学习:【第1篇】初识Linux及安装

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! linux学习:[第1篇]初识Linux及安装 写在前面 学习之初看了一段文章,很有感触,所以也 ...

  6. Linux学习笔记(4)磁盘分区(fdisk)、挂载与文件系统命令

    Linux学习笔记(4)磁盘分区(fdisk).挂载与文件系统命令 1.磁盘分区是怎么表示的? 1.1 对于IDE接口,第一主盘为hda,第1从盘为hdb,第1从盘的第1个分区为hdb1 1.2 对于 ...

  7. xiaoluo同志Linux学习之CentOS6.4

    小罗同志写的不错,弄个列表过来啊   Linux学习之CentOS(三十六)--FTP服务原理及vsfptd的安装.配置 xiaoluo501395377 2013-06-09 01:04 阅读:56 ...

  8. Linux学习路线指南

    转载的,感觉写的挺好的,我自己知识复制了下,忘记了转载地址,抱歉! Linux学习路线指南 很多同学接触Linux不多,对Linux平台的开发更是一无所知.而现在的趋势越来越表明,作为一个优秀的软件开 ...

  9. Linux学习日记-使用EF6 Code First(四)

    一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是  请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...

随机推荐

  1. Spring Boot 揭秘与实战(七) 实用技术篇 - StateMachine 状态机机制

    文章目录 1. 环境依赖 2. 状态和事件 2.1. 状态枚举 2.2. 事件枚举 3. 状态机配置4. 状态监听器 3.1. 初始化状态机状态 3.2. 初始化状态迁移事件 5. 总结 6. 源代码 ...

  2. 【转载】 强化学习(六)时序差分在线控制算法SARSA

    原文地址: https://www.cnblogs.com/pinard/p/9614290.html ------------------------------------------------ ...

  3. Samsung_tiny4412(驱动笔记03)----字符设备驱动基本操作及调用流程

    /*********************************************************************************** * * 字符设备驱动基本操作及 ...

  4. flask连接mysql数据库

    from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql pymysql.install_as_My ...

  5. input标签(单选框和复选框)

    单选框: <form> <input type="radio" name="..." value="..." checke ...

  6. python三大框架之一flask中cookie和session的相关操作

    状态保持 Cookie cookie 是指某些网站为了 辨别  用户身份,进行会话跟踪而储存在用户本地的数据(通常会经过加密),复数形式是 coolies. cookie是由服务器端生成,发送给客户端 ...

  7. 【Wannafly挑战赛24】【C失衡天平】

    https://www.nowcoder.com/acm/contest/186/C 题意:有n个武器,每个武器都有一个重量 Wi,有一个天平,只要两端的重量差不大于m就能达到平衡,求在天平平衡的情况 ...

  8. ubuntu设置静态ip后不能上网

    加上下面的配置,然后重启 sudo vim /etc/resolvconf/resolv.conf.d/base nameserver 223.5.5.5nameserver 8.8.8.8names ...

  9. mysql中不直接通过密码连接 还要指定ip地址进行连接----------DCL数据库控制语言

    线上如果用root超级用户连接数据库,非常容易造成隐私泄漏.一般线上不用root数据控制. 今天和大家分享的是  输入密码还不可以连接数据库,必须要输入ip地址以后,才可以连接. 正常的访问数据库都是 ...

  10. 【mysql】索引原理-MySQL索引原理以及查询优化

    转载:https://www.cnblogs.com/bypp/p/7755307.html 一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性 ...