我有一个 Ubuntu 19.04 虚拟机,我通过 ssh 连接到它。
我必须调整引导分区的大小。
# fdisk -l
Disk /dev/sda: 300 GiB, 322122547200 bytes, 629145600 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc59d8598
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 487423 485376 237M 83 Linux
/dev/sda2 487424 629143551 628656128 299.8G 83 Linux
我喜欢将 sda1 调整为 1024M 并且不能使用 live cd。
在我的虚拟机上,我是 root 用户。
我想我必须调整根分区 sda2 的大小并将其向前移动,然后调整 sda1 的大小。
需要一点帮助来执行此操作。
我没有找到像我这样的问题:仅在一个根分区(sda2)上的示例,并且无需通过腾出空间来移动它来引导分区(sda1)
你能帮我吗?
最好的问候,
莱昂纳多
PS我没有丢失分区上的数据:-)
更新
我发现我的提供商让我在我的 vm 上启动一个system-rescue-cd,所以我卸载了所有 vm 分区,但我在命令行中。
我现在可以做这份工作吗?
我已成功调整 /boot 分区的大小,使用 ssh 连接放大它并缩小虚拟机上的根分区。
我有 /dev/sda1 (/boot)
和 /dev/sda2 (/) 根
首先需要在一些像live cd 上启动。我的提供商让我使用system-rescue-cd引导系统。因此,在我的提供商 vps 控制面板上,我可以选择在system-rescue-cd中启动,然后我可以通过 ssh 在我的 vps 的同一 IP 上连接到它。
在我的主机上执行此操作之前,我会:
$ mv /home/<username>/.ssh/known_hosts /home/<username>/.ssh/known_hosts.bak
为避免我的系统尝试使用 rsa 证书连接到远程主机。
在最后的工作中,我会
$ mv /home/<username>/.ssh/known_hosts.bak /home/<username>/.ssh/known_hosts
恢复以前的行为。
# umonunt /dev/sda1
# umonunt /dev/sda2
系统挂载,告诉我它们没有挂载。
# e2fsck -f /dev/sda2
检查 fs# resize2fs /dev/sda2 200G
缩小)... The filesystem on /dev/sda2 is now xxxxx (4k) blocks long. ...
xxxxx 是一个数字。您必须多次 xxxxx * 4 才能获得 yyyyy k 中的新大小并记住它# fdisk /dev/sda
(输入m寻求帮助)Partition #2 contains a ext4 signature Do you want to remove the signature? [Y]es/[N]o:
选择n(否则我想它会删除你的所有数据)
现在您必须将根分区向右移动。
你需要定义一个
new_start_sector
移动。# fdisk -l
并获取 /dev/sda1 (/boot 分区)的最后一个扇区,假设数字 zzz
为 1024*1024*1024/512 并在扇区中获取 1 GB 并添加到 zzz 以获得
new_start_sector
(zzz+(1024*1024*1024/512) )制作一个这样的 bash 脚本:
现在您已经移动了根分区,但必须设置正确的分区表。
# fdisk /dev/sda
(输入m寻求帮助)new_start_sector
之前定义的Partition #2 contains a ext4 signature Do you want to remove the signature? [Y]es/[N]o:
选择n(否则我想它会删除你的所有数据)
现在调整根分区的大小:
# e2fsck -f /dev/sda2
检查 fs# resize2fs /dev/sda2
现在删除引导分区并使其更大:
# fdisk /dev/sda
(输入m寻求帮助)new_start_sector
- 1Partition #1 contains a ext4 signature Do you want to remove the signature? [Y]es/[N]o:
选择n(否则我想它会删除你的所有数据)
现在调整引导分区的大小:
# e2fsck -f /dev/sda1
检查 fs# resize2fs /dev/sda1
我重新启动,一切正常。
我在system-rescue-cd上执行此命令,并且在重新启动时所有历史记录都消失了,所以我尝试记住所有内容以在那里写入。
小心计算在我的示例中使用的扇区和字节。
所有这个例子都是通过在谷歌上搜索各种解决方案一二三
和
更多 ......
记住
$ mv /home/<username>/.ssh/known_hosts.bak /home/<username>/.ssh/known_hosts
最好的问候,
莱昂纳多