如何在 FreeBSD 上利用引导驱动器上未使用的空间

如何在 FreeBSD 上利用引导驱动器上未使用的空间

我有一个旧的 FreeBSD 服务器(运行 7.3-RELEASE),迫切需要额外的存储空间。事实上,它有一些——原来的20G SCSI驱动器已经被300G SCSI驱动器取代,所以理论上还有280G可用。

我想利用这个空间。我认为最好的方法是将未使用的空间格式化为现有驱动器上的新切片,但我不清楚如何在不破坏现有切片上的数据的情况下执行此操作。我能找到的大多数有关执行此操作的文档都涉及初始安装。我知道如何在初始安装期间设置片和分区,但不知道如何在初始安装后声明驱动器上未使用的空间。

(我也很乐意扩展切片并向现有切片添加额外的分区,但我听说这风险更大)。

我认为执行此操作的简单方法可能是使用/stand/sysinstall,但是当我进入配置 -> FDisk 或配置 -> 标签时,我收到以下消息:

No disks found!  Please verify that your disk controller is being
properly probed at boot time.  See the Hardware Guide on the
Documentation menu for clues on diagnosing this type of problem.

这显然是不正确的,因为当我收到此消息时,我实际上正在耗尽磁盘,但也许 sysinstall 只是不喜欢弄乱启动磁盘?

输出fdisk da0

******* Working on device /dev/da0 *******
parameters extracted from in-core disklabel are:
cylinders=2235 heads=255 sectors/track=63 (16065 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=2235 heads=255 sectors/track=63 (16065 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 35905212 (17531 Meg), flag 80 (active)
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 1023/ head 254/ sector 63
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>

输出bsdlabel da0s1

# /dev/da0s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  2097152        0    4.2BSD     2048 16384    89
  b:  2097152  2097152      swap
  c: 35905212        0    unused        0     0         # "raw" part, don't edit
  e:  2097152  4194304    4.2BSD     2048 16384    89
  f: 29613756  6291456    4.2BSD     2048 16384    89

更新:

我不同意使用萨德来达到这个目的的建议。不幸的是,萨德看不到太多的空白:

         0         63         62        -     12     unused        0
        63   35905212   35905274    da0s1      8    freebsd      165
  35905275      10501   35915775        -     12     unused        0

这可能是一个死胡同。我需要以某种方式弄清楚驱动器几何形状吗?可能需要提及的是,该驱动器是 RAID 1 镜像集;最初镜像驱动器都是 20G SCSI 驱动器,但现在都已更换为 300G 驱动器。如果有帮助的话我愿意暂时打破镜子。

答案1

20GB磁盘!?去给自己买一个 16 或 32GB 的 USB 拇指驱动器。将其插入盒子中(它将挂载为 /dev/daN(N 是未使用的下一个最低的 da 设备)。使用 sysinstall,将 USB 驱动器格式化为一个大分区,然后将整个磁盘复制到拇指驱动器(如果你很偏执并且没有其他备份,则可以使用 2 个拇指驱动器):

sysinstall (configure -> fdisk & label)
cd /mnt/root
dump -0aL -f - / | restore xf -

然后编辑 /mnt/root/etc/fstab,告诉 FreeBSD 使用如下 fstab 条目启动拇指驱动器:

/dev/da0s1a /   ufs ro   1  1

如果您的 BIOS 配置为从 USB 可移动介质启动,则下次重新启动时将从拇指驱动器启动。如果没有,您可以更改 BIOS 设置或编辑主磁盘上的 /etc/fstab 以从拇指驱动器启动。现在您已拥有完整且经过验证的备份,请进入 RAID BIOS,销毁该卷并创建一个新的(更大的)卷。然后您可以使用标准 FreeBSD 实用程序来格式化新卷。

答案2

因此,听起来当您更换旧磁盘时,您基本上只是使用 dd 将整个旧磁盘复制到新磁盘。因此,您应该能够创建另一个 fdisk 分区,即 da0s2,然后在其中放置另一个 BSD 分区,即 da0s2a。我会使用 geom 来完成此操作,而不是 sysinstall 或 sade。如果您可以显示 的输出gpart list,我可能可以引导您创建新分区。当然,一定要做好备份等。

当然,更好的做法是升级到9.1,扩大分区,然后使用growfs扩大现有的FS,这样新的磁盘空间就属于同一个FS。 (通常我喜欢通过有一个单独的 /var 和 /usr (至少)来将事情分开一点,但我知道现在大多数人不这样做,并且在那个大小的磁盘上,管理起来可能会变得有点麻烦东西存放的地方。)

(哦,我想最好的办法是切换到 ZFS,但我想如果系统中有一个 20GB 磁盘,它可能是 32 位并且没有很多 RAM,所以对于 ZFS 来说并不理想......)

编辑:完全错过了关于镜子的部分。是的,打破镜子可能是实现这一目标的一种途径。是硬件RAID镜像还是软件RAID镜像?

相关内容