以下是 mkfs.lustre 命令各参数的详细解释、配置示例及使用场景,结合 Lustre 文件系统的核心功能进行分类说明:
一、目标类型参数(必选)
定义 Lustre 组件的角色,三者互斥:
-
--mgs- 说明:配置管理服务(Management Server),存储全局文件系统配置信息,一个集群只需一个 MGS。
- 示例:
mkfs.lustre --mgs --fsname=myfs --device-size=100000 /dev/sda1 - 场景:初始化 MGS 设备,通常与 MDT 共享磁盘(组合部署)。
-
--mdt- 说明:元数据存储目标(Metadata Target),存放目录结构和文件属性。
- 示例:
mkfs.lustre --mdt --fsname=myfs --index=0 --mgsnode=192.168.1.100@tcp /dev/sdb1 - 场景:创建首个 MDT(索引 0),需指定所属文件系统名(
--fsname)和 MGS 地址(--mgsnode)。
-
--ost- 说明:对象存储目标(Object Storage Target),存储文件数据块。
- 示例:
mkfs.lustre --ost --fsname=myfs --index=1 --mgsnode=192.168.1.100@tcp /dev/sdc1 - 场景:扩展存储容量时添加新 OST,索引需唯一(如
--index=1)。
二、核心配置参数
-
--fsname=<name>- 说明:文件系统名称(≤8字符),用于标识目标归属的文件系统。
- 示例:
--fsname=myfs - 场景:所有非 MGS 目标(MDT/OST)必须指定,确保组件关联到正确文件系统。
-
--index=<N>- 说明:目标索引号(0~N),用于唯一标识 MDT/OST。
- 示例:
--index=0(首个 MDT),--index=1(第一个 OST) - 场景:避免索引冲突,如多 MDT 分布式命名空间(DNE)需连续分配索引。
-
--mgsnode=<NID>- 说明:MGS 节点的网络标识符(NID),格式如
IP@tcp0。 - 示例:
--mgsnode=192.168.1.100@tcp0 - 场景:非 MGS 目标必须指定,用于注册到 MGS 并获取配置。
- 说明:MGS 节点的网络标识符(NID),格式如
三、高可用性参数
-
--failnode=<NID>- 说明:故障切换节点(主备模式),当主节点失效时接管服务。
- 示例:
--failnode=192.168.1.101@tcp0 - 场景:为 MDT/OST 配置热备节点,需与
--servicenode互斥。
-
--servicenode=<NID>- 说明:服务节点(多活模式),多个节点平等提供服务。
- 示例:
--servicenode=192.168.1.101@tcp0,192.168.1.102@tcp0 - 场景:实现负载均衡,如多个 OSS 共同服务同一 OST。
四、存储优化参数
-
--backfstype=<type>- 说明:底层文件系统类型(
ldiskfs或zfs)。 - 示例:
--backfstype=zfs - 场景:使用 ZFS 支持高级特性(如压缩、快照),需配套参数(如
--mkfsoptions)。
- 说明:底层文件系统类型(
-
--mkfsoptions=<opts>- 说明:底层文件系统的格式化选项。
- 示例:
# 调整 MDT 的 inode 密度(大目录场景) mkfs.lustre --mdt --mkfsoptions="-i 4096" /dev/sdb1 - 场景:优化 inode 数量或 RAID 对齐(如
-E stride=16,stripe-width=64)。
-
--mountfsoptions=<opts>- 说明:Lustre 挂载选项(持久化生效)。
- 示例:
--mountfsoptions="user_xattr,noatime" - 场景:禁用访问时间记录(
noatime)提升性能。
-
--stripe-count-hint=<N>- 说明:提示 MDT 的 inode 大小(影响目录分条能力)。
- 示例:
--stripe-count-hint=16 - 场景:预计目录下文件需跨多 OST 存储时,增大 inode 预留空间。
五、特殊用途参数
-
--network=<net>- 说明:限制目标绑定的网络接口(如隔离存储网络)。
- 示例:
--network=10.0.1.0/24 - 场景:多网卡环境下强制 OST 使用高性能网络。
-
--device-size=<KB>- 说明:虚拟设备大小(用于 loop 设备测试)。
- 示例:
--device-size=1000000(1GB) - 场景:开发测试中模拟小规模存储设备。
-
--param <key>=<value>- 说明:设置永久性内核参数。
- 示例:
# 设置 OST 故障模式为立即报错(非等待恢复) mkfs.lustre --ost --param="failover.mode=failout" /dev/sdd1 - 场景:优化高可用策略或调整 I/O 超时(如
sys.timeout=40)。
六、操作控制参数
-
--reformat- 说明:强制覆盖已有 Lustre 磁盘。
- 示例:
mkfs.lustre --ost --reformat /dev/sde1 - 场景:重新部署目标时忽略旧数据。
-
--dryrun- 说明:模拟执行并打印操作,不实际写入磁盘。
- 示例:
mkfs.lustre --mdt --dryrun - 场景:验证参数合法性,避免误操作。
-
--verbose/--quiet- 说明:控制输出详细程度(进度信息/静默模式)。
- 示例:
mkfs.lustre --ost --verbose - 场景:调试时查看格式化细节,或脚本中抑制输出。
参数使用场景总结表
| 场景 | 关键参数 | 示例命令 |
|---|---|---|
| 初始化 MGS | --mgs, --fsname |
mkfs.lustre --mgs --fsname=myfs /dev/sda1 |
| 创建首个 MDT | --mdt, --index=0, --mgsnode |
mkfs.lustre --mdt --index=0 --mgsnode=192.168.1.100@tcp /dev/sdb1 |
| 扩展 OST | --ost, --index=N, --mgsnode |
mkfs.lustre --ost --index=1 --mgsnode=192.168.1.100@tcp /dev/sdc1 |
| 配置 ZFS 存储池 | --backfstype=zfs, --mkfsoptions |
mkfs.lustre --ost --backfstype=zfs --mkfsoptions="-o compression=on" |
| 设置高可用(主备) | --failnode |
mkfs.lustre --mdt --failnode=192.168.1.101@tcp0 /dev/sdd1 |
| 优化大目录性能 | --stripe-count-hint, --mkfsoptions |
mkfs.lustre --mdt --stripe-count-hint=16 --mkfsoptions="-i 4096" |
参考来源:[1][2][3][5][6]
浙公网安备 33010602011771号