搜尋
首頁系統教程LinuxLinux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

Feb 10, 2024 pm 04:48 PM
linuxlinux教程linux系統分散式部署linux指令shell腳本嵌入式linuxlinux入門linux學習

由於最近剛開始負責物件儲存相關係統的建設與穩定性運維,作為一個「物件儲存」的一個新手,需要加強這塊的學習。

由於公司目前採用MinIO來建構公司的對象儲存體系,後續我會逐步將自己關於MinIO的學習經驗分享出來,歡迎大家持續關注。

本文主要介紹如何在測試環境中建立MinIO,這也是建構MinIO學習環境最基本的步驟。

1、準備實驗環境

#使用Oracle VM VirtualBox虛擬機,安裝一個最小版本的Linux,然後新增4個虛擬盤,用於充當MinIO的虛擬盤。

實驗環境如下圖所示:

Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

接下來跟大家簡單介紹一下虛擬環境的建置。

Step1:具體新增虛擬磁碟的方式:

Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

#操作路徑:【設定】-【儲存】,在控制SATA中新增【加號】

Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

Step2:點選【建立】,建立一塊磁碟,操作如下圖:

Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

#創建好四塊磁碟後,重新啟動伺服器。

Step3:檢驗作業系統是否辨識到磁碟

首先我們可以執行lsblk,執行結果如下所示:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part
  ├─centos-root 253:0    0 45.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk
sdc               8:32   0   10G  0 disk
sdd               8:48   0   10G  0 disk
sde               8:64   0   10G  0 disk
sr0              11:0    1 1024M  0 rom

根據建立檔案的大小,我們可以看到建立的四塊虛擬磁碟sdb、sdc、sdd、sde,但並未掛載(MOUNTPOINT為空)

但此時使用 df -h 指令,無法查看到這些盤,結果如下所示:

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  8.7M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   46G  1.3G   44G    3% /
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    379M     0  379M    0% /run/user/0

但使用fdisk -l 指令也能查詢到四塊虛擬盤信息,如下所示:

[root@localhost ~]# fdisk -l

磁盘 /dev/sde:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdd:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdc:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b5407

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-root:48.4 GB, 48444211200 字节,94617600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

那要如何將四塊虛擬磁碟掛載到檔案系統呢?

Step4:建立分割區、格式化磁碟,並掛載到文件,具體指令如下:

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x2bb131bd 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition,创建一个分区
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
将使用默认值 20971519
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

## 这里格式为ext4,如果是新搭建MinIO集群,文件存储系统强烈推荐使用xfs,对应的命令:mkfs.xfs /dev/sdb
[root@localhost ~]# mkfs.ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
无论如何也要继续? (y,n) y
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@localhost ~]# mkdir /data1
# 注释:挂载到文件系统 /data1
[root@localhost ~]# mount -t ext4 /dev/sdb /data1
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  8.7M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   46G  1.3G   44G    3% /
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    379M     0  379M    0% /run/user/0
/dev/sdb                 9.8G   37M  9.2G    1% /data1

在使用相同的指令將 /dev/sdc、/dev/sdd、/dev/sde建立分割區並掛載到/data2,/data3,/data4。

最後的執行效果如下:

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  8.7M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   46G  1.3G   44G    3% /
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    379M     0  379M    0% /run/user/0
/dev/sdb                 9.8G   37M  9.2G    1% /data1
/dev/sdc                 9.8G   37M  9.2G    1% /data2
/dev/sdd                 9.8G   37M  9.2G    1% /data3
/dev/sde                 9.8G   37M  9.2G    1% /data4

至此,實驗環境準備完成。

2、部署MinIO

MinIO支援三種部署架構:

  • Single-Node Single-Drive (SNSD or “Standalone”) 單節點單一磁碟機
  • # Single-Node Multi-Drive (SNMD or “Standalone Multi-Drive”) 單節點多驅動器,偽分佈式,能使用糾錯碼等生產特性。
  • Multi-Node Multi-Drive (MNMD or “Distributed”) 多節點多驅動器,即分散式部署架構,強烈建議用於生產環境。

