LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,Linux用户安装Linux操做系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好以后就没法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件由于受上层文件系统的限制,也不能跨越多个分区来存放,因此也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法一般是使用符号连接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的状况下能够方便地调整各个分区大小。node
[root@localhost ~]# fdisk -l 磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000a5fed 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 4507647 2048000 82 Linux swap / Solaris /dev/sda3 4507648 41943039 18717696 83 Linux 磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@localhost ~]# pvcreate /dev/sdb2 Physical volume "/dev/sdb2" successfully created. [root@localhost ~]# pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created.
建立完物理卷以后可使用pvdisplay 或 dvs命令来查看一下当前的物理卷,若是查看不到,能够先运行一下partprobe命令。bash
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- 1.00g 1.00g /dev/sdb2 lvm2 --- 1.00g 1.00g /dev/sdb3 lvm2 --- 1.00g 1.00g
[root@localhost ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2 Volume group "vg1" successfully created [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg1 2 0 0 wz--n- 1.99g 1.99g
[root@localhost ~]# lvcreate -L 100M -n lv1 vg1 Logical volume "lv1" created. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv1 vg1 -wi-a----- 100.00m [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vg1/lv1 LV Name lv1 VG Name vg1 LV UUID h418at-aYwA-m8Ah-lAji-ICmF-uVW0-eDjAdQ LV Write Access read/write LV Creation host, time localhost.localdomain, 2018-02-28 08:44:57 +0800 LV Status available # open 0 LV Size 100.00 MiB Current LE 25 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
[root@localhost ~]# mkfs.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 25688 inodes, 102400 blocks 5120 blocks (5.00%) reserved for the super user 第一个数据块=1 Maximum filesystem blocks=33685504 13 block groups 8192 blocks per group, 8192 fragments per group 1976 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@localhost ~]# mount /dev/vg1/lv1 /mnt [root@localhost ~]# ls /mnt lost+found
到这里,LVM就算完成了,当逻辑卷空间不足时怎样扩容呢?服务器
[root@localhost ~]# umount /mnt umount: /mnt:未挂载 [root@localhost ~]# lvresize -L 200M /dev/vg1/lv1 Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 200.00 MiB (50 extents). Logical volume vg1/lv1 successfully resized. [root@localhost ~]# e2fsck -f /dev/vg1/lv1 e2fsck 1.42.9 (28-Dec-2013) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录链接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/vg1/lv1: 13/25688 files (7.7% non-contiguous), 8899/102400 blocks [root@localhost ~]# resize2fs /dev/vg1/lv1 resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks. The filesystem on /dev/vg1/lv1 is now 204800 blocks long. [root@localhost ~]# mount /dev/vg1/lv1 /mnt [root@localhost ~]# df -h /mnt 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt
[root@localhost ~]# e2fsck -f /dev/vg1/lv1 e2fsck 1.42.9 (28-Dec-2013) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录链接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/vg1/lv1: 13/49400 files (7.7% non-contiguous), 11887/204800 blocks [root@localhost ~]# lvresize -L 100M /dev/vg1/lv1 WARNING: Reducing active logical volume to 100.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 200.00 MiB (50 extents) to 100.00 MiB (25 extents). Logical volume vg1/lv1 successfully resized. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv1 vg1 -wi-a----- 100.00m [root@localhost ~]# mount /dev/vg1/lv1 /mnt mount: 文件系统类型错误、选项错误、/dev/mapper/vg1-lv1 上有坏超级块、 缺乏代码页或助手程序,或其余错误 有些状况下在 syslog 中能够找到一些有用信息- 请尝试 dmesg | tail 这样的命令看看。
为了符合实验要求,首先将/dev/vg1/lv1 格式化为xfs类型 ,mkfs.xfs -f /dev/vg1/lv1app
[root@localhost ~]# mkfs.xfs -f /dev/vg1/lv1 meta-data=/dev/vg1/lv1 isize=256 agcount=2, agsize=6656 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=13312, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@localhost ~]# mount /dev/vg1/lv1 /mnt [root@localhost ~]# ls /mnt [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv1 vg1 -wi-ao---- 52.00m [root@localhost ~]# lvresize -L 300M /dev/vg1/lv1 Size of logical volume vg1/lv1 changed from 52.00 MiB (13 extents) to 300.00 MiB (75 extents). Logical volume vg1/lv1 successfully resized. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv1 vg1 -wi-ao---- 300.00m [root@localhost ~]# df -h /mnt 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/vg1-lv1 49M 2.7M 46M 6% /mnt [root@localhost ~]# xfs_grows /dev/vg1/lv1 -bash: xfs_grows: 未找到命令 [root@localhost ~]# xfs_growfs /dev/vg1/lv1 meta-data=/dev/mapper/vg1-lv1 isize=256 agcount=2, agsize=6656 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=13312, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 13312 to 76800 [root@localhost ~]# df -h /mnt 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/vg1-lv1 297M 3.1M 294M 2% /mnt
能够看到,容量从50M成功的扩容到了300Mdom
从上面的内容能够看出,逻辑卷扩容的上限就是卷组的容量,若是卷组的容量不够用了该怎么扩容呢?在实验之初咱们是建立了三个物理卷,而建立卷组的时候只用了两个物理卷,当卷组容量不够时 ,咱们能够把空闲的第三个物理卷加入到卷组当中ide
[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg1 2 1 0 wz--n- 1.99g <1.70g [root@localhost ~]# vgextent vg1 /dev/sdb3 -bash: vgextent: 未找到命令 [root@localhost ~]# vgex vgexport vgextend [root@localhost ~]# vgextend vg1 /dev/sdb3 Volume group "vg1" successfully extended [root@localhost ~]# vgdisplay --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size <2.99 GiB PE Size 4.00 MiB Total PE 765 Alloc PE / Size 75 / 300.00 MiB Free PE / Size 690 / <2.70 GiB VG UUID gT48qq-JCCo-I17e-H82v-gQoV-d5f8-9IoYeR