树莓派5:minio的SNMD模式实验

在刚才的“树莓派5试用体会-CSDN博客”这篇博文中提到了之前想用树莓派做minio单节点多驱动器的实验,这次终于在有奇葩的官方5V5A电源加持的树莓派5中找到了测试的可能性了。

Minio是一种开源对象存储。支持单节点单盘部署(入门体验)、单节点多盘部署(4盘起步。相当于有了软RAID,灭失1/2的磁盘仍可读。可读写需要N/2 + 1块好盘)、多节点多盘部署(生产环境用)。家用的话也可以看作一个私有的云盘。为了这个实验特地找出来一个四口Usb Hub,还买了4个U盘。

首先将U盘都插入USB HUB,并将HUB接入树莓派。然后下载minio软件。就一个可执行文件,先下载备用:

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

第二步,使用lsblk命令检查一下四个盘是否都已认到,应该是要全部认到。如果有缺失需要进一步检查供电、盘或者HUB的质量问题。下图仅供参考,重点是想说明出现了sdb、sdc、sdd、sde(以你的实际情况为准)即可,说明四个新盘都认到了。

第三步(可选)。如果mountpoints上已有挂载,可运行umount 你的挂载点 卸载挂载。对每个新盘都如此操作。

第四步,fdisk。对于大于2T的盘使用gdisk。指令顺序仅供参考。

sudo fdisk /dev/sdb #(指令顺序:d n p 凡是让输数字一路默认,最后w)
sudo fdisk /dev/sdc # 同上
sudo fdisk /dev/sdd # 同上
sudo fdisk /dev/sde # 同上

第五步,格式化。可能先要执行下sudo apt install xfsprogs,不然不认xfs:

sudo mkfs.xfs /dev/sdb -L diskB -f
sudo mkfs.xfs /dev/sdc -L diskC -f
sudo mkfs.xfs /dev/sdd -L diskD -f
sudo mkfs.xfs /dev/sde -L diskE -f

第六步,创建挂载点目录。注意,这些目录会在后续配置文件中出现。强烈建议就用自然数列编号。

sudo mkdir -p /mnt/disk1
sudo mkdir -p /mnt/disk2
sudo mkdir -p /mnt/disk3
sudo mkdir -p /mnt/disk4

第七步,编辑fstab文件:sudo /etc/fstab,追加以下内容:

LABEL=diskB     /mnt/disk1      xfs     defaults,nofail,noatime 0       2
LABEL=diskC     /mnt/disk2      xfs     defaults,nofail,noatime 0       2
LABEL=diskD     /mnt/disk3      xfs     defaults,nofail,noatime 0       2
LABEL=diskE     /mnt/disk4      xfs     defaults,nofail,noatime 0       2

第八步,创建挂载点:

sudo mount /dev/sdb /mnt/disk1
sudo mount /dev/sdc /mnt/disk2
sudo mount /dev/sdd /mnt/disk3
sudo mount /dev/sde /mnt/disk4

第九步,到这里强烈建议重启一次。不方便重启可以尝试 sudo systemctl daemon-reload

第二阶段,配置minio本身了:

第十步:转移minio可执行文件到指定目录:

sudo mv minio /usr/local/bin/
sudo chmod +x minio

第十一步:编辑 /etc/systemd/system/minio.service 文件:

