服务器环境
服务器环境
root@test:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ada0s1a 48G 3.4G 41G 8% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ada0s1d 810G 32M 745G 0% /home
需求将home目录 810G扩容到根目录
具体步骤如下:
步骤1:确认当前环境
# 查看分区布局
gpart show ada0
bsdlabel /dev/ada0s1
# 确认 /home 确实无重要数据
ls -la /home
df -h
步骤2:查看当前内存状态
top -b | head -5
步骤3:关闭swap
swapoff /dev/ada0s1b
步骤4:卸载/home
umount /home
没报错不用看下面
--------------------------
如果提示 busy:
fuser -m /home
lsof +D /home
步骤5:备份/etc/fstab
cp /etc/fstab /etc/fstab.bak
步骤6:修改/etc/fstab,删除 swap 和 home行
sed -i '' '/ada0s1b/d' /etc/fstab
sed -i '' '/ada0s1d/d' /etc/fstab
步骤7:验证fstab修改结果
cat /etc/fstab
步骤8:创建新分区标签文件(这里需要修改为自己的)
printf '%s\n' '# /dev/ada0s1:' '8 partitions:' '# size offset fstype [fsize bsize bps/cpg]' ' a: 1858076672 0 4.2BSD 2048 16384 64008' ' b: 16777216 1858076672 swap' ' c: 1874853888 0 unused' > /tmp/newlabel
关于这行命令的解释
printf '%s\n' \
'# /dev/ada0s1:' \
'8 partitions:' \
'# size offset fstype [fsize bsize bps/cpg]' \
' a: 1858076672 0 4.2BSD 2048 16384 64008' \
' b: 16777216 1858076672 swap' \
' c: 1874853888 0 unused' \
> /tmp/newlabel
---------------------------
printf '%s\n' ... > /tmp/newlabel:将多行内容逐行写入 /tmp/newlabel 文件
# /dev/ada0s1: 注释指明对应设备
'8 partitions: 声明共有8个分区槽位(实际只用前面几个
# size offset fstype [fsize bsize bps/cpg] 列标题注释
a: 1858076672 0 4.2BSD 2048 16384 64008 新的根分区:- 大小 = 1858076672 扇区(约 887 GB,扇区=512B)
- 偏移 = 0(从 slice 起始开始)
- 类型 = 4.2BSD(UFS 文件系统)
- 后面是文件系统参数(碎片大小、块大小、柱面密度),保持默认
b: 16777216 1858076672 swap 新的 swap 分区:
- 大小 = 16777216 扇区(8 GB)
- 偏移 = 1858076672(紧跟在 a 分区之后)
- 类型 = swap
c: 1874853888 0 unused 传统 c 分区:代表整个 slice(大小为 1874853888 扇区,即 894 GB)
偏移 0,
类型 unused,不应被修改
如果需要修改,修改这个上面的三处
1.a行中的 1858076672 新的值为总盘区数-swap数值
2.b行中的1858076672 同上
3.c行中的 1874853888 新硬盘slice的总扇区数
查看 MBR slice 的大小
gpart show ada0
步骤9:验证新标签文件内容
cat /tmp/newlabel
步骤10:应用新分区标签
bsdlabel -R /dev/ada0s1 /tmp/newlabel
这里会出现报错如下:
root@test:~ # bsdlabel -R /dev/ada0s1 /tmp/newlabel bsdlabel: cannot open provider /dev/adaes1 for writing label: Operation not permitted
这是因为 label 无法直接写入。需要用 gpart 命令来修改。先查看当前 gpart 布局:
gpart show ada0s1
gpart删除d、b分区
#删除d分区(home
gpart delete -i 4 /dev/ada0s1
##删除b分区(swap
gpart delete -i 2 /dev/ada0s1
步骤11:扩容根分区(这里数值根据实际硬盘大小来填)
gpart resize -i 1 -s 886G /dev/ada0s1
步骤12:重建swap分区
gpart add -t freebsd-swap -s 8G /dev/ada0s1
步骤13:验证新分区布局
gpart show ada0s1
步骤14:扩展根分区文件系统
growfs -y /dev/ada0s1a
到这一步基本就扩容完成,下面再启用swap,新建home目录就行
步骤15:启用swap
swapon /dev/ada0s1b
步骤16:创建空的 /home 目录
mkdir -p /home
chmod 755 /home
步骤17:验证
df -h
swapinfo
gpart show ada0s1
步骤18:添加 swap 到 fstab
printf '%s\t%s\t%s\t%s\t%s\t%s\n' '/dev/ada0s1b' 'none' 'swap' 'sw' '0' '0' >> /etc/fstab
执行后验证
cat /etc/fstab
步骤19:重启查看是否正常
reboot
具体文档
本文隐藏内容
登陆 后才可以浏览
- THE END -
最后修改:2026年5月27日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://7d.delu7.cn/98/.html
共有 0 条评论