运用MinIO技术服务器实现文件上传——在Linux系统上安装和启动(一)

embedded/2024/10/10 18:50:50/

# MinIO 单机版环境搭建详解

## 1. 简介

随着大数据时代的到来,数据存储的需求日益增大,如何有效地存储和管理大规模的非结构化数据成为许多企业和开发者面临的挑战。MinIO 作为一个高性能、分布式对象存储系统,致力于为用户提供简单、快速、可扩展的存储解决方案。它的设计与 Amazon S3 兼容,用户可以无缝切换到 AWS 生态系统,并充分利用 S3 提供的丰富功能。

MinIO 是基于 Go 语言开发的,因而其执行效率极高,并且可以灵活地支持各种非结构化数据的存储,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。相比传统的文件系统存储,MinIO 更适合处理海量数据,并且能够在云原生和分布式环境中良好运行。

### 1.1 MinIO 的优势

- **高性能**:MinIO 通过完全基于硬件的加速处理方式,保证了存储系统的高吞吐量与低延迟表现,适合对性能有较高要求的应用场景。
- **分布式架构**:MinIO 能够水平扩展,支持多节点的分布式部署,以实现更高的可用性和容错能力。
- **与 AWS S3 兼容**:MinIO 完全兼容 Amazon S3 API,这使得企业可以轻松将其迁移到 AWS 或在本地环境中构建兼容 S3 的存储系统。
- **跨平台支持**:MinIO 可以在主流操作系统上运行,如 Linux、Windows、MacOS,同时支持 Docker 部署,也可以直接在 Kubernetes 集群中运行。

### 1.2 适用场景

MinIO 的核心应用场景包括但不限于以下几个方面:
- **大规模数据存储**:适合需要存储 PB 级别非结构化数据的企业和应用,特别是多媒体文件、备份和日志数据。
- **云原生应用**:MinIO 非常适合与 Kubernetes 结合使用,特别是在需要弹性扩展存储的容器化应用中。
- **数据分析与机器学习**:在大数据分析与机器学习工作流中,MinIO 可以为存储大量的训练数据、模型文件提供支持。

总之,无论是企业应用还是个人开发者,MinIO 都是一个功能强大且易于使用的对象存储系统。

---

## 2. 环境搭建(单机版)

MinIO 的安装和配置非常简单,特别是在单机版部署场景下,只需要几个步骤就可以将其快速运行起来。以下是详细的环境搭建流程,适用于 CentOS 7 系统。

### 2.1 下载 MinIO 可执行文件

首先,通过 `wget` 命令从 MinIO 官方站点下载最新版的 MinIO 可执行文件。执行以下命令下载 MinIO:

wget https://dl.min.io/server/minio/release/linux-amd64/minio

下载完成后,将文件移动到适合的目录位置,例如 `/usr/local/soft/minio/`,并赋予文件可执行权限:

mkdir -p /usr/local/soft/minio/
mv minio /usr/local/soft/minio/
chmod +x /usr/local/soft/minio/minio

此时,MinIO 已经下载并准备就绪。

### 2.2 修改默认用户名和密码

MinIO 的默认用户名和密码为 `minioadmin`,为了安全起见,建议在启动前修改为更复杂的凭据。可以通过环境变量的方式来配置自定义的用户名和密码:

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678

上述命令将用户名设置为 `admin`,密码设置为 `12345678`,用户可以根据需要修改成自己喜欢的配置。

### 2.3 启动 MinIO

配置好 MinIO 之后,可以通过以下命令启动 MinIO:

./minio server /usr/local/soft/minio/data --console-address ":9001"

如果希望将 MinIO 后台运行,并将日志输出到文件中,可以使用 `nohup` 命令:

nohup ./minio server --console-address ":9001" /usr/local/soft/minio/data > /usr/local/soft/minio/minio.log 2>&1 &

这里需要注意以下几个重要参数:
- `--console-address`:指定 MinIO 管理控制台的监听地址和端口,默认端口为 `9001`。
- `--address`:指定 MinIO 服务的监听地址和端口,默认是 `9000`。
- `--data-dir`:指定数据存储的目录,这里我们将数据存储在 `/usr/local/soft/minio/data` 下。

#### 启动过程中常见问题:
如果遇到类似 `Permission denied` 的错误提示,很可能是目录权限不足,可以使用以下命令更改文件权限:

sudo chmod -R 777 /usr/local/soft/minio

注意:此处的 /usr/local/soft/minio  就是你的minio安装目录,自行修改

执行上述命令后,重新启动 MinIO。

### 2.4 访问 MinIO 管理控制台

MinIO 启动成功后,可以通过浏览器访问其管理控制台。控制台的默认端口是 `9001`,假设服务器 IP 地址为 `192.168.1.236`,可以通过如下地址访问:

http://192.168.1.236:9001

在登录界面输入之前配置的用户名和密码,即可进入 MinIO 的管理控制台。

如果在访问控制台时无法连接,请确保已正确配置防火墙,开放了 `9001` 端口。

