标签 LVM 下的文章

在本指南中,我们将逐步介绍如何在 Linux 中创建 LVM 分区。

LVM 代表 “ 逻辑卷管理 Logical Volume Management ”,它是专门为服务器管理 Linux 系统上的磁盘或存储的推荐方式。 LVM 分区的主要优点之一是我们可以实时扩展其大小而无需停机。 LVM 分区也可以缩小,但不推荐。

为了演示,我在我的 Ubuntu 22.04 系统上连接了 15GB 磁盘,我们将从命令行在该磁盘上创建 LVM 分区。

准备
  • 连接到 Linux 系统的原始磁盘
  • 具有 sudo 权限的本地用户
  • 预装 lvm2 包

事不宜迟,让我们深入了解这些步骤。

步骤 1、识别新连接的原始磁盘

登录到你的系统,打开终端并运行以下 dmesg 命令:

$ sudo dmesg | grep -i sd

在输出中,查找大小为 15GB 的新磁盘。

dmesg-command-new-attached-disk-linux

识别新连接的原始磁盘的另一种方法是通过 fdisk 命令:

$ sudo fdisk -l | grep -i /dev/sd

输出:

fdisk-command-output-new-disk

从上面的输出,可以确认新连接的磁盘是 /dev/sdb

步骤 2、创建 PV(物理卷)

在开始在磁盘 /dev/sdb 上创建 物理卷 Physical Volume (PV)之前,请确保已安装 lvm2 包。如果未安装,请运行以下命令:

$ sudo apt install lvm2     // On Ubuntu / Debian
$ sudo dnf install lvm2    // on RHEL / CentOS

运行以下 pvcreate 命令在磁盘 /dev/sdb 上创建 PV:

$ sudo pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
$

要验证 PV 状态,运行:

$ sudo pvs /dev/sdb
或者
$ sudo pvdisplay /dev/sdb

pvdisplay-command-output-linux

步骤 3、创建 VG(卷组)

要创建 卷组 Volume Group (VG),我们将使用 vgcreate 命令。创建 VG 意味着将 PV 添加到其中。

语法:

$ sudo vgcreare <vg_name>  <pv>

在我们的例子中,命令是:

$ sudo vgcreate volgrp01 /dev/sdb
  Volume group "volgrp01" successfully created
$

运行以下命令以验证 VG(volgrp01)的状态:

$ sudo vgs volgrp01
或者
$ sudo vgdisplay volgrp01

上述命令的输出:

vgs-command-output-linux

以上输出确认大小为 15 GiB 的卷组 volgrp01 已成功创建,一个 物理扩展Physical Extend(PE)的大小为 4 MB。创建 VG 时可以更改 PE 大小。

步骤 4、创建 LV(逻辑卷)

lvcreate 命令用于从 VG 中创建 逻辑卷 Logical Volume LV。 lvcreate 命令的语法如下所示:

$ sudo lvcreate -L <Size-of-LV> -n <LV-Name>   <VG-Name>

在我们的例子中,以下命令将用于创建大小为 14 GB 的 LV:

$ sudo lvcreate -L 14G -n lv01 volgrp01
  Logical volume "lv01" created.
$

验证 LV 的状态,运行:

$ sudo lvs /dev/volgrp01/lv01
或者
$ sudo lvdisplay /dev/volgrp01/lv01

输出:

lvs-command-output-linux

上面的输出显示 LV(lv01)已成功创建,大小为 14 GiB。

步骤 5、格式化 LVM 分区

使用 mkfs 命令格式化 LVM 分区。在我们的例子中,LVM 分区是 /dev/volgrp01/lv01

注意:我们可以将分区格式化为 ext4 或 xfs,因此请根据你的设置和要求选择文件系统类型。

运行以下命令将 LVM 分区格式化为 ext4 文件系统。

$ sudo mkfs.ext4 /dev/volgrp01/lv01

mkfs-ext4-filesystem-lvm

执行下面的命令,用 xfs 文件系统格式化 LVM 分区:

$ sudo mkfs.xfs /dev/volgrp01/lv01

要使用上述格式化分区,我们必须将其挂载到某个文件夹中。所以,让我们创建一个文件夹 /mnt/data

$ sudo mkdir /mnt/data

现在运行 mount 命令将其挂载到 /mnt/data 文件夹:

$ sudo mount /dev/volgrp01/lv01 /mnt/data/
$ df -Th /mnt/data/
Filesystem                Type  Size  Used Avail Use% Mounted on
/dev/mapper/volgrp01-lv01 ext4   14G   24K   13G   1% /mnt/data
$

尝试创建一些没用的文件,运行以下命令:

$ cd /mnt/data/
$ echo "testing lvm partition" | sudo tee dummy.txt
$ cat dummy.txt
testing lvm partition
$
$ sudo rm -f  dummy.txt

完美,以上命令输出确认我们可以访问 LVM 分区。

要永久挂载上述 LVM 分区,请使用以下 echo 命令将其条目添加到 fstab 文件中:

$ echo '/dev/volgrp01/lv01  /mnt/data  ext4  defaults 0 0' | sudo  tee -a /etc/fstab
$ sudo mount -a

以上就是本指南的全部内容,感谢阅读。请在下面的评论区发表你的问题和反馈。


via: https://www.linuxtechi.com/how-to-create-lvm-partition-in-linux/

作者:James Kiarie 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux 中国 荣誉推出

LVM 为你配置存储的方式提供了极大的灵活性。

 title=

