虚拟机扩容-LVM方式

目录

一、LVM的基本概念和组成部分

二、关于在扩容前是否需要进行分区操作?

1.核心结论

2.为什么许多教程推荐先分区?

(1) 历史与兼容性

(2) 管理习惯与安全性

(3) 企业环境实践

3.直接使用整盘作为 PV 的场景

4.分区 vs 直接使用整盘的对比

5.操作示例(下面示例会进行演示)

(1) 使用分区创建 PV

(2) 直接使用整盘创建 PV

6.总结建议

三、lvm方式下的扩容流程 

1.逻辑卷扩容简要流程  

2.LVM相关命令

四、扩容实操 

(一)卷组、逻辑卷扩容到已有的挂载路径

1.选择添加硬盘

2.识别新增硬盘块

3.添加物理卷

4.查看根分区的所在的卷组(类似于存储池的概念)

5.将新增的物理卷扩展的默认的卷组中

6.查看当前逻辑卷的空间状态

7.使用 lvcreate

8.刷新根分区并查看状态

(二)卷组、逻辑卷的操作(挂载到指定路径)

1.创建分区:fdisk /dev/硬盘名

2.创建物理卷,同上。

3.创建卷组

4.创建逻辑卷

5.查看分区信息

6.格式化文件系统

7.挂载与使用(挂载到前面所创建的 /database_log目录下)

8.同步操作

9.设置开机自动挂载  

10.重启查看 

五、关键注意事项 

1.文件系统类型

2.根分区是否选用lvm管理方式


一、LVM的基本概念和组成部分

LVM的方式扩容:‌LVM(Logical Volume Manager,逻辑卷管理)‌是一种在Linux环境下对磁盘分区进行管理的管理机制。它通过在硬盘和分区之上创建一个逻辑层,提供了一种更为灵活和动态的磁盘管理方式。在虚拟机扩容中,新增一块硬盘和直接在原有硬盘基础上扩容是一样的(只不过在原有硬盘上扩容需要关机才可以执行);

LVM主要由以下几个部分组成:

  1. ‌物理卷(Physical Volume, PV)‌:LVM的基本存储逻辑块,可以是硬盘分区或整个硬盘。
  2. ‌卷组(Volume Group, VG)‌:由一个或多个物理卷组成的存储池,类似于非LVM系统中的物理硬盘。
  3. ‌逻辑卷(Logical Volume, LV)‌:在卷组上创建的逻辑磁盘,类似于非LVM系统中的硬盘分区,但具有更高的灵活性。
  4. 物理扩展(PE):PE是LVM的最小存储单元,默认大小为4M。

二、关于在扩容前是否需要进行分区操作?

使用 LVM 之前是否需要先进行分区操作,取决于具体场景和需求。以下是详细解释:

1.核心结论

  • LVM 可以直接使用整个磁盘(无需分区),但通常推荐先分区再使用 LVM,原因包括兼容性、管理习惯、安全隔离等。
  • 关键区分
    • 物理卷(PV):LVM 直接管理的存储单元,可以是整个磁盘(如 /dev/sdb)或分区(如 /dev/sdb1)。

    • 是否分区:由用户决定,但分区更常见。

2.为什么许多教程推荐先分区?

(1) 历史与兼容性

  • 引导需求:早期系统无法从 LVM 启动,需单独分区存放 /boot(引导文件)。虽然现代系统支持 LVM 启动,但仍有场景需要独立分区。
  • 工具兼容性:某些工具(如旧版 fdisk)对未分区的磁盘处理不够友好,分区可避免潜在问题。

(2) 管理习惯与安全性

  • 明确标记用途:分区类型设置为 Linux LVM(类型代码 8e),明确标识该分区专用于 LVM,避免误操作。
  • 隔离风险:若磁盘有其他用途(如预留空间或与其他系统共享),分区可划分明确边界。

(3) 企业环境实践

  • 灵活扩展:分区后,可通过 LVM 跨多个磁盘/分区合并空间(如将 /dev/sdb1 和 /dev/sdc1 加入同一卷组)。
  • 避免整盘占用:若磁盘未完全用于 LVM,分区可划分多用途区域(如部分给 LVM,部分给其他文件系统)。

3.直接使用整盘作为 PV 的场景

  • 专用磁盘:若整块磁盘完全用于 LVM,可直接创建物理卷:

    bash

    pvcreate /dev/sdb   # 直接使用整块磁盘
  • 优势
    • 简化操作,无需分区。
    • 避免分区表占用空间(但现代磁盘分区表开销可忽略)。

4.分区 vs 直接使用整盘的对比

