问题描述
我已经安装了 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” 有一个选项,如果我是正确的,我认为是停用交换?如果我这样做,我可以操纵分区。
我在这里问这是否是在我破坏我的系统之前做的正确的事情。
-
从实时 gparted iso 启动。
-
选择 Ubuntu 分区。
-
“Deactivate” 分区。
-
调整分区大小。
-
“Activate” 分区。
-
申请。
-
利润???
我的想法正确吗?
编辑#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
的步骤如下:
-
跑
\n
blkid /dev/ubuntu/swap_1\n
\n
哪个输出
\n
/dev/ubuntu/swap_1: UUID="9e99b37a-38af-4987-85eb-92048abd9825" TYPE="swap"\n
-
复制 UUID 值\n\n\n\n9e99b37a-38af-4987-85eb-92048abd9825
-
从根 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 上运行良好。以下是步骤。
-
下载 14.04LTS 并制作一个可启动的 USB。
-
从 USB 启动,使用 TRY UBUNTU 选项,以便您在 USB memory 棒上运行。
-
从软件中心安装 KVPM。
-
从您选择的终端运行 KVPM,\n
sudo kvpm
– 如果您只是运行kvpm
,live CD 会给您一个错误并挂起。 -
一次,kvpm 打开了 GUI,转到标记为 some_drive-vg 的选项卡
-
突出显示要调整大小的音量并右键单击选项,选择减小音量。
-
您可以在输入新大小的同时重新标记 LVM。
-
按照提示确定更改,瞧,您将拥有未分配的可用空间。
-
您可以使用可用空间制作任意数量的新 LVM。我的显示器显示绿色未分配空间,只需右键单击绿色空间,您唯一的选项将是“创建新的逻辑卷”。
写这篇文章比执行整个过程花费的时间更长。
顺便说一句,在所有更改之后,我调整大小的 /root 分区功能完美。\n只需在您选择的操作系统中重新启动到您的 HDD 并享受您新发现的卷。