逻辑卷管理器 Logical Volume Manager (LVM)允许在操作系统和硬件之间建立一个抽象层。通常,你的操作系统会查找磁盘(/dev/sda/dev/sdb 等)和这些磁盘中的分区(/dev/sda1/dev/sdb1 等)。

LVM 在操作系统和磁盘之间创建了一个虚拟层。LVM 不是一个驱动器持有一定数量的分区,而是创建一个统一的存储池(称为 卷组 Volume Group ),跨越任意数量的物理驱动器(称为 物理卷 Physical Volume )。使用卷组中可用的存储,LVM 可以为你的操作系统提供类似磁盘和分区的功能。

操作系统完全没有意识到它被“欺骗”了。

 title=

由于 LVM 虚拟地创建卷组和逻辑卷,因此即使在系统运行时,也可以轻松调整它们的大小或移动它们,或者创建新卷。此外,LVM 提供了其它情况下不存在的特性,比如创建逻辑卷的活动快照时无需首先卸载磁盘。

LVM 中的卷组是一个命名的虚拟容器,将底层物理磁盘组合在一起。它充当一个池,可以从中创建不同大小的 逻辑卷 Logical Volume 。逻辑卷包含实际的文件系统并且可以跨越多个磁盘,并且不需要物理上连续。

特性

  • 分区名称通常具有系统名称,例如 /dev/sda1。LVM 具有便于人们理解的名称,例如 home 或者 media
  • 分区的总大小受底层物理磁盘大小的限制。在 LVM 中,卷可以跨越多个磁盘,并且仅受 LVM 中所有物理磁盘总大小的限制。
  • 分区通常只有在磁盘未使用且已卸载时才能调整大小、移动或删除。LVM 卷可以在系统运行时进行操作。
  • 只能通过分配与分区相邻的可用空间来扩展分区。LVM 卷可以从任何地方占用可用空间。
  • 扩展分区涉及移动数据以腾出可用空间,这非常耗时,并且可能会在断电期间导致数据丢失。LVM 卷可以从卷组中的任何地方占用可用空间,甚至可以在另一块磁盘上。
  • 因为在 LVM 中创建卷非常容易,所以它鼓励创建不同的卷,例如创建单独的卷来测试功能或尝试不同的操作系统。对于分区,此过程将非常耗时并且容易出错。
  • 快照只能在 LVM 中创建。它允许你创建当前逻辑卷的时间点镜像,即使在系统运行时也可以。这非常适合备份。

测试设置

作为演示,假设你的系统具有以下驱动器配置:

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
`-xvda1 202:1    0   8G  0 part /
xvdb    202:16   0   1G  0 disk
xvdc    202:32   0   1G  0 disk
xvdd    202:48   0   2G  0 disk
xvde    202:64   0   5G  0 disk
xvdf    202:80   0   8G  0 disk

步骤 1. 初始化磁盘以用于 LVM

运行 pvcreate /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf。输出应如下:

Physical volume "/dev/xvdb" successfully created
Physical volume "/dev/xvdc" successfully created
Physical volume "/dev/xvdd" successfully created
Physical volume "/dev/xvde" successfully created
Physical volume "/dev/xvdf" successfully created

使用 pvs 或者 pvdisplay 查看结果:

"/dev/xvde" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/xvde
VG Name
PV Size               5.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               728JtI-ffZD-h2dZ-JKnV-8IOf-YKdS-8srJtn

"/dev/xvdb" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/xvdb
VG Name
PV Size               1.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               zk1phS-7uXc-PjBP-5Pv9-dtAV-zKe6-8OCRkZ

"/dev/xvdd" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/xvdd
VG Name
PV Size               2.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               R0I139-Ipca-KFra-2IZX-o9xJ-IW49-T22fPc

"/dev/xvdc" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/xvdc
VG Name
PV Size               1.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               FDzcVS-sq22-2b13-cYRj-dXHf-QLjS-22Meae

"/dev/xvdf" is a new physical volume of "8.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/xvdf
VG Name
PV Size               8.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               TRVSH9-Bo5D-JHHb-g0NX-8IoS-GG6T-YV4d0p

步骤 2. 创建卷组

运行 vgcreate myvg /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf。通过 vgs 或者 vgdisplay 查看结果:

--- Volume group ---
VG Name               myvg
System ID
Format                lvm2
Metadata Areas        5
Metadata Sequence No  1
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                5
Act PV                5
VG Size               16.98 GiB
PE Size               4.00 MiB
Total PE              4347
Alloc PE / Size       0 / 0
Free  PE / Size       4347 / 16.98 GiB
VG UUID               ewrrWp-Tonj-LeFa-4Ogi-BIJJ-vztN-yrepkh

步骤 3: 创建逻辑卷

运行以下命令:

lvcreate myvg --name media --size 4G
lvcreate myvg --name home --size 4G

使用 lvs 或者 lvdisplay 验证结果:

--- Logical volume ---
LV Path                /dev/myvg/media
LV Name                media
VG Name                myvg
LV UUID                LOBga3-pUNX-ZnxM-GliZ-mABH-xsdF-3VBXFT
LV Write Access        read/write
LV Creation host, time ip-10-0-5-236, 2017-02-03 05:29:15 +0000
LV Status              available
# open                 0
LV Size                4.00 GiB
Current LE             1024
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           252:0

--- Logical volume ---
LV Path                /dev/myvg/home
LV Name                home
VG Name                myvg
LV UUID                Hc06sl-vtss-DuS0-jfqj-oNce-qKf6-e5qHhK
LV Write Access        read/write
LV Creation host, time ip-10-0-5-236, 2017-02-03 05:29:40 +0000
LV Status              available
# open                 0
LV Size                4.00 GiB
Current LE             1024
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           252:1

步骤 4: 创建文件系统

使用以下命令创建文件系统:

vgcreate myvg /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf
mkfs.ext3 /dev/myvg/media
mkfs.ext3 /dev/myvg/home

挂载它:

mount /dev/myvg/media /media
mount /dev/myvg/home /home

使用 lsblk 命令查看完整配置:

NAME         MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda         202:0    0   8G  0 disk
`-xvda1      202:1    0   8G  0 part /
xvdb         202:16   0   1G  0 disk
xvdc         202:32   0   1G  0 disk
xvdd         202:48   0   2G  0 disk
xvde         202:64   0   5G  0 disk
`-myvg-media 252:0    0   4G  0 lvm  /media
xvdf         202:80   0   8G  0 disk
`-myvg-home  252:1    0   4G  0 lvm  /home

