@@ -5,7 +5,6 @@ description: "使用 Linux 操作系统安装 RustFS 的快速指导"
55
66# Linux 安装 RustFS
77
8- <a id =" mode " ></a >
98
109## 一、安装前必读
1110
@@ -35,9 +34,7 @@ description: "使用 Linux 操作系统安装 RustFS 的快速指导"
3534
36357 . 磁盘规划;
3736
38- 8 . 容量规划;
3937
40- 9 . 数据分层规划。
4138
4239### 2.1. 操作系统版本
4340
@@ -116,6 +113,93 @@ timedatectl status
116113如果状态为“synchronized”,则表示时间同步正常。
117114
118115
116+ ### 2.6 容量和EC规划
117+
118+ 在规划对象存储容量的时候,我们建议您根据:
119+
120+ - 初始数据量: 您计划一次性迁移或存储多少数据?(例如:500 TB)
121+ - 数据增长量:每天/每周/每月的数据增长容量;
122+ - 规划周期: 您希望这次的硬件规划能支撑多久?(建议:3年)
123+ - 考虑您公司的硬件迭代和更新周期。
124+
125+ EC(纠删码)规划如下:
126+
127+ | 场景 | 推荐校验级别 | 说明 |
128+ | - | - | - |
129+ | 标准生产环境 | EC:4 | 能够容忍最多4块磁盘(或节点)故障,在可靠性和存储效率之间取得了很好的平衡。|
130+ | 高可用性要求 | EC:4 - 8 | 或更高 适用于对数据可用性要求极高的场景,但会牺牲更多的存储空间。|
131+ | 开发测试环境 | EC:2| 提供基本的冗余保护,适用于非关键业务。|
132+
133+
134+
135+
136+ ### 2.7 磁盘规划
137+
138+ 由于NFS在高IO情况下,会产生幻写和锁的问题,在使用RustFS时 ** 禁止使用NFS** 作为RustFS的底层存储介质。 官方强烈建议使用** JBOD(Just a Bunch of Disks)** 模式,即简单磁盘捆绑。这意味着将物理磁盘直接、独立地暴露给操作系统,由RustFS软件层面负责数据冗余和保护。
139+
140+
141+ 原因如下:
142+ - ** 性能更优:** RustFS 的纠删码(Erasure Coding)引擎经过高度优化,能够直接并发读写多块磁盘,实现比硬件RAID控制器更高的吞吐量。硬件RAID会成为性能瓶颈。
143+ - ** 成本更低:** 无需昂贵的RAID卡,降低了硬件采购成本。
144+ - ** 管理更简单:** 由RustFS统一管理磁盘,简化了存储层的运维。
145+ - ** 故障恢复更快:** RustFS(healing)过程比传统的RAID重建(rebuild)速度更快,且对集群性能影响更小。
146+
147+
148+ 官方推荐在磁盘上使用NVMe SSD作为您的存储介质,保障更高的性能和吞吐能力。
149+
150+
151+ ### 2.8 文件系统选择
152+
153+ RustFS官方在磁盘文件系统格式上,RustFS官方强烈推荐在所有用于存储的磁盘上使用 XFS 文件系统。MinIO的开发和测试都基于XFS,能够确保最佳的性能和稳定性。不建议使用ext4、BTRFS或ZFS等其他文件系统,因为它们可能会导致性能下降或出现不可预知的问题。
154+
155+ RustFS是一个为高并发、高性能设计的对象存储系统。当客户端上传或下载大对象时,MinIO会将其分片,并以并行的方式同时读写到纠删集(Erasure Set)中的多块磁盘上。
156+
157+ XFS的优势:XFS(eXtents File System)从设计之初就是为了高性能和可扩展性而生。它在大文件处理和高并发I/O场景下表现极其出色。其内部的日志和数据结构(如B+树)能够高效地处理大量的并行读写请求,这与MinIO的工作模式完美契合。相比之下,虽然ext4等文件系统近年来性能有很大提升,但在面对极端并发负载时,XFS通常能提供更稳定、更优越的吞-吐量。
158+
159+ 对象存储通常需要处理海量的文件和巨大的单个文件(TB级别), XFS是一个64位的文件系统,能够支持极大的文件大小(高达8 EB)和文件系统规模。它的元数据管理非常高效,即使在单个目录下存放数百万个文件,其性能下降也远小于其他文件系统。这对于MinIO将每个对象(或对象的某个版本)作为一个独立文件存储在后端文件系统上的方式至关重要。
160+
161+ RustFS 在写入新对象或对象的版本时,为了保证写入性能和减少文件碎片,会进行空间预留, XFS提供了名为fallocate的高效API,允许应用程序预留一块连续的磁盘空间。MinIO利用这个特性,在写入文件之前就为其分配好所需的空间,避免了写入过程中因动态扩容和元数据更新带来的性能开销,同时也最大程度地减少了文件碎片的产生,保证了后续读取的性能。
162+
163+ 为了更好的发现磁盘,在xfs文件系统格式化时我们建议使用 ** Label** 标签,对磁盘进行打标。
164+
165+ 首先,需要查看磁盘系统的情况:
166+
167+ ~~~
168+ sudo lsblk
169+
170+ NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
171+ sda 8:0 0 465.7G 0 disk
172+ ├─sda1 8:1 0 512M 0 part /boot/efi
173+ └─sda2 8:2 0 465.2G 0 part /
174+ nvme0n1 8:16 0 3.7T 0 disk <-- if this is our format new disk
175+ nvme1n1 8:32 0 3.7T 0 disk <-- if this is our format new disk
176+ nvme2n1 8:48 0 3.7T 0 disk
177+ ~~~
178+
179+
180+ 具体格式化命令如下:
181+
182+ ~~~
183+ sudo mkfs.xfs -i size=512 -n ftype=1 -L RUSTFS0 /dev/sdb
184+ ~~~
185+
186+ 我们可以在格式化时加入一些推荐选项来优化性能:
187+ - -L <label >: 为文件系统设置一个标签(label),方便后续识别和挂载。
188+ - -i size=512: RustFS官方推荐将inode大小设置为512字节,这对于存储大量小对象(元数据)的场景有性能优势。
189+ - -n ftype=1: 开启ftype功能。这允许文件系统在目录结构中记录文件类型,可以提高类似readdir和unlink操作的性能,对RustFS非常有利。
190+
191+ 挂载:
192+ ~~~
193+ # write new line
194+ vim /etc/fstab
195+ LABEL=RUSTFS0 /data/rustfs0 xfs defaults,noatime,nodiratime 0 0
196+
197+ #save & exit
198+
199+ # mount disk
200+ sudo mount -a
201+ ~~~
202+
119203
120204
121205## 三、配置用户名
0 commit comments