在我的实验室环境中,我有一台 Ubuntu 服务器 12.04,我正在尝试为其添加空间。LVM 在启动时设置,通过编辑磁盘向导添加 100GB 后,我无法将该空间添加到分区。我尝试使用 Part Magic,但它不允许我扩展大小,尽管我确实看到了增加的空间。
fdisk -l 给我;
Disk /dev/sda: 108.4 GB, 108447924224 bytes
255 heads, 63 sectors/track, 13184 cylinders, total 211812352 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: 0x00097307
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 33552383 16525313 5 Extended
/dev/sda5 501760 33552383 16525312 8e Linux LVM
Disk /dev/mapper/ubuntu--vg-root: 14.8 GB, 14751367168 bytes
255 heads, 63 sectors/track, 1793 cylinders, total 28811264 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--vg-root doesn't contain a valid partition table
Disk /dev/mapper/ubuntu--vg-swap_1: 2143 MB, 2143289344 bytes
255 heads, 63 sectors/track, 260 cylinders, total 4186112 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--vg-swap_1 doesn't contain a valid partition table
我以前从未真正使用过 LVM,也不是 Linux 专家,所以我不确定下一步该怎么做,因为我正在搜索有关此过程的指南。最后,我还想为启动分区添加一些空间。
感谢您花时间阅读这个问题,如果我可以提供更多详细信息,请告诉我。
答案1
如果您想在没有 GUI 工具的情况下执行此操作,则可以使用parted
。
在我的系统上,我将根文件系统(位于 上dev/sda3
)从 128GB 扩展到 160GB。根据您的设置调整以下示例。所有命令都必须以 root 身份运行(sudo -i
以 root 身份登录)。
之前,我的使用率为 95%:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 124G 113G 6.3G 95% /
使用 Gen2 虚拟机,所有操作都可以在线完成,客户操作系统正在运行,无需重新启动。每个步骤几乎都是即时完成的。
首先,使用 Hyper-V GUI 或 CLI 工具扩展虚拟磁盘(最简单的方法是打开 VM 的设置,选择 SCSI 控制器下的硬盘驱动器,然后选择“编辑”然后选择“扩展”)。
接下来,您需要告诉 Ubuntu 重新扫描块设备,在本例中sda
:
# echo 1 > /sys/block/sda/device/rescan
接下来,运行parted
并选择p
。print
它应该识别出分区表未使用完整空间并询问您是否要修复它,因此Fix
此时选择。
# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an
extra 69206016 blocks) or continue with the current setting?
Fix/Ignore? Fix
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 172GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 boot, esp
2 538MB 1612MB 1074MB ext4
3 1612MB 136GB 135GB
现在您需要实际扩展分区。在 中parted
输入resizepart
命令来完成此操作。就我而言,由于我正在扩展,所以sda3
我告诉它将分区 3 的大小调整为可用空间的 100%。再次调整命令以适应您的设置。
(parted) resizepart 3 100%
(parted) p
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 172GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 boot, esp
2 538MB 1612MB 1074MB ext4
3 1612MB 172GB 170GB
(parted) quit
输入quit
退出parted
。
如果你使用 LVM,现在您需要告诉它扩展物理卷。pvs
显示有关物理卷的信息;使用pvresize
它来扩展它。如果没有给出参数,它将使用所有可用空间。
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- <125.50g 0
# pvresize /dev/sda3
Physical volume "/dev/sda3" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- <158.50g 33.00g
现在,您需要扩展逻辑卷以及文件系统本身。lvextend
使用-r
开关将同时执行这两项操作,假设您使用它知道的文件系统(例如 ext3/4)。
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ubuntu-lv ubuntu-vg -wi-ao---- <125.50g
# lvextend -l +100%FREE -r /dev/mapper/ubuntu--vg-ubuntu--lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from <125.50 GiB (32127 extents) to <158.50 GiB (40575 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 16, new_desc_blocks = 20
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 41548800 (4k) blocks long.
就是这样!现在验证文件系统是否看到额外的空间:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 156G 113G 38G 76% /
如果你不使用 LVM,你可以将pvresize
/lvextend
步骤替换为resize2fs
相反。简单来说,resize2fs /dev/sda3
它将告诉文件系统使用新增加的分区上的所有可用空间。
Teknophiles 上的这篇文章包含有关此过程的更多详细信息以及 Hyper-V 工具的屏幕截图。(2021 年 12 月更新:显然 teknophiles.com 现已停用;更新后的链接指向该网站的 archive.org 快照。)
答案2
截至 2019 年,我在尝试调整在 Hyper-V 上运行的 Ubuntu 18.04 VM 的大小时遇到了一些问题。安装 gparted:
sudo apt install gparted
、运行它:sudo gparted
并在应用程序的 GUI 上执行调整大小的过程解决了我的问题。
gparted GUI 帮助:https://youtu.be/cDgUwWkvuIY?t=330
编辑:显然,这仍然有效2021 年 1 月因为这个答案最近得到了赞同。
答案3
您使用gparted
来调整分区大小。在 12.04 中,您需要从 livecd 启动并从那里运行它,因为它无法调整已挂载的分区大小。在更高版本中,它可以在挂载分区时增加许多分区。这只会为 LVM 提供更多空间来分配给逻辑卷。如果要增加逻辑卷,您可以运行例如lvresize -L 30g ubuntu-vg/root
将根 lv 的大小增加到 30g。然后您需要告诉文件系统使用这个新空间,您可以使用 来做到这一点resize2fs /dev/ubuntu-vg/root
,假设您使用的是默认的 ext4 文件系统。后面两个步骤可以在线执行,而不必从其他媒体启动。您还可以指定100%
而不是30g
来lvresize
使用所有可用空间,但这有点违背了首先使用 LVM 将所有空间分配给一个逻辑卷的目的,因为您没有任何可用空间可用于创建快照、新逻辑卷或稍后增加某些卷。