感受 LVM 的妙用

基本概念

  • 物理存储:指的是物理的硬盘,在 /dev 目录下的 sda、sdb 等。
  • 物理卷:指的是物理硬盘上的分区或逻辑上与磁盘分区具有相同功能的设备,是 LVM 的基本存储块,但和分区相比,却包含了与LVM管理相关的参数。
  • 卷组: LVM 的卷组类似于物理硬盘,卷组上边可以建立多个虚拟的分区,LVM 卷组由一个或多个物理卷组成。
  • 逻辑卷: LVM 的逻辑卷类似于非 LVM 系统中的硬盘分区,在逻辑卷上边可以建立文件系统,用于 mount 到不同的挂载点,提升分区空间——真正跟用户打交道的部分
  • Physcial Extent:每一个物理卷被划分为一个个的基本存储单元,每一个 PE 都具有唯一的编址(类似于物理磁盘上的磁盘地址),PE 的大小默认为 4MB。
  • Logical Extent:每一个逻辑卷也被划分为一个个的基本存储单元,每一个 LE 也具有唯一的编址,在同一个卷组中,LE 和 PE 的大小是相等的。

实验环境

  • Ubuntu Server 16.04 LTS
  • 已安装好系统的 1T 硬盘
  • 2 块 2T 空硬盘

实验步骤

小提示

请在 root 用户下操作,否则所有命令前请加 sudo

分区

# 格式化
fdisk /dev/sda
Command(m for help): n  (创建新分区)
# 接下来选择创建主分区、默认分区号为 1,把所有空间全部分配给这个分区(默认即可)
# 使用 p 查看分区情况,使用 t 命令(30 为 Linux LVM)
Hex code (type L to list codes): 30
# 最后再用 w 命令保存分区表
# 另外一块也按照以上的步骤格式化为 `LVM` 格式

建立 LVM 分区和 VG 逻辑卷组

# 为硬盘创建 PV
pvcreate /dev/sda1 /dev/sdb1

# 查看当前所有的 PV 列表
pvdisplay

# 利用新增的 PV 创建 VG
vgcreate extspace /dev/sda1 /dev/sdb1

# 查看当前的 VG 列表
vgdisplay

创建逻辑卷

# 从 VG 中创建一个 3.6T 大小的 LV
lvcreate --name data --size 3.6T asc-vg

# 查看当前已有的 LV 列表
lvdisplay

挂载逻辑卷

# 格式化 LV 为 ext4 文件格式
mkfs.ext4 /dev/asc-vg/data 

# 挂载 LV 到 data 目录
mount /dev/asc-vg/data /home/data

配置自动挂载

# 修改 /etc/fstab,增加以下几行:
/dev/asc-vg/data /home/data ext4 rw,noatime 0 0

后期扩容

(2022年5月16日更新)

# 格式化新硬盘
fdisk /dev/sdb2

# 新建 PV
pvcreate /dev/sdb2

# 将新 PV 添加到已有的 VG zu
vgextend asc-vg /dev/sdb2

# 利用新磁盘为原来的 LV 进行扩容
lvextend -L +2T /dev/asc-vg/data

# 重新计算索引使扩容磁盘空间实时生效
resize2fs -p -F /dev/mapper/asc-vg-data

# 查看扩容后的容量空间
df -hTl

版权声明:如无特别声明,本文版权归 Mr Li 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 在 Linux 系统上没有磁盘阵列实现合并磁盘 》

本文链接:https://lisz.me/tech/linux/linux-lvm.html