实践[Linux] 两块不同磁盘(13T+12T)如何挂载

遇到一个问题,我们购买了几台服务器,有一台服务器是作为数据存储使用,采购方采购了25T,分配下来是13T+12T的组合方式我之前以为是ext4不能分配25T,后来查资料得知ext4最大容量1EB,但是如果直接挂载到Linux磁盘下会导致出现俩挂载点,这不是我们想要的,我们需要两块磁盘合并挂载。

方案

  1. 使用mdamd来实现raid磁盘挂载
  2. 使用vg挂载虚拟磁盘

但是因为raid的短板效应,导致我们最终实现少了1T,这是不能接受的,所以我们最终选择了虚拟磁盘卷的LVM方式挂载,但是这种方式并不是很熟,故作记录如何使用vg实现多个磁盘合并挂载。本次并不直接挂载真实硬盘,而是使用虚拟机挂载。

概念

LVM:逻辑卷管理器,可以动态地扩大和缩小分区,LVM需要使用软件包为lvm2,LVM之所以能够伸缩容量,其实现的方法就是将LV里空闲的PE移出,或向LV中添加空闲pe

  • PV: (Physical Volume)物理卷: 分区后在未格式化为文件系统前,使用pvcreate将分区转化为pv,要求分区的system Id为8e, 即为LVM格式的系统标识
  • VG: (Volume Group)卷组: 将多个pv组合起来,使用vgcreate创建成卷组,一个卷组包含了多个PV,相当于重新整合了多个分区后得到的磁盘.虽然整合多个PV,但是VG的所有空间都是根据PE大小划分为多个PE,在LVM模式下的存储都以PE为单元,类似于文件系统中的Block
  • PE: (Physical Extend)物理存储单元: VG中的存储单元,是数据实际存储的位置
  • LV: (Logical Volume)分区: 对VG中的PE单元进行划分,划分为LV后就相当于划分了分区,只需再对LV进行格式化,就可以变为普通文件系统
  • LE: (Logical Extent)逻辑存储单元:也是LV中的逻辑单元,和pe大小一样,从vg中划分lv,实际上是从vg中划分vg中的pe,划分为lv后就不再称为pe,而称为le.

指令如下

命令 解释
pvcreate 将物理磁盘分区标记为物理磁盘卷,物理卷是LVM的基本构建块,这也是数据实际存储的位置
vgcreate 创建卷组,由一个或多个物理卷组成
lvcreate 在卷组中创建逻辑卷, 逻辑卷类似于传统分区,可以分配卷组大小

具体操作流程如下

bash 复制代码
sudo lsblk                                                               查看需要挂载的盘符
sudo pvcreate /dev/sdb /dev/sdc                                          标记物理磁盘为物理卷
sudo vgcreate test_volume_group /dev/sdb /dev/sdc                        创建逻辑卷组
sudo lvcreate -l 100%FREE -n test_logical_volume test_volume_group       创建逻辑卷分区
sudo mkfs.ext4 /dev/test_volume_group/test_logical_volume                格式化分区
sudo mkdir /mnt/greged_disks                                             创建挂载目录
sudo mount /dev/test_volume_group/test_logical_volume /mnt/greged_disks/ 挂载逻辑卷

1. 准备工作

  • 我们首先创建两块虚拟磁盘,每个磁盘分配2G内存
  • 本次虚拟机平台为ubuntu22.04 内部服务器使用的Linux发行版
  • 安装 lvm2:sudo apt install lvm2

2. 创建逻辑卷组

使用 pvcreate 创建物理卷

bash 复制代码
lsblk
sdb                                       8:16   0     2G  0 disk 
sdc                                       8:32   0     2G  0 disk 

sudo pvcreate /dev/sdb /deb/sdc       # 创建物理卷

3. 创建卷组

使用vgcreate创建卷组,我们创建一个分组 名称为test_volume_group

shell 复制代码
sudo vgcreate test_volume_group /dev/sdb /dev/sdc

4. 创建逻辑卷

使用lvcreatetest_volume_group逻辑卷组中,创建逻辑卷,大小为100%空间

perl 复制代码
sudo lvcreate -l 100%FREE -n test_logical_volume test_volume_group 

5. 格式化物理卷

使用mkfs.ext4格式化卷为ext4格式

bash 复制代码
sudo mkfs.ext4 /dev/test_volume_group/test_logical_volume

5. 挂载磁盘

创建挂载点,并使用mount将卷挂载到文件夹中

bash 复制代码
sudo mkdir /mnt/greged_disks                                             创建挂载目录
sudo mount /dev/test_volume_group/test_logical_volume /mnt/greged_disks/ 挂载逻辑卷

6. 配置开启自动挂载

改写/etc/fstab文件,并添加磁盘到该文件中,但是最好使用生成的UUID

Linux中设备与引导过程中的设备名称并不是持久性的,相同的设备名称可能会因为扫描顺序的改变或时间戳的变化导致原先分配的设备名称并不对应真实设备

参考:https://access.redhat.com/solutions/44389

xml 复制代码
sudo blkid                         # 查看磁盘uuid
vim /etc/fstab

# <file system>                       <mount point>   <type>  <options> <dump>  <pass>
UUID=16b7f2e7-9a6e-4194-b299-9f474a6073ef  /mnt/greged_disks  ext4  defaults  0  0
相关推荐
AmosTian36 分钟前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
这我可不懂3 小时前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇4 小时前
java idea 本地debug linux服务
java·linux·intellij-idea
tan77º4 小时前
【Linux网络编程】Socket - TCP
linux·网络·c++·tcp/ip
kfepiza5 小时前
Linux的`if test`和`if [ ]中括号`的取反语法比较 笔记250709
linux·服务器·笔记·bash
CodeWithMe5 小时前
【Note】《深入理解Linux内核》 第十九章:深入理解 Linux 进程通信机制
linux·运维·php
vvw&6 小时前
Linux 中的 .bashrc 是什么?配置详解
linux·运维·服务器·chrome·后端·ubuntu·centos
tao3556677 小时前
树莓派免密登录(vs code/cursor)
linux·嵌入式硬件·ssh
是阿建吖!7 小时前
【Linux | 网络】socket编程 - 使用UDP实现服务端向客户端提供简单的服务
linux·网络·udp
Clownseven8 小时前
SFTP服务器搭建实战:腾讯云 Linux 上的快速安全文件传输方案
linux·服务器·腾讯云