[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio[Service]
WorkingDirectory=/usr/localUser=minio-user
Group=minio-user
ProtectProc=invisibleEnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify# Let systemd restart this service always
Restart=always# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536# Specifies the maximum number of threads this process can create
TasksMax=infinity# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no[Install]
WantedBy=multi-user.target# Built for ${project.name}-${project.version} (${project.name})

按官方文档的说法,它是推荐放在/usr/lib/systemd/system下的,但我这边测试遇到了个权限问题,先放一放吧。反正放在/etc/systemd/system/下肯定可以。

第十二步,编辑 /etc/default/minio 文件:

# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment.MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin# MINIO_VOLUMES sets the storage volumes or paths to use for the MinIO server.
# The specified path uses MinIO expansion notation to denote a sequential series of drives between 1 and 4, inclusive.
# All drives or paths included in the expanded drive list must exist *and* be empty or freshly formatted for MinIO to start successfully.MINIO_VOLUMES="/mnt/disk{1...4}"# MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server.
# MinIO assumes your network control plane can correctly resolve this hostname to the local machine.# Uncomment the following line and replace the value with the correct hostname for the local machine.#MINIO_SERVER_URL="http://minio.example.net"

这里指定了管理控制台的用户名和密码,以及实际的磁盘挂载点。这里我偷懒用了弱密码,好孩子不要学。。。

第十三步,创建专用账号(组)并赋权:

sudo groupadd -r minio-user
sudo useradd -M -r -g minio-user minio-user
sudo chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4

好了,可以见证奇迹了:

#启动服务
sudo systemctl start minio.service
#设置服务自动运行
sudo systemctl enable minio.service#查看服务状态是否正常
sudo systemctl status minio.service
journalctl -f -u minio.service

systemctl status里看到有Active: active (running) 基本上就没啥大问题了。

可以用http://IP地址:9000测试。用户名密码都是minioadmin(参见/etc/default/mini 文件。再次强调弱密码家里玩玩就算了,公司里千万别偷着个懒,哪怕是开发测试环境)

 突然有个想法,接下来研究下使用c#和python去访问minio存储。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414657.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PBR材质背光面太暗优化

图形学中漫反射光照遵循兰伯特光照模型,它的公式如下 其中: :漫反射光颜色 :入射光颜色 :材质的漫反射系数 :法线方向 :光源方向 由于背光面的法线方向和光源方向的点积为负数,因此…

Android中的anr定位指导与建议

1.背景 8月份安卓出现了一次直播间卡死(ANR)问题,且由于排查难度较大,持续了较长时间。本文针对如何快速定位安卓端出现ANR问题进行总结和探讨. 这里大致补充一下当时的情况,当时看到情景的是从某一个特定的场景下进入直播间后整个直播间界面立刻就卡住…

新能源智慧充电桩方案:AI视频分析技术如何助力充电桩智能监管?

随着AI人工智能、大数据、云计算等技术快速发展与落地,视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理,提高运营效率,保障充电桩设备的安全和稳定运行。 通过TSINGSEE青犀&触角…

牛客周赛 Round 14 题解报告 | 珂学家 | 环形模拟 + 滑窗前缀和二分 + 数学

前言 整体评价 这场牛客周赛很特别,没有一题是水题(签到),也没真正意义上的压轴题。 牛客周赛还是注重数学,B,D是数学题,A是模拟题,C的解法偏多,滑窗/26组前缀和&二…

欧科云链与《警察技术》联合发布技术专题.pdf

欧科云链受《警察技术》邀请,于第201期期刊正式刊登“区块链生态安全与虚拟货币犯罪治理”技术专题。欧科云链作为该技术专题主要作者,直接参与本次期刊2篇文章撰写,同时为多篇文章提供欧科云链的最新数据和研究成果。 《警察技术》期刊创办于…

深入Docker5:安装nginx部署完整项目

目录 准备 为什么要使用nginx mysql容器构建 1.删除容器 2.创建文件夹 3.上传配置文件 4.命令构建mysql容器 5.进入mysql容器,授予root所有权限 6.在mysql中用命令运行sql文件 7.创建指定数据库shop 8.执行指定的sql文件 nginx安装与部署 1.拉取镜像 2…

C++ 之路如逆水行舟 不进则退

C 核心编程 内存分区模型 C 程序在执行时,将内存大方向划分为 4 个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放 , 存放函数的参数…

15、注册表永久关闭Citrix云桌面UAC功能

一、说明 我们经常使用Citrix云桌面时候遇到打开软件会弹出一个输密码的界面,这个其实是UAC,此次我们主要使用注册表方式彻底关闭。 二、注册表方式 打开路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Syst…

新版AndroidStudio dependencyResolutionManagement出错

在新版AndroidStudio中想像使用4.2版本或者4.3版本的AndroidStudio来构造项目?那下面这些坑我们就需要来避免了,否则会出各种各样的问题。 一.我们先来看看新旧两个版本的不同。 1.jdk版本的不同 新版默认是jdk17 旧版默认是jdk8 所以在新版AndroidSt…

Mysql root 密码重置详解

文章目录 1 概述1.1 前言1.2 mysql 版本查询 2 windows 操作系统2.1 mysql 8 及以上版本2.1.1 关闭 mysql 服务2.1.2 通过无认证方式启动 mysql2.1.3 新开窗口,登录 mysql,重置密码 1 概述 1.1 前言 不同的操作系统(如:windows、…

Unity 编辑器篇|(十)Handles (全面总结 | 建议收藏)

目录 1. 前言2 参数总览3 Handles两种使用方式3.1 基于Editor类的OnSceneGUI3.2 基于EditorWindow 4 Handles绘制4.1 Draw:绘制元几何体(点、线、面)4.1.1 抗锯齿: DrawAAPolyLine 、 DrawAAConvexPolygon4.1.2 绘制实线: DrawLine 、 DrawLines 、DrawP…

Python基础第一篇(Python概念介绍)

文章目录 一、前言:二、第一个Python程序三,理解Python的解释器四,Python解释器的使用五,Python开发环境 一、前言: 欢迎来到我们的Python学习专栏。在这里,我们将一起探索Python这门强大、灵活、易于学习…