使用 bsdlabel 更改 FreeBSD 上的分区大小

使用 bsdlabel 更改 FreeBSD 上的分区大小

我最近安装了 FreeBSD,但我不喜欢安装过程中接受的分区大小,并且想更改它们。我已按照手册页中的说明进行操作,因此我以 root 身份执行了此操作

# bsdlabel -e ad0s2

(ad0s2是安装FreeBsd的分区)。进行更改后,我尝试保存并退出,但收到以下消息:

/tmp/EdDk.RBNU2c8vnz: unmodified: line 1
bsdlabel: cannot open provider /dev/ad0s2 for writing label: Operation not permitted
re-edit the label? [y]:

如果我尝试重新编辑,我会再次收到相同的消息。如果我尝试保存而不进行任何更改,我什至会收到此消息。我是 FreeBSD 的新手,认为在更改磁盘标签之前我可能必须做一些事情,但我在任何地方都找不到任何此类信息。有人可以帮我吗?谢谢!

答案1

您是否在 GEOM 调试标志中启用了“足部射击”?

# sysctl kern.geom.debugflags=16

答案2

我不知道什么确切地您正在尝试这样做,但请注意您无法通过编辑磁盘标签来调整文件系统的大小。

仅有的调整文件系统大小的方法是使用growfs(8),但这仅适用于将大小附加到末尾,如果有另一个文件系统妨碍,则这将不起作用。用一张图来解释一下:

Before:    After:
+-----+    +-----+
| fs1 |    + fs1 +
+-----+    |     |
|     |    +-----+
| fs2 |    | fs2 |
+-----+    +-----+

如您所见,扩大 fs1 意味着移动 fs2 的开头。这不是 FreeBSD 上的 UFS 可以做到的事情。因此,如果您像这样编辑磁盘标签,fs1 会没问题,但 fs2 会损坏。

换句话说:如果您不喜欢在安装时选择的文件系统大小,则需要备份并重新安装,或者接受它。

话虽这么说,您sysctl kern.geom.debugflags=16无论如何都可以用来进行更改(这将允许您编辑已安装磁盘上的分区标签和/或磁盘标签)。

答案3

您始终可以用来gpart修改 MBR 分区表和 BSD 磁盘标签。例如,要更改 ada0 类型的分片 1 的分区 b 的类型:

# gpart modify -i 2 -t freebsd-ufs /dev/ada0s1 

相关内容