步骤 5: 扩展 LVM

添加一块新的 /dev/xvdg 磁盘。要扩展 home 卷,运行以下命令:

pvcreate /dev/xvdg
vgextend myvg /dev/xvdg
lvextend -l 100%FREE /dev/myvg/home
resize2fs /dev/myvg/home

运行 df -h,你应该可以看到新的磁盘大小。

就是这样!

LVM 为你配置存储的方式提供了极大的灵活性。尝试一下,并享受 LVM 的乐趣!

本文首发于 作者个人博客,经授权改编。


via: https://opensource.com/article/21/9/add-storage-lvm

作者:Ayush Sharma 选题:lujun9972 译者:perfiffer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

一个关于让 Linux Mint 20.2 与逻辑卷管理器(LVM)一起工作的教程。

 title=

几周前,Linux Mint 的人员发布了他们的开源操作系统的 20.2 版本。Live ISO 中内置的安装程序非常好,只需要点击几下就可以安装操作系统。如果你想定制你的分区,你甚至有一个内置的分区软件。

安装程序重点关注在简单的安装上:定义你的分区并安装到这些分区。对于那些想要更灵活的设置的人来说, 逻辑卷管理器 logical volume manager (LVM)是个不错的选择,你可以通过设置卷组(VG)并在其中定义你的逻辑卷(LV)。

LVM 是一个硬盘管理系统,允许你在多个物理驱动器上创建存储空间。换句话说,你可以把几个小驱动器“拴”在一起,这样你的操作系统就会把它们当作一个驱动器。除此之外,它还有实时调整大小、文件系统快照和更多的优点。这篇文章并不是关于 LVM 的教程(网上已经有很多 这方面不错的信息了)。相反,我的目标是贴合这篇文章的主题,只关注让 Linux Mint 20.2 与 LVM 一起工作。

作为一个桌面操作系统,其安装程序致力于简单化,在 LVM 上安装 Linux Mint 20.2 会略微复杂一些,但不会太复杂。如果你在安装程序中选择了 LVM,你会得到一个由 Linux Mint 开发者定义的设置,而且你在安装时无法控制各个卷。

然而,有一个解决方案:在临场 ISO 中,该方案只需要在终端中使用几个命令来设置 LVM,然后你可以继续使用常规安装程序来完成工作。

我安装了 Linux Mint 20.2 和 XFCE 桌面,但其他 Linux Mint 桌面的过程也类似。

分区驱动器

在 Linux Mint 临场 ISO 中,你可以通过终端和 GUI 工具访问 Linux 命令行工具。如果你需要做任何分区工作,你可以使用命令行 fdiskparted 命令,或者 GUI 应用 gparted。我想让这些操作简单到任何人都能遵循,所以我会在可能的情况下使用 GUI 工具,在必要时使用命令行工具。

首先,为安装创建几个分区。

使用 gparted(从菜单中启动),完成以下工作:

首先,创建一个 512MB 的分区,类型为 FAT32(这是用来确保系统可启动)。512MB 对大多数人来说是富余的,你可以用 256MB 甚至更少,但在今天的大容量磁盘中,即使分配 512MB 也不是什么大问题。

 title=

接下来,在磁盘的其余部分创建一个 lvm2 pv 类型(LVM 2 物理卷)的分区(这是你的 LVM 的位置)。

 title=

现在打开一个终端窗口,并将你的权限提升到 root:

$ sudo -s
# whoami
root

接下来,你必须找到你之前创建的 LVM 成员(那个大分区)。使用下列命令之一:lsblk -fpvspvscan

# pvs
PV      VG Fmt  [...]
/dev/sda2    lvm2 [...]

在我的例子中,该分区位于 /dev/sda2,但你应该用你的输出中得到的内容来替换它。

现在你知道了你的分区有哪些设备,你可以在那里创建一个 LVM 卷组(VG):

# vgcreate vg /dev/sda2

你可以使用 vgsvgscan 看到你创建的卷组的细节。

创建你想在安装时使用的逻辑卷(LV)。为了简单,我分别创建了 root 根分区(/)和 swap 交换分区,但是你可以根据需要创建更多的分区(例如,为 /home 创建一个单独的分区)。

# lvcreate -L 80G -n root vg
# lvcreate -L 16G -n swap vg

我的例子中的分区大小是任意的,是基于我可用的空间。使用对你的硬盘有意义的分区大小。

