标签 LVM 下的文章

如果你的 LVM 不再需要使用某个设备,你可以使用 vgreduce 命令从卷组中删除物理卷。

vgreduce 命令可以通过删除物理卷来缩小卷组的容量。但要确保该物理卷没有被任何逻辑卷使用,请使用 pvdisplay 命令查看。如果物理卷仍在使用,你必须使用 pvmove 命令将数据转移到另一个物理卷。

数据转移后,它就可以从卷组中删除。

最后使用 pvremove 命令删除空物理卷上的 LVM 标签和 LVM 元数据。

将扩展块移动到现有物理卷上

使用 pvs 命令检查是否使用了所需的物理卷(我们计划删除 LVM 中的 /dev/sdc 磁盘)。

# pvs -o+pv_used

PV VG Fmt Attr PSize PFree Used
/dev/sda myvg lvm2 a- 75.00G 14.00G 61.00G
/dev/sdb myvg lvm2 a- 50.00G 45.00G 5.00G
/dev/sdc myvg lvm2 a- 17.15G 12.15G 5.00G

如果使用了,请检查卷组中的其他物理卷是否有足够的空闲 扩展块 extent

如果有的话,你可以在需要删除的设备上运行 pvmove 命令。扩展块将被分配到其他设备上。

# pvmove /dev/sdc

/dev/sdc: Moved: 2.0%
…
/dev/sdc: Moved: 79.2%
…
/dev/sdc: Moved: 100.0%

pvmove 命令完成后。再次使用 pvs 命令检查物理卷是否有空闲。

# pvs -o+pv_used

PV VG Fmt Attr PSize PFree Used
/dev/sda myvg lvm2 a- 75.00G  1.85G 73.15G
/dev/sdb myvg lvm2 a- 50.00G 45.00G 5.00G
/dev/sdc myvg lvm2 a- 17.15G 17.15G 0

如果它是空闲的,使用 vgreduce 命令从卷组中删除物理卷 /dev/sdc

# vgreduce myvg /dev/sdc
Removed "/dev/sdc" from volume group "vg01"

最后,运行 pvremove 命令从 LVM 配置中删除磁盘。现在,磁盘已经完全从 LVM 中移除,可以用于其他用途。

# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.

移动扩展块到新磁盘

如果你在卷组中的其他物理卷上没有足够的可用扩展。使用以下步骤添加新的物理卷。

向存储组申请新的 LUN。分配完毕后,运行以下命令来在 Linux 中发现新添加的 LUN 或磁盘

# ls /sys/class/scsi_host
host0
# echo "- - -" > /sys/class/scsi_host/host0/scan
# fdisk -l

操作系统中检测到磁盘后,使用 pvcreate 命令创建物理卷。

# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created

使用以下命令将新的物理卷 /dev/sdd 添加到现有卷组 vg01 中。

# vgextend vg01 /dev/sdd
Volume group "vg01" successfully extended

现在,使用 pvs 命令查看你添加的新磁盘 /dev/sdd

# pvs -o+pv_used

PV VG Fmt Attr PSize PFree Used
/dev/sda myvg lvm2 a- 75.00G 14.00G 61.00G
/dev/sdb myvg lvm2 a- 50.00G 45.00G 5.00G
/dev/sdc myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdd myvg lvm2 a- 60.00G 60.00G 0

使用 pvmove 命令将数据从 /dev/sdc 移动到 /dev/sdd

# pvmove /dev/sdc /dev/sdd

/dev/sdc: Moved: 10.0%
…
/dev/sdc: Moved: 79.7%
…
/dev/sdc: Moved: 100.0%

数据移动到新磁盘后。再次使用 pvs 命令检查物理卷是否空闲。

# pvs -o+pv_used

PV VG Fmt Attr PSize PFree Used
/dev/sda myvg lvm2 a- 75.00G 14.00G 61.00G
/dev/sdb myvg lvm2 a- 50.00G 45.00G 5.00G
/dev/sdc myvg lvm2 a- 17.15G 17.15G 0
/dev/sdd myvg lvm2 a- 60.00G 47.85G 12.15G

