FreeBSD数据迁移方法

作者:技术拾光

时间:2026-07-30

浏览:421

在开始操作之前,请先确认硬件已就位:关闭系统,安装新硬盘,然后重新启动。启动后,首要任务是检查系统是否识别到新设备。使用 dmesg | grep ad2 命令查看,如果输出类似 ad2: 9765MB [19841/16/63] at ata1-master UDMA33 的信息,说明新硬盘已被成

文章目录

在开始操作之前,请先确认硬件已就位:关闭系统,安装新硬盘,然后重新启动。启动后,首要任务是检查系统是否识别到新设备。使用 dmesg | grep ad2 命令查看,如果输出类似 ad2: 9765MB [19841/16/63] at ata1-master UDMA33 的信息,说明新硬盘已被成功检测。若没有反应,则需要检查接线或兼容性。

新硬盘安装完成后,即可进行数据迁移。以下以两种常见场景为例,逐步说明具体步骤。两种方法各有适用场景,关键在于根据自身需求选择合适方案。

一、增加硬盘,将原硬盘 /var 数据迁移至新硬盘

系统已运行,FreeBSD 无法像 PQMagic 那样随意调整分区空间而不损坏数据。如果 /var 空间不足,唯一办法是增加一块硬盘,并将 /var 数据迁移过去。虽然过程看似繁琐,但步骤清晰,并不复杂。

首先对新硬盘进行分区。可以使用 sysinstall 或命令行工具。尽管 fdisk 更灵活,但建议使用 sysinstall,其图形界面操作更直观,不易出错。分区完成后,再用 sysinstall 中的 Label 功能创建文件系统。注意,文件系统类型需与目标挂载点匹配。

挂载分区:

hpserver# mount /dev/ad1s1e /mnt

随后进行数据迁移,有两种方式可选:tar 或 dump/restore。下面分别介绍,可根据实际情况选择。

方法一:使用 tar 备份还原

hpserver# cd /var
hpserver# tar cf - * | (cd /mnt; tar xf -)

此方法简单直接,但需注意:如果 /var 中存在正在被占用的文件(如日志、数据库文件),tar 可能报错甚至中途停止。例如,曾经遇到备份中途因临时文件卡住而失败的情况。

方法二:使用 dump/restore(推荐)

根据个人经验,更推荐使用 dump。因为它以数据块为单位读取,而非文件级别,正在使用或临时文件不会干扰备份。操作如下:

hpserver# cd /mnt
hpserver# dump -f- /var | restore -f- -r

执行过程中会看到类似以下输出:

DUMP: Date of this level 0 dump: Wed Jan 14 23:44:35 2004
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/ad0s1e (/var) to standard output
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 305 tape blocks.
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: DUMP: 361 tape blocks
DUMP: finished in less than a second
DUMP: DUMP IS DONE

需要提醒一点:备份期间应确保没有新数据写入原 /var,否则这部分增量数据不会被迁移。备份完成后,检查 /mnt 目录内容是否完整,然后卸载:

hpserver# ls /mnt
hpserver# umount /mnt

最后一步,编辑 /etc/fstab 文件,将原来指向 /var 的文件系统改为新分区的设备名(例如 /dev/ad1s1e),然后重启,新分区即可生效。

二、硬盘复制(整体迁移)

如果旧系统盘存在小问题,或容量不足需要整体更换,可直接将旧硬盘数据整个复制到新硬盘,然后替换旧盘。安装步骤同上,但需先弄清旧硬盘每个分区对应的挂载点。一个小技巧:对照 /etc/fstab 记录分区名称和挂载点,新硬盘分区时按相同次序命名,以便后续挂载时不会混淆。

具体步骤如下:

1. 使用 sysinstall 对新硬盘进行分区,并设置 MBR。分区次序需模仿旧硬盘:例如旧硬盘的 /dev/ad0s1g 对应 /usr,新硬盘就用 /dev/ad2s1g 对应 /usr;旧硬盘的 /dev/ad0s1e 对应 /var,新硬盘就用 /dev/ad2s1e 对应 /var。注意:在 Label 阶段,务必清空所有文件系统的挂载点(按 M 键),因为此时尚无临时挂载目录,不清空会与当前系统冲突。

2. 创建临时挂载点并挂载新分区:

hpserver# cd /mnt
hpserver# mkdir root
hpserver# mkdir usr
hpserver# mkdir var

然后根据记录依次挂载:

hpserver# mount /dev/ad2s1a /mnt/root
hpserver# mount /dev/ad2s1g /mnt/usr
hpserver# mount /dev/ad2s1e /mnt/var

3. 复制数据。此处强烈建议使用 dump 而非 tar。因为 tar 在复制根分区时若不添加排除参数,会将当前系统所有文件(包括 /proc、/sys 等虚拟目录)一并复制,这不是期望的结果。dump 则不会出现此问题:

hpserver# cd /mnt/root
hpserver# dump -f- / | restore -f- -r
hpserver# cd /mnt/var
hpserver# dump -f- /var | restore -f- -r
hpserver# cd /mnt/usr
hpserver# dump -f- /usr | restore -f- -r

4. 数据复制完成后,检查是否有遗漏,然后分别卸载分区:

hpserver# umount /mnt/root
hpserver# umount /mnt/usr
hpserver# umount /mnt/var

5. 关闭机器,取下旧硬盘,将新硬盘安装到旧硬盘原来的接口位置。此步骤不可省略——如果新硬盘仍插在原 ad2 位置,而 /etc/fstab 中写的是 ad0,系统启动时将找不到 /usr、/var 等文件系统。重新开机,若无异常,则迁移成功。若出现问题,回头检查每一步是否有遗漏。无论结果如何,请勿急于清空旧硬盘——让新系统稳定运行几天,确认一切正常后再处理旧盘。

最后再次强调:数据迁移容错空间很小,稍有不慎可能导致数据丢失。因此,建议每步操作前先停下来思考,确认无误后再继续。谨慎行事,方能确保万无一失。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章