当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

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

主分区约600GB,

我希望将其调整为 450GB,这样我就可以将 Windows 8 安装为双启动。

问题是我无法弄清楚如何缩小分区,通常可以从 Gparted (gparted-live-0.14.1-6-i486.iso) live iso 中解决,只需调整大小就可以了。

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

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

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

  1. 从实时 gparted iso 启动。

  2. 选择 Ubuntu 分区。

  3. “Deactivate” 分区。

  4. 调整分区大小。

  5. “Activate” 分区。

  6. 申请。

  7. 利润???

我的想法正确吗?

编辑#1

所以,经过一些扩展的聊天后,我归结为这个命令

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

其中成功缩小了逻辑分区。

但现在我有困难的部分。

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

所以我以为我可以跑

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

但我回来了:

\\n

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

\\n

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

,那么我的下一步是什么?

$: 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

\n请注意,以上截图取自 Ubuntu Repositories 中的 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,lvremove 交换 LV 并重新创建它。这应该强制它在位置方面直接附加到根 LV。完成后,您应该能够 pvresize 物理卷。然后是编辑分区表 ( fdisk ) 以将分区缩小到 PV 的新大小,从而释放空间供 Windows 安装程序使用的可怕部分。

对于分区的缩小,我建议稍微大一点,比 PV 报告的大小要大几 MB,并扩大 PV 和根 LV 以填充空闲范围。这样,您可以确定您是 A) 将所有分区的大小用于 LVM,并且不会因为使其无法访问而丢失空间,并且 B) 不会通过将二进制 KiB/MiB/GiB 误解为十进制 KB 来切断 PV 中的重要数据/MB/GB 在 fdisk 操作期间反之亦然。

新的交换,如果您创建一个新的交换以确保按照我上面的建议将其附加到根 LV,将具有不同的 UUID,因此您的 /etc/fstab 将不匹配。调整大小完成后,您需要 mount /dev/ubuntu/root /mnt 编辑 /mnt**/etc/fstab**。

在 fstab 文件中,您需要找到类似于下面的交换条目,并将 UUID= 之后的十六进制更新为 blkid 报告的值。

我的系统上 blkid 的步骤如下:

  1. \n

    blkid /dev/ubuntu/swap_1\n

    \n

    哪个输出

    \n

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

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

    \n

    寻找

    \n

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

    \n

    用新的 UUID 代替 old-uuid

    \n

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

    \n

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

    \n

    /dev/ubuntu/swap_1 none swap sw 0 0\n

第三种思路

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

  1. 下载 14.04LTS 并制作一个可启动的 USB。

  2. 从 USB 启动,使用 TRY UBUNTU 选项,以便您在 USB memory 棒上运行。

  3. 从软件中心安装 KVPM。

  4. 从您选择的终端运行 KVPM,\n sudo kvpm – 如果您只是运行 kvpm ,live CD 会给您一个错误并挂起。

  5. 一次,kvpm 打开了 GUI,转到标记为 some_drive-vg 的选项卡

  6. 突出显示要调整大小的音量并右键单击选项,选择减小音量。

  7. 您可以在输入新大小的同时重新标记 LVM。

  8. 按照提示确定更改,瞧,您将拥有未分配的可用空间。

  9. 您可以使用可用空间制作任意数量的新 LVM。我的显示器显示绿色未分配空间,只需右键单击绿色空间,您唯一的选项将是“创建新的逻辑卷”。

写这篇文章比执行整个过程花费的时间更长。

顺便说一句,在所有更改之后,我调整大小的 /root 分区功能完美。\n只需在您选择的操作系统中重新启动到您的 HDD 并享受您新发现的卷。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13105.html,未经允许,请勿转载。