如果空闲,使用 vgreduce 命令从卷组中删除物理卷 /dev/sdc

# vgreduce myvg /dev/sdc
Removed "/dev/sdc" from volume group "vg01"

最后,运行 pvremove 命令从 LVM 配置中删除磁盘。现在,磁盘已经完全从 LVM 中移除,可以用于其他用途。

# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.

via: https://www.2daygeek.com/linux-remove-delete-physical-volume-pv-from-volume-group-vg-in-lvm/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

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

减少/缩小逻辑卷是数据损坏的最高风险。

所以,如果可能的话,尽量避免这种情况,但如果没有其他选择的话,那就继续。

缩减 LVM 之前,建议先做一个备份。

当你在 LVM 中的磁盘空间耗尽时,你可以通过缩小现有的没有使用全部空间的 LVM,而不是增加一个新的物理磁盘,在卷组上腾出一些空闲空间。

需要注意的是: 在 GFS2 或者 XFS 文件系统上不支持缩小。

如果你是逻辑卷管理 (LVM) 的新手,我建议你从我们之前的文章开始学习。

减少逻辑卷涉及以下步骤:

  • 卸载文件系统
  • 检查文件系统是否有任何错误
  • 缩小文件系统的大小
  • 缩小逻辑卷的大小
  • 重新检查文件系统是否存在错误(可选)
  • 挂载文件系统
  • 检查减少后的文件系统大小

比如: 你有一个 100GB 的没有使用全部空间的 LVM,你想把它减少到 80GB,这样 20GB 可以用于其他用途。

# df -h /testlvm1

Filesystem              Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv002  100G 15G  85G   12%  /testlvm1

卸载文件系统

使用 umount 命令卸载文件系统:

# umount /testlvm1

检查文件系统是否有任何错误

使用 e2fsck 命令检查文件系统是否有错误:

# e2fsck -f /dev/mapper/vg01-lv002

e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg01-lv002: 13/6553600 files (0.0% non-contiguous), 12231854/26212352 blocks

缩小文件系统

下面的命令将把 testlvm1 文件系统从 100GB 缩小到 80GB

