minio 升级相关问题

文章介绍了MinIO从RELEASE.2021-01-16到RELEASE.2023-05-18的版本升级后的问题,包括集群部署中存储地址的新要求,单机部署的文件存储变化及可能的数据丢失风险,以及如何编写启动脚本来管理MinIO服务。此外,还讨论了性能方面,建议使用DAS以获取更好性能,避免使用非XFS文件系统,并确保所有节点使用相同类型的驱动器。
摘要由CSDN通过智能技术生成

系列文章目录


前言

minio版本升级,目的主要是为了解决由 Direct buffer memory 引发的附件下载优化方案
minio version RELEASE.2021-01-16T02-19-44Z => minio version RELEASE.2023-05-18T00-05-36Z

升级后问题整理一下

一、集群部署

低版本minio 集群部署对于存储地址没有要求
高版本要求存储地址必须为外挂空磁盘Drive /mnt/minio/data/export2 is part of root drive, will not be used (*errors.errorString)

二、单机部署

  1. 文件存储形式变化
    低版本挂载目录可直接显示文件
    高版本挂载目录显示为文件名/xl.meta
  2. 高版本启动提示The standard parity is set to 0. This can lead to data loss.
    无需处理,这是提示单机部署可能会因为磁盘损坏导致数据丢失无法恢复。
  3. nginx代理console后查看数据报错Couldn't establish WebSocket connection.
    需要在nginx增加配置,使nginx代理支持长连接
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  1. 注意服务器时间同步

三、写一个启动脚本

也可以写入开机自启服务,未验证 可参考官网

  1. 单机启动脚本
#!/bin/bash

#服务参数
#服务端口,后端集成地址端口
SERVER_PORT=19000
#控制台端口,浏览器访问地址端口
CONSOLE_PORT=19001
MINIO_FILE_NAME="./minio"

#无日志
# LOG="/dev/null"
LOG="./log"

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=admin123
echo "SERVER_PORT:$SERVER_PORT"
echo "CONSOLE_PORT:$CONSOLE_PORT"

RETVAL="0"

# See how we were called.
function start() {
    if [ ! -f ${LOG} ]; then
        touch ${LOG}
    fi
        nohup ${MINIO_FILE_NAME} server /data/minio/ --console-address 0.0.0.0:${CONSOLE_PORT} --address=0.0.0.0:${SERVER_PORT}  >> ${LOG} 2>&1 &
}

function stop() {
    pid=$(ps -ef | grep -v 'grep' | egrep $MINIO_FILE_NAME | awk '{printf $2 " "}')
    if [ "$pid" != "" ]; then
        echo -n $"Shutting down boot: "
        kill -9 "$pid"
    else
        echo "boot is stopped"
    fi
    status
}

function status(){
    pid=$(ps -ef | grep -v 'grep' | egrep $MINIO_FILE_NAME| awk '{printf $2 " "}')
    #echo "$pid"
    if [ "$pid" != "" ]; then
        echo "boot is running,pid is $pid"
    else
        echo "boot is stopped"
    fi
}

function usage(){
    echo "Usage: $0 {start|stop|restart|status}"
    RETVAL="2"
}

# See how we were called.
case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
    	start
    ;;
    status)
        status
    ;;
    *)
        usage
    ;;
esac

exit ${RETVAL}
  1. 集群启动脚本
#!/bin/bash

#服务参数
#服务端口,后端集成地址端口
SERVER_PORT=19000
#控制台端口,浏览器访问地址端口
CONSOLE_PORT=19001
MINIO_FILE_NAME="./minio"
CONFIG_DIR="../config"
CLUSTER_CONFIG="http://server1/data/minio/data/export1 http://data/mnt/minio/data/export2 http://server3/data/minio/data/export3"

#无日志
# LOG="/dev/null"
LOG="../log"

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=admin123
echo "SERVER_PORT:$SERVER_PORT"
echo "CONSOLE_PORT:$CONSOLE_PORT"

