如何缩小Ubuntu LVM逻辑和物理卷?

我已经安装了Ubuntu 12.10作为我系统上唯一的操作系统。

我告诉Ubuntu覆盖所有内容,因为我很匆忙,因此我只有Ubuntu创建的两个分区,几百MB的引导分区,然后是其他所有内容。

主分区大约600GB,

我希望将其重新调整为450GB,因此我可以将Windows 8安装为双启动。

问题是我无法弄清楚如何缩小分区,通常情况下从Gparted(gparted-live-0.14.1-6-i486.iso)live iso可以很好,只需resize就可以了。

但是这次Ubuntu已经安装了LVM。

因此,Ubuntu分区旁边有一个锁定图标。 这可以防止我做任何事情,我可以选择分区,并且有一个“停用”选项,如果我是正确的,我认为是停用交换? 如果我这样做,我可以操纵分区。

我在这里问我在破坏系统之前这是否是正确的事情。

  1. 从活的gparted iso启动。
  2. 选择Ubuntu分区。
  3. “停用”分区。
  4. 调整分区大小。
  5. “激活”分区。
  6. 应用。
  7. 利润???

我的想法是否正确?

编辑#1

所以,在一些扩展聊天后,我来到这个命令

sudo lvresize --verbose --resizefs -L -150G /dev/ubuntu/root 

哪个成功缩小了逻辑分区。

Gparted New Shot

但现在我有困难的部分。

现在我需要缩小物理分区,以便我可以创建一个新的物理分区,其中包含安装Windows 8的空间。

所以我以为我可以跑了

 pvresize --setphysicalvolumesize {any size here} /dev/sda5 

但我回来了:

/ dev / sda5:无法resize到xxxxx范围,因为后面的分配。

我认为这是由于此图像的交换:

Darn Swap! 那么我的下一步是什么?

 $: lvdisplay --- Logical volume --- LV Path /dev/ubuntu/root LV Name root VG Name ubuntu LV UUID G7Z3dA-xska-8QpO-Y5oD-aIVO-D8l1-22s6dO LV Write Access read/write LV Creation host, time ubuntu, 2013-01-29 22:06:02 +1300 LV Status available # open 1 LV Size 540.42 GiB Current LE 138348 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Path /dev/ubuntu/swap_1 LV Name swap_1 VG Name ubuntu LV UUID 14qpRy-H5jl-dTAq-CVle-k7Bz-95Rm-Y46zOs LV Write Access read/write LV Creation host, time ubuntu, 2013-01-29 22:06:04 +1300 LV Status available # open 2 LV Size 7.97 GiB Current LE 2041 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1 

编辑#1之前的其他信息

Gparted截图
请注意,上面的镜头来自Ubuntu存储库中的Gparted版本,而不是最新版本

matthew @ play:〜$ sudo fdisk -l

 Disk /dev/sda: 750.2 GB, 750156374016 bytes 255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c5bec Device Boot Start End Blocks Id System /dev/sda1 * 2048 499711 248832 83 Linux /dev/sda2 501758 1465147391 732322817 5 Extended /dev/sda5 501760 1465147391 732322816 8e Linux LVM Disk /dev/mapper/ubuntu-root: 741.3 GB, 741334843392 bytes 255 heads, 63 sectors/track, 90128 cylinders, total 1447919616 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/ubuntu-root doesn't contain a valid partition table Disk /dev/mapper/ubuntu-swap_1: 8560 MB, 8560574464 bytes 255 heads, 63 sectors/track, 1040 cylinders, total 16719872 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/ubuntu-swap_1 doesn't contain a valid partition table 

matthew @ play:〜$ sudo lvs

  LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert root ubuntu -wi-ao-- 690.42g swap_1 ubuntu -wi-ao-- 7.97g 

matthew @ play:〜$ sudo vgs

  VG #PV #LV #SN Attr VSize VFree ubuntu 1 2 0 wz--n- 698.39g 0 

matthew @ play:〜$ sudo pvs

  PV VG Fmt Attr PSize PFree /dev/sda5 ubuntu lvm2 a-- 698.39g 0 

这些是调整LVM或LVM2分区大小所需的所有步骤 –

sudo lvresize --verbose --resizefs -L -150G /dev/ubuntu/root

sudo pvresize --setphysicalvolumesize {any size here} /dev/sda5

 /dev/sda5: cannot resize to xxxxx extents as later ones are allocated. 

