Linux中如何建構4塊虛擬碟來搭建分散式MinIO叢集?
由於最近剛開始負責物件儲存相關係統的建設與穩定性運維,作為一個「物件儲存」的一個新手,需要加強這塊的學習。
由於公司目前採用MinIO來建構公司的對象儲存體系,後續我會逐步將自己關於MinIO的學習經驗分享出來,歡迎大家持續關注。
本文主要介紹如何在測試環境中建立MinIO,這也是建構MinIO學習環境最基本的步驟。
1、準備實驗環境
#使用Oracle VM VirtualBox虛擬機,安裝一個最小版本的Linux,然後新增4個虛擬盤,用於充當MinIO的虛擬盤。
實驗環境如下圖所示:

接下來跟大家簡單介紹一下虛擬環境的建置。
Step1:具體新增虛擬磁碟的方式:

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

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

#創建好四塊磁碟後,重新啟動伺服器。
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
该命令运行的截图如下所示:

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

用户名、密码是配置在MinIO环境变量配置文件中,输入用户名、密码即可登录。
当然MinIO也提供了对应mc 客户端命令访问服务端,关于运维命令,将会在后续文章介绍。
并基于MinIO Console成功创建了Bucket并成功上传了文件,效果如下图所示:

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

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

禪工作室 13.0.1
強大的PHP整合開發環境

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

SublimeText3漢化版
中文版,非常好用

Atom編輯器mac版下載
最受歡迎的的開源編輯器