文件系统大小调整的常用语法(resize2fs

resize2fs [现有逻辑卷名] [新的文件系统大小]

实际命令如下:

# resize2fs /dev/mapper/vg01-lv002 80G

resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg01-lv002 to 28321400 (4k) blocks.
The filesystem on /dev/mapper/vg01-lv002 is now 28321400 blocks long.

减少逻辑卷 (LVM) 容量

现在使用 lvreduce 命令缩小逻辑卷(LVM) 的大小。通过下面的命令, /dev/mapper/vg01-lv002 将把逻辑卷 (LVM) 从 100GB 缩小到 80GB。

LVM 缩减 (lvreduce) 的常用语法

lvreduce [新的 LVM 大小] [现有逻辑卷名称]

实际命令如下:

# lvreduce -L 80G /dev/mapper/vg01-lv002

WARNING: Reducing active logical volume to 80.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv002? [y/n]: y
Reducing logical volume lv002 to 80.00 GiB
Logical volume lv002 successfully resized

可选:检查文件系统是否有错误

缩减 LVM 后再次检查文件系统是否有错误:

# e2fsck -f /dev/mapper/vg01-lv002

e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg01-lv002: 13/4853600 files (0.0% non-contiguous), 1023185/2021235 blocks

挂载文件系统并检查缩小后的大小

最后挂载文件系统,并检查缩小后的文件系统大小。

使用 mount 命令挂载逻辑卷

# mount /testlvm1

使用 df 命令检查挂载的卷。

# df -h /testlvm1

Filesystem              Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv002  80G  15G  65G   18%  /testlvm1

via: https://www.2daygeek.com/reduce-shrink-decrease-resize-lvm-logical-volume-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

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

扩展逻辑卷非常简单,只需要很少的步骤,而且不需要卸载某个逻辑卷就可以在线完成。

LVM 的主要目的是灵活的磁盘管理,当你需要的时候,可以很方便地调整、扩展和缩小逻辑卷的大小。

如果你是逻辑卷管理(LVM) 新手,我建议你从我们之前的文章开始学习。

扩展逻辑卷涉及到以下步骤:

  • 检查逻辑卷(LV)所在的卷组中是否有足够的未分配磁盘空间
  • 如果有,你可以使用这些空间来扩展逻辑卷
  • 如果没有,请向系统中添加新的磁盘或 LUN
  • 将物理磁盘转换为物理卷(PV)
  • 扩展卷组
  • 增加逻辑卷大小
  • 扩大文件系统
  • 检查扩展的文件系统大小

如何创建 LVM 物理卷?

使用 pvcreate 命令创建 LVM 物理卷。

当在操作系统中检测到磁盘,使用 pvcreate 命令初始化 LVM 物理卷:

# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created

请注意:

  • 上面的命令将删除磁盘 /dev/sdc 上的所有数据。
  • 物理磁盘可以直接添加到 LVM 物理卷中,而不是磁盘分区。

使用 pvdisplay 命令来显示你所创建的物理卷:

# pvdisplay /dev/sdc

"/dev/sdc" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc
VG Name
PV Size               10.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               69d9dd18-36be-4631-9ebb-78f05fe3217f

如何扩展卷组

使用以下命令在现有的卷组(VG)中添加一个新的物理卷:

# vgextend vg01 /dev/sdc
Volume group "vg01" successfully extended

使用 vgdisplay 命令来显示你所创建的物理卷:

# vgdisplay vg01
--- Volume group ---
VG Name              vg01
System ID
Format               lvm2
Metadata Areas       2
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               2
Act PV               2
VG Size              14.99 GiB
PE Size              4.00 MiB
Total PE             3840
Alloc PE / Size      1280 / 4.99
Free PE / Size       2560 / 9.99 GiB
VG UUID              d17e3c31-e2c9-4f11-809c-94a549bc43b7

如何扩展逻辑卷?

使用以下命令增加现有逻辑卷大小。

逻辑卷扩展(lvextend)的常用语法:

lvextend [要增加的额外空间] [现有逻辑卷名称]

使用下面的命令将现有的逻辑卷增加 10GB:

# lvextend -L +10G /dev/mapper/vg01-lv002
Rounding size to boundary between physical extents: 5.90 GiB
Size of logical volume vg01/lv002 changed from 5.00 GiB (1280 extents) to 15.00 GiB (3840 extents).
Logical volume var successfully resized

使用 PE 大小来扩展逻辑卷:

# lvextend -l +2560 /dev/mapper/vg01-lv002

要使用百分比(%)扩展逻辑卷,请使用以下命令:

# lvextend -l +40%FREE /dev/mapper/vg01-lv002

现在,逻辑卷已经扩展,你需要调整文件系统的大小以扩展逻辑卷内的空间:

对于基于 ext3 和 ext4 的文件系统,运行以下命令:

# resize2fs /dev/mapper/vg01-lv002

对于 xfs 文件系统,使用以下命令:

# xfs_growfs /dev/mapper/vg01-lv002

使用 df 命令查看文件系统大小:

# df -h /lvmtest1
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv002 15360M 34M 15326M 4% /lvmtest1

via: https://www.2daygeek.com/extend-increase-resize-lvm-logical-volume-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

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

逻辑卷管理 Logical Volume Management (LVM)在 Linux 系统中扮演着重要的角色,它可以提高可用性、磁盘 I/O、性能和磁盘管理的能力。

LVM 是一种被广泛使用的技术,对于磁盘管理来说,它是非常灵活的。

它在物理磁盘和文件系统之间增加了一个额外的层,允许你创建一个逻辑卷而不是物理磁盘。

LVM 允许你在需要的时候轻松地调整、扩展和减少逻辑卷的大小。

如何创建 LVM 物理卷?

你可以使用任何磁盘、RAID 阵列、SAN 磁盘或分区作为 LVM 物理卷 Physical Volume (PV)。

让我们想象一下,你已经添加了三个磁盘,它们是 /dev/sdb/dev/sdc/dev/sdd

运行以下命令来发现 Linux 中新添加的 LUN 或磁盘

# ls /sys/class/scsi_host
host0
# echo "- - -" > /sys/class/scsi_host/host0/scan
# fdisk -l

创建物理卷 (pvcreate) 的一般语法:

pvcreate [物理卷名]

当在系统中检测到磁盘,使用 pvcreate 命令初始化 LVM PV:

# pvcreate /dev/sdb /dev/sdc /dev/sdd
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
Physical volume "/dev/sdd" successfully created

请注意:

  • 上面的命令将删除给定磁盘 /dev/sdb/dev/sdc/dev/sdd 上的所有数据。
  • 物理磁盘可以直接添加到 LVM PV 中,而不必是磁盘分区。

使用 pvdisplaypvs 命令来显示你创建的 PV。pvs 命令显示的是摘要输出,pvdisplay 显示的是 PV 的详细输出:

# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 a-- 15.00g 15.00g
/dev/sdc lvm2 a-- 15.00g 15.00g
/dev/sdd lvm2 a-- 15.00g 15.00g
# pvdisplay

"/dev/sdb" is a new physical volume of "15.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdb
VG Name
PV Size               15.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               69d9dd18-36be-4631-9ebb-78f05fe3217f

"/dev/sdc" is a new physical volume of "15.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc
VG Name
PV Size               15.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               a2092b92-af29-4760-8e68-7a201922573b

"/dev/sdd" is a new physical volume of "15.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdd
VG Name
PV Size               15.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               d92fa769-e00f-4fd7-b6ed-ecf7224af7faS

如何创建一个卷组

卷组 Volume Group (VG)是 LVM 结构中的另一层。基本上,卷组由你创建的 LVM 物理卷组成,你可以将物理卷添加到现有的卷组中,或者根据需要为物理卷创建新的卷组。

创建卷组 (vgcreate) 的一般语法:

vgcreate [卷组名] [物理卷名]

使用以下命令将一个新的物理卷添加到新的卷组中:

# vgcreate vg01 /dev/sdb /dev/sdc /dev/sdd
Volume group "vg01" successfully created

请注意:默认情况下,它使用 4MB 的 物理范围 Physical Extent (PE),但你可以根据你的需要改变它。

使用 vgsvgdisplay 命令来显示你创建的 VG 的信息:

# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 3 0 0 wz--n- 44.99g 44.99g
# vgdisplay vg01
--- Volume group ---
VG Name              vg01
System ID
Format               lvm2
Metadata Areas       3
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               3
Act PV               3
VG Size              44.99 GiB
PE Size              4.00 MiB
Total PE             11511
Alloc PE / Size      0 / 0
Free PE / Size       11511 / 44.99 GiB
VG UUID              d17e3c31-e2c9-4f11-809c-94a549bc43b7

如何扩展卷组

如果 VG 没有空间,请使用以下命令将新的物理卷添加到现有卷组中。

卷组扩展 (vgextend)的一般语法:

vgextend [已有卷组名] [物理卷名]
# vgextend vg01 /dev/sde
    Volume group "vg01" successfully extended

如何以 GB 为单位创建逻辑卷?

逻辑卷 Logical Volume (LV)是 LVM 结构中的顶层。逻辑卷是由卷组创建的块设备。它作为一个虚拟磁盘分区,可以使用 LVM 命令轻松管理。

你可以使用 lvcreate 命令创建一个新的逻辑卷。

创建逻辑卷(lvcreate) 的一般语法:

lvcreate –n [逻辑卷名] –L [逻辑卷大小] [要创建的 LV 所在的卷组名称]

运行下面的命令,创建一个大小为 10GB 的逻辑卷 lv001

# lvcreate -n lv001 -L 10G vg01
Logical volume "lv001" created

使用 lvslvdisplay 命令来显示你所创建的 LV 的信息:

# lvs /dev/vg01/lvol01
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv001 vg01 mwi-a-m-- 10.00g lv001_mlog 100.00
# lvdisplay /dev/vg01/lv001
--- Logical volume ---
LV Path                /dev/vg01/lv001
LV Name                lv001
VG Name                vg01
LV UUID                ca307aa4-0866-49b1-8184-004025789e63
LV Write Access        read/write
LV Creation host, time localhost.localdomain, 2020-09-10 11:43:05 -0700
LV Status              available
# open                 0
LV Size                10.00 GiB
Current LE             2560
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:4

如何以 PE 大小创建逻辑卷?

或者,你可以使用物理范围(PE)大小创建逻辑卷。

如何计算 PE 值?

很简单,例如,如果你有一个 10GB 的卷组,那么 PE 大小是多少?

默认情况下,它使用 4MB 的物理范围,但可以通过运行 vgdisplay 命令来检查正确的 PE 大小,因为这可以根据需求进行更改。

10GB = 10240MB / 4MB (PE 大小) = 2560 PE

用 PE 大小创建逻辑卷 (lvcreate) 的一般语法:

lvcreate –n [逻辑卷名] –l [物理扩展 (PE) 大小] [要创建的 LV 所在的卷组名称]

要使用 PE 大小创建 10GB 的逻辑卷,命令如下:

# lvcreate -n lv001 -l 2560 vg01

如何创建文件系统

在创建有效的文件系统之前,你不能使用逻辑卷。

创建文件系统的一般语法:

mkfs –t [文件系统类型] /dev/[LV 所在的卷组名称]/[LV 名称]

使用以下命令将逻辑卷 lv001 格式化为 ext4 文件系统:

# mkfs -t ext4 /dev/vg01/lv001

对于 xfs 文件系统:

# mkfs -t xfs /dev/vg01/lv001

挂载逻辑卷

最后,你需要挂载逻辑卷来使用它。确保在 /etc/fstab 中添加一个条目,以便系统启动时自动加载。

创建一个目录来挂载逻辑卷:

# mkdir /lvmtest

使用挂载命令挂载逻辑卷

# mount /dev/vg01/lv001 /lvmtest

/etc/fstab 文件中添加新的逻辑卷详细信息,以便系统启动时自动挂载:

# vi /etc/fstab
/dev/vg01/lv001 /lvmtest xfs defaults 0 0

使用 df 命令检查新挂载的卷:

# df -h /lvmtest
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv001 15360M 34M 15326M 4% /lvmtest

via: https://www.2daygeek.com/create-lvm-storage-logical-volume-manager-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:校对者ID

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

大多数用户发现使用标准流程升级从一个 Fedora 版本升级到下一个很简单。但是,Fedora 升级也不可避免地会遇到许多特殊情况。本文介绍了使用 DNF 和逻辑卷管理(LVM)进行升级的一种方法,以便在出现问题时保留可引导备份。这个例子是将 Fedora 26 系统升级到 Fedora 28。

此处展示的过程比标准升级过程更复杂。在使用此过程之前,你应该充分掌握 LVM 的工作原理。如果没有适当的技能和细心,你可能会丢失数据和/或被迫重新安装系统!如果你不知道自己在做什么,那么强烈建议你坚持只使用得到支持的升级方法。

准备系统

在开始之前,请确保你的现有系统已完全更新。

$ sudo dnf update
$ sudo systemctl reboot # 或采用 GUI 方式

检查你的根文件系统是否是通过 LVM 挂载的。

$ df /
Filesystem              1K-blocks   Used        Available   Use%    Mounted on
/dev/mapper/vg_sdg-f26  20511312    14879816    4566536     77%     /

$ sudo lvs
LV        VG            Attr        LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
f22       vg_sdg        -wi-ao----  15.00g
f24_64    vg_sdg        -wi-ao----  20.00g
f26       vg_sdg        -wi-ao----  20.00g
home      vg_sdg        -wi-ao---- 100.00g
mockcache vg_sdg        -wi-ao----  10.00g
swap      vg_sdg        -wi-ao----   4.00g
test      vg_sdg        -wi-a-----   1.00g
vg_vm     vg_sdg        -wi-ao----  20.00g

如果你在安装 Fedora 时使用了默认值,你可能会发现根文件系统挂载在名为 root 的逻辑卷(LV)上。卷组(VG)的名称可能会有所不同。看看根卷的总大小。在该示例中,根文件系统名为 f26,大小为 20G

接下来,确保 LVM 中有足够的可用空间。

$ sudo vgs
VG      #PV #LV #SN Attr    VSize   VFree
vg_sdg  1   8   0   wz--n-  232.39g 42.39g

该系统有足够的可用空间,可以为升级后的 Fedora 28 的根卷分配 20G 的逻辑卷。如果你使用的是默认安装,则你的 LVM 中将没有可用空间。对 LVM 的一般性管理超出了本文的范围,但这里有一些情形下可能采取的方法:

1、/home 在自己的逻辑卷,而且 /home 中有大量空闲空间。

你可以从图形界面中注销并切换到文本控制台,以 root 用户身份登录。然后你可以卸载 /home,并使用 lvreduce -r 调整大小并重新分配 /home 逻辑卷。你也可以从 现场镜像 Live image 启动(以便不使用 /home)并使用 gparted GUI 实用程序进行分区调整。

2、大多数 LVM 空间被分配给根卷,该文件系统中有大量可用空间。

你可以从现场镜像启动并使用 gparted GUI 实用程序来减少根卷的大小。此时也可以考虑将 /home 移动到另外的文件系统,但这超出了本文的范围。

3、大多数文件系统已满,但你有个已经不再需要逻辑卷。

你可以删除不需要的逻辑卷,释放卷组中的空间以进行此操作。

创建备份

首先,为升级后的系统分配新的逻辑卷。确保为系统的卷组(VG)使用正确的名称。在这个例子中它是 vg_sdg

$ sudo lvcreate -L20G -n f28 vg_sdg
Logical volume "f28" created.

接下来,创建当前根文件系统的快照。此示例创建名为 f26_s 的快照卷。

$ sync
$ sudo lvcreate -s -L1G -n f26_s vg_sdg/f26
Using default stripesize 64.00 KiB.
Logical volume "f26_s" created.

现在可以将快照复制到新逻辑卷。当你替换自己的卷名时,请确保目标正确。如果不小心,就会不可撤销地删除了数据。此外,请确保你从根卷的快照复制,而不是从你的现在的根卷。

$ sudo dd if=/dev/vg_sdg/f26_s of=/dev/vg_sdg/f28 bs=256k
81920+0 records in
81920+0 records out
21474836480 bytes (21 GB, 20 GiB) copied, 149.179 s, 144 MB/s

给新文件系统一个唯一的 UUID。这不是绝对必要的,但 UUID 应该是唯一的,因此这避免了未来的混淆。以下是在 ext4 根文件系统上的方法:

$ sudo e2fsck -f /dev/vg_sdg/f28
$ sudo tune2fs -U random /dev/vg_sdg/f28

然后删除不再需要的快照卷:

$ sudo lvremove vg_sdg/f26_s
Do you really want to remove active logical volume vg_sdg/f26_s? [y/n]: y
Logical volume "f26_s" successfully removed

如果你单独挂载了 /home,你可能希望在此处制作 /home 的快照。有时,升级的应用程序会进行与旧版 Fedora 版本不兼容的更改。如果需要,编辑根文件系统上的 /etc/fstab 文件以在 /home 上挂载快照。请记住,当快照已满时,它将消失!另外,你可能还希望给 /home 做个正常备份。

配置以使用新的根

首先,安装新的逻辑卷并备份现有的 GRUB 设置:

$ sudo mkdir /mnt/f28
$ sudo mount /dev/vg_sdg/f28 /mnt/f28
$ sudo mkdir /mnt/f28/f26
$ cd /boot/grub2
$ sudo cp -p grub.cfg grub.cfg.old

编辑 grub.conf 并在第一个菜单项 menuentry 之前添加这些,除非你已经有了:

menuentry 'Old boot menu' {
  configfile /grub2/grub.cfg.old
}

编辑 grub.conf 并更改默认菜单项以激活并挂载新的根文件系统。改变这一行:

linux16 /vmlinuz-4.16.11-100.fc26.x86_64 root=/dev/mapper/vg_sdg-f26 ro rd.lvm.lv=vg_sdg/f26 rd.lvm.lv=vg_sdg/swap rhgb quiet LANG=en_US.UTF-8

如你看到的这样。请记住使用你系统上的正确的卷组和逻辑卷条目名称!

linux16 /vmlinuz-4.16.11-100.fc26.x86_64 root=/dev/mapper/vg_sdg-f28 ro rd.lvm.lv=vg_sdg/f28 rd.lvm.lv=vg_sdg/swap rhgb quiet LANG=en_US.UTF-8

编辑 /mnt/f28/etc/default/grub 并改变在启动时激活的默认的根卷:

GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_sdg/f28 rd.lvm.lv=vg_sdg/swap rhgb quiet"

编辑 /mnt/f28/etc/fstab,将挂载的根文件系统从旧的逻辑卷:

/dev/mapper/vg_sdg-f26 / ext4 defaults 1 1

改为新的:

/dev/mapper/vg_sdg-f28 / ext4 defaults 1 1

然后,出于参考的用途,只读挂载旧的根卷:

/dev/mapper/vg_sdg-f26 /f26 ext4 ro,nodev,noexec 0 0

如果你的根文件系统是通过 UUID 挂载的,你需要改变这个方式。如果你的根文件系统是 ext4 你可以这样做:

$ sudo e2label /dev/vg_sdg/f28 F28

现在编辑 /mnt/f28/etc/fstab 使用该卷标。改变该根文件系统的挂载行,像这样:

LABEL=F28 / ext4 defaults 1 1

重启与升级

重新启动,你的系统将使用新的根文件系统。它仍然是 Fedora 26,但是是带有新的逻辑卷名称的副本,并可以进行 dnf 系统升级!如果出现任何问题,请使用旧引导菜单引导回到你的工作系统,此过程可避免触及旧系统。

$ sudo systemctl reboot # or GUI equivalent
...
$ df / /f26
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_sdg-f28 20511312 14903196 4543156 77% /
/dev/mapper/vg_sdg-f26 20511312 14866412 4579940 77% /f26

你可能希望验证使用旧的引导菜单确实可以让你回到挂载在旧的根文件系统上的根。

现在按照此维基页面中的说明进行操作。如果系统升级出现任何问题,你还会有一个可以重启回去的工作系统。

进一步的考虑

创建新的逻辑卷并将根卷的快照复制到其中的步骤可以使用通用脚本自动完成。它只需要新的逻辑卷的名称,因为现有根的大小和设备很容易确定。例如,可以输入以下命令:

$ sudo copyfs / f28

提供挂载点以进行复制可以更清楚地了解发生了什么,并且复制其他挂载点(例如 /home)可能很有用。


via: https://fedoramagazine.org/use-lvm-upgrade-fedora/

作者:Stuart D Gathman 选题:lujun9972 译者:wxy 校对:wxy

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

在 Linux 机器中添加磁盘的逐步过程。

本文将向你介绍在 Linux 机器中添加新磁盘的步骤。将原始磁盘添加到 Linux 机器可能非常依赖于你所拥有的服务器类型,但是一旦将磁盘提供给机器,将其添加到挂载点的过程几乎相同。

目标:向服务器添加新的 10GB 磁盘,并使用 lvm 和新创建的卷组创建 5GB 装载点。

向 Linux 机器添加原始磁盘

如果你使用的是 AWS EC2 Linux 服务器,可以 按照以下步骤 添加原始磁盘。如果使用的是 VMware Linux VM,那么需要按照不同的步骤来添加磁盘。如果你正在运行物理机架设备/刀片服务器,那么添加磁盘将是一项物理任务。

一旦磁盘物理/虚拟地连接到 Linux 机器上,它将被内核识别,就可以开始了。

识别 Linux 最新添加的磁盘

原始磁盘连接后,需要让内核去 扫描新磁盘。在新版中,它主要是由内核自动完成。

第一件事是在内核中识别新添加的磁盘及其名称。实现这一点的方法有很多,以下作少量列举:

  • 可以在添加/扫描磁盘前后观察 lsblk 输出,以获取新的磁盘名。
  • 检查 /dev 文件系统中新创建的磁盘文件。匹配文件和磁盘添加时间的时间戳。
  • 观察 fdisk-l 添加/扫描磁盘前后的输出,以获取新的磁盘名。

在本示例中,我使用的是 AWS EC2 服务器,向服务器添加了 5GB 磁盘。我的 lsblk 输出如下:

[root@kerneltalks ~]# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
├─xvda1 202:1    0   1M  0 part
└─xvda2 202:2    0  10G  0 part /
xvdf    202:80   0  10G  0 disk

可以看到 xvdf 是新添加的磁盘。完整路径是 /dev/xvdf

在 LVM 中添加新磁盘

我们这里使用 LVM,因为它是 Linux 平台上广泛使用的非常灵活的卷管理器。确认 lvm 或 lvm2 软件包已经安装在系统上。如未安装,请 安装 lvm/lvm2 程序包

现在,我们将在逻辑卷管理器中添加这个原始磁盘,并从中创建 10GB 的挂接点。所用到的命令如下:

如果要将磁盘添加到现有挂接点,并使用其空间来扩展挂接点 ,则 vgcreate 应替换为 vgextend

会话示例输出如下:

[root@kerneltalks ~]# pvcreate /dev/xvdf
  Physical volume "/dev/xvdf" successfully created.
[root@kerneltalks ~]# vgcreate vgdata /dev/xvdf
  Volume group "vgdata" successfully created
[root@kerneltalks ~]# lvcreate -L 5G -n lvdata vgdata
  Logical volume "lvdata" created.

现在,已完成逻辑卷创建。你需要使用所选的文件系统格式化它,并将其挂载。在这里选择 ext4 文件系统,并使用 mkfs.ext4 进行格式化。

[root@kerneltalks ~]# mkfs.ext4 /dev/vgdata/lvdata
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736
 
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

在挂载点上从新磁盘挂载卷

使用 mount 命令,在 /data 安装点上安装已创建并格式化的 5GB 逻辑卷。

[root@kerneltalks ~]# mount /dev/vgdata/lvdata /data
[root@kerneltalks ~]# df -Ph /data
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vgdata-lvdata  4.8G   20M  4.6G   1% /data

使用 df 命令验证挂载点。如上所述,你都完成了!你可以在 /etc/fstab 中添加一个条目,以便在重新启动时保持此装载。

你已将 10GB 磁盘连接到 Linux 计算机,并创建了 5GB 挂载点!


via: https://kerneltalks.com/hardware-config/how-to-add-new-disk-in-linux/

作者:kerneltalks 选题:lujun9972 译者:luckyele 校对:wxy

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