​一、什么是对象存储存储​

对象存储(S3)是一种存储服务,它将数据分成“对象”来存储,而不是传统的文件或块存储。每个对象都有自己的标识符,可以方便地通过网络访问。对于家庭服务器来说,你可以用S3存储照片、视频、文档等文件,通过网络随时访问,还能实现文件备份、共享、远程访问等功能。常见的S3服务包括Amazon S3和MinIO(本地搭建的S3服务),本期教程我们将通过在本地服务器上部署MinIO服务来备份博客等常用服务。

二、什么是MinIO

MinIO 是一个开源的对象存储系统,完全兼容 Amazon S3 API。它允许你在本地搭建一个类似于 S3 的存储系统,适用于个人或小型企业的需求。你可以用它存储和管理大量的文件,比如照片、视频、备份等,而且可以通过 S3 接口进行访问。简单来说,MinIO 就是一个私有的 S3 服务,适合在家庭服务器上部署,提供安全、可靠的文件存储和访问。

官网地址:https://minio.org.cn/

三、部署

1、Kubernetes

MinIO服务端

kubectl apply -k github.com/minio/operator

MinIO客户端

kubectl run my-mc -i --tty --image minio/mc:latest --command -- bash
[root@my-mc /]# mc alias set myminio/ https://minio.default.svc.cluster.local MY-USER MY-PASSWORD
[root@my-mc /]# mc ls myminio/mybucket

2、docker

 MinIO服务端

podman run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001"

MinIO客户端

podman run --name my-mc --hostname my-mc -it --entrypoint /bin/bash --rm minio/mc
[root@my-mc /]# mc alias set myminio/ https://my-minio-service MY-USER MY-PASSWORD
[root@my-mc /]# mc ls myminio/mybucket

3、docker-compose

minio支持全平台部署方式,官网提供了非常详细的安装教程,本期部署方式采用docker-compose,这样部署的方式方便后续迁移服务,下面是docker-compose通用配置文件,大家根据需要修改相关内容即可。

version: '3.8'

services:
  minio:
    image: quay.io/minio/minio
    container_name: minio
    ports:
      - "9000:9000"        # 访问 MinIO 的主端口
      - "9001:9001"        # 访问 MinIO 控制台的端口
    volumes:
      - ~/minio/data:/data # 将本地存储挂载到容器内
    environment:
      - MINIO_ROOT_USER=admin           # 设置 MinIO 管理员的用户名,修改为你想要的用户名
      - MINIO_ROOT_PASSWORD=password    # 设置 MinIO 管理员的密码,修改为更安全的密码
    command: server /data --console-address ":9001"
    restart: unless-stopped

4、Linux

 MinIO服务端(Binary)

wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
chmod +x minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"

MinIO服务端(RPM)

dnf install https://dl.minio.org.cn/server/minio/release/linux-amd64/minio-20240113075303.0.0-1.x86_64.rpm
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password minio server /mnt/data --console-address ":9001"

MinIO服务端(DEB)

wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio_20240113075303.0.0_amd64.deb
dpkg -i minio_20240113075303.0.0_amd64.deb
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password minio server /mnt/data --console-address ":9001"

MinIO客户端(Binary)

wget https://dl.minio.org.cn/client/mc/release/linux-amd64/mc
chmod +x mc
mc alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD

MinIO客户端(RPM)

dnf install https://dl.minio.org.cn/client/mc/release/linux-amd64/mcli-20240610164415.0.0-1.x86_64.rpm
mcli alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD

MinIO客户端(DEB)

wget https://dl.minio.org.cn/client/mc/release/linux-amd64/mcli_20240113084448.0.0_amd64.deb
dpkg -i mcli_20240113084448.0.0_amd64.deb
mcli alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD

5、macOS

 MinIO服务端(Homebrew)

brew install minio/stable/minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password minio server /mnt/data --console-address ":9001"

 MinIO服务端(Binary)

