作者:柳尉 本文链接
笔者在VMware ESXi中有一台OpenBSD虚拟机,因为安装时只跑路由,所以硬盘很小,当时只给了8G容量,经过多次升级,目前版本为6.9 。最近需要安装python开发包发现/usr分区都不够用了。
代码语言:yaml复制openbsd# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/sd0a 989M 103M 837M 11% /
/dev/sd0g 1.9G 1.0G 809M 56% /home
/dev/sd0d 497M 14.0K 473M 0% /tmp
/dev/sd0f 1.9G 1.6G 281M 85% /usr
/dev/sd0e 1.9G 51.9M 1.8G 3% /var
准备执行二项工作:
1,在原系统中增加一块64G的硬盘,全部容量用于创建一个新分区并挂载到/data,把/hom下的所有文件备份到/data目录下;
2,在VMware ESXi中把原来的系统盘由8G扩展为32G,把之前的sd0g(原/home )挂载到 /usr/local ,把新加的容量创建新分区sd0h 并挂载到 /home 。
准备工作:
首先在VMWare ESXi中增加一块64G硬盘以及把原有系统硬盘容量扩展到32G,这一步在VMware vSphere Client或VMware Workstationk都要以操作,操作前可以把虚拟关机并创建一个快照,以防万一。
对新增加的硬盘进行分区:
用root身份进入OpenBSD系统
代码语言:yaml复制openbsd#dmesg | grep sd
可以知道新加的硬盘为sd1
对新加硬盘分区表进行初始化:
代码语言:yaml复制openbsd# fdisk -i sd1
对新硬盘进行分区:
代码语言:yaml复制openbsd# disklabel -E sd1
Label editor (enter '?' for help at any prompt)
sd1> a a (新增一个分区,命名为a)
之后一路回车就行,结束按quit退出。
对新建分区进行格式化:
代码语言:yaml复制openbsd# newfs /dev/sd1a
挂载分区:
代码语言:yaml复制openbsd# disklabel sd1
# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: Virtual disk
duid: 32c655cb045cffb0
flags:
......
在上面查找duid值: 32c655cb045cffb0,在fstab文件中需要引到 。
在/etc/fstab中增加/data项:
代码语言:yaml复制openbsd# cat /etc/fstab
549cc96b1058cc0a.b none swap sw
549cc96b1058cc0a.a / ffs rw 1 1
549cc96b1058cc0a.g /home ffs rw,nodev,nosuid 1 2
549cc96b1058cc0a.d /tmp ffs rw,nodev,nosuid 1 2
549cc96b1058cc0a.f /usr ffs rw,wxallowed,nodev 1 2
549cc96b1058cc0a.e /var ffs rw,nodev,nosuid 1 2
32c655cb045cffb0.a /data ffs rw,nodev,nosuid 1 2
手工挂载:
代码语言:yaml复制openbsd#mount /data
openbsd# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/sd0a 989M 103M 837M 11% /
/dev/sd0g 1.9G 1.0G 809M 56% /home
/dev/sd0d 497M 14.0K 473M 0% /tmp
/dev/sd0f 1.9G 1.6G 281M 85% /usr
/dev/sd0e 1.9G 51.9M 1.8G 3% /var
/dev/sd1a 62.0G 2.0K 58.9G 0% /data
到此新硬盘就算添加完成了。
接下来备份数据:
代码语言:yaml复制openbsd# mv /home/* /data/
对原来的系统盘sd0进行操作
虽然我们把sd0的容量已经加到32G了,但给OpenBSD分区的容量并没有改变,所以第一步要对sd0的分区表进行修改:
代码语言:yaml复制openbsd# fdisk -e sd0
sd0: 1> p m 回车 (看到OpenBSD位于3号分区,容量为8192M)
......
sd0: 1> e 3 回车 (进入编辑状态)
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
-------------------------------------------------------------------------------
*3: A6 0 1 2 - 4177 85 4 [ 64: 16771860 ] OpenBSD
Partition id ('0' to disable) [01 - FF]: [A6] (? for help) 回车
Do you wish to edit in CHS mode? [n] 回车
Partition offset [0 - 67108863]: [64] 回车
Partition size [1 - 67108800]: [16771860] 67108800回车
sd0: 1> p m 回车 (这时可以看到3号分区的容量已经增加到32768M了。)
......
sd0: 1> quit 回车
这样分区表已经修改完毕。
对sd0的openbsd分区进行修改:
代码语言:yaml复制openbsd# disklabel -E sd0
Label editor (enter '?' for help at any prompt)
sd0> p m 回车
OpenBSD area: 64-16771860; size: 8189.4M; free: 0.0M
# size offset fstype [fsize bsize cpg]
a: 1027.6M 64 4.2BSD 2048 16384 12960 # /
b: 517.7M 2104512 swap # none
c: 32768.0M 0 unused
d: 517.7M 3164832 4.2BSD 2048 16384 8217 # /tmp
e: 2055.2M 4225088 4.2BSD 2048 16384 12960 # /var
f: 2055.2M 8434112 4.2BSD 2048 16384 12960 # /usr
g: 2016.0M 12643136 4.2BSD 2048 16384 12960 # /home
sd0>
注意首行:OpenBSD area: 64-16771860; size: 8189.4M; free: 0.0M 告诉我们OpenBSD area 为64-16771860 ,所以容量只有8189.4M 。
sd0> ? 回车
Available commands:
? | h - show help n [part] - set mount point
A - auto partition all space p [unit] - print partitions
a [part] - add partition q - quit & save changes
b - set OpenBSD boundaries R [part] - resize auto allocated partition
c [part] - change partition size r - display free space
D - reset label to default s [path] - save label to file
d [part] - delete partition U - undo all changes
e - edit drive parameters u - undo last change
g [d|u] - [d]isk or [u]ser geometry w - write label to disk
i - modify disklabel UID X - toggle expert mode
l [unit] - print disk label header x - exit & lose changes
M - disklabel(8) man page z - delete all partitions
m [part] - modify partition
Suffixes can be used to indicate units other than sectors:
'b' (bytes), 'k' (kilobytes), 'm' (megabytes), 'g' (gigabytes) 't' (terabytes)
'c' (cylinders), '%' (% of total disk), '&' (% of free space).
Values in non-sector units are truncated to the nearest cylinder boundary.
提示:b -set OpenBSD boundaries ,应该就是它了
sd0> b 回车
Starting sector: [64] 回车
Size ('*' for entire disk): [16771796] * 回车
sd0*> p m 回车 (看到free:24578.6M了)
OpenBSD area: 64-67108864; size: 32768.0M; free: 24578.6M
# size offset fstype [fsize bsize cpg]
a: 1027.6M 64 4.2BSD 2048 16384 12960 # /
b: 517.7M 2104512 swap # none
c: 32768.0M 0 unused
d: 517.7M 3164832 4.2BSD 2048 16384 8217 # /tmp
e: 2055.2M 4225088 4.2BSD 2048 16384 12960 # /var
f: 2055.2M 8434112 4.2BSD 2048 16384 12960 # /usr
g: 2016.0M 12643136 4.2BSD 2048 16384 12960 # /home
sd0*> a h 回车 (增加一个编号为h的分区)
offset: [16771840] 回车
size: [50337024] 回车
FS type: [4.2BSD] 回车
sd0*> p m 回车 (看到h: 24578.6M 了)
OpenBSD area: 64-67108864; size: 32768.0M; free: 0.0M
# size offset fstype [fsize bsize cpg]
a: 1027.6M 64 4.2BSD 2048 16384 12960 # /
b: 517.7M 2104512 swap # none
c: 32768.0M 0 unused
d: 517.7M 3164832 4.2BSD 2048 16384 8217 # /tmp
e: 2055.2M 4225088 4.2BSD 2048 16384 12960 # /var
f: 2055.2M 8434112 4.2BSD 2048 16384 12960 # /usr
g: 2016.0M 12643136 4.2BSD 2048 16384 12960 # /home
h: 24578.6M 16771840 4.2BSD 2048 16384 1
sd0*> w 回车
sd0*> q 回车
注意这行提示: Size ('*' for entire disk):16771796 * 回车
对 sd0h 进行格式化:
代码语言:yaml复制openbsd# newfs /dev/rsd0h
接下来的工作就是扫尾工作
1,把/dev/sd0g 挂到 /home/local下面:
代码语言:yaml复制openbsd# mv /usr/local/* /home/
2,修改fstab
代码语言:yaml复制openbsd# cat /etc/fstab
549cc96b1058cc0a.b none swap sw
549cc96b1058cc0a.a / ffs rw 1 1
549cc96b1058cc0a.d /tmp ffs rw,nodev,nosuid 1 2
549cc96b1058cc0a.f /usr ffs rw,wxallowed,nodev 1 2
549cc96b1058cc0a.g /usr/local ffs rw,wxallowed,nodev 1 2
549cc96b1058cc0a.e /var ffs rw,nodev,nosuid 1 2
549cc96b1058cc0a.h /home ffs rw,nodev,nosuid 1 2
32c655cb045cffb0.a /data ffs rw,nodev,nosuid 1 2
注意:549cc96b1058cc0a.g 指定到/usr/local ,后面的属性为rw,wxallowed,nodev ,要与 /usr保持一致 。549cc96b1058cc0a.h
指定到 /home 。
3,重新挂载目录
代码语言:yaml复制openbsd# umount /home
openbsd# mount /usr/local
openbsd# mount /home
4,迁回数据
代码语言:yaml复制openbsd# mv /data/* /home/
至此,两项任务全部完成。
2021-07-28