你可以用 lvslvdisplay 查看逻辑卷。

终端操作到这就结束了。

安装 Linux

现在从桌面上的图标启动安装程序:

  • 进入 “Installation type”,选择 “Something else”。
  • 编辑 512Mb 的分区并将其改为 EFI
  • 编辑根逻辑卷,将其改为 ext4(或一个你选择的文件系统)。选择将其挂载为根目录(/),并选择将其格式化。
  • 编辑 swap 分区并将其设置为交换分区。
  • 继续正常的安装过程。Linux Mint 安装程序会将文件放在正确的位置并为你创建挂载点。

完成了。在你的 Linux Mint 安装中享受 LVM 的强大。

如果你需要调整分区大小或在系统上做任何高级工作,你会感谢选择 LVM。


via: https://opensource.com/article/21/8/install-linux-mint-lvm

作者:Kenneth Aaron 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Fedora 33 在其各类桌面版本中引入了新的默认文件系统 Btrfs。多年以来,Fedora 一直在 逻辑卷管理 Logical Volume Manager (LVM) 卷之上使用 ext4,引入 Brtfs 对 Fedora 来说是一个很大的转变。更改默认文件系统需要 令人信服的原因。虽然 Btrfs 是令人兴奋的下一代文件系统,但 LVM 上的 ext4 是成熟而稳定的。本指南旨在探索各自的高级特性,使得更容易在 Btrfs 和 LVM-ext4 之间进行选择。

先说结论

最简单的建议是坚持使用默认值。全新安装的 Fedora 33 环境默认为 Btrfs,升级之前的 Fedora 版本将继续使用最初安装的设置,通常是 LVM-ext4。对于现有的 Fedora 用户来说,获取 Btrfs 的最简单方式是全新安装。然而,全新安装比简单升级更具破坏性。除非有特殊需要,否则这种干扰可能是不必要的。Fedora 开发团队仔细考虑了这两个默认值,因此对任何一个选择都要有信心。

那么其他文件系统呢?

现在有很多 Linux 系统的文件系统。在加上卷管理器、加密方法和存储机制的组合后,这一数字呈爆炸式增长。那么,为什么要关注 btrfs 和 LVM-ext4 呢?对于 Fedora 的用户来说,这两种设置可能是最常见的。在 Fedora 11 中,LVM 之上的 ext4 成为了默认磁盘布局,在此之前则使用的是 ext3。

既然 Btrfs 是 Fedora 33 的默认设置,那么绝大多数现有用户会考虑是应该原地踏步还是向前跳跃。面对全新安装的 Fedora 33 环境,有经验的 Linux 用户可能会想知道是使用这个新的文件系统,还是退回到他们熟悉的文件系统。因此,在众多可能的存储选项中,许多 Fedora 用户会想知道如何在 Btrfs 和 LVM-ext4 之间进行选择。

两者的共性

尽管两个文件系统之间存在核心差异,但 Btrfs 和 LVM-ext4 实际上有很多共同之处。两者都是成熟且经过充分测试的存储技术。从 Fedora Core 的早期开始,就一直在使用 LVM,而 ext4 在 2009 年成为 Fedora 11 的默认设置。Btrfs 在 2009 年并入 Linux 主线内核,并且 Facebook 广泛使用了该文件系统。SUSE Linux Enterprise 12 在 2014 年使其成为默认文件系统。因此,它在生产环境中也有着长久的运行时间。

这两个系统都能很好地防止因意外停电而导致的文件系统损坏,尽管它们的实现方式不同。它们支持的配置包括使用单盘设置和跨越多个设备,并且这两种配置都能够创建近乎即时的快照。有各种工具可以帮助管理这两种系统,包括命令行和图形界面。这两种解决方案在家用台式机和高端服务器上都同样有效。

LVM-ext4 的优势

LVM 上 ext4 的结构

ext4 文件系统 专注于高性能和可伸缩性,没有太多额外的花哨之处。它能有效地防止长时间后的碎片化,并当碎片化出现后提供了 很好的工具。ext4 之所以坚如磐石,是因为它构建在前代的 ext3 文件系统之上,带来了多年的系统内测试和错误修复。

LVM-ext4 环境中的大多数高级功能都来自 LVM 本身。LVM 位于文件系统的“下方”,这意味着它支持任何文件系统。 逻辑卷 Logical volume (LV)是通用的块设备,因此 虚拟机可以直接使用它们。这种灵活性使得每个逻辑卷都可以使用合适的文件系统,用合适的选项应对各种情况。这种分层方法还遵循了“小工具协同工作”的 Unix 哲学。

从硬件抽象出来的 卷组 volume group (VG)允许 LVM 创建灵活的逻辑卷。每个逻辑卷都提取自同一个存储池,但具有自己的设置。调整卷的大小比调整物理分区的大小容易得多,因为没有数据有序放置的限制。LVM 物理卷 physical volume (PV)可以是任意数量的分区,甚至可以在系统运行时在设备之间移动。

LVM 支持只读和读写的 快照,这使得从活动系统创建一致的备份变得很容易。每个快照都有一个定义的大小,更改源卷或快照卷将占用其中的空间。又或者,逻辑卷也可以是 稀疏配置池 thinly provisioned pool 的一部分。这允许快照自动使用池中的数据,而不是使用在创建卷时定义的固定大小的块。

有多个磁盘驱动器的 LVM

