如何使用现有未使用的lvm空间创建另一个物理卷/分区而不丢失数据?

如何使用现有未使用的lvm空间创建另一个物理卷/分区而不丢失数据?

我有一个1T USB安装了 Fedora 20 的磁盘。它显示为SD在下面的第一张图片中。我只用了大约50GB。 sdd2下有3个逻辑卷,缩小后还有大约620GB的可用空间逻辑分区,如第二张图所示。

我在想使用 620GB 可用空间创建物理卷/分区 sdd3。我希望其他逻辑卷不会被损坏数据将保持不变。我怎样才能做到这一点?

我已经用clonezilla 创建了一个磁盘映像。所以我不担心过程中数据丢失。

这样做的目的是我想把安装移到我的1T磁盘上有设置转移到我的另一个 500GB USB 磁盘。我尝试了很多方法,clonezilla,DD逻辑分区、真实映像、gparted,...由于 lvm 和较小的目标,没有人可以帮助我或给我一个好的结果。我希望在新的物理分区占用一些空间后我可以添加物理分区。

sdd为1T U盘

绿色是自由空间

编辑:

我必须重新启动我的 ubuntu live CD 会话。现在目标磁盘是深圳发展银行。当我尝试调整 sdb2 大小时出现错误:

ubuntu@ubuntu:~$ sudo su
root@ubuntu:/home/ubuntu# pvdisplay /dev/sdb2
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               fedora_lym
  PV Size               930.99 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238333
  Free PE               160569
  Allocated PE          77764
  PV UUID               Ytsy31-op7u-DqLM-lJG7-uIFb-2hAG-eZhn0a

root@ubuntu:/home/ubuntu# pvresize --setphysicalvolumesize 320G /dev/sdb2
  /dev/sdb2: cannot resize to 81919 extents as later ones are allocated.
  0 physical volume(s) resized / 1 physical volume(s) not resized
root@ubuntu:/home/ubuntu# 

编辑2:

完成后,sdb3 就在这里:

root@ubuntu:/home/ubuntu# lsblk
NAME                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                     8:0    0 223.6G  0 disk 
├─sda1                  8:1    0   100M  0 part 
└─sda2                  8:2    0 223.5G  0 part 
sdb                     8:16   0 931.5G  0 disk 
├─sdb1                  8:17   0   500M  0 part 
├─sdb2                  8:18   0 312.5G  0 part 
│ ├─fedora_lym-swap 252:0    0   3.8G  0 lvm  
│ ├─fedora_lym-home 252:1    0   250G  0 lvm  
│ └─fedora_lym-root 252:2    0    50G  0 lvm  
└─sdb3                  8:19   0 618.5G  0 part 
sr0                    11:0    1   4.4G  0 rom  /cdrom
loop0                   7:0    0   1.1G  1 loop /rofs
root@ubuntu:/home/ubuntu# 

答案1

如果我理解正确的话,您想使用 sdd2 上的可用空间来创建另一个分区 sdd3。为此,您首先需要使用 调整物理卷的大小(如果您尚未这样做)pvresize

首先看看您的物理卷使用了多大pvdisplay /dev/sdd2。如果它已经具有正确的尺寸,请跳至下一步。否则你需要先调整它的大小:

pvresize --setphysicalvolumesize 123G /dev/sdd2

使用适当的新大小代替 123G。对此要小心。

pvresize因分配某些盘区错误而失败时,可能有两个原因:1) 您试图将 pv 大小设置得太小 2) 某些盘区分配到磁盘末尾而不是开头。

在后一种情况下,您需要首先将这些范围移至开头。对于连续段分配的列表,运行

pvs -v --segments

当您的 PV 上有可用空间时,并非从第一个段到最后一个段的所有内容都会被分配。将阻碍 pvresize 的片段移动到开头

pvmove --alloc anywhere SOURCE_SEGMENTS

(SOURCE_SEGMENTS 是您要移动的段)

有关更详细的解释,请查看此处的答案:https://unix.stackexchange.com/a/67707/154982

下一步是减小分区大小。记下物理卷的新总大小。然后使用 fdisk(或图形工具或您喜欢的任何分区程序),记下分区 sdd2 的起始块,将其删除并创建一个与物理卷大小相同的新分区。重要的是这个新分区从精确的与您的旧 sdd2 分区起始位置相同的块!对于分区大小,请记住,您可能必须将块/扇区号转换为字节。 fdisk 会告诉您为一个扇区分配了多少字节(通常为 512)。另请记住,幅度以 1024 为基数,而不是 1000(即 KiB 而不是 kB)。

创建新的较小的 sdd2 后,磁盘上就有了新的未分配空间,您可以使用它来创建另一个分区 sdd3。

但是,如果您只想将 sdd2 末尾的免费 600MB 用于您的 LVM,您可能只想使用以下命令扩大您的 pv

pvresize /dev/sdd2

然后增加 lv 和文件系统的大小(使用lvresize -r),然后就完成了。当然,您也可以在空闲的 pv 空间上创建一个新的 lv。

答案2

所以我想使用pvresizeand ,fdisk但太胆怯了,无法自己计算起始块(我不想对大小和范围的含义做出假设)。

整个操作可以通过调整卷大小gparted(右键单击调整卷大小)来完成,但您可能必须手动移动某些范围。

相关内容