Linux 管理员 - 卷管理

逻辑卷管理 (LVM) 是 Linux 用于管理不同物理硬盘上的存储卷的一种方法。不要将其与 RAID 混淆。但是,可以将其视为与 RAID 0 或 J-Bod 类似的概念。使用 LVM,可以拥有(例如)三个 1TB 的物理磁盘,然后是大约 3TB 的逻辑卷,例如 /dev/sdb。或者甚至两个 1.5TB 的逻辑卷、5 个 500GB 的卷或任何组合。甚至可以使用一个磁盘来获取逻辑卷的快照。

注意 − 如果配置正确,使用逻辑卷实际上会增加磁盘 I/O。这与 RAID 0 将数据分拆到不同磁盘的方式类似。

在学习使用 LVM 进行卷管理时,如果我们知道 LVM 中每个组件是什么,就会容易得多。请研究下表以牢牢掌握每个组件。如果需要,请使用 Google 进行研究。了解逻辑卷的每个部分对于管理它们非常重要。

PV 物理卷 sda
PP 物理分区 sda1 , sda2
VG 卷组 池化物理资源
LV 逻辑卷 被视为操作系统的存储设施

A 物理卷将被视为 /dev/sda、/dev/sdb;Linux 检测到的物理磁盘。

物理分区将是由磁盘实用程序(如 fdisk)分区的磁盘部分。请记住,在大多数常见的 LVM 设置中不建议使用物理分区。示例:磁盘 /dev/sda 被划分为两个物理分区:/dev/sda1/dev/sda1

如果我们有两个物理磁盘,每个磁盘 1TB,我们可以在这两个磁盘之间创建一个接近 2TB 的 卷组

从卷组中,我们可以创建三个 逻辑卷,每个逻辑卷的大小均可,但不得超过总卷组大小。

传统 Linux 磁盘管理工具

在熟悉 CentOS 7 中用于 LVM 管理的最新和最强大的功能工具之前,我们应该首先探索用于 Linux 磁盘管理的更传统的工具。这些工具将派上用场,并且仍可与当今先进的 LVM 工具(如系统存储管理器:lsblk、parted 和 mkfs.xfs)一起使用。

现在,假设我们已向系统添加了另一个或两个磁盘,我们需要枚举 Linux 检测到的磁盘。我始终建议每次在执行被视为破坏性的操作之前枚举磁盘。lsblk 是获取磁盘信息的绝佳工具。让我们看看 CentOS 检测到哪些磁盘。

[root@localhost rdc]# lsblk
NAME         MAJ:MIN    RM    SIZE    RO    TYPE MOUNTPOINT
sda            8:0       0     20G     0        disk 
├─sda1         8:1       0      1G     0     part /boot
└─sda2         8:2       0     19G     0        part 
  ├─cl-root  253:0       0     17G     0      lvm  /
  └─cl-swap  253:1       0      2G     0      lvm  [SWAP]
    sdb       8:16       0      6G     0       disk 
    sdc       8:32       0      4G     0       disk 
    sr0       11:0       1   1024M     0       rom 

如您所见,此系统上有三个磁盘:sda、sdb 和 sdc。

磁盘 sda 包含我们工作的 CentOS 安装,因此我们不想摆弄 sda。sdbsdc 都已添加到本教程的系统中。让我们让这些磁盘可用于 CentOS。

创建磁盘标签

[root@localhost rdc]# parted /dev/sdb mklabel GPT
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this
   disk will be lost. Do you want to continue?
Yes/No? Yes                               
[root@localhost rdc]#

现在我们有一个带标签的磁盘。只需在 sdc 上以相同方式运行 parted 命令即可。

在磁盘上创建分区

我们将在每个磁盘上只创建一个分区。要创建分区,再次使用 parted 命令。

[root@localhost rdc]# parted -a opt /dev/sdb mkpart primary ext4 0% 100%

Warning − You requested a partition from 0.00B to 6442MB (sectors 0..12582911).(警告 −您请求的分区大小为 0.00B 到 6442MB(扇区 0..12582911)。)

The closest location we can manage is 17.4kB to 1048kB (sectors 34..2047).(我们可以管理的最近位置是 17.4kB 到 1048kB(扇区 34..2047)。)

您还能接受这个位置吗?

Yes/No? NO

[root@localhost rdc]# parted -a opt /dev/sdc mkpart primary ext4 0% 100%

信息 − 您可能需要更新 /etc/fstab。

[root@localhost rdc]# lsblk                                               
NAME        MAJ:MIN   RM    SIZE    RO    TYPE MOUNTPOINT
sda           8:0      0     20G     0        disk 
├─sda1        8:1      0      1G     0      part / boot
└─sda2        8:2      0     19G     0        part 
 ├─cl-root  253:0      0     17G     0       lvm  /
 └─cl-swap  253:1      0      2G     0       lvm  [SWAP]
sdb          8:16      0      6G     0        disk 
└─sdb1       8:17      0      6G     0        part 
 sdc         8:32      0      4G     0        disk 