当有多个设备时,LVM 才真正大放异彩。它原生支持大多数 RAID 级别,每个逻辑卷可以具有不同的 RAID 级别。LVM 将自动为 RAID 配置选择适当的物理设备,或者用户可以直接指定它。基本的 RAID 支持包括用于性能的数据条带化(RAID0)和用于冗余的镜像(RAID1)。逻辑卷也可以使用 RAID5RAID6RAID10 等高级设置。LVM RAID 支持已经成熟,因为 LVM 在底层使用的 设备映射器(dm)多设备(md) 内核支持, 与 mdadm 使用的一样。

对于具有快速和慢速驱动器的系统,逻辑卷也可以是 缓存卷。经典示例是 SSD 和传统磁盘驱动器的组合。缓存卷使用较快的驱动器来存储更频繁访问的数据(或用作写缓存),而慢速的驱动器则用于处理大量数据。

LVM 中大量稳定的功能以及 ext4 的可靠性在既往的使用中早已被证明了。当然,功能越多就越复杂。在配置 LVM 时,要找到合适的功能选项是很有挑战性的。对于单驱动器的台式机系统,LVM 的功能(例如 RAID 和缓存卷)不适用。但是,逻辑卷比物理分区更灵活,快照也很有用。对于正常的桌面使用,LVM 的复杂性会成为典型的用户可能遇到的问题恢复的障碍。

Btrfs 的优势

Btrfs 结构

从前几代文件系统中学到的经验指导了构建到 Btrfs 的功能设计。与 ext4 不同,它可以直接跨越多个设备,因此它具有通常仅在卷管理器中才能找到的功能。它还具有 Linux 文件系统空间中独有的功能(ZFS 具有相似的功能集,但不要指望它在 Linux 内核中出现)。

Btrfs 的主要功能

也许最重要的功能是对所有数据进行 校验和 checksumming 。校验和与 写时复制 copy-on-write (COW)一起,提供了在意外断电后确保文件系统完整性的 关键方法。更独特的是,校验和可以检测数据本身中的错误。悄然的数据损坏(有时也称为 bitrot)比大多数人意识到的更常见。如果没有主动验证,损坏最终可能会传播到所有可用的备份中。这使得用户没有有效的副本。通过透明地校验所有数据,Btrfs 能够立即检测到任何此类损坏。启用正确的 dup 或 raid 选项,文件系统也可以透明地修复损坏。

写时复制也是 Btrfs 的基本功能,因为它在提供文件系统完整性和即时子卷快照方面至关重要。从公共子卷创建快照后,快照会自动共享底层数据。另外,事后的 重复数据删除 deduplication 使用相同的技术来消除相同的数据块。单个文件可以通过使用 cpreflink 选项 来使用 COW 功能。reflink 副本对于复制大型文件(例如虚拟机镜像)特别有用,这些文件往往随着时间的推移具有大部分相同的数据。

Btrfs 支持跨越多个设备,而无需卷管理器。多设备支持可提供数据镜像功能以实现冗余和条带化以提高性能。此外,还实验性地支持更高级的 RAID 级别,例如 RAID 5RAID 6。与标准 RAID 设置不同,Btrfs 的 RAID1 实际上允许奇数个设备。例如,它可以使用 3 个设备,即使它们的大小不同。

所有 RAID 和 dup 选项都是在文件系统级别指定的。因此,各个子卷不能使用不同的选项。请注意,使用多设备的 RAID1 选项意味着即使一个设备发生故障,卷中的所有数据都是可用的,并且校验功能可以保持数据本身的完整性。这超出了当前典型的 RAID 设置所能提供的范围。

附加功能

Btrfs 还支持快速简便的远程备份。子卷快照可以 发送到远程系统 进行存储。通过利用文件系统中固有的 COW 元数据,这些传输通过仅发送先前发送的快照中的增量更改而非常有效。诸如 snapper 之类的用户应用程序使管理这些快照变得容易。

另外,Btrfs 卷可以具有 透明压缩 功能,并且 chattr +c 可以标记进行压缩的单个文件或目录。压缩不仅可以减少数据消耗的空间,还可以通过减少写入操作量来帮助延长 SSD 的寿命。压缩当然会带来额外的 CPU 开销,但是有很多选项就可以权衡取舍。

Btrfs 集成了文件系统和卷管理器功能,这意味着总体维护比 LVM-ext4 更简单。当然,这种集成的灵活性较低,但是对于大多数台式机甚至服务器而言,设置已足够。

LVM 上使用 Btrfs

Btrfs 可以 就地转换 ext3/ext4 文件系统。就地转换意味着无需将数据复制出来然后再复制回去。数据块本身甚至都不需要修改。因此,对于现有的 LVM-ext4 系统,一种选择是将 LVM 保留在原处,然后简单地将 ext4 转换为 Btrfs。虽然可行且受支持,但有一些原因使它不是最佳选择。

Btrfs 的吸引力之一是与卷管理器集成的文件系统所带来的更轻松的管理。要是在 LVM 之上运行,对于系统维护,仍然要对额外的卷管理器进行一些设置。同样,LVM 设置通常具有多个固定大小的逻辑卷,并具有独立文件系统。虽然 Btrfs 支持给定的计算机上的多个卷,但是许多不错的功能都需要单一卷具有多个子卷。如果每个 LVM 卷都有一个独立的 Btrfs 卷,则用户仍然需要手动管理固定大小的 LVM 卷。虽然能够收缩挂载的 Btrfs 文件系统的能力确实使处理固定大小的卷的工作变得更轻松。通过在线收缩功能,就无需启动 实时镜像 了。

