LVM磁盘管理目录
什么是LVM
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
为什么要使用LVM?
在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间会越来越小,因为硬盘有价,数据无价,我们不能直接更换大硬盘,这时候我们就可以使用LVM,LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。
因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
LVM工作机制?
LVM就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
逻辑卷管理概念
-
物理卷(PV, Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份. -
卷组(VG, Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。 -
逻辑卷(LV, Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。
一、理论及命令框图
1.LVM结构图
2.LVM 与文件系统之间的关系
3、PV-VG-LV 的设备名
4、LVM 常用命令集
二、实验前期准备
1.配置yum源
1.删除原有yum源
[root@localhost ~]# rm -rfv /etc/yum.repos.d/*
2.下载阿里源
[root@localhost~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
//yum源配置有很多方法,我这里列举了其中的一种
3.将下载的阿里源复制到源目录下
[root@localhost~]#cp Centos-7.repo /etc/yum.repos.d/
4.清除缓存并加载yum源
[root@localhost ~] yum clean all
[root@localhost ~] yum repolist all
//yum repoolist all 也可以换成 yum list (唯一区别就是前者可以看到源信息,后者是列出所有源,特此推荐使用yum repolist all)
2.磁盘分区
- 分区要求:在/dev/sdc上划分3个分区:
- /dev/sdc1 1G
/dev/sdc2 2G
/dev/sdc3 2G
[root@localhost ~]# fdisk /dev/sdc
[root@localhost ~]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
[root@localhost ~]# fdisk -l
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe64138e1
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 2099199 1048576 83 Linux
/dev/sdc2 2099200 6293503 2097152 83 Linux
/dev/sdc3 6293504 10487807 2097152 83 Linux
- 修改分区类型
使用fdisk命令的t子命令把分区文件类型修改为8e类型(即LVM格式)修改磁盘类型:8e
注:这里演示我只修改了“#/dev/sdc1” sdc2和sdc3方法一样
[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe64138e1
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 2099199 1048576 8e Linux LVM
/dev/sdc2 2099200 6293503 2097152 8e Linux LVM
/dev/sdc3 6293504 10487807 2097152 8e Linux LVM
三、开始创建:
1.创建物理卷
- 操作要求
使用pvcreate命令把分区/dev/sdc1创建成物理卷
使用pvcreate命令把分区/dev/sdc2创建成物理卷
使用pvcreate命令把分区/dev/sdc3创建成物理卷
[root@localhost ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# pvcreate /dev/sdc2
Physical volume "/dev/sdc2" successfully created.
[root@localhost ~]# pvcreate /dev/sdc3
Physical volume "/dev/sdc3" successfully created.
- 验证
注: /dev/sda2是系统在安装系统的时候自动创建,不用管
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.51g 40.00m
/dev/sdc1 lvm2 --- 1.00g 1.00g
/dev/sdc2 lvm2 --- 2.00g 2.00g
/dev/sdc3 lvm2 --- 2.00g 2.00g
2.创建卷组:VG和卷组扩容
1.创建卷组:vg100
• 使用/dev/sdc1和/dev/sdc2创建卷组vg100
[root@localhost ~]# vgcreate vg100 /dev/sdc1 /dev/sdc2
Volume group "vg100" successfully created
- 使用vgdisplay命令查看卷组详细情况
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg100
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 2.99 GiB
PE Size 4.00 MiB
Total PE 766
Alloc PE / Size 0 / 0
Free PE / Size 766 / 2.99 GiB
VG UUID 9IUUDi-ilvO-5npL-O6ru-gRcH-Qtxx-IIyGRR
2.卷组扩容
- 把/dev/sdb3物理卷添加到vg100卷组中
[root@localhost ~]# vgextend vg100 /dev/sdc3
Volume group "vg100" successfully extended
- 使用vgdisplay命令查看卷组详细情况
[root@localhost ~]# vgextend vg100 /dev/sdc3
Volume group "vg100" successfully extended
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg100
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size <4.99 GiB
PE Size 4.00 MiB
Total PE 1277
Alloc PE / Size 0 / 0
Free PE / Size 1277 / <4.99 GiB
VG UUID 9IUUDi-ilvO-5npL-O6ru-gRcH-Qtxx-IIyGRR
3.创建逻辑卷
1.创建逻辑卷并加入到卷组
创建逻辑卷lv100A为100M并加入到卷组vg100
创建逻辑卷lv100B为200M并加入到卷组vg100
创建逻辑卷lv100C为300M并加入到卷组vg100
[root@localhost ~]# lvcreate -L 100M -n lv100A vg100
Logical volume "lv100A" created.
[root@localhost ~]# lvcreate -L 200M -n lv100B vg100
Logical volume "lv100B" created.
[root@localhost ~]# lvcreate -L 300M -n lv100C vg100
Logical volume "lv100C" created.
注释:
-L 参数表示大小
-n 参数表示要加入到的卷组名称
2.以ext4数据类型格式化逻辑卷
注:在这里我只格式化了/dev/vg100/lv100A, vg100B和vg100C的格式化方法与/dev/vg100/lv100A一样
[root@localhost ~]# mkfs.ext4 /dev/vg100/lv100A
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: 完成
注释:
mkfs是格式化命令
.ext4表示格式化类型为ext4类型
3.逻辑卷挂载
- 创建逻辑卷挂载目录:
[root@localhost ~]# mkdir /root/{myhome1,myhome2,myhome3}
[root@localhost ~]# ll /root/
总用量 8
-rw-------. 1 root root 955 5月 2 06:30 anaconda-ks.cfg
-rw-r--r--. 1 root root 2523 6月 16 2018 Centos-7.repo
drwxr-xr-x. 2 root root 6 5月 5 03:26 myhome1
drwxr-xr-x. 2 root root 6 5月 5 03:26 myhome2
drwxr-xr-x. 2 root root 6 5月 5 03:26 myhome3
- 把逻辑卷挂载到创建的挂载目录
[root@localhost ~]# mount /dev/vg100/lv100A /root/myhome1/
[root@localhost ~]# mount /dev/vg100/lv100B /root/myhome2/
[root@localhost ~]# mount /dev/vg100/lv100C /root/myhome3/
[root@localhost ~]#
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 1018M 17G 6% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 913M 0 913M 0% /dev/shm
tmpfs 913M 8.7M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/vg100-lv100A 93M 1.6M 85M 2% /root/myhome1
/dev/mapper/vg100-lv100B 190M 1.6M 175M 1% /root/myhome2
/dev/mapper/vg100-lv100C 283M 2.1M 262M 1% /root/myhome3
4.逻辑卷扩容
- 要求:把逻辑卷/dev/vg100/lv100A由原来的100M扩容为400M
//取消dev/vg100/lv100A在/root/myhome1/目录的挂载
[root@localhost ~]# umount /root/myhome1/
//重新设置lv100A卷大小为300M; -L 指定新的大小
[root@localhost ~]# lvresize -L 400M /dev/vg100/lv100A
Size of logical volume vg100/lv100A changed from 100.00 MiB (25 extents) to 400.00 MiB (100 extents).
Logical volume vg100/lv100A successfully resized.
//检查磁盘错误 (ext4执行)
[root@localhost ~]# e2fsck -f /dev/vg100/lv100A
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg100/lv100A: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
//更新逻辑卷信息(ext4执行)
[root@localhost ~]# resize2fs /dev/vg100/lv100A
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg100/lv100A to 409600 (1k) blocks.
The filesystem on /dev/vg100/lv100A is now 409600 blocks long.
//重新挂载到/root/myhome1/
[root@localhost ~]# mount /dev/vg100/lv100A /root/myhome1
- 验证
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 1018M 17G 6% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 913M 0 913M 0% /dev/shm
tmpfs 913M 8.7M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/vg100-lv100B 190M 1.6M 175M 1% /root/myhome2
/dev/mapper/vg100-lv100C 283M 2.1M 262M 1% /root/myhome3
/dev/mapper/vg100-lv100A 384M 2.3M 358M 1% /root/myhome1
四、删除LVM
如果要彻底的来移除LVM的话,需要把创建的步骤反过来操作。
1.卸载文件系统
卸载文件系统就是把文件系统从挂载目录取消挂载
[root@localhost ~]# umount /root/myhome1/
[root@localhost ~]# umount /root/myhome2/
[root@localhost ~]# umount /root/myhome3/
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 1019M 17G 6% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 913M 0 913M 0% /dev/shm
tmpfs 913M 8.7M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
2.删除lv
[root@localhost ~]# lvremove /dev/vg100/lv100A
Do you really want to remove active logical volume vg100/lv100A? [y/n]: y
Logical volume "lv100A" successfully removed
[root@localhost ~]# lvremove /dev/vg100/lv100B
Do you really want to remove active logical volume vg100/lv100B? [y/n]: y
Logical volume "lv100B" successfully removed
[root@localhost ~]# lvremove /dev/vg100/lv100C
Do you really want to remove active logical volume vg100/lv100C? [y/n]: y
Logical volume "lv100C" successfully removed
3:删除vg
[root@localhost ~]# vgremove /dev/vg100
Volume group "vg100" successfully removed
4:删除pv
[root@localhost ~]# pvremove /dev/sdc1
Labels on physical volume "/dev/sdc1" successfully wiped.
[root@localhost ~]# pvremove /dev/sdc2
Labels on physical volume "/dev/sdc2" successfully wiped.
[root@localhost ~]# pvremove /dev/sdc3
Labels on physical volume "/dev/sdc3" successfully wiped.
感谢您的阅读,如有不足,请您谅解,尚在学习中