试试 MinIO——自托管的 S3 兼容高性能对象存储

您是否正在寻找要在您的服务器上托管的对象存储软件?

我猜是?

有很多基于云的对象存储,比如 AWS S3 和我在这里提到的其他存储。 但是,如果您需要在服务器上托管数据,MinIO 可以在您的数据中心内提供帮助。

迷你IO 是开源、流行的分布式对象存储软件,与 S3 兼容。 它已为企业准备就绪,并以其高性能而著称。

您可以使用 MinIO,从简单的 Web 应用程序到用于分析和机器学习应用程序的大型数据分布工作负载。 它可以在许多用例中提供帮助。

  • 标准平面文件存储
  • 多云数据分发
  • 灾难恢复
  • 数据分析

它是笨重的软件吗?

不,它只有大约 50MB 并且对 Kubernetes 友好。 它将数据和元数据作为对象写入。 这消除了对使用额外的数据库或软件来存储元数据和提高性能的依赖。

以下架构来自他们的官方网站。

让我们探讨一些值得注意的功能。

  • 高性能——如标题所示。 它能够以 ~170GB/s 的速度读取/写入。 好多啊!
  • 可扩展——根据需要进行集群和扩展
  • 云原生
  • 使用纠删码方法的数据保护
  • 支持多种加密,包括 AES-CBC、AES-256-GCM、ChaCha20
  • 兼容常见的KMS
  • 应用程序和用户身份
  • 事件通知
  • 使用 etcd 和 CoreDNS 联合

MinIO 是软件定义存储的不错选择。 让我们探讨如何进行设置。

安装 MinIO 服务器

你可以 安装 在 Linux、Windows、macOS 上以及通过 Kubernetes。 更喜欢通过源构建? 当然,如果你安装了 Golang 就可以。

对于此演示,我将安装在托管于 龟寺.

  • 登录服务器
  • 在所需的文件系统下创建一个文件夹。 可能是 minio-server
  • 导航到新创建的文件夹并运行以下 wget 命令
wget https://dl.min.io/server/minio/release/linux-amd64/minio

它将下载一个二进制文件,应该如下所示。

-rw-r--r--  1 root root 48271360 Oct 18 21:57 minio

使用 chmod 命令使文件可执行

chmod 755 minio

让我们将 MinIO 作为服务器启动。

./minio server /data &

上面提到的 /data 是 MinIO 将存储对象的文件系统。

启动很快,您应该会看到如下启动信息。

Endpoint:  http://xx.71.141.xx:9000 http://127.0.0.1:9000      
AccessKey: minioadmin 
SecretKey: minioadmin 

Browser Access:
   http://xx.71.141.xx:9000 http://127.0.0.1:9000      

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio http://xx.71.141.xx:9000 minioadmin minioadmin

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'

让我们使用默认凭据在浏览器上访问 MinIO – minioadmin:minioadmin

  修复 DX11 功能级别 10.0 错误

界面非常整洁干净,但首先,让我们更改默认凭据,因为它暴露了风险。 没有选项可以通过浏览器更改管理员凭据,但可以使用环境变量。

要更改 MinIO 默认凭据,我们将导出访问和密钥,如下所示,然后启动 MinIO。

export MINIO_ACCESS_KEY=techblik.com
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

现在,它不应该抱怨默认凭证检测警告。

让我们尝试上传一些文件。

  • 单击右下角的 + 图标并创建一个存储桶
  • 我上传了一个测试文件并立即在浏览器上可见

并且,在服务器上

[[email protected] geekflare]# ls -ltr
total 4
-rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt
[[email protected] geekflare]#

如果您单击浏览器上的文件共享按钮,您将获得可共享的链接和设置到期时间的选项。

MinIO客户端

MinIO 客户端不仅仅是 aws-cli,它可以让你管理存储。 客户端适用于 Windows、macOS 和 Linux。

要在 Linux 上安装,请运行以下命令。

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 755 mc

运行mc命令查看命令帮助。

[[email protected] ~]# ./mc
NAME:
  mc - MinIO Client for cloud storage and filesystems.

USAGE:
  mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]

COMMANDS:
  alias      set, remove and list aliases in configuration file
  ls         list buckets and objects
  mb         make a bucket
  rb         remove a bucket
  cp         copy objects
  mirror     synchronize object(s) to a remote site
  cat        display object contents
  head       display first 'n' lines of an object
  pipe       stream STDIN to an object
  share      generate URL for temporary access to an object
  find       search for objects
  sql        run sql queries on objects
  stat       show object metadata
  mv         move objects
  tree       list buckets and objects in a tree format
  du         summarize disk usage recursively
  retention  set retention for object(s)
  legalhold  manage legal hold for object(s)
  diff       list differences in object name, size, and date between two buckets
  rm         remove objects
  version    manage bucket versioning
  ilm        manage bucket lifecycle
  encrypt    manage bucket encryption config
  event      manage object notifications
  watch      listen for object notification events
  undo       undo PUT/DELETE operations
  policy     manage anonymous access to buckets and objects
  tag        manage tags for bucket and object(s)
  replicate  configure server side bucket replication
  admin      manage MinIO servers
  update     update mc to latest release
  
GLOBAL FLAGS:
  --autocompletion              install auto-completion for your shell
  --config-dir value, -C value  path to configuration folder (default: "/root/.mc")
  --quiet, -q                   disable progress bar display
  --no-color                    disable color theme
  --json                        enable JSON lines formatted output
  --debug                       enable debug output
  --insecure                    disable SSL certificate verification
  --help, -h                    show help
  --version, -v                 print the version
  
TIP:
  Use 'mc --autocompletion' to enable shell autocompletion

VERSION:
  RELEASE.2020-10-03T02-54-56Z
[[email protected] ~]#

让我们尝试列出我通过 mc 命令上传的文件。

  uTorrent 无法连接到同行:这是解决方法

首先,我们需要为我们要管理的存储设置别名。

[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ techblik.com geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • minio 是别名。 您可以将其更改为您想要的任何内容。
  • 将 HTTP 端点更改为您的真实端点
  • 使用您的更改访问权限和密钥

并且,要列出,将使用如下的 ls 命令。

[[email protected] ~]# ./mc ls --recursive minio 
[2020-10-19 11:09:06 UTC]    11B techblik.com/MinIO-Test.txt
[[email protected] ~]#

伟大的。 有用!

你可以通过客户端做每一件事。 您不仅可以管理 MinIO 云存储,还可以管理 GCS、AWS S3、Azure。

看看这个 客户端快速入门指南 更多细节。

MinIO SDK

根据您的应用程序堆栈,您可以使用 SDK 以编程方式与对象存储进行交互。 它支持 Go、Python、Node.js、.NET、Haskell 和 Java。

MinIO网关

将 MiniIO 网关添加到 S3、Azure、NAS、HDFS 以利用 MinIO 浏览器和磁盘缓存。

结论

如果您正在寻找私有、混合或多云对象存储,那么 MinIO 看起来很有前途。 试一试,您会爱上它的。 为了测试事物,你可以得到 Kamatera 的 MinIO 虚拟机 或将自己安装在任何云服务器上。