└─sdc1       8:33      0      4G     0        part 
sr0          11:0      1   1024M     0        rom

[root@localhost rdc]#

从 lsblk 输出中可以看到,我们现在有两个分区,分别位于 sdb 和 sdc 上。

创建文件系统

最后,在安装和使用任何卷之前,我们需要添加一个文件系统。我们将使用 XFS 文件系统。

root@localhost rdc]# mkfs.xfs -f /dev/sdb1
meta-data = /dev/sdb1               isize = 512    agcount = 4, agsize = 393088 blks
            =                      sectsz = 512    attr = 2, projid32bit = 1
            =                         crc = 1      finobt = 0, sparse = 0
data        =                       bsize = 4096   blocks = 1572352, imaxpct = 25
            =                       sunit = 0      swidth = 0 blks
naming      = version 2             bsize = 4096   ascii-ci = 0 ftype = 1
log         = internal log          bsize = 4096   blocks = 2560, version = 2
            =                      sectsz = 512    sunit = 0 blks, lazy-count = 1
realtime    = none                  extsz = 4096   blocks = 0, rtextents = 0
[root@localhost rdc]# mkfs.xfs -f /dev/sdc1
meta-data   = /dev/sdc1             isize = 512    agcount = 4, agsize = 262016 blks
            =                      sectsz = 512    attr = 2, projid32bit = 1
            =                         crc = 1      finobt = 0, sparse = 0
data        =                       bsize = 4096   blocks = 1048064, imaxpct = 25
            =                       sunit = 0      swidth = 0 blks
naming      = version 2             bsize = 4096   ascii-ci = 0 ftype = 1
log         = internal log          bsize = 4096   blocks = 2560, version = 2
            =                      sectsz = 512    sunit = 0 blks, lazy-count = 1
realtime    = none                  extsz = 4096   blocks = 0, rtextents = 0

[root@localhost rdc]# 

让我们检查一下,确保每个文件系统都可用。

[root@localhost rdc]# lsblk -o NAME,FSTYPE
NAME           FSTYPE
sda         
├─sda1         xfs
└─sda2         LVM2_member
 ├─cl-root     xfs
 └─cl-swap     swap
sdb         
└─sdb1         xfs
sdc         
└─sdc1         xfs
sr0

[root@localhost rdc]# 

现在每个都使用 XFS 文件系统。让我们挂载它们、检查挂载情况,并将文件复制到每个。

[root@localhost rdc]# mount -o defaults /dev/sdb1 /mnt/sdb
[root@localhost rdc]# mount -o defaults /dev/sdc1 /mnt/sdc

[root@localhost ~]# touch /mnt/sdb/myFile /mnt/sdc/myFile
[root@localhost ~]# ls /mnt/sdb /mnt/sdc
 /mnt/sdb:
  myFile

 /mnt/sdc:
  myFile

此时我们有两个可用的磁盘。但是,它们只有在我们手动安装时才可用。要在启动时安装每个磁盘,我们必须编辑 fstab 文件。此外,必须为需要访问新磁盘的组设置权限。

创建卷组和逻辑卷

CentOS 7 的最大新增功能之一是包含一个名为 系统存储管理器ssm 的实用程序。系统存储管理器 大大简化了在 Linux 上管理 LVM 池和存储卷的过程。

我们将介绍在 CentOS 中创建简单卷池和逻辑卷的过程。第一步是安装系统存储管理器。

[root@localhost rdc]# yum install system-storage-manager

让我们使用 ssm list 命令查看我们的磁盘。

SSM List Command

如上所示,系统上总共安装了三个磁盘。

  • /sdba1 − 托管我们的 CentOS 安装

  • /sdb1 − 安装在 /mnt/sdb

  • /sdc1 −挂载在 /mnt/sdc

我们想要做的是使用两个磁盘(sdb 和 sdc)创建一个 卷组。然后为系统提供三个 3GB 逻辑卷。

让我们创建卷组。

[root@localhost rdc]# ssm create -p NEW_POOL /dev/sdb1 /dev/sdc1

默认情况下,ssm 将创建一个扩展整个 10GB 池的逻辑卷。我们不想要这个,所以让我们删除它。

[root@localhost rdc]# ssm remove /dev/NEW_POOL/lvol001
 Do you really want to remove active logical volume NEW_POOL/lvol001? [y/n]: y
 Logical volume "lvol001" successfully removed
[root@localhost rdc]# 

最后,让我们创建三个逻辑卷。

[root@localhost rdc]# ssm create -n disk001 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk002 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk003 --fs xfs -s 3GB -p NEW_POOL

现在,让我们检查一下新卷。

Volumes

现在,我们有三个独立的逻辑卷,分布在两个物理磁盘分区上。

逻辑卷是 CentOS Linux 中内置的一项强大功能。我们已经触及了管理这些逻辑卷的皮毛。掌握池和逻辑卷需要通过 Tutorials Point 的实践和扩展学习来完成。现在,您已经了解了 CentOS 中 LVM 管理的基础知识,并能够在单个主机上创建基本的条带化逻辑卷。