场景分区后再用 LVM直接使用整盘 LVM
兼容性高(兼容旧系统/工具)低(某些工具可能不识别未分区磁盘)
用途标识明确(分区类型标记为 Linux LVM无明确标记
多用途磁盘支持(可划分多个分区)不支持(整盘专用于 LVM)
管理复杂度稍高(需分区步骤)低(直接操作整盘)
适用场景通用场景、企业环境专用磁盘、简单环境

5.操作示例(下面示例会进行演示)

(1) 使用分区创建 PV

[root@localhost ~]# fdisk /dev/sdc
	p  # 查看分区信息
	n  # 创建分区
	p  # 选择主分区
	回车默认,默认会将所有剩余空间都划入该分区
	t   # 修改分区格式
	L   # 列出所有分区格式信息
	8e  # 创建分区并标记为 Linux LVM(类型 8e),8e为lvm类型的hex代码
	p  # 查看分区信息
	w  # 保存并退出


# 创建物理卷
sudo pvcreate /dev/sdb1

(2) 直接使用整盘创建 PV

# 直接操作整块磁盘(无需分区)
sudo pvcreate /dev/sdb

6.总结建议

  • 推荐先分区:除非磁盘完全专用于 LVM,否则分区能提高兼容性和管理灵活性。
  • 例外情况:若磁盘仅用于 LVM 且环境支持(如现代 Linux 系统),可直接使用整盘。

三、lvm方式下的扩容流程 

1.逻辑卷扩容简要流程  

  1. 建立物理卷 ---> pv ---> 类似于硬盘域的概念
  2. 建立卷组 ---> vg ---> 类似于存储池的概念
  3. 建立逻辑卷 ---> lv ---> 对标lun卷
  4. 格式化安装文件系统 ---> mkfs
  5. 挂载 ---> mount

2.LVM相关命令

功能物理卷管理卷组管理逻辑卷管理
Scan扫描pvscanvgscanIvscan
Create建立pvcreatevgcreatelvcreate
Display显示pvdisplayvgdisplayIvdisplay
Remove删除pvremovevgremovelvremove
Extend扩展-vgextendIvextend
Reduce减少-vgreduceIvreduce

四、扩容实操 

(一)卷组、逻辑卷扩容到已有的挂载路径

1.选择添加硬盘

    2.识别新增硬盘块

          物理插入磁盘后,系统通常会自动识别,但仍需手动操作:lsblk  # 查看磁盘及分区结构,确认新磁盘是否加载成功(如 /dev/sdb)

            注:lsblk用于列出系统中所有可用的块设备(如硬盘、分区、LVM、RAID、光驱等)。它以树状图的方式显示设备之间的关系,而不显示它们的文件系统详细信息,这使得lsblk在快速查看系统的存储层次结构时非常有用。

    3.添加物理卷

    注:物理卷只能从新增加的硬盘中进行挑选

            语法:pvcreate 硬盘的位置

    4.查看根分区的所在的卷组(类似于存储池的概念)

    注:新安装的操作系统,如果使用lvm管理磁盘空间的话,默认会存在一个根目录卷组名(vg_centos6的卷组)。

    5.将新增的物理卷扩展的默认的卷组中

    格式: vgextend vg_centos6 物理卷名

    将物理卷(/dev/sdb)扩展到卷组(centos【上一步提到的根目录卷组名】)

    6.查看当前逻辑卷的空间状态

    7.使用 lvcreate

    格式:Ivcreate  [选项]  逻辑卷名 卷组名

    # 将卷组中的空闲空间扩展到根分区逻辑卷:                

            lvextend -l +100%FREEdev/vg_centos6/lv_root
    # 若想指定大小分配,则可以使用:         

            lvcreate -L 2GB -n LV_Name VG_NAME

    常用参数:

            -l指的是按照比例来进行配置,-L指定大小,-n的作用是指定新创建的逻辑卷(Logical Volume)的名称

    8.刷新根分区并查看状态

    注:刷新分区之前需要查看分区类型格式,如:ext4、xfs。查看方式如下

    方式一:使用 df -TH 来进行查看

    方式二:使用 blkid 查看所有盘符信息

    注:df命令用于显示文件系统的磁盘空间使用情况。常用选项-T表示以易读的格式显示,-h表示使用人类可读的格式。


    # 若磁盘格式是xfs,则执行如下命令:xfs_growfs /dev/vg_centos6/lv_root


    # 若磁盘格式是ext4,则执行如下命令:resize2fs /dev/vg_centos6/lv_root

    (二)卷组、逻辑卷的操作(挂载到指定路径)

    注:这里新创建一个database_log目录,用于测试

    1.创建分区:fdisk /dev/硬盘名

    注:依次执行即可

    [root@localhost ~]# fdisk /dev/xvdb
        p  # 查看分区信息
        n  # 创建分区
        p  # 选择主分区
        回车默认,默认会将所有剩余空间都划入该分区
        t   # 修改分区格式
        L   # 列出所有分区格式信息
        8e  # 创建分区并标记为 Linux LVM(类型 8e),8e为lvm类型的hex代码
        p  # 查看分区信息
        w  # 保存并退出

    pvcreate /dev/sdb1  # 使用分区名(如/dev/sdb1)

     

    2.创建物理卷,同上。

    3.创建卷组

    4.创建逻辑卷

    5.查看分区信息

    6.格式化文件系统

    注:格式化之前先确定逻辑卷的信息及文件系统是什么格式

            方式一:使用 df -TH 来进行查看

            方式二:使用 blkid 查看所有盘符信息

    EXT4文件系统下的格式化:


    XFS文件系统下的格式化:

    7.挂载与使用(挂载到前面所创建的 /database_log目录下)

    8.同步操作

    如果扩展的是一个挂载的文件系统,可以直接运行resize2fs命令。resize2fs命令来自于英文词组“resize to filesystem”的缩写,其功能是用于同步文件系统容量到内核。如对ext3、ext4、XFS等设备卷容量进行了调整,则需要使用resize2fs命令同步信息到系统内核;如果是非挂载文件系统,需要先挂载文件系统。

            1、对于Ext4文件系统,可以使用resize2fs命令。语法格式: resize2fs   [参数]   设备。

                  eg:resize2fs /dev/mapper/vg_ storage_test/lv_storage_test。

            2、对于XFS文件系统,xfs_growfs可以直接扩展已经挂载的文件系统。

                  语法格式:xfs_growfs  [参数]  设备。

                  eg:xfs_growfs    /dev/vg_data/lv_data。

            3、注意事项:在操作卷组(VG)和逻辑卷(LV)时,通常不需要手动执行同步命令(如 sync 或 partprobe),因为 LVM(逻辑卷管理)的创建和挂载流程由内核自动处理。

    操作步骤是否需要同步命令备注
    创建 PV/VG/LV内核自动生效
    格式化文件系统mkfs 直接写入设备
    挂载/卸载mount/umount 直接生效
    扩展 LV 或文件系统需文件系统工具(如 xfs_growfs

    如上所说,所以这里使用同步命令之后,报出已经做过同步,不需要做其他操作。

    9.设置开机自动挂载  

    注:名称格式不能写错,否则可能开不了机
    # echo "/dev/mapper/vg_database_log-lv_database_log /database_log ext4 defaults 0 0" >> /etc/fstab


    # cat /etc/fstab(etc/fstab一个系统配置文件,用于定义文件系统的静态挂载信息,确保系统启动时自动挂载指定的存储设备或分区)。

    10.重启查看 

    五、关键注意事项 

    1.文件系统类型

            XFS 仅支持扩容不支持缩容

            ext4 可通过resize2fs调整大小

    2.根分区是否选用lvm管理方式

            在 CentOS 7 系统中,如果根分区未使用 LVM(逻辑卷管理),则无法直接通过卷组(VG)动态扩容。但若系统已使用 LVM(默认安装通常会创建名为 centos 的卷组),只需按标准 LVM 流程扩容即可。

    这个错误是由于无法连接到本地主机的10248端口导致的。这个端口通常是kubelet进程监听的端口,用于健康检查。出现这个错误可能是由于kubelet进程没有正确启动或者配置错误导致的。 解决这个问题的方法是检查kubelet进程的状态和配置。你可以按照以下步骤进行操作: 1. 检查kubelet进程是否正在运行。你可以使用以下命令检查kubelet进程的状态: ```shell systemctl status kubelet ``` 如果kubelet进程没有运行,你可以使用以下命令启动它: ```shell systemctl start kubelet ``` 2. 检查kubelet的配置文件。你可以使用以下命令查看kubelet的配置文件路径: ```shell kubelet --kubeconfig /etc/kubernetes/kubelet.conf --config /var/lib/kubelet/config.yaml --bootstrap-kubeconfig /etc/kubernetes/bootstrap-kubelet.conf config view ``` 确保配置文件中的端口号和地址正确,并且与你的环境相匹配。 3. 检查网络连接。你可以使用以下命令检查是否可以连接到localhost的10248端口: ```shell curl -sSL http://localhost:10248/healthz ``` 如果无法连接,请确保端口没有被防火墙或其他网络配置阻止。 4. 检查docker的配置。有时候,kubelet进程依赖于docker进程。你可以按照以下步骤检查docker的配置: - 创建/etc/docker目录: ```shell sudo mkdir /etc/docker ``` - 编辑/etc/docker/daemon.json文件,并添加以下内容: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://tdhp06eh.mirror.aliyuncs.com"] } ``` - 重启docker进程: ```shell systemctl restart docker ``` 请注意,以上步骤是一种常见的解决方法,但具体解决方法可能因环境而异。如果以上步骤无法解决问题,请提供更多的错误信息和环境配置,以便我们能够更好地帮助你。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值