您必须重新排列LVM末尾的未分配空间。 这意味着在root和swap_1分区之后。 因此,您需要使用以下命令移动该可用空间

pvs -v --segments /dev/sda5

 This will show the output like below /dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx root 0 linear /dev/sda:0-xxx /dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx nnn 0 free /dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyy zzz swap 0 linear /dev/sda5:yyy-zzz 

现在使用以下命令删除外部碎片 –

 sudo pvmove --alloc anywhere /dev/sda5:yyy-zzz 

现在让我们看看它是怎么回事 –

pvs -v --segments /dev/sda5

 This will show the output like below /dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx root 0 linear /dev/sda:0-xxx /dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx nnn swap 0 linear /dev/sda5:xxx-yyy(-1) /dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyy zzz 0 free 

之后使用gparted并将LVM的大小调整为最大使用区域,其余部分将位于未分配的空间中。 请享用…

我现在你已经拥有了较小的根LV, lvremovelvremove交换LV并重新创建它。 这应该强制它在位置方面直接附加到根LV。 一旦完成,你应该能够pvresize物理卷。 然后,编辑分区表( fdisk )以将分区缩小到PV的新大小是一个可怕的部分,从而释放了Windows安装程序使用的空间。

为了缩小分区的尺寸,我建议稍微大一些,比PV报告它的大小要小一些,并增大PV和根LV以填充空闲范围。 这样你可以确定你是A)使用LVM的所有分区大小而不是通过使其无法访问而丢失空间,以及B)通过误解二进制KiB / MiB / GiB为十进制KB而不从PV中切断重要数据fdisk操作期间/ MB / GB或反之亦然。

新的交换,如果你创建一个新的交换,以确保它像我上面建议的那样附加到根LV,将具有不同的UUID,因此你的/ etc / fstab将不匹配。 resize完成后,您需要mount /dev/ubuntu/root /mnt edit / mnt ** / etc / fstab **。

在fstab文件中,您需要找到类似于下面的交换条目,并在UUID =后使用blkid报告的值更新hex。

我的系统上blkid步骤如下:

  1.  blkid /dev/ubuntu/swap_1 

    哪个输出

     /dev/ubuntu/swap_1: UUID="9e99b37a-38af-4987-85eb-92048abd9825" TYPE="swap" 
  2. 复制UUID值

    9e99b37a-38af-4987-85eb-92048abd9825

  3. 从根LV编辑/ etc / fstab并插入UUID值代替旧的UUID。

     UUID=**old-uuid** none swap sw 0 0 

    替换你的新UUID代替旧的uUid

     UUID=9e99b37a-38af-4987-85eb-92048abd9825 none swap sw 0 0 

    或者,您可以替换UUID机制并使用/dev/ubuntu/swap_1 ,例如

     /dev/ubuntu/swap_1 none swap sw 0 0 

使用软件中心的KVPM。 我使用整个磁盘安装了Ubuntu 14.10 LTS一个巨大的LVM(我知道一个巨大的LVM有什么意义)但是想为另一个操作系统和数据驱动器添加另外两个LVM。 我使用了KVPM,它在描述中说KDE分区管理器,但它在14.04上工作得很好。 这是步骤。

  1. 下载14.04LTS并制作可启动USB。
  2. 使用TRY UBUNTU选项从USB启动,以便在USB记忆棒上运行。
  3. 从软件中心安装KVPM。
  4. 从您选择的终端运行KVPM,

    sudo kvpm – 如果你只是运行kvpm ,live CD会给你一个错误并挂起。

  5. 有一次,kvpm打开了GUI,转到标有some_drive-vg的标签

  6. 突出显示要resize的音量,右键单击选项,选择减小音量。
  7. 您可以在输入新大小的同时重新标记LVM。
  8. 按照提示确定更改,瞧,您将拥有未分配的可用空间。
  9. 您可以根据需要使用可用空间制作尽可能多的新LVM。 我的显示器显示绿色未分配的空间,只需右键单击绿色空间,您只需选择“创建新的逻辑卷”。

写这个比我执行整个过程花了更长的时间。

顺便说一句,我调整后的/ root分区在所有更改后都能完美运行。 只需在您选择的操作系统中重新启动硬盘,即可享受新发现的卷。

KVPM是要走的路,不需要重启。

  1. 右键单击“卸载分区”
  2. 减小尺寸
  3. 右键单击其他分区扩展大小
  4. 重新安装原始分区

DONE!