---

## 3. 防火墙设置

在 CentOS 7 系统中,默认开启了防火墙。如果希望远程访问 MinIO 的控制台或存储服务,需要确保防火墙开放相应的端口(例如 `9000` 和 `9001`)。以下是与防火墙相关的一些常用操作。

### 3.1 防火墙的基本管理命令

通过以下命令可以启动、关闭防火墙,或检查防火墙状态:

# 启动防火墙
systemctl start firewalld# 关闭防火墙
systemctl stop firewalld# 设置开机启用防火墙
systemctl enable firewalld.service# 设置开机禁用防火墙
systemctl disable firewalld.service# 查看防火墙状态
systemctl status firewalld

### 3.2 开放端口

为了让 MinIO 的控制台和存储服务可以被外部访问,需要在防火墙中开放相应端口。假设我们需要开放 9000 和 9001 端口,执行以下命令:

# 开启端口 9000
firewall-cmd --zone=public --add-port=9000/tcp --permanent# 开启端口 9001
firewall-cmd --zone=public --add-port=9001/tcp --permanent# 重新加载防火墙配置
firewall-cmd --reload

添加完端口后,使用 `firewall-cmd --reload` 重新加载防火墙配置,确保修改生效。

此外,可以使用以下命令查看防火墙当前已开放的端口:

firewall-cmd --list-ports

确保 `9000` 和 `9001` 端口已经成功加入列表。

---

## 4. 总结

通过本文的详细介绍,相信大家对 MinIO 的单机版环境搭建有了更深入的了解。MinIO 的安装配置过程非常简单,但在实际使用中需要注意一些细节问题,例如启动参数的配置、权限的管理以及防火墙端口的开放。

MinIO 不仅支持单机模式,还可以通过水平扩展实现分布式部署,以满足更大规模的数据存储需求。无论是个人开发者还是企业级应用,MinIO 都是一个功能强大、易于使用的对象存储系统。未来,在云原生、容器化应用场景下,MinIO 也将扮演重要角色,帮助用户高效管理海量非结构化数据。

如果对性能、可扩展性有更高的要求,可以考虑 MinIO 的分布式模式,将存储节点分布到多个物理服务器上,进一步提升数据存储的可靠性与可用性。


http://www.ppmy.cn/embedded/125493.html

相关文章

Qt和c++面试集合

目录 Qt面试 什么是信号(Signal)和槽(Slot)? 什么是Meta-Object系统? 什么是Qt的MVC模式? 1. QT中connect函数的第五个参数是什么?有什么作用? 3. 在QT中&#xff…

实验室装修:一系列设计方案需考虑哪些因素?

实验室装修设计看似简单,但其实背后藏着无数细节与思考。一个成功的实验室不仅需要满足科研的需求,还要确保在安全、环保和未来扩展性等方面都有良好的规划。今天,我们就来聊聊,实验室装修设计方案究竟需要考虑哪些因素。 一、实验…

Day06-数据库服务存储引擎

Day-06-数据库存储引擎知识 1、数据库联合索引应用2、数据库索引扩展信息(扩展列信息说明)3、数据库索引应用总结4、数据库存储引擎概述5、数据库存储引擎种类6、数据库存储引擎特性(Innodb)Innodb vs MyISAM7、数据库存储引擎应用…

使用pandas和numpy进行数据理解与清晰

处理缺失值 可以使用dropna()方法删除包含空值的行或列,或者使用fillna()方法填充空值。例如,可以用均值、中位数或众数来填充空值,代码示例如下: import pandas as pd df pd.read_csv(property-data.csv) df.fillna(df.mean(),…

C语言二级考试上机题

1.表示关系x≥y≥z应使用C语言表达式() A)(x>y)&&(y>z)B)(x>y)AND(y>z)C)x>y>zD)(x>y)&(y>z) 2.C语言可执行程序的开始执行点是() A)程序中第一条可执行语言B)程序中第一个函数 C)程序中的main函数D)包含文件中的第一个函数 3.以下if语…

PyTorch实现卷积神经网络CNN

一、卷积神经网络CNN 二、代码实现(PyTorch) 1. 导入依赖库 import torch from torch import nn, optim from torchvision import datasets, transforms from torch.utils.data import DataLoader nn:包含了torch已经准备好的层&#xff0c…

jmeter实现SSL双向验证

前提: 预先了解:SSL单向/双向认证详解握手请求以及tomcat配置https请求的请到以下网址了解Java nginx https 双向认证 der,cer文件一般是二进制格式的,只放证书,不含私钥 crt 文件可能是二进制的,也可能是文本格式的,应该以文本格式居多,功能同der/cer pem文件一般是…

压力测试指南-分布式系统下的压力测试策略

分布式系统下的压力测试策略 在当今的数字化时代,分布式系统因其高可用性、可扩展性和灵活性成为众多企业的首选架构。然而,这复杂的体系结构也为压力测试带来了新的挑战。本文将深入探讨分布式系统压力测试的关键方面,并展示如何利用自动化…