由於測試資源有限,本文採用Single-Node Multi-Drive進行建置。

SNMD部署架構支援磁碟機(磁碟)的容錯。生產環境強烈建議使用MNMD架構。

2.1安裝前準備

MinIO強烈建議直連的JBOD陣列,xfs格式的磁碟以獲得最佳效能。

DAS (Direct-Attached Storage)與網路儲存(NAS、SAN、NFS)相比具有顯著的效能和一致性優勢。

使用非xfs檔案系統(ext4、btrfs、zfs)的部署往往具有較低的效能,同時ext4等檔案儲存對單一目錄下的檔案有個數限制,容易影響可用性。

Minio天生具有分散式儲存的優勢,且內部採用糾刪碼,RAID或類似技術反而無法提供額外的彈性或可用性優勢,而且通常會降低系統效能

請確保伺服器集區中的所有節點使用相同類型(NVMe、SSD或HDD)的驅動器,且容量相同。 MinIO不區分驅動器類型,也無法從混合儲存類型中獲益。另外。 MinIO將每個磁碟機的大小限制在部署中最小的磁碟機所擁有的容量。例如,如果部署有15個10TB驅動器和1個1TB驅動器,MinIO將每個驅動器的容量限制為1TB。

MinIO需要使用展开符号{x…y}用来表示Server Pool中每一个节点的一组磁盘驱动器,并且要求Server Pool中所有节点的磁盘驱动器序列相同。MinIO还要求物理驱动器的顺序在重新启动时保持不变,这样给定的挂载点总是指向相同的格式化驱动器。

2.2 如何一步一步安装MinIO

Step1:根据不同的操作系统与CPU架构,下载对应的安装包,例如当前虚拟机是amd,我们下载对应的RPM包,命令如下:

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

20230313194617.0.0.x86_64.rpm -O minio.rpm

sudo dnf install minio.rpm

通过该命令安装后,有关MinIO相关文件:

  • /usr/local/bin/ MinIO 可执行文件所在的目录,该目录下就只有一个可执行文件 minio。
  • /etc/systemd/system/minio.service MinIO系统服务文件
  • /etc/default/minio MinIO环境变量文件

如果是使用二进制文件直接安装,其实就是要创建如上三个文件。

Step2:创建systemd系统服务文件

如果是基于rpm或者deb包进行安装的话,会自动创建systemd系统服务文件,如果是二级制安装模式,就需要自动创建该文件,文件的全路径为/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/local

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=-/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

# 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})

默认情况下MinIO使用minio-user用户与minio-user用户组启动MinIO进程,故我们需要创建对应的用户与组,具体命令如下:

[root@localhost bin]# groupadd -r minio-user

[root@localhost bin]# useradd -M -r -g minio-user minio-user
# 主要是将minio需要用到的磁盘驱动器

设置为 minio-user:minio-user

[root@localhost bin]# chown minio-user:minio-user /data1 /data2 /data3 /data4

Step3:创建环境变量

默认需要创建 /etc/default/minio 文件,用于设置minio相关的环境变量(配置项)。关于MinIO的配置详细说明可以参考官方网站:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-single-node-multi-drive.html#id6

例如我们创建的最小化配置文件如下:

# 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 e
nvironment.

MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me

# 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="/data{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"

其中MINIO_VOLUMES参数用于指定MinIO集群的磁盘,这里由于是单节点,所有省略了HOSTNAME。

Step4:启动MinIO

通过在节点上使用如下命令启动MinIO(如果分布式环境下,分别在不同节点执行该命令)。

systemctl start minio.service

命令执行后,我们可以使用如下命令查看minio是否启动成功

systemctl status minio.service

该命令运行的截图如下所示:

Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

其中Active(running)表示运行正常,并且可以看到Console的地址,我们可以在浏览器中输入console地址,打开MinIO内置的控制台:

Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