curl --progress-bar -O https://dl.minio.org.cn/server/minio/release/darwin-amd64/minio
chmod +x minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"

MinIO客户端(Homebrew)

brew install minio/stable/mc
mc alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD

MinIO客户端(Binary)

curl --progress-bar -O https://dl.minio.org.cn/client/mc/release/darwin-amd64/mc
chmod +x mc
mc alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD

6、Windows

 MinIO服务端

PS> Invoke-WebRequest -Uri "https://dl.minio.org.cn/server/minio/release/windows-amd64/minio.exe" -OutFile "C:\minio.exe"
PS> setx MINIO_ROOT_USER admin
PS> setx MINIO_ROOT_PASSWORD password
PS> C:\minio.exe server F:\Data --console-address ":9001"

MinIO客户端

PS> Invoke-WebRequest -Uri "https://dl.minio.io/client/mc/release/windows-amd64/mc.exe" -OutFile "C:\mc.exe"
C:\mc.exe alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD

7、Source

MinIO服务端

go install github.com/minio/minio@latest

MinIO客户端

go install github.com/minio/mc@latest

四、初始化

1、打开浏览器,访问 http://<你的服务器IP>:9001,输入你在 docker-compose.yml 中设置的 MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY,然后点击Login。

默认情况下,我们使用 minioadmin 作为账号和密码,就能够登录 MinIO 后台进行管理了。

部署本地对象存储S3服务器MinIO

2、使用compose配置文件中的用户名和密码进行登录。

部署本地对象存储S3服务器MinIO

五、存储桶创建

1、首先需要创建存储桶,点击 Buckets➡ Creare Bucket。

部署本地对象存储S3服务器MinIO

2、给存储桶起一个名称后,然后点击创建即可。

部署本地对象存储S3服务器MinIO

3、存储桶创建完成。

部署本地对象存储S3服务器MinIO

4、点击存储桶,可以查看详细的信息,并且对权限等可以进行设置,比如你将存储桶用于博客图床,那么就需要将存储桶的权限设置为公开,否则访问图片的时候会提示404。

部署本地对象存储S3服务器MinIO

六、创建API密钥

1、接下来我们创建用于账户认证的APi密钥,点击Access Keys➡ Creare Bucket。

部署本地对象存储S3服务器MinIO

2、创建的密钥只会显示一次,建议桌面建一个文本文档保存相关密钥内容。

部署本地对象存储S3服务器MinIO

3、通过以上的设置我们得到了几下几个参数。

minio的web管理地址:10.0.0.78:9001

minio的数据通信地址:10.0.0.78:9000

存储桶的名称:halo-backup

密钥: xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx

七、如何使用对象存储备份服务

1、这里我们使用1pane演示,登录1panel,在面板设置中找到minio,点击添加。

部署本地对象存储S3服务器MinIO

2、填写好对应的api密钥和minio的通信地址(端口号是9000,不是9001),然后点击获取桶,如果填写正确的话可以自动获取创建的存储桶,选中即可。

部署本地对象存储S3服务器MinIO

3、创建完成。

部署本地对象存储S3服务器MinIO

4、接下来我们在1panel面板中创建一个系统快照,存储路径选择刚才添加的minio存储桶。

部署本地对象存储S3服务器MinIO

5、稍等片刻可以看到文件备份成功,接下来我们进入minio控制台可以看到 备份的快照文件已经出现在存储桶中。

部署本地对象存储S3服务器MinIO

6、文件备份成功。

八、总结

通过MinIO,我们成功创建了基于本地的S3对象存储,接下来我们可以使用此存储备份各种服务,当然我上面说的功能只是最简单的基础功能,MinIO还支持一些更高级的功能,比如数据快照、版本控制、以及对象生命周期管理等。这些功能能帮助我们更好地管理数据,提供更高的灵活性和可靠性,比如在需要恢复数据时,可以轻松恢复到之前的版本,或者在数据存储达到一定时间后自动进行归档处理,本期教程结束。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