前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为OpenBSD 新增硬盘并扩展原有系统硬盘容量

为OpenBSD 新增硬盘并扩展原有系统硬盘容量

原创
作者头像
cnllww
修改2022-10-20 14:09:45
1.5K0
修改2022-10-20 14:09:45
举报
文章被收录于专栏:OpenBSD中文文档

作者:柳尉 本文链接

笔者在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 。

代码语言:yaml
复制
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 ,应该就是它了

代码语言:yaml
复制
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

备注: 进行服务器升迁时,最好进入单用户模式进行操作。如果只能远程接入操作,最好先把除SSH以后的服务停掉,以免影响/usr/local下程序运行,也为了防止切换/usr/local目录时出错, 另外直接以root登入操作并阻止一般用户登入,防止unmount /home时出错。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备执行二项工作:
    • 1,在原系统中增加一块64G的硬盘,全部容量用于创建一个新分区并挂载到/data,把/hom下的所有文件备份到/data目录下;
      • 2,在VMware ESXi中把原来的系统盘由8G扩展为32G,把之前的sd0g(原/home )挂载到 /usr/local ,把新加的容量创建新分区sd0h 并挂载到 /home 。
      • 准备工作:
      • 对新增加的硬盘进行分区:
        • 对新加硬盘分区表进行初始化:
          • 对新硬盘进行分区:
            • 对新建分区进行格式化:
              • 挂载分区:
                • 接下来备份数据:
                • 对原来的系统盘sd0进行操作
                  • 对sd0的openbsd分区进行修改:
                    • 对 sd0h 进行格式化:
                    • 接下来的工作就是扫尾工作
                      • 1,把/dev/sd0g  挂到 /home/local下面:
                        • 2,修改fstab
                          • 3,重新挂载目录
                            • 4,迁回数据
                              • 至此,两项任务全部完成。
                              • 备注: 进行服务器升迁时,最好进入单用户模式进行操作。如果只能远程接入操作,最好先把除SSH以后的服务停掉,以免影响/usr/local下程序运行,也为了防止切换/usr/local目录时出错, 另外直接以root登入操作并阻止一般用户登入,防止unmount /home时出错。
                              相关产品与服务
                              对象存储
                              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档