用户名、密码是配置在MinIO环境变量配置文件中,输入用户名、密码即可登录。

当然MinIO也提供了对应mc 客户端命令访问服务端,关于运维命令,将会在后续文章介绍。

并基于MinIO Console成功创建了Bucket并成功上传了文件,效果如下图所示:

Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?

以上是Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:良许Linux教程网。如有侵權,請聯絡admin@php.cn刪除
說明Linux的開源性質及其與Windows的對比。說明Linux的開源性質及其與Windows的對比。Apr 28, 2025 am 12:03 AM

Linux的開源本質使其在社區參與、性能、安全性等方面優於Windows,但Windows在用戶友好性和軟件生態上更勝一籌。 1)Linux鼓勵社區貢獻,開發速度快;2)在服務器和嵌入式系統中性能更好;3)開源本質使其更安全;4)Windows用戶界面友好,軟件生態廣泛。

5個用於監視磁盤I/O性能的Linux工具5個用於監視磁盤I/O性能的Linux工具Apr 27, 2025 pm 04:45 PM

本指南探討了用於監視和故障排除磁盤I/O性能的基本Linux工具,這是對服務器速度和應用程序響應的關鍵度量。 磁盤I/O性能直接影響從和書面讀取數據的速度

在Linux中查找插入USB設備名稱的4種方法在Linux中查找插入USB設備名稱的4種方法Apr 27, 2025 pm 04:44 PM

對於新的Linux用戶,識別連接的設備至關重要,尤其是USB驅動器。 本指南提供了幾種命令行方法來確定USB設備的名稱,這對於格式化等任務必不可少。 雖然USB驅動器經常自動安裝(例如, /

如何在根(/)分區上修復'設備上沒有剩餘空間”如何在根(/)分區上修復'設備上沒有剩餘空間”Apr 27, 2025 pm 04:43 PM

Linux系統,特別是磁盤空間有限的系統,最常見的問題之一就是根分區(/)空間耗盡。 出現此問題時,您可能會遇到以下錯誤: No space left on device 別慌!這只是表示您的根目錄(/ 分區)已滿,這是一個常見問題,尤其是在磁盤空間有限的系統或全天候運行的服務器上。 發生這種情況時,您可能會遇到以下問題: 無法安裝或升級軟件包。 系統啟動失敗。 服務無法啟動。 無法寫入日誌或臨時文件。 本文將引導您完成識別問題、安全清理空間以及防止再次發生此問題的實用步驟。這些說明適用於初

2025年Linux的前16名記事本替代品2025年Linux的前16名記事本替代品Apr 27, 2025 pm 04:42 PM

本文探討了Linux用戶的一流記事本替代方案。 記事本雖然在Windows上很棒,但缺少Linux版本。 本指南提供了適合各種需求和偏好的各種選擇。 最高記錄的替代方案

如何在SystemD中創建和運行新服務單元如何在SystemD中創建和運行新服務單元Apr 27, 2025 pm 04:41 PM

幾天前,我遇到了32位CentOS 8分佈,並決定在較舊的32位系統上進行測試。 啟動後,我發現了一個網絡連接問題。連接將下降,每次重新啟動後都需要手動修復。這個公關

如何在Linux的硬盤上檢查不良扇區如何在Linux的硬盤上檢查不良扇區Apr 27, 2025 pm 04:40 PM

讓我們澄清什麼構成不良扇區或不良區塊:這是硬盤驅動器或閃存的一部分,它變得不可讀取或無法寫入,這通常是由於對磁盤表面的物理損害或閃爍的閃存閃存晶體管。 累積

如何強制CP命令無需提示即可覆蓋文件如何強制CP命令無需提示即可覆蓋文件Apr 27, 2025 pm 04:39 PM

CP命令(“複製”)是Linux和其他類似Unix的系統的基本工具,用於復製文件和目錄。 雖然對本地文件傳輸有效,但對於基於網絡的副本,SCP(安全副本)是首選的

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器