尝试使用MinIO – 自托管的符合S3标准的高性能对象存储

你正在寻找可以托管在你的服务器上的对象存储软件吗?

我猜是的?

有很多基于云的对象存储,如AWS S3和其他I mentioned here。然而,如果你需要将数据托管在你的服务器上,MinIO可以帮助你在数据中心内进行。

MiniIO是一款开源的、流行的分布式对象存储软件,与S3兼容。它具备企业级可靠性,并以其高性能而闻名。

你可以将MinIO用于简单的Web应用程序,也可以用于大规模的数据分发工作负载、分析和机器学习应用。它可以适用于许多用例。

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

这是一个庞大的软件吗?

不是的,它只有约50MB大小,并且适用于Kubernetes。它将数据和元数据作为对象进行写入,这样就不需要额外的数据库或软件来存储元数据,并提高了性能。

下面是官方网站上的架构图。

让我们来探索一些值得注意的特性。

  • 高性能-标题就这么说。它能以每秒约170GB的速度读写。这真的太多了!
  • 可扩展-通过集群化进行扩展,按需进行扩容
  • 云原生
  • 使用纠删码方法进行数据保护
  • 支持多种加密方式,包括AES-CBC、AES-256-GCM、ChaCha20
  • 与常见的KMS兼容
  • 应用和用户身份验证
  • 事件通知
  • 使用etcd和CoreDNS进行联邦

MinIO是一种很好的软件定义存储选择。让我们来探索如何设置它。

安装MinIO服务器

你可以在Linux、Windows、macOS上以及通过Kubernetes上安装MinIO。你想通过源代码构建吗?当然可以,如果你已经安装了Golang

在这个演示中,我将在托管在Kamatera上的CentOS上安装。

  • 登录到服务器
  • 在所需的文件系统下创建一个文件夹。比如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

浏览器访问:
   http://xx.71.141.xx:9000 http://127.0.0.1:9000

命令行访问:https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio http://xx.71.141.xx:9000 minioadmin minioadmin

对象API(与Amazon S3兼容):
   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
检测到默认凭据'minioadmin:minioadmin',请立即使用'MINIO_ACCESS_KEY'和'MINIO_SECRET_KEY'更改凭据

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

界面非常整洁,但在任何操作之前,让我们更改默认凭据,因为它会暴露风险。无法通过浏览器更改管理员凭据,只能通过环境变量来更改。

要更改MinIO的默认凭据,我们将按照下面的方式导出访问密钥和秘密密钥,并启动MinIO。

export MINIO_ACCESS_KEY=yaoweibin
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

现在,它不应该再有关于默认凭据检测警告的投诉。

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

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

以及,在服务器上

[root@gf-lab yaoweibin]# ls -ltr
total 4
-rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt
[root@gf-lab yaoweibin]#

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

MinIO客户端

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

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

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

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

[root@gf-lab ~]# ./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
[root@gf-lab ~]#

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

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

[root@gf-lab ~]#./mc别名集minio http://xx.71.141.xx:9000/ yaoweibin geekpassword
成功添加了`minio`。
[root@gf-lab ~]#

  • minio是别名。您可以根据需要更改。
  • 将HTTP端点更改为您的真实端点
  • 将访问密钥和密钥更改为您自己的

此外,要列出,将使用以下ls命令。

[root@gf-lab ~]#./mc ls --recursive minio
[2020-10-19 11: 09: 06 UTC] 11B yaoweibin / MinIO-Test.txt
[root@gf-lab ~]# 

太好了。 它可行!

您可以通过客户端实现几乎所有功能。 您不仅可以管理MinIO云存储,还可以管理GCS,AWS S3和Azure。

请查看此链接了解更多详细信息。

MinIO SDK

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

MinIO网关

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

结论

如果您正在寻找私有,混合或多云对象存储,那么MinIO看起来很有前途。试一试,您会爱上它。为了测试事物,您可以获取此链接或在任何链接上安装自己。

类似文章