Rumah  >  Artikel  >  Tutorial sistem  >  Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

王林
王林ke hadapan
2024-02-10 16:48:131136semak imbas

Memandangkan saya baru-baru ini mula bertanggungjawab untuk pembinaan dan operasi kestabilan serta penyelenggaraan sistem berkaitan penyimpanan objek, sebagai pemula dalam "penyimpanan objek", saya perlu mengukuhkan pembelajaran saya dalam bidang ini.

Memandangkan syarikat pada masa ini menggunakan MiniIO untuk membina sistem penyimpanan objek syarikat, saya secara beransur-ansur akan berkongsi pengalaman pembelajaran saya tentang MiniIO pada masa hadapan. Semua orang dialu-alukan untuk terus memberi perhatian.

Artikel ini terutamanya memperkenalkan cara menyediakan MiniIO dalam persekitaran ujian Ini juga merupakan langkah paling asas dalam membina persekitaran pembelajaran MiniIO.

1. Sediakan persekitaran eksperimen

Gunakan mesin maya Oracle VM VirtualBox, pasang versi minimum Linux, dan kemudian tambah 4 cakera maya untuk berfungsi sebagai cakera maya MiniIO.

Persekitaran eksperimen adalah seperti berikut:

Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

Seterusnya, izinkan saya memperkenalkan secara ringkas penubuhan persekitaran maya.

Langkah 1: Kaedah khusus untuk menambah cakera maya:

Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

Laluan operasi: [Tetapan]-[Storan], tambah [tanda tambah] untuk mengawal SATA

Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

Langkah2: Klik [Buat] untuk mencipta cakera Operasi adalah seperti yang ditunjukkan dalam rajah di bawah:

Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

Selepas mencipta empat cakera, mulakan semula pelayan.

Langkah 3: Semak sama ada sistem pengendalian mengenali cakera

Mula-mula kita boleh jalankan lsblk, keputusan pelaksanaan adalah seperti berikut:

[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

Mengikut saiz fail yang dibuat, kita dapat melihat empat cakera maya yang dicipta sdb, sdc, sdd, dan sde, tetapi ia tidak dipasang (MOUNTPOINT kosong)

Tetapi pada masa ini, menggunakan arahan df -h, cakera ini tidak boleh dilihat hasilnya adalah seperti berikut:

[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

Tetapi anda juga boleh menanyakan empat maklumat cakera maya menggunakan arahan fdisk -l, seperti yang ditunjukkan di bawah:

[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 字节

Jadi bagaimana untuk melekapkan empat cakera maya pada sistem fail?

Langkah4: Buat partition, format cakera dan lekapkannya pada fail Arahan khusus adalah seperti berikut:

[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

Gunakan arahan yang sama untuk mencipta partition untuk /dev/sdc, /dev/sdd, /dev/sde dan lekapkannya ke /data2, /data3, /data4.

Kesan pelaksanaan akhir adalah seperti berikut:

[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

Pada ketika ini, persekitaran eksperimen sudah sedia.

2. Gunakan MiniIO

MinIO menyokong tiga seni bina penggunaan:

  • Pemacu Tunggal Nod Tunggal (SNSD atau “Standalone”) Pemacu tunggal nod tunggal
  • Multi-Drive Nod Tunggal (SNMD atau "Standalone Multi-Drive") Nod tunggal berbilang pemacu, diedarkan pseudo, boleh menggunakan ciri pengeluaran seperti kod pembetulan ralat.
  • Multi-Node Multi-Drive (MNMD atau "Distributed") Multi-Node Multi-Drive, seni bina penggunaan teragih, amat disyorkan untuk persekitaran pengeluaran.

Disebabkan sumber ujian yang terhad, artikel ini menggunakan Single-Node Multi-Drive untuk membinanya.

Seni bina penggunaan SNMD menyokong toleransi kerosakan pemacu (cakera). Adalah sangat disyorkan untuk menggunakan seni bina MNMD dalam persekitaran pengeluaran.

2.1 Persediaan sebelum pemasangan

MinIO amat mengesyorkan tatasusunan JBOD yang dilampirkan terus dan cakera format xfs untuk prestasi optimum.

DAS (Direct-Attached Storage) mempunyai kelebihan prestasi dan ketekalan yang ketara berbanding storan rangkaian (NAS, SAN, NFS).

Pengaturan menggunakan sistem fail bukan xfs (ext4, btrfs, zfs) selalunya mempunyai prestasi yang lebih rendah Pada masa yang sama, storan fail seperti ext4 mempunyai had pada bilangan fail dalam satu direktori, yang boleh menjejaskan ketersediaan dengan mudah.

Minio sememangnya mempunyai kelebihan storan teragih dan menggunakan pengekodan pemadaman secara dalaman RAID atau teknologi serupa tidak dapat memberikan kelebihan keanjalan atau ketersediaan tambahan dan biasanya mengurangkan prestasi sistem.

Sila pastikan semua nod dalam kumpulan pelayan menggunakan jenis pemacu yang sama (NVMe, SSD atau HDD) dan mempunyai kapasiti yang sama. MiniIO tidak membezakan antara jenis pemacu dan tidak boleh mendapat manfaat daripada mencampurkan jenis storan. juga. MiniIO mengehadkan saiz setiap pemacu kepada kapasiti yang dipegang oleh pemacu terkecil dalam penggunaan. Contohnya, jika penggunaan mempunyai 15 pemacu 10TB dan 1 pemacu 1TB, MiniIO mengehadkan kapasiti setiap pemacu kepada 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

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

Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

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

Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

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

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

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

Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?

Atas ialah kandungan terperinci Bagaimana untuk membina 4 cakera maya untuk membina kluster MiniIO yang diedarkan di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lxlinux.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam