[ English | 日本語 | Deutsch | Indonesia ]

存储节点故障与维护

由于对象存储的高冗余性,处理对象存储节点问题比处理计算节点问题容易得多。

重启存储节点

如果存储节点需要重启,只需重启即可。在服务器重启期间,对托管在该节点上的数据的请求将被重定向到其他副本。

关闭存储节点

如果您需要关闭存储节点较长时间(一天或更长时间),请考虑将其从存储环中移除。例如

# swift-ring-builder account.builder remove <ip address of storage node>
# swift-ring-builder container.builder remove <ip address of storage node>
# swift-ring-builder object.builder remove <ip address of storage node>
# swift-ring-builder account.builder rebalance
# swift-ring-builder container.builder rebalance
# swift-ring-builder object.builder rebalance

接下来,将环文件重新分发到其他节点

# for i in s01.example.com s02.example.com s03.example.com
> do
> scp *.ring.gz $i:/etc/swift
> done

这些操作有效地将存储节点从存储集群中移除。

当节点能够重新加入集群时,只需将其重新添加到环中即可。您使用 swift-ring-builder 将节点添加到 swift 集群的确切语法,在很大程度上取决于您最初创建集群时使用的原始选项。请参考这些命令。

更换 Swift 磁盘

如果对象存储节点中的硬盘驱动器发生故障,更换它相对容易。这假设您的对象存储环境配置正确,其中存储在故障驱动器上的数据也复制到对象存储环境中的其他驱动器。

此示例假定 /dev/sdb 已发生故障。

首先,卸载磁盘

# umount /dev/sdb

接下来,从服务器上物理移除磁盘并将其更换为正常工作的磁盘。

确保操作系统已识别新磁盘

# dmesg | tail

您应该会看到关于 /dev/sdb 的消息。

由于建议不要在 swift 磁盘上使用分区,因此只需将磁盘整体格式化

# mkfs.xfs /dev/sdb

最后,挂载磁盘

# mount -a

Swift 应该会注意到新磁盘并且不存在数据。然后它将从其他现有副本开始将数据复制到磁盘。