cyb*_*erz 14 linux partitioning gpt
在 Linux 上,我曾经使用 fdisk 调整 MBR 分区的大小,即使是在实时文件系统上,然后发出 resize2fs/pvresize/...(取决于 fs 类型)来分配新空间。
最近我一直在使用 Xen 和 GPT 分区,我注意到不幸的是 parted 似乎不允许动态调整已安装分区的大小,实际上它会抱怨:
Error: Partition XXX is being used. You must unmount it before you modify it with Parted.
Run Code Online (Sandbox Code Playgroud)
我已经尝试了resize命令和偶数rm+mkpart组合,但他们都会抱怨分区被挂载。
我怎样才能做到这一点?
Rod*_*ith 15
最安全的方法是使用紧急介质(live CD 等)启动并使用 GParted,这将调整分区及其包含的文件系统的大小。但是,这仅在当前未使用分区时才有效。
但是,如果您负担不起任何停机时间,则可以尝试使用gdisk代替parted. 您需要删除要调整大小的分区并在其位置创建一个具有相同起点的新分区,就像您对fdisk. gdisk愿意在正在使用的磁盘上工作,尽管内核可能不会注册任何更改。在这种情况下,您可能需要使用partprobe或kpartx让内核接受新的分区表,如果不起作用甚至重新启动计算机。(这应该与使用非常相似fdisk。)
Nil*_*yer 14
这通常仅适用于较新的 Linux 发行版。需要的工具:
GPT 分区在磁盘末尾存储备份头。如果您调整了底层设备的大小,备份标头将位于中间的某个位置。第一步是将分区头移动到磁盘的末尾。
假设磁盘是/dev/sda,分区是/dev/sda3(也必须是最后一个分区):
sgdisk -e /dev/sda
Run Code Online (Sandbox Code Playgroud)
然后删除最后一个分区并重新创建它:
sgdisk -d 3 /dev/sda
sgdisk -N 3 /dev/sda
Run Code Online (Sandbox Code Playgroud)
您通常会看到一条消息,表明内核无法重新加载分区表。您必须运行 partprobe 以便使用新大小注册分区:
partprobe /dev/sda
Run Code Online (Sandbox Code Playgroud)
如果这不成功,则必须重新启动虚拟机。之后,您可以使用适当的工具扩展文件系统,例如 ext4 等:
resize2fs /dev/sda3
Run Code Online (Sandbox Code Playgroud)
注意:运行 sgdisk 可能具有破坏性。确保您有适当的备份程序。
这是一个自动化工具用来在一次运行中在线调整分区大小的示例:
sgdisk -d 1 -n 1:2048:0 -c 1: -u 1:E485F29F-A1F4-4953-9DD8-799EAEA0119B -t 1:0700 /dev/xvda
以下是 sgdisk 命令的选项列表:
gdisk /dev/xvda; p输出获取当前分区的 id以重用相同的 uid/dev/xvda 是我们重新分区的磁盘。
所以它会立即删除并在其位置创建一个新分区。
附注。关于类型代码“0700”的一些说明。来自 man SGDISK(8)
Run Code Online (Sandbox Code Playgroud)-t, --typecode=partnum:{hexcode|GUID} Change a single partition's type code. You enter the type code using either a two-byte hexadecimal number, as或完全指定的 GUID 值,例如 EBD0A0A2-B9E5-4433-87C0-68B6B72699C7。
在这里找到了“0700”含义的最佳解释 - http://www.rodsbooks.com/gdisk/walkthrough.html
“但是等等,”你说,“我以为磁盘有一个 FAT 分区!” 确实如此。Windows 对其所有数据分区使用单一的 GUID 代码,无论是 FAT 还是 NTFS。过去,Linux 中的数据分区使用了相同的代码。(稍后会详细介绍....)因此,在这种情况下,几个不同的 MBR 代码都被转换为单个 GPT GUID 代码。GPT fdisk 对所有这些都使用了 0x0700 代码(或更准确地说,EBD0A0A2-B9E5-4433-87C0-68B6B72699C7),这有点随意。
就我而言,我认为这是一个 Linux ext4 分区,但分区的类型代码并不意味着文件系统类型,因此“0700”看起来更像是 sgdisk 的综合类型。至少在我见过的情况下。
聚苯乙烯。您可能需要运行partprobe内核才能在不重新启动系统的情况下了解分区更改。
| 归档时间: |
|
| 查看次数: |
73641 次 |
| 最近记录: |