lvm磁盘管理

1 原理

你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
算是一个介于分区之上,文件系统之下的中间层。
好处就是可以管理灵活,在线扩容。坏处就是退出的时候别暴力插拔,先退出lvm管理。

最下层的物理分区:fdisk -l
物理卷(physical volumes):pvdisplay 与物理分区一一对应,创建pv相当于设置为lvm分区格式,才能提取出来创建成vg
卷组(volumes groups):vgdisplay 可以由不同的pv合并而成,组成一个大的vg
逻辑卷(logical volumes):lvdisplay 在vg中划分出来,相当于逻辑分区,lv就可以直接挂在目录使用了。

2 新增一块硬盘怎么添加到lvm管理呢?

2.1 查看现在环境:

#vgdisplay 可以看到有一个vg(centos)

 VG Name               centos
 ...
 VG Size               59.41 GiB

#pvdisplay 这个vg是sda2分区做成pv划进来的

 PV Name               /dev/sda2
 VG Name               centos
 PV Size               59.41 GiB

#lvdisplay 用vg划了 两个lv(root和swap)

--- Logical volume ---
 LV Path                /dev/centos/root
 LV Name                root
 VG Name                centos
 ...
 LV Size                55.41 GiB
 ...
  
 --- Logical volume ---
 LV Path                /dev/centos/swap
 LV Name                swap
 VG Name                centos
 ...
 LV Size                4.00 GiB

2.2 开始将sda3纳入lvm管理

只有60G的一块sda盘,有sda1和sda2两个分区,现在
#fdisk /dev/sda
新增了/dev/sda3,大小100G

#新增将sda3做成pv

pvcreate /dev/sda3
pvdisplay

#若加到新的vg(vg名字datavg、pv名字/dev/sda3为例)

vgcreate  datavg  /dev/sda3 
vgdisplay

#若加到现有vg(vg名字centos、pv名字/dev/sda3为例)

vgextend centos /dev/sda3
vgdisplay
[root@docker-test ~]# df -hT
Filesystem                                Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root          xfs        56G   48G  7.6G  87% /
devtmpfs                               devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                                       tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                                       tmpfs     1.9G   13M  1.9G   1% /run
tmpfs                                       tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                                   xfs       597M  177M  421M  30% /boot
tmpfs                                       tmpfs     378M   12K  378M   1% /run/user/42

2.3 假设我不想使用旧的逻辑卷,而是新建lv(名字为data1),大小为5G,挂载到/data1

lvcreate -L 5G -n data1 centos   #我这里还用的旧的vg centos
lvdisplay 

centos7 的文件系统格式默认为xfs,centos6为ext4,通过逻辑卷的LV Path指定逻辑卷

mkfs.xfs /dev/centos/data1
mkdir /data1
mount /dev/centos/data1 /data1

#挂载完成后,通过df -lT 就能看到相应的文件系统
然后将挂载信息写入到/etc/fstab中,使其开机挂载

echo "/dev/centos/data1  /data1  xfs  defaults  0  0" >> /etc/fstab

2.4 假设我就想挂载到/,使用旧的vg 旧的lv,也就是调整分区大小

特别注意的是:
resize2fs命令 针对的是ext2、ext3、ext4文件系统
xfs_growfs命令 针对的是xfs文件系统

df -lT 查看下文件系统类型(通过df -hT查出的文件系统路径跟逻辑分区路径不同,不过还是能区分的)
vgdisplay 查看下vg剩余空间

 VG Name               centos
 ...
 Free  PE / Size       24319 / <95.00 GiB

1)ext2/ext3/ext4文件系统的调整命令是resize2fs(增大和减小都支持)–未测试版本

#调整逻辑分区大小
增大至20G

$ lvextend -L 20G /dev/mapper/centos-test--lv

增加5G

$ lvextend -L +5G /dev/mapper/centos-test--lv

减小至10G

lvreduce -L 10G /dev/mapper/centos-test--lv

#减小3G

$ lvreduce -L -3G /dev/mapper/centos-test--lv

#执行调整

$ resize2fs /dev/mapper/centos-test--lv

2)xfs文件系统的调整命令是xfs_growfs(只支持增大)

调整逻辑分区大小(事实证明用df -lT和LV Path两个路径都可以实现)
#增大至70G(用LV Path)

