将分区移动到磁盘末尾

将分区移动到磁盘末尾

我在 Promox 上有一个运行 Debian 11 的虚拟机。我需要增加磁盘空间,因此我在 Proxmox GUI 中调整了磁盘大小。但现在,我需要扩大根分区。如果根分区是磁盘上的最后一个分区,那么这不会是问题,但现在它是磁盘中间的分区。在调整根分区的大小之前,需要将交换分区移至磁盘末尾。但需要满足两个条件:

  1. 交换分区必须保持相同的大小
  2. 最终的交换分区必须与磁盘布局正确对齐

由于我正在开发无头设备,因此我们必须使用 CLI。这就是,分手给我的:

(parted) print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  2097kB  1049kB                        bios_grub
 2      2097kB  33.3GB  33.3GB  ext4
 3      33.3GB  34.4GB  1022MB  linux-swap(v1)        swap

(parted) print free
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                        bios_grub
 2      2097kB  33.3GB  33.3GB  ext4
 3      33.3GB  34.4GB  1022MB  linux-swap(v1)        swap
        34.4GB  68.7GB  34.4GB  Free Space

我知道,我必须删除现有的交换分区,swapoff /dev/sda3在parted中使用和删除它。

我的问题是:我必须输入什么才能创建一个与该磁盘末尾大小完全相同的正确对齐的交换分区?

顺便说一句:我不想用文件替换交换。

答案1

您可以使用如下标志进行对齐:

parted /dev/sda --align optimal

然后设置单位作为第一步

unit MiB
print

就我个人而言,我有一个名为pdisk处理此问题的脚本,并且我parted以非交互方式运行:

#!/bin/sh
#
dev="$1"
shift
test 0 -eq $# && set -- print
parted "$dev" --align optimal unit MiB "$@"

进而

pdisk /dev/sda [<command>]

相关内容