文章内容
2025/11/13 8:38:26,作 者: 黄兵
OpenStack Swift 单节点部署
OpenStack Swift 安装时最常见的“存储节点准备”问题。因为 Swift 需要有独立的磁盘或目录来存放对象数据(object/account/container 数据),而你现在的 VPS 只有一块系统盘 /dev/sda1。我们可以用两种方式解决这个问题:
✅ 一、【推荐方案】使用一个目录模拟磁盘(开发/测试环境)
如果只是测试或单节点部署(SAIO / All-in-One),可以直接在系统盘上创建几个目录,模拟挂载点,而不需要额外磁盘:
# 创建存储挂载点目录 mkdir -p /srv/node/sdb1 mkdir -p /srv/node/sdb2 # 修改 /etc/fstab 让它们作为挂载点(临时绑定) # 注意,这里不是真实磁盘,只是绑定到本地目录 mount --bind /srv/node/sdb1 /srv/node/sdb1 mount --bind /srv/node/sdb2 /srv/node/sdb2 # 验证挂载 df -h /srv/node/
然后把这两行加进 /etc/fstab(防止重启后失效):
/srv/node/sdb1 /srv/node/sdb1 none bind 0 0 /srv/node/sdb2 /srv/node/sdb2 none bind 0 0
这样 Swift 的配置(/etc/swift/account-server.conf、container-server.conf、object-server.conf)里用到的 devices = /srv/node 就能找到“磁盘”了。
✅ 二、【更规范方案】创建虚拟磁盘文件并挂载(适合单节点模拟多盘)
如果你希望模拟真实磁盘,可以创建 loop 设备:
# 创建 2 个 10GB 的虚拟磁盘文件 mkdir -p /swift-disks cd /swift-disks dd if=/dev/zero of=disk1.img bs=1G count=10 dd if=/dev/zero of=disk2.img bs=1G count=10 # 格式化为 XFS(Swift 推荐 XFS) mkfs.xfs disk1.img mkfs.xfs disk2.img # 挂载 mkdir -p /srv/node/sdb1 /srv/node/sdb2 mount -o loop,noatime,nodiratime,logbufs=8 /swift-disks/disk1.img /srv/node/sdb1 mount -o loop,noatime,nodiratime,logbufs=8 /swift-disks/disk2.img /srv/node/sdb2 # 验证 df -h | grep /srv
然后同样在 /etc/fstab 里添加持久挂载:
/swift-disks/disk1.img /srv/node/sdb1 xfs loop,noatime,nodiratime,logbufs=8 0 0 /swift-disks/disk2.img /srv/node/sdb2 xfs loop,noatime,nodiratime,logbufs=8 0 0
✅ 三、如果你的 VPS 支持挂载新磁盘
如果你的云服务商(比如 Hetzner、DigitalOcean、阿里云)允许添加数据盘,那么:
- 在控制台添加一块新磁盘;
- SSH 登录后执行:
lsblk
- 找到新的磁盘,比如
/dev/sdb; - 格式化并挂载:
mkfs.xfs /dev/sdb mkdir -p /srv/node/sdb1 mount /dev/sdb /srv/node/sdb1
- 添加到
/etc/fstab:
/dev/sdb /srv/node/sdb1 xfs noatime,nodiratime,logbufs=8 0 0
✅ 四、Swift 配置中需要对应修改的地方
确保在以下配置文件中指定挂载路径一致:
-
/etc/swift/account-server.conf -
/etc/swift/container-server.conf -
/etc/swift/object-server.conf
[DEFAULT] devices = /srv/node mount_check = true
其它相关推荐:
1、Ubuntu 22.04 安装 OpenStack Swift
2、Ubuntu 22.04 安装 OpenStack Swift 存储策略
评论列表