---
title: OceanBase 数据库安装部署之磁盘初始化-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 OceanBase 数据库安装部署之磁盘初始化相关的常见问题和使用技巧，帮助您快速解决 OceanBase 数据库安装部署之磁盘初始化的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 数据库安装部署之磁盘初始化

更新时间：2026-05-07 08:31

适用版本： V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x、V4.3.x 内容类型：TechNote  

本文以 NVMe SSD 磁盘初始化为例详细介绍使用 **LVM（Logical Volume Manager）** 初始化磁盘的完整流程，涵盖物理卷（PV）、卷组（VG）、逻辑卷（LV）的创建与配置，以及磁盘的格式化与挂载。适用于 OceanBase 数据库 V3.x/V4.x 等高可用、高性能场景下的存储管理需求。 目前 OAT（OceanBase 管理者工具）最新版本已有[磁盘初始化](https://www.oceanbase.com/docs/enterprise-oat-doc-cn-1000000003049330)功能，本文全部操作可通过 OAT 轻松完成，在创建新集群时建议通过 OAT 完成[磁盘初始化](https://www.oceanbase.com/docs/enterprise-oat-doc-cn-1000000003049330)操作。

## 详细说明

### 环境准备与检查

测试环境如下。 **操作系统：** Kylin Linux Server V10 SP3。 **磁盘：** NVMe 1.5 TB * 6 = 19 TB。 **内存：** 32 GB * 16 = 512 GB。

#### 查看磁盘类型及数量

通过如下命令查看文件系统使用情况。

```shell
df -hT

```

通过如下命令检查磁盘类型及数量。

```shell
lsblk -d -p -o name,rota,tran,size,model

```

如下输出结果中，通过 `TRAN` 列可知有 6 块 NVMe SSD，总大小约 `3.5 TB * 6 = 19 TB`。

```shell
# lsblk -d -p -o name,rota,tran,size,model
NAME         ROTA TRAN     SIZE MODEL
/dev/sda        0 sata   223.6G INTEL_SSDMODELNAME
/dev/nvme4n1    0 nvme     3.5T SAMSUNG DISKMODELNAME-XXXX
/dev/nvme3n1    0 nvme     3.5T SAMSUNG DISKMODELNAME-XXXX
/dev/nvme5n1    0 nvme     3.5T SAMSUNG DISKMODELNAME-XXXX
/dev/nvme2n1    0 nvme     3.5T SAMSUNG DISKMODELNAME-XXXX
/dev/nvme1n1    0 nvme     3.5T SAMSUNG DISKMODELNAME-XXXX
/dev/nvme0n1    0 nvme     3.5T SAMSUNG DISKMODELNAME-XXXX

```

#### 选择文件系统

16 TB 以下建议使用 ext4 文件系统，16 TB 及以上建议使用 xfs 文件系统。 根据上述 `lsblk` 命令输出结果，19 TB 磁盘应选择 xfs 文件系统。

#### 查看内存大小

通过如下命令查看内存大小。

```shell
free -h
dmidecode -t 17|grep Size

```

从输出结果中，可以看出内存大小为 `512 GB（32 GB * 16）`。

```shell
# free -h
              total        used        free      shared  buff/cache   available
Mem:          502Gi       1.8Gi       499Gi        13Mi       611Mi       495Gi
Swap:            0B          0B          0B

# dmidecode -t 17|grep Size
        Size: 32 GB
        Size: 32 GB
        Size: 32 GB
        Size: 32 GB
        Size: No Module Installed
        Size: No Module Installed
        Size: 32 GB
        Size: 32 GB
        Size: 32 GB
        Size: 32 GB
        Size: No Module Installed
        Size: No Module Installed
        Size: 32 GB
        Size: 32 GB
        Size: 32 GB
        Size: 32 GB
        Size: No Module Installed
        Size: No Module Installed
        Size: 32 GB
        Size: 32 GB
        Size: 32 GB
        Size: 32 GB
        Size: No Module Installed
        Size: No Module Installed
# echo $((32*16))
512

```

#### 磁盘及文件系统格式规划

根据以上信息及官网[服务器配置](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013491)要求，OBServer 节点的磁盘挂载点如下表所示。

| 挂载点 | 大小 | 用途 | 文件系统格式 |
| --- | --- | --- | --- |
| /data/log1 | 内存大小的 4 倍，即 512 GB * 4 = 2 TB | observer 日志盘 | 根据上述 `选择文件系统` 章节内容，即 xfs |
| /data/1 | 取决于所需存储的数据大小 | OBServer 数据盘 | 根据上述 `选择文件系统` 章节内容，即 xfs |

#### 检查 LVM 工具是否安装

LVM 相关软件一般默认已安装，可以通过如下命令确认。

```shell
# CentOS/RHEL 下检查 lvm2 包是否安装
rpm -qa | grep lvm2

# 或检查 lvcreate 命令是否存在
which lvcreate

```

输出示例如下。

```shell
# CentOS/RHEL
yum install -y lvm2

# Ubuntu/Debian
apt install -y lvm2

```

如未安装可以安装一下，安装示例如下。

### 物理卷 (PV) 初始化

#### 创建物理卷

初始化单个设备。

```shell
pvcreate /dev/nvme0n1

```

初始化多个设备。

```shell
pvcreate /dev/nvme0n1 /dev/nvme2n1 /dev/nvme5n1 /dev/nvme4n1 /dev/nvme3n1 /dev/nvme1n1

```

批量初始化多个设备（如多个 NVMe 磁盘）。

```shell
pvcreate /dev/nvme[012345]n1

```

输出示例如下。

```shell
# pvcreate /dev/nvme[012345]n1
  Physical volume "/dev/nvme0n1" successfully created.
  Physical volume "/dev/nvme1n1" successfully created.
  Physical volume "/dev/nvme2n1" successfully created.
  Physical volume "/dev/nvme3n1" successfully created.
  Physical volume "/dev/nvme4n1" successfully created.
  Physical volume "/dev/nvme5n1" successfully created.

```

#### 验证物理卷

使用如下命令检查物理卷是否创建成功。

```shell
# 简要信息
pvs

# 详细信息
pvdisplay

```

输出示例如下。

```shell
# pvs
  PV           VG Fmt  Attr PSize PFree
  /dev/nvme0n1    lvm2 ---  3.49t 3.49t
  /dev/nvme1n1    lvm2 ---  3.49t 3.49t
  /dev/nvme2n1    lvm2 ---  3.49t 3.49t
  /dev/nvme3n1    lvm2 ---  3.49t 3.49t
  /dev/nvme4n1    lvm2 ---  3.49t 3.49t
  /dev/nvme5n1    lvm2 ---  3.49t 3.49t
# pvdisplay
  "/dev/nvme5n1" is a new physical volume of "3.49 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/nvme5n1
  VG Name
  PV Size               3.49 TiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               hg0axo-XAN0-OOdW-O8Ee-3eeR-v5J5-LtIfHe

  "/dev/nvme4n1" is a new physical volume of "3.49 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/nvme4n1
...

```

### 卷组（VG）创建与管理

#### 检查 volume_list 是否启用

通过如下命令检查 volume_list 是否启用（一般 volume_list 未启用）。

```shell
grep -E '^[[:space:]]*volume_list[[:space:]]*=[[:space:]]*' /etc/lvm/lvm.conf

```

以上命令输出结果为空则未启用。 如 volume_list 处于启用状态，需要将要新创建的卷组名 (如 vgob) 加入其中。

#### 创建卷组

**卷组名：** vgob。

```shell
# 创建卷组并指定物理卷
vgcreate -y vgob /dev/nvme0n1 /dev/nvme2n1 /dev/nvme5n1 /dev/nvme4n1 /dev/nvme3n1 /dev/nvme1n1

# 批量创建
vgcreate -y vgob /dev/nvme[012345]n1

```

#### 验证卷组

```shell
# 简要信息
vgs

# 详细信息
vgdisplay -v vgob

```

输出示例如下。

```shell
# vgs
  VG  #PV #LV #SN Attr   VSize   VFree
  vgob   6   0   0 wz--n- <20.96t <20.96t
# vgdisplay
  --- Volume group ---
  VG Name               vgob
  System ID
  Format                lvm2
  Metadata Areas        6
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                6
  Act PV                6
  VG Size               <20.96 TiB
  PE Size               4.00 MiB
  Total PE              5494242
  Alloc PE / Size       0 / 0
  Free  PE / Size       5494242 / <20.96 TiB
  VG UUID               pr4TaC-4yBq-G2h2-a9xy-jF5h-pvGn-zmKzcD

```

#### 扩展卷组

如有需要添加新磁盘，可通过如下命令操作。

```shell
# 添加新物理卷到现有卷组
vgextend vgob /dev/nvme5n1 /dev/nvme4n1

```

### 逻辑卷（LV）创建与优化

#### 条带化配置建议

通过 LVM 管理多个物理卷（且多个物理卷空间大小相同或差异小于 10GB），`lvcreate` 创建逻辑卷时建议指定条带化参数 `--stripes (-i)` 和 `--stripesize (-I)`，条带化参数说明。

```shell
--stripes：条带数（等于物理卷数量）
--stripesize：每个条带的大小

```

前面通过如下命令可知有 6 块 NVMe SSD，则 `lvcreate` 命令中需要指定 `--stripes 6`。

```

#### 创建逻辑卷

由于有 6 块 NVMe SSD，则 `lvcreate` 命令中指定 `--stripes 6`。

##### ext4 文件系统

ext4 文件系统下 `stripesize` 建议设置为 128k。 首先创建日志盘逻辑卷（卷名 log），根据前面 **磁盘大小及文件系统格式规划** 章节内容，指定大小为 2TB。

```shell
lvcreate -n log -L 2T vgob --stripes=6 --stripesize=128 -y

```

然后创建**数据盘逻辑卷**（卷名 data），可以通过 `-L` 参数指定大小为 10T。

```shell
lvcreate -n data -L 10T vgob --stripes=6 --stripesize=128 -y

```

也可以通过 `-l` 参数将所有剩余空间分配给数据盘。

```shell
lvcreate -n data -l 100%FREE vgob --stripes=6 --stripesize=128 -y

```

**如只有一个物理卷**或多个物理卷空间大小差异大于 10GB，建议不指定条带化参数，相关命令示例如下。

```shell
# 日志盘
lvcreate -n log -L 2T vgob -y
# 数据盘, 将所有剩余空间分配给数据盘
lvcreate -n data -l 100%FREE vgob -y

```

##### xfs 文件系统

xfs 文件系统下 `stripesize` 建议设置为 1024k。 首先创建**日志盘逻辑卷**（卷名 log），根据前面 **磁盘大小及文件系统格式规划** 章节内容，指定大小为 2TB。

```shell
lvcreate -n log -L 2T vgob --stripes=6 --stripesize=1024 -y

```

```shell
lvcreate -n data -L 10T vgob --stripes=6 --stripesize=1024 -y

```

```shell
lvcreate -n data -l 100%FREE vgob --stripes=6 --stripesize=1024 -y

```

```

#### 格式化逻辑卷

##### ext4 文件系统

ext4 文件系统通过如下命令格式化逻辑卷。

```shell
mkfs.ext4 -O 64bit /dev/vgob/data
mkfs.ext4 -O 64bit /dev/vgob/log

```

**注意：** `mkfs.ext4` 命令中通过指定参数 `-O 64bit` 启用 **64 位支持（64-bit feature）**，允许存储大于 2TB 的单个文件，最大支持 **16TB**，若未启用 64bit 特性，文件系统可能无法正确识别或使用超过 2TB 的磁盘。

##### xfs 文件系统

xfs 文件系统通过如下命令格式化逻辑卷。

```shell
mkfs.xfs -f -n ftype=1 -l su=4k /dev/vgob/data
mkfs.xfs -f -n ftype=1 -l su=4k /dev/vgob/log

```

#### 查看逻辑卷

使用如下命令查看逻辑卷。

```shell
lvs

lvdisplay

```

输出示例如下。

```shell
# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data vgob -wi-a----- <18.96t
  log  vgob -wi-a-----   2.00t
# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vgob/log
  LV Name                log
  VG Name                vgob
  LV UUID                4OlcHl-tEBO-L0MO-YK5s-mTiS-zg9t-30CPxv
  LV Write Access        read/write
  LV Creation host, time obs4, 2025-06-09 20:17:46 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 TiB
  Current LE             524292
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     24576
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vgob/data
  LV Name                data
  VG Name                vgob
  LV UUID                Xkla19-5Tn7-5gKR-7PWv-AOuG-iZb1-eR7Nxv
  LV Write Access        read/write
  LV Creation host, time obs4, 2025-06-09 20:17:55 +0800
  LV Status              available
  # open                 0
  LV Size                <18.96 TiB
  Current LE             4969950
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     24576
  Block device           253:1

```

### 挂载逻辑卷

#### 创建挂载点

```shell
mkdir -p /data/1 /data/log1

```

#### 配置开机自启动挂载

**如未配置开机自启动挂载，当服务器重启后需要手动挂载磁盘**。

编辑 `/etc/fstab`。

```shell
vim /etc/fstab

```

ext4 文件系统挂载配置 `/etc/fstab` 示例如下。

```shell
/dev/ob_vg/data    /data/1    ext4    defaults,noatime,nodiratime,nodelalloc,barrier=0    0    0
/dev/ob_vg/log    /data/log1    ext4    defaults,noatime,nodiratime,nodelalloc,barrier=0    0    0

```

xfs 文件系统挂载配置 `/etc/fstab` 示例如下。

```shell
/dev/vgob/data    /data/1    xfs    defaults,noatime,nodiratime    0    0
/dev/vgob/log    /data/log1    xfs    defaults,noatime,nodiratime    0    0

```

#### 挂载逻辑卷

**挂载方法一：** 按 `/etc/fstab` 中的配置挂载。

```

挂载后通过如下命令查看。

```

**挂载方法二：** 手动指定配置挂载。

ext4 文件系统手动挂载命令如下。

```shell
mount -t ext4 -o 'defaults,noatime,nodiratime,nodelalloc,barrier=0' /dev/vgob/data /data/1
mount -t ext4 -o 'defaults,noatime,nodiratime,nodelalloc,barrier=0' /dev/vgob/log /data/log1

```

xfs 文件系统手动挂载命令如下。

```shell
mount -t xfs -o 'defaults,noatime,nodiratime' /dev/vgob/data /data/1
mount -t xfs -o 'defaults,noatime,nodiratime' /dev/vgob/log /data/log1

```

```

**至此磁盘初始化完成**。 输出示例如下。

```shell
# df -hT
Filesystem            Type      Size  Used Avail Use% Mounted on
...
/dev/mapper/vgob-data xfs        19T  136G   19T   1% /data/1
/dev/mapper/vgob-log  xfs       2.0T   15G  2.0T   1% /data/log1

```

### 删除逻辑卷和卷组

如需要删除集群，需要先在 `/etc/fstab` 中删除或注释掉相应的自动挂载条目，避免服务器重启时卡住，示例如下。

```shell
# /dev/vgob/data    /data/1    ...
# /dev/vgob/log    /data/log1   ...

```

停止 OceanBase 数据库集群后，查看并卸载挂载点。

```shell
df -hT
umount /data/1
umount /data/log1
df -hT

```

查看并删除逻辑卷。

```shell
lvs
lvdisplay
lvremove /dev/vgob/data
lvremove /dev/vgob/log

```

查看并删除卷组。

```shell
vgs
vgdisplay
vgremove vgob

```

查看并删除物理卷。

```shell
pvs
pvdisplay

# 删除单个物理卷
pvremove /dev/nvme0n1

# 批量删除物理卷
pvremove /dev/nvme[012345]n1

```

### 清除磁盘分区表等信息

如需要通过 OAT 进行磁盘初始化，由于 OAT 不会列出已经存在分区表的磁盘，可以通过如方法清除磁盘分区表等信息。 首先确认已按上述步骤 **删除逻辑卷和卷组** 章节内容，删除完成后如下面命令预期不输出任何结果，即磁盘分区表等信息已清除。

```

如上述命令预期仍输出任何结果，可按如下步骤清除磁盘分区表等信息 。 使用如下命令查看磁盘分区表信息（此命令仅查看，不清除信息）。

```shell
# 仅查看磁盘分区表等信息
wipefs /dev/nvme0n1

```

如果上述命令有输出信息，且确认不再使用，可执行如下命令清除。

```shell
# 清除单个物理卷
wipefs -a /dev/nvme0n1

# 批量清除物理卷
wipefs -a /dev/nvme[012345]n1

```

## 适用版本

OceanBase 数据库 V3.x、V4.x 版本。

Previous

[ECOB 安装与配置](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002894037)

Next

[DockerHub 不可访问后，如何下载 OceanBase 镜像](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003791403) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
