Linux入门之LVM逻辑卷的创建及其管理
LVM逻辑卷的创建及其管理
概述
LVM(是基于实际的物理磁盘创建LVM分区,并创建物理卷PV。一个或多个物理卷可以用来创建卷组VG。然后基于卷组可以创建逻辑卷LV。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统中挂载和使用。
特点
特点 | 性质 |
---|---|
物理长度PE | 物理长度是将物理卷组合为卷组后,所划分的最小存储单位,即逻辑意义上磁盘的最小存储单位。LVM默认PE大小为4MB。 |
物理卷PV | 物理卷是LVM的最底层概念,是LVM的逻辑存储块,物理卷与磁盘分区是逻辑的对应关系。 |
卷组VG | 卷组是LVM逻辑概念上的磁盘设备,通过将单个或多个物理卷组合后生成卷组。卷组的大小取决于物理卷的容量以及个数。 |
逻辑卷LV | 逻辑卷就是LVM逻辑意义上的分区,可以指定从卷组中提取多少容量来创建逻辑卷,最后对逻辑卷格式化并挂载使用。 |
操作流程
1. fdisk /dev/sdd
#n 新建分区
#t 转换分区格式
#8e 将分区格式转换为8e LVM2格式
2. 创建pv,将扇区转化为pe,并验证
pvcreate /dev/sdd1 /dev/sde1
pvs 查看pv的信息
pvdisplay 查看pv的信息
3. 创建vg虚拟磁盘
vgcreate mytest /dev/sdd1 /dev/sde1
find / -name mytest #查找并查看vg的配置信息
vgs 查看vg虚拟磁盘的信息
vgdisplay 查看vg虚拟磁盘的信息
4. 创建逻辑分区
lvcreate -L +5G mytest(vg名称),创建出一个分区默认lvol0
find /dev -name lvol0 查找分区位置/dev/mytest/lvol0,创建分区时会在dev目录下创建vg命名的目录
5. 格式化文件系统
mkfs.ext4 /dev/mytest/lvol0
6. 挂载使用
mkdir /root/mylv
mount /dev/mytest/lvol0 ./mylv
相关命令
fdisk命令
语法:fdisk 【参数】 【对象】
必要参数
参数 | 功能 |
---|---|
-l | 列出素所有分区表 |
-u | 与"-l"搭配使用,显示分区数目 |
选择参数
参数 | 功能 |
---|---|
-s<分区编号> | 指定分区 |
-v | 版本信息 |
操作说明
参数 | 功能 |
---|---|
m | 显示菜单和帮助信息 |
a | 活动分区标记/引导分区 |
d | 删除分区 |
l | 显示分区类型 |
n | 新建分区 |
p | 显示分区信息 |
q | 退出不保存 |
t | 设置分区号 |
v | 进行分区检查 |
w | 保存修改 |
x | 扩展应用,高级功能 |
pvcreate命令
语法:pvcreate 【选项】 【参数】
参数 | 功能 |
---|---|
-f | 强制创建物理卷,不需要用户确认 |
-u | 指定设备的UUID |
-y | 所有的问题都回答“yes” |
-Z | 是否利用前4个扇区 |
vgcreate命令
语法:vgcreate 【选项】 【参数】
参数 | 功能 |
---|---|
-l | 卷组上允许创建的最大逻辑卷数 |
-p | 卷组中允许添加的最大物理卷数 |
-s | 卷组上的物理卷的PE大小 |
lvresize命令
语法:lvresize 【选项】 【参数】
参数 | 功能 |
---|---|
-L | 指定逻辑卷的大小,单位为“kKmMgGtT”字节 |
-l | 指定逻辑卷的大小(LE数) |
e2fsck命令
语法:e2fsck 【参数】 【对象】
参数 | 功能 |
---|---|
-a | 检查 partition,如发现问题会自动修复 |
-b | 设定 superblock 位置。 www.2cto.com |
-B size | 指定 size 作为区块大小 |
-c | 检查 partition 是否有坏轨 |
-C file | 将检查结果储存到 file |
-d | 输出 e2fsck debug 结果 |
-fe2fsck | 预设只会对错误的档案系统检查,加上 -f 是强制检查 |
-F | 在检查前将硬盘的 buffer cache 清空,避免发生错误 |
-l list | 记录了坏轨区块加入 list 中 |
-d | 打印 e2fsck 的 debug 结果 |
-f | 强制检查 |
-n | 以 (read-only) 开启档案系 |
-p | 关闭互动模式,如有问题自动修复,等同 -a |
-v | 显示详细报告 |
-y | 启用使用者互动模式 |
经典案例
案例要求
- 创建一个至少有两个PV组成的大小为20G的名为mydisk的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷默认名字为lvol0;挂载至/users目录
- 新建用户arc,要求其家目录为/users/arc,而后su切换至arc用户,复制/etc/pam.d目录至自己的家目录
- 扩展testlv至7G,要求archlinux用户的文件不能丢失
- 收缩testlv至3G,要求archlinux用户的文件不能丢失
- 对testlv创建快照,并尝试基于快照备份数据,验正快照的功能
首先在虚拟机加入2块10G磁盘,之后利用fdisk命令将磁盘分区并转换LVM格式
1.首先通过lsblk命令查看磁盘状态
[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 45G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 44.5G 0 part
├─centos-root 253:0 0 40.6G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4G 0 rom
2.然后利用fdisk命令按要求编辑磁盘
[[email protected] ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xce106979.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
Disk /dev/sdb: 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: 0xce106979
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 8e Linux LVM
3.利用相同方式将磁盘sdc更改成LVM格式,最后利用lsbkl命令查看分区
[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 45G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 44.5G 0 part
├─centos-root 253:0 0 40.6G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
└─sdb1 8:17 0 10G 0 part
sdc 8:32 0 10G 0 disk
└─sdc1 8:33 0 10G 0 part
sr0 11:0 1 4G 0 rom
利用pvcreate命令创建pv,并将扇区转化为pe
1.利用pvcreate命令创建pv
[[email protected] ~]# pvcreate /dev/sdb1 /dev/sdc1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
2.利用pvs命令查看
[[email protected] ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <44.51g 44.00m
/dev/sdb1 lvm2 --- <10.00g <10.00g
/dev/sdc1 lvm2 --- <10.00g <10.00g
利用vgcreate命令创建vg虚拟磁盘
1.利用vgcreate命令创建虚拟磁盘
[[email protected] ~]# vgcreate mydisk -s 16M /dev/sdb1 /dev/sdc1
Volume group "mydisk" successfully created
2.利用vgs命令查看创建情况
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <44.51g 44.00m
mydisk 2 0 0 wz--n- 19.99g 19.99g
接下来需要利用lvcreate命令创建分区大小为5G
1.首先利用lvcreate命令创建分区,并利用lvs命令查看
[[email protected] ~]# lvcreate -L +5G mydisk
Logical volume "lvol0" created.
[[email protected] ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <40.59g
swap centos -wi-ao---- <3.88g
lvol0 mydisk -wi-a----- 5.00g
[[email protected] ~]#
分区创建完毕需要对其进行格式化挂载,利用mount命令挂载即可
1.创建挂载点users并创建文件系统之后挂载分区
[[email protected] ~]# mkdir users
[[email protected] ~]# ls
anaconda-ks.cfg users
[[email protected] users]# mkfs.ext4 /dev/mydisk/lvol0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
。。。。。。
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[[email protected] ~]# mount /dev/mydisk/lvol0 ./users/
[[email protected] ~]# ls
anaconda-ks.cfg users
[[email protected] ~]# cd users/
[[email protected] users]# ls
lost+found
以上操作结束后接下来是创建arc用户
1.创建用户arc并指定其home目录,由于在root下操作需要将root目录更改权限,最后切换用户查看并复制相关文件
[[email protected] ~]# chmod 777 /root
[[email protected] ~]# useradd -d /root/users/arc arc
[[email protected] ~]# cat /etc/passwd |grep arc
arc:x:1003:1003::/root/users/arc:/bin/bash
[[email protected] ~]# passwd arc
Changing password for user arc.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[[email protected] ~]# ls
anaconda-ks.cfg users
[[email protected] ~]# cd users/
[[email protected] users]# ls
arc lost+found
[[email protected] users]# su - arc
[[email protected] ~]$ cp -a /etc/pam.d ./
[[email protected] ~]$ ls
pam.d
接下来是LVM分区扩展收缩操作,以下是操作流程
扩展逻辑卷:
#lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
#resize2fs /dev/VG_NAME/LV_NAME
#lvresize-r -l +100%FREE /dev/VG_NAME/LV_NAME
缩减逻辑卷:
umount/dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount
1.扩展逻辑卷操作如下
[[email protected] users]# lvextend -L +2G /dev/mydisk/lvol0
Size of logical volume mydisk/lvol0 changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
Logical volume mydisk/lvol0 successfully resized.
[[email protected] users]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 41G 1.7G 39G 5% /
/dev/sda1 497M 167M 331M 34% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/mydisk-lvol0 4.8G 21M 4.6G 1% /root/users
[[email protected] users]# resize2fs /dev/mydisk/lvol0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mydisk/lvol0 is mounted on /root/users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mydisk/lvol0 is now 1835008 blocks long.
[email protected] users]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 41G 1.7G 39G 5% /
/dev/sda1 497M 167M 331M 34% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/mydisk-lvol0 6.8G 23M 6.4G 1% /root/users
最后是快照操作,流程如下
创建快照
#lvcreate-l 64 -s -n snap-data -p r /dev/vg0/data
挂载快照
#mkdir-p /mnt/snap
#mount -o ro/dev/vg0/snap-data /mnt/snap
恢复快照
#umount/dev/vg0/snap-data
#umount/dev/vg0/data
#lvconvert–merge /dev/vg0/snap-data
删除快照
#umount/mnt/databackup
#lvremove/dev/vg0/databackup
1.以刚刚创建的arc用户为例为其创建快照
[[email protected] users]# lvcreate -l 64 -s -n arc-snap -p rw /dev/mydisk/lvol0
Logical volume "arc-snap" created.
2.接下来我们可以切换arc用户进行各种操作
[[email protected] users]# su - arc
Last login: Mon Mar 30 22:11:03 CST 2020 on pts/0
[[email protected] ~]$ ls
pam.d
[[email protected] ~]$ echo jahfkjahgsfj > 1
[[email protected] ~]$ ls
1 pam.d
3.现在我们需要挂载快照,查看快照情况
[[email protected] ~]# mkdir -p /arc/snap
[[email protected] ~]# mount -o rw /dev/mydisk/arc-snap /arc/snap/
[[email protected] ~]# cd /arc/snap/
[[email protected] snap]# ls
arc lost+found
[[email protected] snap]# cd arc
[[email protected] arc]# ls
pam.d
[[email protected] arc]#
4.最后我们需要恢复到快照之前的状态
[[email protected] arc]# cd ~
[[email protected] ~]# umount /dev/mydisk/arc-snap
[[email protected] ~]# umount /dev/mydisk/lvol0
[[email protected] ~]# lvconvert --merge /dev/mydisk/arc-snap
Merging of volume mydisk/arc-snap started.
mydisk/lvol0: Merged: 89.02%
mydisk/lvol0: Merged: 100.00%
[[email protected] ~]#
5.现在我们登录arc用户查看情况
[[email protected] ~]# mount /dev/mydisk/lvol0 ./users/
[[email protected] ~]# su - arc
Last login: Mon Mar 30 22:34:55 CST 2020 on pts/0
[[email protected] ~]$ ls
pam.d
[[email protected] ~]$
上一篇: 数据库第二次上机SSDUT
下一篇: 针对索引对数据库优化