在使用 Btrfs 的多设备支持时,必须仔细考虑逻辑卷的物理位置。对于 Btrfs 而言,每个逻辑卷都是一个单独的物理设备,如果实际情况并非如此,则某些数据可用性功能可能会做出错误的决定。例如,如果单个驱动器发生故障,对数据使用 RAID1 通常可以提供保护。如果实际逻辑卷在同一物理设备上,则没有冗余。

如果强烈需要某些特定的 LVM 功能,例如原始块设备或高速缓存的逻辑卷,则在 LVM 之上运行 Btrfs 是有意义的。在这种配置下,Btrfs 仍然提供其大多数优点,例如校验和和易于发送的增量快照。尽管使用 LVM 会产生一些操作开销,但 Btrfs 的这种开销并不比任何其他文件系统大。

总结

当尝试在 Btrfs 和 LVM-ext4 之间进行选择时,没有一个正确的答案。每个用户都有独特的要求,并且同一用户可能拥有具有不同需求的不同系统。看一下每个配置的功能集,并确定是否有令人心动的功能。如果没有,坚持默认值没有错。选择这两种设置都有很好的理由。


via: https://fedoramagazine.org/choose-between-btrfs-and-lvm-ext4/

作者:Troy Curtis Jr 选题:lujun9972 译者:Chao-zhi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

有时需要在系统中添加另一块磁盘。这就是 逻辑卷管理 Logical Volume Management (LVM)的用武之地。LVM 的好处之处在于它相当灵活。有几种方法可以添加一块磁盘。这篇文章介绍了一种方法。

注意!

这篇文章并不包括将新的磁盘物理地安装到系统中的过程。请查阅你的系统和磁盘文档,了解如何正确地进行安装。

重要: 一定要确保你已经备份重要数据。如果新磁盘已有数据,那么本文中描述的步骤将破坏数据。

最好了解

本文并没有深入介绍 LVM 的每一个功能,重点是添加磁盘。但基本上你要了解,LVM 有 卷组 volume group (VG),它由一个或多个分区和/或磁盘组成。你把这些分区或磁盘以 物理卷 physical volume (PV)的方式添加到卷组。一个卷组可以分成许多 逻辑卷 logical volume (LV)。逻辑卷可以作为文件系统、ramdisk 等其他存储使用。更多信息可以在这里)中找到。

可以看作是,把物理卷形成一个存储池(一个卷组),然后从这个存储池中划分出逻辑卷,供你的系统直接使用。

准备

确保你能看到你要添加的磁盘。在添加磁盘之前使用 lsblk 查看哪些存储空间已经可用或正在使用。

$ lsblk
NAME                   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
zram0                  251:0    0  989M  0 disk [SWAP]
vda                    252:0    0   20G  0 disk
├─vda1                 252:1    0    1G  0 part /boot
└─vda2                 252:2    0   19G  0 part
└─fedora_fedora-root   253:0    0   19G  0 lvm  /

本文使用的是带有虚拟存储的虚拟机,因此设备名称以 vda 开头代表第一个磁盘,vdb 代表第二个磁盘,以此类推。你的设备名称可能不同。许多系统会将 sda 作为第一个物理磁盘,sdb 代表第二个磁盘,以此类推。

当已连接新磁盘,并且你的系统已备份且正在运行,再次使用 lsblk 来查看新的块设备。

$ lsblk
NAME                   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
zram0                  251:0    0  989M  0 disk [SWAP]
vda                    252:0    0   20G  0 disk
├─vda1                 252:1    0    1G  0 part /boot
└─vda2                 252:2    0   19G  0 part
└─fedora_fedora-root 253:0    0   19G  0 lvm  /
vdb                    252:16   0   10G  0 disk

现在有一个名为 vdb 的新设备。该设备的位置是 /dev/vdb

$ ls -l /dev/vdb
brw-rw----. 1 root disk 252, 16 Nov 24 12:56 /dev/vdb

我们可以看到磁盘,但我们还不能用 LVM 来使用它。如果你运行 blkid,你应该不会看到它被列出。对于这个和之后的命令,你需要确保你的系统已配置好,这样你可以使用 sudo

$ sudo blkid
/dev/vda1: UUID="4847cb4d-6666-47e3-9e3b-12d83b2d2448" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="830679b8-01"
/dev/vda2: UUID="k5eWpP-6MXw-foh5-Vbgg-JMZ1-VEf9-ARaGNd" TYPE="LVM2_member" PARTUUID="830679b8-02"
/dev/mapper/fedora_fedora-root: UUID="f8ab802f-8c5f-4766-af33-90e78573f3cc" BLOCK_SIZE="4096" TYPE="ext4"
/dev/zram0: UUID="fc6d7a48-2bd5-4066-9bcf-f062b61f6a60" TYPE="swap"

将磁盘添加到 LVM 中

使用 pvcreate 初始化磁盘。你需要传递设备的完整路径。在这个例子中,它是 /dev/vdb。在你的系统中,它可能是 /dev/sdb 或其他设备名。

$ sudo pvcreate /dev/vdb
Physical volume "/dev/vdb" successfully created.

当你运行 blkid 时,你应该看到磁盘已经被初始化为一个 LVM2_member

