1.LVM逻辑卷的创建
为什么使用逻辑卷
• 逻辑卷和逻辑卷管理有助于更加轻松地管理
磁盘空间。如果文件系统需要更多的空间 ,
可以将其卷组的可用空间分配给逻辑卷 , 并
且可以调整文件系统的大小。如果磁盘开始
出现错误 , 可以通过卷组将替换磁盘注册为
物理卷 , 并且逻辑卷的范围可迁移到新磁盘
。
使用命令行工具实施 LVM 存储
• 准备物理卷
– disk 用于创建与 LVM 结合使用的新分区。在要与 LVM 结合使用的分区上 , 始终将
“ 类型 ” 设置为 “ 0x8e Linux LVM”
– pvcreate /dev/vdaN 用于初始化分区 ( 或其他物理设备 ), 使其作为物理卷与 LVM 结
合使用。直接在物理卷中创建用于存储 LVM 配置数据的表头
• 创建卷组
– vgcreate vgname /dev/vdaN 将创建名为 vgname 且由物理卷 /dev/vdaN 组成的卷
组。您可以在创建时指定其他物理卷 ( 以空格隔开 ), 也可以随后使用 vgextend 添加
新物理卷
• 创建和使用新逻辑卷
– lvcreate -n lvname -L 2G vgname 从 vgname 上可用物理区块创建名为 lvname 、
容量为 2GB 的新逻辑卷
– mkfs -t ext4 /dev/vgname/lvname 将在新逻辑卷上创建 ext4 文件系统
– mkdir /data 建立所需目录作为挂载点
– 向 /etc/fstab 文件中添加一下条目:
/dev/mapper/vgname-lvname /data ext4 defaults 1 2
– 运行 mount -a 可在 /etc/fstab 中挂载所有文件系统 , 包括您刚刚添加的条目
Command (m for help): t ##选择分区类型
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): 8e ##选择LVM类型的分区
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p ##显示创建好的分区
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x92763b95
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 8e Linux LVM
/dev/vdb2 2099200 4196351 1048576 8e Linux LVM
Command (m for help): wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partprobe
[root@localhost ~]# pvcreate /dev/vdb1
Physical volume /dev/vdb1 not found
Can't open /dev/vdb1 exclusively. Mounted filesystem?
[root@localhost ~]# mount /dev/vdb1 /mnt
mount: unknown filesystem type 'linux_raid_member'
[root@localhost ~]# pvcreate /dev/vdb1
Physical volume /dev/vdb1 not found
Can't open /dev/vdb1 exclusively. Mounted filesystem?
[root@localhost ~]# vgcreate vg0 /dev/vdb1
Physical volume /dev/vdb1 not found
Physical volume /dev/vdb1 not found
Can't open /dev/vdb1 exclusively. Mounted filesystem?
Unable to add physical volume '/dev/vdb1' to volume group 'vg0'.
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3298000 7175900 32% /
devtmpfs 927072 0 927072 0% /dev
tmpfs 942660 140 942520 1% /dev/shm
tmpfs 942660 664 941996 1% /run
tmpfs 942660 0 942660 0% /sys/fs/cgroup
[root@localhost ~]# mdadm -D /dev/md0
mdadm: md device /dev/md0 does not appear to be active.
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# pvcreate /dev/vdb1
Physical volume /dev/vdb1 not found
WARNING: linux_raid_member signature detected on /dev/vdb1 at offset 4096. Wipe it? [y/n] y
Wiping linux_raid_member signature on /dev/vdb1.
WARNING: xfs signature detected on /dev/vdb1 at offset 0. Wipe it? [y/n] y
Wiping xfs signature on /dev/vdb1.
Physical volume "/dev/vdb1" successfully created
[root@localhost ~]# vgcreate vg0 /dev/vdb1
Volume group "vg0" successfully created
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0
Logical volume "lv0" created
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0 isize=256 agcount=4, agsize=19200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=76800, 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/vg0/lv0 /mnt
[root@localhost ~]#
2.查看 LVM 状态信息
• pvdisplay /dev/vdaN 将显示有关特定物理
卷的信息
• vgdisplay vgname 将显示有关特定卷组的
信息
• lvdisplay /dev/vgname/lvname 将显示有
关特定逻辑卷的信息
3.逻辑卷的扩展
[root@localhost ~]# lvextend -L 900M /dev/vg0/lv0 ##lv的扩展大小后为900M
Extending logical volume lv0 to 900.00 MiB
Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 ##文件系统的扩展
meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=4, agsize=19200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=76800, 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 76800 to 230400
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0 ##lv扩展为1500M,提示大小不够
Extending logical volume lv0 to 1.46 GiB
Insufficient free space: 150 extents needed, but only 30 available
[root@localhost ~]# pvcreate /dev/vdb2 ##生成新的pv
Physical volume /dev/vdb2 not found
WARNING: linux_raid_member signature detected on /dev/vdb2 at offset 4096. Wipe it? [y/n] y
Wiping linux_raid_member signature on /dev/vdb2.
Physical volume "/dev/vdb2" successfully created
[root@localhost ~]# vgextend vg0 /dev/vdb2 ##将新的pv扩展到vg0中
Volume group "vg0" successfully extended
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0 ##重新进行lv扩展,并成功
Extending logical volume lv0 to 1.46 GiB
Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 ##扩展文件系统
meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=12, agsize=19200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=230400, 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 230400 to 384000
[root@localhost ~]#
4.逻辑卷的缩减
更改文件系统类型
[root@localhost ~]# umount /mnt/ ##先进行卸载
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 ##更改文件系统类型
缩减前的准备工作
[root@localhost ~]# e2fsck -f /dev/vg0/lv0
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv0: 11/96000 files (9.1% non-contiguous), 15356/384000 blocks
[root@localhost ~]# mount /dev/vg0/lv0 /mnt
先缩减文件系统为300M
在进行卸载,然后缩减lv,依次进行缩减
5.创建和使用快照进行备份
• 创建 /dev/vgname/lvname 的名为 snaplvname 、大小
为 20M 的新快照卷
– lvcreate -s -n snaplv -L 20M /dev/vgname/lvname
• 如果备份软件要求 , 请挂载该快照 , 并使备份程序指向新
挂载点
– mkdir /snapmount
– mount -o ro /dev/vgname/snaplv /snapmount
• 验证快照逻辑卷的状态
– lvs /dev/vgname/snaplv
• 不再使用快照时 , 请解除挂载并删除它
– umount /snapmount
– lvremove /dev/vgname/snaplv