RETVAL="0"

# See how we were called.
function start() {
    if [ ! -f ${LOG} ]; then
        touch ${LOG}
    fi
        nohup ${MINIO_FILE_NAME} server ${CLUSTER_CONFIG} --config-dir ${CONFIG_DIR} --console-address 0.0.0.0:${CONSOLE_PORT} --address=0.0.0.0:${SERVER_PORT}  >> ${LOG} 2>&1 &
}

function stop() {
    pid=$(ps -ef | grep -v 'grep' | egrep $MINIO_FILE_NAME | awk '{printf $2 " "}')
    if [ "$pid" != "" ]; then
        echo -n $"Shutting down boot: "
        kill -9 "$pid"
    else
        echo "boot is stopped"
    fi
    status
}

function status(){
    pid=$(ps -ef | grep -v 'grep' | egrep $MINIO_FILE_NAME| awk '{printf $2 " "}')
    #echo "$pid"
    if [ "$pid" != "" ]; then
        echo "boot is running,pid is $pid"
    else
        echo "boot is stopped"
    fi
}

function usage(){
    echo "Usage: $0 {start|stop|restart|status}"
    RETVAL="2"
}

# See how we were called.
case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
    	start
    ;;
    status)
        status
    ;;
    *)
        usage
    ;;
esac

exit ${RETVAL}


四、性能方面

  1. 与网络存储(NAS、SAN、NFS)相比,直连存储(DAS)具有显著的性能和一致性优势。

  2. 使用非XFS文件系统(ext4、btrfs、zfs)的部署往往具有较低的性能,同时表现出意外或不期望的行为。

  3. 当与分布式MinIO部署一起使用时,RAID或类似技术不能提供额外的弹性或可用性优势,并且通常会降低系统性能。

  4. 确保部署中的所有节点使用相同类型(NVMe、SSD或HDD)、具有相同容量(例如N TB)的驱动器。MinIO不区分驱动器类型,也不会从混合存储类型中获益。此外。MinIO将每个驱动器使用的大小限制为部署中的最小驱动器。例如,如果部署有15个10TB驱动器和1个1TB驱动器,则MinIO将每个驱动器的容量限制为1TB。

在这里插入图片描述

当你需要升级MinIO的Docker版本时,你可以按照以下步骤进行操作: 1. 首先,查看当前正在运行的MinIO容器的版本。你可以使用以下命令来获取容器的版本信息: ``` docker exec <container_name> minio version ``` 其中,`<container_name>`是你MinIO容器的名称。 2. 接下来,你需要停止并删除当前正在运行的MinIO容器。使用以下命令停止并删除容器: ``` docker stop <container_name> docker rm <container_name> ``` 注意,这将会停止并删除你当前正在运行的MinIO容器,确保你已经备份了重要的数据。 3. 然后,你可以拉取最新版本的MinIO Docker镜像。使用以下命令拉取最新版本的镜像: ``` docker pull minio/minio ``` 4. 一旦镜像拉取完成,你可以创建一个新的MinIO容器并运行最新版本的MinIO。使用以下命令创建并运行新的容器: ``` docker run -p 9000:9000 --name <new_container_name> -e "MINIO_ACCESS_KEY=<your_access_key>" -e "MINIO_SECRET_KEY=<your_secret_key>" -v /data:/data minio/minio server /data ``` 其中,`<new_container_name>`是你新容器的名称,`<your_access_key>`和`<your_secret_key>`是你自定义的访问密钥和秘密密钥,`/data`是你的数据存储路径。 5. 最后,你可以验证新的MinIO容器是否成功运行。使用以下命令检查容器的状态: ``` docker ps ``` 请注意,升级MinIO版本可能会导致一些配置和数据的变化,请确保在进行升级之前备份重要的数据,并根据需要进行相应的配置更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr-Wanter

感谢大佬

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值