$ sudo blkid
/dev/vda1: UUID="4847cb4d-6666-47e3-9e3b-12d83b2d2448" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="830679b8-01"
/dev/vda2: UUID="k5eWpP-6MXw-foh5-Vbgg-JMZ1-VEf9-ARaGNd" TYPE="LVM2_member" PARTUUID="830679b8-02"
/dev/mapper/fedora_fedora-root: UUID="f8ab802f-8c5f-4766-af33-90e78573f3cc" BLOCK_SIZE="4096" TYPE="ext4"
/dev/zram0: UUID="fc6d7a48-2bd5-4066-9bcf-f062b61f6a60" TYPE="swap"
/dev/vdb: UUID="4uUUuI-lMQY-WyS5-lo0W-lqjW-Qvqw-RqeroE" TYPE="LVM2_member"

你可以使用 pvs 列出当前所有可用的物理卷:

$ sudo pvs
PV         VG            Fmt  Attr PSize   PFree
/dev/vda2  fedora_fedora lvm2 a--  <19.00g     0
/dev/vdb                 lvm2 ---   10.00g 10.00g

/dev/vdb 被列为一个 PV (物理卷),但还没有分配到一个 VG (卷组)。

将物理卷添加到一个卷组

你可以使用 vgs 找到可用的卷组列表:

$ sudo vgs
VG            #PV #LV #SN Attr   VSize   VFree
fedora_fedora   1   1   0 wz--n- 19.00g    0

在本例中,只有一个卷组可用。接下来,将物理卷添加到 fedora_fedora

$ sudo vgextend fedora_fedora /dev/vdb
Volume group "fedora_fedora" successfully extended

你现在应该看到物理卷已被添加到卷组中:

$ sudo pvs 
PV        VG            Fmt  Attr PSize   PFree
/dev/vda2 fedora_fedora lvm2 a–   <19.00g 0
/dev/vdb  fedora_fedora lvm2 a–   <10.00g <10.00g

看一下卷组:

$ sudo vgs
VG            #PV #LV #SN Attr  VSize  VFree
fedora_fedora 2   1   0   wz–n- 28.99g <10.00g

你也可以获得具体卷组和物理卷的详细列表:

$ sudo vgdisplay fedora_fedora
--- Volume group ---
VG Name               fedora_fedora
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                2
Act PV                2
VG Size               28.99 GiB
PE Size               4.00 MiB
Total PE              7422
Alloc PE / Size       4863 / 19.00 GiB
Free  PE / Size       2559 / 10.00 GiB
VG UUID               C5dL2s-dirA-SQ15-TfQU-T3yt-l83E-oI6pkp

看下物理卷:

$ sudo pvdisplay /dev/vdb
--- Physical volume ---
PV Name               /dev/vdb
VG Name               fedora_fedora
PV Size               10.00 GiB / not usable 4.00 MiB
Allocatable           yes
PE Size               4.00 MiB
Total PE              2559
Free PE               2559
Allocated PE          0
PV UUID               4uUUuI-lMQY-WyS5-lo0W-lqjW-Qvqw-RqeroE 

现在我们已经添加了磁盘,我们可以为逻辑卷 (LV) 分配空间:

$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root fedora_fedora -wi-ao---- 19.00g

看一下逻辑卷。下面是详细的逻辑卷信息:

$ sudo lvdisplay fedora_fedora/root
--- Logical volume ---
LV Path                /dev/fedora_fedora/root
LV Name                root
VG Name                fedora_fedora
LV UUID                yqc9cw-AvOw-G1Ni-bCT3-3HAa-qnw3-qUSHGM
LV Write Access        read/write
LV Creation host, time fedora, 2020-11-24 11:44:36 -0500
LV Status              available
LV Size                19.00 GiB
Current LE             4863
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:0

查看根文件系统(/)的大小,并将它与逻辑卷大小进行比较。

$ df -h /
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/fedora_fedora-root   19G  1.4G   17G   8% /

逻辑卷和文件系统大小都为 19G。让我们给根逻辑卷(root)增加 5G。

$ sudo lvresize -L +5G fedora_fedora/root
Size of logical volume fedora_fedora/root changed from 19.00 GiB (4863 extents) to 24.00 GiB (6143 extents).
Logical volume fedora_fedora/root successfully resized.

我们现在有 24G 的逻辑卷可用。看看根文件系统(/)。

$ df -h /
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/fedora_fedora-root   19G  1.4G   17G   8% /

我们仍然显示只有 19G 的空闲空间,这是因为逻辑卷与文件系统不一样。要使用增加到逻辑卷的新空间,请调整文件系统的大小。

$ sudo resize2fs /dev/fedora_fedora/root
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/fedora_fedora/root is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 3
The filesystem on /dev/fedora_fedora/root is now 6290432 (4k) blocks long.

看看文件系统的大小。

$ df -h /
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/fedora_fedora-root   24G  1.4G   21G   7% /

正如你所看到的,根文件系统(/)已经占用了逻辑卷上的所有可用空间,而且不需要重新启动。

现在你已经将一个磁盘初始化为物理卷,并使用新的物理卷扩展了卷组。之后,你增加了逻辑卷的大小,并调整了文件系统的大小,以使用逻辑卷的新空间。


via: https://fedoramagazine.org/add-storage-to-your-fedora-system-with-lvm/