$ lvextend -L 70G /dev/centos/root

增加5G(用df -lT)

$ lvextend -L +80G /dev/mapper/centos-root

#执行调整

$ xfs_growfs /dev/centos/root
df -lT

此种方法进行的扩缩容,是不会影响到原有数据的,非常的方便好用。

ps:xfs格式不是不支持缩容,而是xfs格式缩容后需要重新格式化才能继续挂载使用,且缩容前需要先卸载挂载,然后在缩容,然后格式化,然后再挂载。这会导致原本的数据丢失,如果实在要缩容,可以提前将数据转移备份好,缩容后再将数据迁移回来。
卸载挂载

$ umount /dev/mapper/centos-test--lv

#缩容

$ lvreduce -L -5G /dev/mapper/centos-test--lv

重新格式化,添加-f参数,强制重写。

$ mkfs.xfs /dev/mapper/centos-test--lv -f

重新挂载

#mount /dev/mapper/centos-test--lv /data

3 退出磁盘管理(未测试版)

在日常使用中,磁盘老旧,故障,需要更换等问题也经常有,此时需要安全退出。

首先,磁盘中的数据,如何需要转移到新的磁盘中,那么首先,先插入新的磁盘,然后创建pv,将pv加入到相同的vg,然后移动逻辑分区和数据到新的磁盘,然后将就旧的磁盘的pv移除出vg,删除pv,就可以移除此磁盘了。
#查看系统磁盘挂载情况

$ lsblk
NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                   8:0    0   20G  0 disk 
├─sda1                8:1    0  300M  0 part /boot
├─sda2                8:2    0    2G  0 part [SWAP]
└─sda3                8:3    0 17.7G  0 part /
sdb                   8:16   0   20G  0 disk 
└─sdb1                8:17   0   20G  0 part 
└─centos-test--lv 253:0    0    7G  0 lvm  
sdc                   8:32   0   20G  0 disk 
sr0                  11:0    1 1024M  0 rom 

如上可以看到在sdb磁盘中有一个sdb1的分区,下面有一个lvm的逻辑分区。
#若要安全的退出磁盘,就需要将此磁盘中的所有数据迁移到新的磁盘中,当然如果你不要数据了,那可以不迁移,直接删除逻辑分区,从卷组中删除物理卷即可。
sdc磁盘为刚添加的新磁盘,我们要做的就是将sdb的数据导入到sdc中,然后退出sdb磁盘

#首先,创建sdc磁盘的物理分区和物理卷
#操作过程不赘述了,查看最开头第一步新增创建分区的内容。
#创建完成后,查看物理卷

$ pvs
PV               VG     Fmt  Attr PSize  PFree 
/dev/sdb1  centos lvm2 a--  20.00g 13.00g
/dev/sdc1             lvm2  ---  20.00g 20.00g

#可以看到新的物理卷还没有加入卷组,空间为全剩余
#将新磁盘的物理卷加入到相同的卷组

$ vgextend centos /dev/sdc1

再查看物理卷,如下

$ pvs
PV         VG     Fmt  Attr PSize  PFree 
/dev/sdb1  centos lvm2 a--  20.00g 13.00g
/dev/sdc1  centos lvm2 a--  20.00g 20.00g

下面将/dev/sdb1中的数据移动到卷组中的/dev/sdc1上

$ pvmove /dev/sdb1 /dev/sdc1

#等待一段时间即可,如果数据量过大,可以用下面命令,放到后台执行。

$ pvmove /dev/sdb1 /dev/sdc1 2>error.log >normal.log &

完成后,查看物理卷信息,会发现sdb1上的数据都迁移到了sdc1上。

$ pvs
PV         VG     Fmt  Attr PSize  PFree 
/dev/sdb1  centos lvm2 a--  20.00g 20.00g
/dev/sdc1  centos lvm2 a--  20.00g 13.00g

然后将/dev/sdb1的物理卷从卷组中删除

$ vgreduce centos /dev/sdb1

删除后,再看pvs,会发现此物理卷已经没有所属卷组了

$ pvs
PV         VG     Fmt  Attr PSize  PFree 
/dev/sdb1         lvm2 ---  20.00g 20.00g
/dev/sdc1  centos lvm2 a--  20.00g 13.00g

然后删除物理卷

$ pvremove /dev/sdb1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值