赞
踩
部署IP:192.168.206.10
wget https://dl.min.io/server/minio/release/linux-amd64/minio
minio 数据目录一定不能和 跟/ 在一个磁盘上,要单独挂载,比如规划将minio的数据目录置于/data/minio,如果按照以下的磁盘,/mkdir /data/minio后,目录是在 / 下创建。
故你需要将/data目录单独挂一块盘或者将/data/minio目录单独挂一块盘,否则后续启动会提示Error: Drive `/data/minio/data1` is part of root drive, will not be used
- API: SYSTEM()
- Time: 10:12:55 UTC 08/12/2022
- Error: Drive `/data/minio/data1` is part of root drive, will not be used (*errors.errorString)
- 8: internal/logger/logger.go:259:logger.LogIf()
- 7: cmd/erasure-sets.go:1243:cmd.markRootDisksAsDown()
- 6: cmd/format-erasure.go:800:cmd.initFormatErasure()
- 5: cmd/prepare-storage.go:198:cmd.connectLoadInitFormats()
- 4: cmd/prepare-storage.go:282:cmd.waitForFormatErasure()
- 3: cmd/erasure-server-pool.go:109:cmd.newErasureServerPools()
- 2: cmd/server-main.go:694:cmd.newObjectLayer()
- 1: cmd/server-main.go:531:cmd.serverMain()
添加磁盘(演示环境资源有限,只是添加一块2G盘符),由于已经有一块硬件(sda),故第二块磁盘名称为sdb (Linux 硬盘知识)
添加磁盘后开机,进行磁盘格式化分区,并挂载到/data/minio上,操作如下
- [root@master01 ~]# fdisk -l /dev/sdb
-
- [root@master01 ~]# fdisk /dev/sdb
-
- 命令(输入 m 获取帮助):n # n 创建分区
- Partition type:
- p primary (0 primary, 0 extended, 4 free)
- e extended
- Select (default p): p # n 创建主分区
- 分区号 (1-4,默认 1): # 直接回车,走默认1
- 起始 扇区 (2048-4194303,默认为 2048): # 直接回车,从默认2048开始
- 将使用默认值 2048
- Last 扇区, +扇区 or +size{K,M,G} (2048-4194303,默认为 4194303): # 直接回车,说明有多少做多少G硬盘
- 将使用默认值 4194303
- 分区 1 已设置为 Linux 类型,大小设为 2 GiB
-
- 命令(输入 m 获取帮助):p # 打印
-
- 磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区
- Units = 扇区 of 1 * 512 = 512 bytes
- 扇区大小(逻辑/物理):512 字节 / 512 字节
- I/O 大小(最小/最佳):512 字节 / 512 字节
- 磁盘标签类型:dos
- 磁盘标识符:0x23a6127b
-
- 设备 Boot Start End Blocks Id System
- /dev/sdb1 2048 4194303 2096128 83 Linux
-
- 命令(输入 m 获取帮助):w # 保存分区
- The partition table has been altered!
-
- Calling ioctl() to re-read partition table.
- 正在同步磁盘。
-
- [root@master01 ~]# ll /dev/sdb*
- brw-rw---- 1 root disk 8, 16 4月 7 04:43 /dev/sdb
- brw-rw---- 1 root disk 8, 17 4月 7 04:43 /dev/sdb1
-
- [root@master01 ~]# mkfs.xfs /dev/sdb1 # 格式化分区
- meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131008 blks
- = sectsz=512 attr=2, projid32bit=1
- = crc=1 finobt=0, sparse=0
- data = bsize=4096 blocks=524032, imaxpct=25
- = sunit=0 swidth=0 blks
- naming =version 2 bsize=4096 ascii-ci=0 ftype=1
- log =internal log bsize=4096 blocks=2560, version=2
- = sectsz=512 sunit=0 blks, lazy-count=1
- realtime =none extsz=4096 blocks=0, rtextents=0
-
- [root@master01 ~]# blkid # 查看/dev/sdb1的uuid
- /dev/sda1: UUID="c219aeb3-fb5b-4009-9e9c-e3396a36ea3b" TYPE="xfs"
- /dev/sda2: UUID="B6PX7v-uSkg-08db-w9V3-TT31-x7x5-ehMsr4" TYPE="LVM2_member"
- /dev/sdb1: UUID="1f00db8b-dc34-4528-93ad-043192739a20" TYPE="xfs"
- /dev/mapper/centos-root: UUID="243723b9-2e4d-40a6-aed9-23e227d61572" TYPE="xfs"
- /dev/mapper/centos-swap: UUID="9ded6aff-9d46-4b84-abb9-1de8691c5bf7" TYPE="swap"
-
- [root@master01 ~]# echo "UUID=1f00db8b-dc34-4528-93ad-043192739a20 /data/minio xfs defaults 0 0 " >> /etc/fstab # 将/dev/sdb1 挂载到 /data/minio
-
- [root@master01 ~]# tail -n 2 /etc/fstab
- #UUID=e27dc238-c4d9-4921-81a0-53d7002f0e33 /opt/yyiuap/ xfs defaults 0 0
- UUID=1f00db8b-dc34-4528-93ad-043192739a20 /data/minio xfs defaults 0 0
-
- [root@master01 ~]# mount -a # 读取/etc/fstab 文件重新挂载
-
- [root@master01 ~]# df -h
- 文件系统 容量 已用 可用 已用% 挂载点
- /dev/mapper/centos-root 48G 11G 38G 22% /
- devtmpfs 899M 0 899M 0% /dev
- tmpfs 911M 0 911M 0% /dev/shm
- tmpfs 911M 9.6M 902M 2% /run
- tmpfs 911M 0 911M 0% /sys/fs/cgroup
- /dev/sda1 1014M 142M 873M 14% /boot
- tmpfs 183M 0 183M 0% /run/user/0
- /dev/sdb1 2.0G 33M 2.0G 2% /data/minio # 发现已经挂载
[root@master minio]# ntpdate -u cn.pool.ntp.org
[root@master minio]# mkdir bin data1 data2 config certs log run
- [root@192 opt]# tree -f minio/
- minio
- ├── minio/bin # 二进制文件目录
- │ └── minio/bin/minio
- ├── minio/certs # 证书文件目录
- │ ├── minio/certs/private.key # 私钥文件
- │ ├── minio/certs/public.crt # 证书文件
- ├── minio/config # 配置文件目录
- ├── minio/data1 # minio数据目录1
- ├── minio/data2 # minio数据目录2
- ├── minio/log # 日志文件目录
- │ └── minio/log/minio.log # 日志文件
- └── minio/run # 自定义脚本
- ├── minio/run/create_cert.sh # 生成证书脚本
- ├── minio/run/minio.service # minio service文件
- ├── minio/run/stop.sh # minio服务停止脚本
- └── minio/run/start.sh # minio服务启动脚本
- [root@master bin]# cd /data/minio/bin
- [root@master bin]# rz minio
- [root@master bin]# ll
- -rw-r--r-- 1 root root 96837632 4月 7 11:51 minio
- [root@master minio]# vi /usr/lib/systemd/system/minio_http.service
- [Unit]
- Description=Minio service
- Documentation=This is a Minio Service.
-
- [Service]
- Type=forking
- # 启动服务时的等待的秒数,TimeoutStartSec 的值指定为 0,从而关闭超时检测。
- TimeoutStartSec=10
- # 工作目录
- WorkingDirectory=/data/minio
- # 服务运行用户
- User=root
- # 服务运行用户组
- Group=root
- Restart=on-failure
- RestartSec=15s
- ExecStart=/data/minio/run/start_http.sh
- ExecStop=/data/minio/run/stop.sh
-
- [Install]
- WantedBy=multi-user.target
- [root@master minio]# vi /usr/lib/systemd/system/minio_https.service
- [Unit]
- Description=Minio service
- Documentation=This is a Minio Service.
-
- [Service]
- Type=forking
- # 启动服务时的等待的秒数,TimeoutStartSec 的值指定为 0,从而关闭超时检测。
- TimeoutStartSec=10
- # 工作目录
- WorkingDirectory=/data/minio
- # 服务运行用户
- User=root
- # 服务运行用户组
- Group=root
- Restart=on-failure
- RestartSec=15s
- ExecStart=/data/minio/run/start_https.sh
- ExecStop=/data/minio/run/stop.sh
-
- [Install]
- WantedBy=multi-user.target
- [root@master01 run]# vi /data/minio/run/start_https.sh
- #!/bin/bash
- ## MinIO启动脚本
-
- # 设置环境变量
- # 设置HOME
- export MINIO_HOME=/data/minio
- # 默认配置文件目录${HOME}/.minio,默认会将配置信息生成到config.json文件
- export MINIO_COFNIG_DIR=/${MINIO_HOME}/config
- # TLS证书目录:
- # 私钥private.key
- # 证书public.crt
- export MINIO_CERTS_DIR=/${MINIO_HOME}/certs
- # 日志目录
- export MINIO_LOG_PATH=/${MINIO_HOME}/log
- # 访问凭证AK
- export MINIO_ROOT_USER=minio_admin
- # 访问凭证SK
- export MINIO_ROOT_PASSWORD=minio_admin!@#
- # 是否开启web访问,默认是开启
- export MINIO_BROWSER=on
- # 证书密码
- export MINIO_CERT_PASSWD=admin123!@#
- # 支持path-style访问,默认 http://mydomain.com/bucket/object
- export MINIO_DOMAIN=test_minio.com
- # MINIO的集群中各节点IP
- export MINIO_HOST=192.168.206.10
- # 39000 为API调用接口, 9000为web console接口
- # 启动minio
- nohup /${MINIO_HOME}/bin/minio server \
- --config-dir ${MINIO_COFNIG_DIR} \
- --certs-dir ${MINIO_CERTS_DIR} \
- --address ${MINIO_HOST}:39000 --console-address ":9000" \
- https://${MINIO_HOST}/${MINIO_HOME}/data1 https://${MINIO_HOST}/${MINIO_HOME}/data2 \
- >> ${MINIO_LOG_PATH}/minio.log 2>&1 &
其中 MINIO_CERTS_DIR=/${MINIO_HOME}/certs 和 MINIO_CERT_PASSWD=admin123!@# 定义的https证书
minio 是支持副本的,也就是说传入minio中的数据,会一摸一样复制两份分别在规划/data//minio/data1 和 /data//minio/data2中,数据会存在两份,在没有设置纠删码的前提下。故需要在启动脚本中配置神声明
如果规划中,如果项设置3个存储目录,则就要有/data//minio/data1 和 /data//minio/data2 和 /data//minio/data3,然后在修改启动参数如下()
minio 在新版本后,控制台页面的端口和api端口区分出来,如何配置如下
- [root@master01 run]# vi /data/minio/run/start_http.sh
- #!/bin/bash
- ## MinIO启动脚本
-
- # 设置环境变量
- # 设置HOME
- export MINIO_HOME=/data/minio
- # 日志目录
- export MINIO_LOG_PATH=/${MINIO_HOME}/log
- # 访问凭证AK
- export MINIO_ROOT_USER=minio_admin
- # 访问凭证SK
- export MINIO_ROOT_PASSWORD=minio_admin!@#
- # 是否开启web访问,默认是开启
- export MINIO_BROWSER=on
- # 支持path-style访问,默认 http://mydomain.com/bucket/object
- export MINIO_DOMAIN=test_minio.com
- # MINIO的集群中各节点IP
- export MINIO_HOST=192.168.206.10
- # 39000 为API调用接口, 9000为web console接口
- # 启动minio
- nohup /${MINIO_HOME}/bin/minio server \
- --address ${MINIO_HOST}:39000 --console-address ":9000" \
- http://${MINIO_HOST}/${MINIO_HOME}/data1 http://${MINIO_HOST}/${MINIO_HOME}/data2 \
- >> ${MINIO_LOG_PATH}/minio.log 2>&1 &
- [root@master01 run]# cat /data/minio/run/stop.sh
- #!/bin/bash
- ## MinIO停止脚本
- ps -ef | grep minio | grep -v 'grep' | awk '{print $2}'| xargs kill -9
-
- if [ $? -ne 0 ];then
- echo "minio service stop failed."
- exit 1
- fi
- [root@master certs]# vi /data/minio/certs/create_cert.sh
- #!/bin/bash
- # 用来生成pem证书文件
- # sh create_cert.sh
- set -e
-
- # 从外界读取输入参数到指定变量
- function read_input() {
- read -p "please input $1 parms:" $2
- }
- # 初始化输入参数
- function init_input_param() {
- read_input "cert domain" "DOMAIN"
- read_input "cert path" "CERT_PATH"
- read_input "cert password" "PASSWORD"
- readonly IP=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}')
- readonly DNS=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $4}' | awk -F"/" '{print $1}')
- }
-
- # 生成openssl.conf文件
- function generate_openssl_config() {
- cat > ${CERT_PATH}/openssl.conf <<-EOF
- [req]
- distinguished_name = req_distinguished_name
- x509_extensions = v3_req
- prompt = no
-
- [req_distinguished_name]
- C = CN
- ST = VA
- L = Somewhere
- O = MyOrg
- OU = MyOU
- CN = ${DOMAIN}
-
- [v3_req]
- subjectAltName = @alt_names
-
- [alt_names]
- IP.1 = 127.0.0.1
- IP.2 = ${IP}
- DNS.1 = ${DNS}
- DNS.2 = ${DOMAIN}
- EOF
- }
-
- # openssl 生成私钥
- function generate_private_key() {
- # 生成长度为2048的私钥
- openssl genrsa -aes256 -passout pass:${PASSWORD} -out ${CERT_PATH}/private-pkcs8.key 2048
- # 转换为PCKS-1
- openssl rsa -passin pass:${PASSWORD} -in ${CERT_PATH}/private-pkcs8.key -aes256 -passout pass:${PASSWORD} -out ${CERT_PATH}/private.key
- }
-
- # 生成自签名文件
- function generate_self_sign_cert() {
- openssl req -new -x509 -nodes -days 730 -keyout ${CERT_PATH}/private.key -passout pass:${PASSWORD} -out ${CERT_PATH}/public.crt -config ${CERT_PATH}/openssl.conf
- }
-
- # 清除
- function clean() {
- rm -rf ${CERT_PATH}/openssl.conf
- rm -rf ${CERT_PATH}/private-pkcs8.key
- }
-
- # 执行流程
- function main() {
- init_input_param
- generate_openssl_config
- generate_private_key
- generate_self_sign_cert
- clean
- }
-
- main
-
[root@master certs]# chmod +x create_cert.sh
执行命令: sh create_cert.sh,输入以下参数,如图所示
启动minio(https)
[root@master minio]# chmod 755 /data/minio/run/* [root@master minio]# chmod +x /data/minio/bin/minio # 开机自启minio.service systemctl enable minio.service # 刷新服务 systemctl daemon-reload # 启动服务 systemctl start minio_https.service如下日志代表成功
访问页面 https://192.168.206.10:9000/browser,如果登录后,页面为空白,则换成其他浏览器
启动minio(http)
http协议,有时候浏览器登录后显示空白页,需要换浏览器、清理缓存测试
- [root@master run]# systemctl stop minio_https.service
- [root@master log]# systemctl start minio_https.service
命令行启动服务(另一种方案,直接在shell界面)
[root@master bin]# MINIO_ROOT_USER=minio_admin MINIO_ROOT_PASSWORD=minio_admin\!\@\# ./minio server /data/minio/data1 /data/minio/data2 --console-address ":9000" --address :39000
规划机器192.169.206.5 192.169.206.6 192.169.206.7 ,每个机器3个存储目录 data1 data2 data3
下载minio、挂载磁盘,同步时间服务器具体看上述(单节点部署(下载minio的二进制文件) 和 (规划磁盘) )
[root@master minio]# mkdir bin data1 data2 data3 config certs log run
- [root@master bin]# cd /data/minio/bin
- [root@master bin]# rz minio
- [root@master bin]# ll
- -rw-r--r-- 1 root root 96837632 4月 7 11:51 minio
- [root@master minio]# vi /usr/lib/systemd/system/minio.service
- [Unit]
- Description=Minio service
- Documentation=This is a Minio Service.
-
- [Service]
- Type=forking
- # 启动服务时的等待的秒数,TimeoutStartSec 的值指定为 0,从而关闭超时检测。
- TimeoutStartSec=10
- # 工作目录
- WorkingDirectory=/data/minio
- # 服务运行用户
- User=root
- # 服务运行用户组
- Group=root
- Restart=on-failure
- RestartSec=15s
- ExecStart=/data/minio/run/start.sh
- ExecStop=/data/minio/run/stop.sh
-
- [Install]
- WantedBy=multi-user.target
- [root@master01 run]# vi /data/minio/run/start.sh
- #!/bin/bash
- ## MinIO启动脚本
-
- # 设置环境变量
- # 设置HOME
- export MINIO_HOME=data/minio
- # 默认配置文件目录${HOME}/.minio,默认会将配置信息生成到config.json文件
- export MINIO_COFNIG_DIR=/${MINIO_HOME}/config
- # TLS证书目录:
- # 私钥private.key
- # 证书public.crt
- export MINIO_CERTS_DIR=/${MINIO_HOME}/certs
- # 日志目录
- export MINIO_LOG_PATH=/${MINIO_HOME}/log
- # 访问凭证AK
- export MINIO_ROOT_USER=minio_admin
- # 访问凭证SK
- export MINIO_ROOT_PASSWORD=minio_admin!@#
- # 是否开启web访问,默认是开启
- export MINIO_BROWSER=on
- # 证书密码
- export MINIO_CERT_PASSWD=admin123!@#
- # 支持path-style访问,默认 http://mydomain.com/bucket/object
- export MINIO_DOMAIN=test_minio.com
- # MINIO的集群中各节点IP
- export MINIO_HOST_1=192.168.206.5
- export MINIO_HOST_2=192.168.206.6
- export MINIO_HOST_3=192.168.206.7
- export CURRENT_IP=$MINIO_HOST_1
- # 39000 为API调用接口, 9000为web console接口
- # 启动minio
- nohup /${MINIO_HOME}/bin/minio server \
- --config-dir ${MINIO_COFNIG_DIR} \
- --certs-dir ${MINIO_CERTS_DIR} \
- --address 0.0.0.0:39000 --console-address ":9000" \
- https://${MINIO_HOST_1}/${MINIO_HOME}/data1 https://${MINIO_HOST_1}/${MINIO_HOME}/data2 https://${MINIO_HOST_1}/${MINIO_HOME}/data3 \
- https://${MINIO_HOST_2}/${MINIO_HOME}/data1 https://${MINIO_HOST_2}/${MINIO_HOME}/data2 https://${MINIO_HOST_2}/${MINIO_HOME}/data3 \
- https://${MINIO_HOST_3}/${MINIO_HOME}/data1 https://${MINIO_HOST_3}/${MINIO_HOME}/data2 https://${MINIO_HOST_3}/${MINIO_HOME}/data3 \
- >> ${MINIO_LOG_PATH}/minio.log 2>&1 &
-
- [root@master01 run]#
- [root@master01 run]# vi /data/minio/run/stop.sh
- #!/bin/bash
- ## MinIO停止脚本
- ps -ef | grep minio | grep -v 'grep' | awk '{print $2}'| xargs kill -9
-
- if [ $? -ne 0 ];then
- echo "minio service stop failed."
- exit 1
- fi
- [root@master01 certs]# cat /data/minio/certs/create_cert.sh
- #!/bin/bash
- # 用来生成pem证书文件
- # sh create_cert.sh
- set -e
-
- # 从外界读取输入参数到指定变量
- function read_input() {
- read -p "please input $1 parms:" $2
- }
- # 初始化输入参数
- function init_input_param() {
- read_input "cert domain" "DOMAIN"
- read_input "cert path" "CERT_PATH"
- read_input "cert password" "PASSWORD"
- read_input "peer ip 1" "PEER_IP_1"
- read_input "peer ip 2" "PEER_IP_2"
- readonly IP=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}')
- readonly DNS=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $4}' | awk -F"/" '{print $1}')
- }
-
- # 生成openssl.conf文件
- function generate_openssl_config() {
- cat > ${CERT_PATH}/openssl.conf <<-EOF
- [req]
- distinguished_name = req_distinguished_name
- x509_extensions = v3_req
- prompt = no
-
- [req_distinguished_name]
- C = CN
- ST = VA
- L = Somewhere
- O = MyOrg
- OU = MyOU
- CN = ${DOMAIN}
-
- [v3_req]
- subjectAltName = @alt_names
-
- [alt_names]
- IP.1 = 127.0.0.1
- IP.2 = ${IP}
- IP.3 = ${PEER_IP_1}
- IP.4 = ${PEER_IP_2}
- DNS.1 = ${DNS}
- DNS.2 = ${DOMAIN}
- EOF
- }
-
- # openssl 生成私钥
- function generate_private_key() {
- # 生成长度为2048的私钥
- openssl genrsa -aes256 -passout pass:${PASSWORD} -out ${CERT_PATH}/private-pkcs8.key 2048
- # 转换为PCKS-1
- openssl rsa -passin pass:${PASSWORD} -in ${CERT_PATH}/private-pkcs8.key -aes256 -passout pass:${PASSWORD} -out ${CERT_PATH}/private.key
- }
-
- # 生成自签名文件
- function generate_self_sign_cert() {
- openssl req -new -x509 -nodes -days 730 -keyout ${CERT_PATH}/private.key -passout pass:${PASSWORD} -out ${CERT_PATH}/public.crt -config ${CERT_PATH}/openssl.conf
- }
-
-
- # 执行流程
- function main() {
- init_input_param
- generate_openssl_config
- generate_private_key
- generate_self_sign_cert
- }
-
- main
这里注意,因为我是3个节点,所以证书中需要有三个节点,此脚本中,默认会将自己的IP加入证书中,所以需要在添加2个IP,故需要定义如下
所以如果是4节点,那就是增加对应的 read_input "peer ip 2" "PEER_IP_2" 和 IP.4 = ${PEER_IP_2}
[root@master certs]# chmod +x create_cert.sh
执行命令: sh create_cert.sh,输入以下参数,如图所示
制作完成后,查看正式申请文件
- [root@master01 certs]# scp private.key public.crt 192.168.206.6:/data/minio/certs/
- [root@master01 certs]# scp private.key public.crt 192.168.206.7:/data/minio/certs/
启动minio
- [root@master minio]# chmod 755 /data/minio/run/*
- [root@master minio]# chmod +x /data/minio/bin/minio
- # 开机自启minio.service
- systemctl enable minio.service
- # 刷新服务
- systemctl daemon-reload
- # 启动服务
- systemctl start minio_https.service
查看如下代表无问题
将集群(192.168.206.5/6/7)数据迁移到单节点(192.168.206.10)。
由于 minio 开启纠删码、和设置 set ,每一个节点,每一个data 可能都不一样,故不能直接scp,否则会存在有些文件下载损坏
由于 rclone 要与 minio 的api接口通信才能获取数据,但https的minio rclone在没有证书的前提下,无法获取,网上也没有搜索到如何向rclone添加证书,故此次实验只能通过(minio的http协议)集群, 迁移到(minio的http协议)单节点
- [root@master src]# wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
- [root@master src]# unzip rclone-current-linux-amd64.zip
- [root@master src]# chmod 0755 ./rclone-v1.62.2-linux-amd64/rclone
- [root@master src]# cp -r ./rclone-v1.62.2-linux-amd64/rclone /usr/bin/
生成配置文件,运行配置命令,生成的文件位置:/root/.config/rclone/rclone.conf
- [root@master rclone]# rclone config
- 2023/04/07 14:11:24 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
- No remotes found, make a new one?
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n # n 创建
-
- Enter name for new remote.
- name> minio-old # 不是配置文件名字,配置文件中定义的[name]
- Storage> s3 # 存储类型s3
- provider> Minio # 类型Minio
- env_auth> false # 从运行时获取AWS凭据,填写false
- access_key_id> minio_admin
- secret_access_key> minio_admin!@#
- region> # 要连接到的区域,如果您使用的是S3克隆,并且您没有区域,请留空
- endpoint> http://192.168.206.5:39000 # Endpoint for S3 API.
- location_constraint> # 选项位置约束,位置约束-必须设置为与区域匹配,如果不确定,请留空。仅在创建存储桶时使用。
- acl> # 创建存储桶和存储或复制对象时使用的屏蔽ACL,如果acl是一个空字符串,则不添加X-Amz-acl:标头,并且将使用默认(私有)
- server_side_encryption> # 在S3中存储此对象时使用的服务器端加密算法。按Enter键保留为空
- sse_kms_key_id> # 如果使用KMS ID,您必须提供密钥的ARN。按Enter键保留为空。
-
- # 高级配置(结束)
- Edit advanced config?
- y) Yes
- n) No (default)
- y/n> n # n 默认结束
-
- Configuration complete.
- Options:
- - type: s3
- - provider: Minio
- - access_key_id: minio_admin
- - secret_access_key: minio_admin!@#
- - region: cn-east-1
- - endpoint: http://192.168.206.10:39000
- Keep this "minio" remote?
- y) Yes this is OK (default)
- e) Edit this remote
- d) Delete this remote
- y/e/d> y # 写入一个新的文件
-
- e) Edit existing remote
- n) New remote
- d) Delete remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- e/n/d/r/c/s/q> q
-
- [root@master rclone]# ll /root/.config/rclone/rclone.conf
- -rw------- 1 root root 157 4月 7 14:16 /root/.config/rclone/rclone.conf
- [root@master rclone]# cat /root/.config/rclone/rclone.conf
- [minio-old]
- type = s3
- provider = Minio
- env_auth=false
- access_key_id = minio_admin
- secret_access_key = minio_admin!@#
- region =
- endpoint = http://192.168.206.5:39000
- location_constraint=
- server_side_encryption=
将源数据minio集群通过rclone拷贝到目标机器(注意,此处由于 minio 开启纠删码不能使用 scp,只能用rclone拷贝) ,随后在目标机器使用 rclone 迁移到单minio
- [root@master run]# cat /root/.config/rclone/rclone.conf
- [minio-old]
- type = s3
- provider = Minio
- env_auth = false
- access_key_id = minio_admin
- secret_access_key = minio_admin!@#
- region =
- endpoint = http://192.168.206.5:39000 # 此处写源 minio 集群中的随机一台节点IP,端口是api端口
- location_constraint =
- server_side_encryption =
使用 rclone ,将源 minio 集群数据的 test1 test2 test3 桶,导入到本地
- [root@master01 ~]# ifconfig |grep 192
- inet 192.168.206.10 netmask 255.255.255.0 broadcast 192.168.206.255
-
- [root@master data]# mkdir -p /data/minio_backup/{test1 test2 test3}
-
- [root@master minio_backup]# rclone sync -P minio-old:test1 /data/minio_backup/test1
- Transferred: 21.825M / 21.825 MBytes, 100%, 59.059 MBytes/s, ETA 0s
- Transferred: 15 / 15, 100%
- Elapsed time: 0.4s
-
- [root@master minio_backup]# rclone sync -P minio-old:test2 /data/minio_backup/test2
-
- [root@master minio_backup]# rclone sync -P minio-old:test3 /data/minio_backup/test3
-
- 或者可以使用
- rclone copy minio-old:test1 /data/minio_backup/test1
- rclone copy minio-old:test2 /data/minio_backup/test2
- rclone copy minio-old:test3 /data/minio_backup/test3
修改rclone.conf,写的是单节点minio的信息
- [root@master ~]# cat /root/.config/rclone/rclone.conf
- [minio-new]
- type = s3
- provider = Minio
- env_auth = false
- access_key_id = minio_admin
- secret_access_key = minio_admin!@#
- region =
- endpoint = http://192.168.206.10:39000
- location_constraint =
- server_side_encryption =
- # 导入节点不用事先创建test1 test2 test3 桶,会自动创建
- [root@master minio_backup]# rclone sync -P minio-old:test1 /data/minio_backup/test1
- Transferred: 21.825M / 21.825 MBytes, 100%, 59.059 MBytes/s, ETA 0s
- Transferred: 15 / 15, 100%
- Elapsed time: 0.4s
-
- [root@master minio_backup]# rclone sync -P minio-old:test2 /data/minio_backup/test2
- Transferred: 1.282M / 1.282 MBytes, 100%, 15.141 MBytes/s, ETA 0s
- Transferred: 8 / 8, 100%
- Elapsed time: 0.1s
-
- [root@master minio_backup]# rclone sync -P minio-old:test3 /data/minio_backup/test3
- Transferred: 296.772M / 296.772 MBytes, 100%, 73.345 MBytes/s, ETA 0s
- Transferred: 38 / 38, 100%
- Elapsed time: 4.1s
在目标机器或者源数据机器,安装rclone, 在 rclone 中定义,源跟目录,执行后自动迁移。注意不管是源还是目的,https都会提示没有证书,所以只能同步http
- [minio-old]
- type = s3
- provider = Minio
- env_auth = false
- access_key_id = minio_admin
- secret_access_key = minio_admin!@#
- region =
- endpoint = http://192.168.206.5:39000
- location_constraint =
- server_side_encryption =
-
- [minio-new]
- type = s3
- provider = Minio
- env_auth = false
- access_key_id = minio_admin
- secret_access_key = minio_admin!@#
- region =
- endpoint = http://192.168.206.10:39000
- location_constraint =
- server_side_encryption =
rclone sync minio-old:test7 minio-new:test7 # 将 minio-old 的 test7 桶 导入到 minio-new 的 test7桶
1、可以使用rclone迁移项目,迁移对象可以是
- 单节点 迁移到 集群 (rclone 目的IP写集群中随机一台节点即可)
- 集群 迁移到 单节点(rclone 源IP写集群中随机一台节点即可)
- 单节点 迁移到 单节点
- 集群 迁移到 集群 (rclone 源、目的IP写集群中随机一台节点即可)
2、可以使用rclone导出到本地,在scp到目的地址机器后,进行本地导入新 minio
3、rclone 迁移两端不能是https协议,因为没有证书导致不能获取数据,在网上查找并没有找到关于rclone 添加证书的内容,故只能将 https 的 minio 使用 http 启动,但https 启动的 minio 改用 http 后,可能存在登录 minio 后,页面变成空白,f12 提示 session 是 access denied,故猜测是有session的缓存,但具体怎么清楚minio的session,也没有找到,一定不是在 /data/minio中存放的,只能多一天左右时间,session自动过期。
4、可以使用minio管理工具mc进行迁移
5、可以使用 cp 或者 scp 直接拷贝到新的 minio(仅限于两端数据节点都是对等的,例如源minio为单节点,并有data1 data2 data2 ,目的 minio 也必须一模一样,scp 也要一摸一样的拷贝数据到对端相对应的目录 ),只要触碰不对等,则一定不能使用 cp 或者 scp 直接拷贝,因为 minio 是由纠删码,也就是意味者每条数据 data1 data2 data3 下存放的东西不一样,可能是数据,可能是纠删码对应申城的校验码(默认数据和校验码1:1,比如data1 data2 data3 data4,则2个数据2个校验)
6、minio在<0.7M时,才不会生成校验码(part1), 只有数据 xl.meta
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。