作者:Tim Bosse 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LVM 是一个逻辑卷管理工具,包括分配磁盘、条带化、镜像和调整逻辑卷的大小。它在 Fedora 安装中被普遍使用(在 BTRFS 作为默认文件系统之前是 LVM + Ext4)。但是你是否曾经遇到过启动系统时,GNOME 提示 home 卷几乎没有空间了!幸运的是,很有可能有一些空间在另一个卷中,而未被使用,可以用于重新分配。下面就来看看如何用 LVM 回收硬盘空间。

在卷之间轻松重新分配空间的关键是逻辑卷管理器(LVM)。Fedora 32 及以前的系统默认使用 LVM 来划分磁盘空间。这种技术类似于标准的硬盘分区,但 LVM 更加灵活。LVM 不仅可以实现灵活的卷大小管理,还可以实现一些高级功能,比如读写快照、在多个硬盘上进行数据条带化或镜像、将高速硬盘作为慢速硬盘的缓存等等。所有这些高级选项可能会让人有点不知所措,但调整卷的大小很简单的。

LVM 基础

卷组(VG)作为 LVM 系统中的主要容器。默认情况下,Fedora 只定义了一个卷组,但你可以根据需要定义多个卷组。实际的硬盘和硬盘分区被添加到卷组中作为物理卷(PV)。物理卷会将可用的空间添加到卷组中。一个典型的 Fedora 安装有一个格式化的启动分区,其余的硬盘是一个配置为 LVM 物理卷的分区。

从这个可用空间池中,卷组分配了一个或多个逻辑卷(LV)。这些卷类似于硬盘分区,但没有磁盘上连续空间的限制。LVM 的逻辑卷甚至可以跨越多个设备!就像硬盘分区一样,逻辑卷有一个定义的大小,可以包含任何文件系统,然后可以挂载到特定的目录。

需要什么

在 gnome-disks 应用中确认系统使用 LVM ,并确保其他卷中有可用的空间。如果没有可以从另一个卷中回收的空间,这个指南就没有用。还需要一个 Fedora 临场 CD/USB。任何需要收缩的文件系统都必须卸载。从 临场 Live 镜像运行,可以让硬盘上的所有卷保持未挂载状态,甚至包括像 //home 这样的重要目录。

Use gnome-disks to verify free space

一句话警告

按照这个指南,应该不会丢失任何数据,但它确实会使用一些非常底层和强大的命令。一个错误可能会破坏硬盘上的所有数据。所以要先备份磁盘上的所有数据!

调整 LVM 卷的大小

开始时,启动 Fedora 临场镜像并在对话框中选择 “Try Fedora”。接下来,使用 “Run Command” 启动 “blivet-gui” 应用(按 Alt-F2,输入 blivet-gui,然后按回车)。选择左侧 “LVM” 下的卷组。逻辑卷在右边。

Explore logical volumes in blivet-gui

逻辑卷标签由卷组名称和逻辑卷名称组成。在本例中,卷组是 fedora_localhost-live,分配了 homerootswap 逻辑卷。要找到完整的卷,选择每一个卷,点击“齿轮”图标,然后选择 “resize”。调整大小对话框中的滑块表示卷的允许大小。左边的最小值是文件系统中已经使用的空间,所以这是最小可能的尺寸大小(不删除数据)。右边的最大值是基于卷组中的最大可用空间。

Resize dialog in blivet-gui

灰色的 “resize” 选项意味着该卷已经满了,而且卷组中没有可用空间。

现在可以更改大小了!查看所有的卷,就像上面的截图那样,找到一个有足够空间的卷。并像上面的截图那样,在所有的卷中找到一个有大量额外空间的卷。向左移动滑块来设置新的大小。腾出足够的空间对整个卷有用,但仍然要为未来的数据增长留出足够的空间。否则,这个卷将是下一个被填满的卷。

点击 “resize”,注意卷列表中出现了一个新项目:“free space”。现在选择这次要调整的卷,并将滑块一直向右移动。按 “resize” 键,并查看新改进的卷的布局。然而,硬盘驱动器上的任何东西现在都还没有改变。点击“勾选”选项将更改提交到磁盘。

Review changes in blivet-gui

查看更改的摘要,如果一切看起来都是正确的,点击 “Ok” 继续。等待 “blivet-gui” 完成。现在重新启动回到 Fedora,可以使用之前被充满的卷上的新空间了。

为未来计划

要知道任何特定卷在未来需要多少空间是很困难的。与其立即分配所有可用的空闲空间,不如考虑在卷组中留出空闲空间。事实上,Fedora Server 默认在卷组中保留空间。当一个卷处于在线和使用中时,扩展卷是可能的。不需要临场镜像或重启。当一个卷几乎满的时候,可以使用部分可用空间轻松扩展卷并继续工作。遗憾的是,默认的磁盘管理器 gnome-disks 不支持 LVM 卷的大小调整,所以安装 blivet-gui 作为图形化管理工具。另外,还有一个简单的终端命令来扩展卷:

lvresize -r -L +1G /dev/fedora_localhost-live/root

总结

用 LVM 回收硬盘空间只是 LVM 功能的表面。大多数人,特别是在桌面中,可能不需要更高级的功能。然而,当需要的时候,LVM 就在那里,尽管它的实现可能会变得有点复杂。从 Fedora 33 开始,BTRFS 是默认的文件系统,没有 LVM。BTRFS 可以更容易管理,同时对于大多数常见的使用来说也足够灵活。查看最近 Fedora Magazine 关于 BTRFS 的文章了解更多。


via: https://fedoramagazine.org/reclaim-hard-drive-space-with-lvm/

作者:Troy Curtis Jr 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出