跳到主要内容

Linux磁盘挂载说明

1 增设多块数据盘背景说明

1.1 磁盘要求说明

关于服务器磁盘本身,本地存储的性能未经过系统评估,因此无法预知此种部署模式的性能指标,使用SSD高速磁盘/HDD高转速/高性能云盘/OSS S3对象存储 详情与最终实施部署方案沟通为准,在部分用户磁盘场景,对于提供的磁盘块本身有进行Raid阵列逻辑分布式条带存储共享存储 再投产前,需提前说明确认 以免影响IO磁盘 多副本写入

注意:服务器非通过同一宿主机服务器分配的虚拟机资源 以免造成当该宿主机宕机, 分配的虚拟机资源或高可用本身不攻自破。

1.2 单点故障

对于单节点部署场景,使用本地存储时,本地存储缺乏数据副本,存储路径只能挂载其中一个服务器节点的本地磁盘下,因此存在单点故障的风险。如服务器出现故障,如数据磁盘造成损坏 造成业务不可用,通常在部署最佳实践中,在单节点中配置 数据备份服务,对于数据备份服务:通常数据备份数据再有限的环境中选择落盘到本地磁盘中 因此增加额外一块数据盘存储备份数据,以免再应用数据盘硬件等因素发生磁盘损坏(对于存储硬件发生问题引发的风险,我司作为应用软件提供商无法提供维护手段,提供有限协助支持),通过备份数据盘中的数据,完成业务恢复。

1.3 性能瓶颈

若 /data 目录所在的文件系统底层均来自同一硬盘设备(或同一硬盘不同分区构建的设备),则使用 /data 目录所在文件系统的 Pods 将存在 IO 竞争,进而影响 ONES组件的稳定性以及 QoS。

对于单节点部署场景,使用两块以上数据盘,随着用户量使用规模较高,在服务承载一定并发量时,消耗除了内存以外对服务服务器磁盘IO读写的效率依赖也很大,且IO的读写均受限于本地磁盘的性能,若IO读写效率降低,中间件及其它服务(MySQLETCDKafka索引中间件、服务运行)的处理效率都会遇到影响,会导致服务处理过程变长,甚至服务宕掉不可用。

1.4 存储说明

  • 1、本地物理磁盘,需要完全独立隔离(每台负载节点上的磁盘非来自共享磁盘阵列,而是独立的磁盘独立的IO) 再有条件环境下增设多块数据盘,对于有状态业务服务进行IO隔离,提升业务性能

    使用高性能存储,如 SATA SSDPCIe SSD 通过 RAIDLVM 提高 IO 性能、带宽 (默认)

  • 2、对象存储 OSS/S3 数据流吞吐性能几乎可以随集群规模线性增长,具有非常高的上限,ONES已成功对接各大云厂商, 支持标准S3协议接入,可提供接入测试(推荐)

  • 3、NAS存储 在大量操作请求并发情况下,缓存/网络协议处理易形成阻塞,导致服务不可用,仅存储静态附件类资源,需进行用量评估 (不推荐)

1.5 单节点 多块数据盘 IO隔离简示图

disk

最佳实践如图所示:

​ 1、防止K3S Server Agent 和工作负载干扰集群数据存储,将关键存储进行IO分离,以免抢占IO,影响control plane响应延时,造成无法维持系统状态。(优化IO/防止系统盘剩余空间不足)

​ 2、为避免中间件及业务组件,避免 IO 竞争读写负载较高导致处理效率较慢,业务并发降低,严重将导致业务不可用,将对高IO中间件 业务单独设立数据盘 N+1磁盘。

​ 3、为避免单点服务器磁盘硬件故障,导致数据盘数据丢失,默认缺省服务器数据备份服务数据落盘再数据盘之中,增设数据备份盘,提高容错能力

​ 最佳实践:将数据备份上传OSS/S3外部对象存储中,或独立备份服务器部署对象存储服务。

2 单机单数据盘磁盘初始化挂载配置

单数据盘分区挂载 例:一块数据盘: vdb 默认ONES数据目录挂载点: /data/ones 请根据实际情况作调整。

# 一、磁盘分区
####查询已经挂载分区,检查磁盘挂载是否成功
[root@ones ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 320K 16G 1% /dev/shm
tmpfs 16G 725M 15G 5% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/centos-root 99G 39G 61G 40% /
/dev/vda1 1014M 150M 865M 15% /boot
/dev/vdb1 1024G 150M 1023G 1% /data/ones # 例

####针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 1TB # 磁盘1T


# 二、磁盘格式化并挂载
####若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1

####创建挂载点
[root@ones ~]#mkdir -p /data/ones

####通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid

####检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3h8py9 /data/ones xfs defaults 0 0 # 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题

####挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h


# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s

[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet

[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘,将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd

3 单机多块数据磁盘IO分离配置

适用于单节点:K3S Deploy 例:两块数据盘: vdb vdc 默认ONES数据目录挂载点: /data/ones 请根据实际情况作调整。


# 一、磁盘分区
####针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 500G # 磁盘1 500Gb

####针对新数据盘 vdc进行分区
[root@ones ~]# parted /dev/vdc mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdc mkpart 1 xfs 2048 500G # 磁盘2 500Gb


# 二、磁盘格式化并挂载
####若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdc1

####通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid

####创建挂载点
[root@ones ~]#mkdir -p /data/ones/ones-local-storage/mysql

####检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3sad9 /data/ones xfs defaults 0 0 # vdb1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3xxxx /data/ones/ones-local-storage/mysql xfs defaults 0 0 # vdc1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题

####挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h

# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s

[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet

[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘,将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd

4 多节点多块数据磁盘IO分离配置

适用于多节点: K3S/K8S Deploy OpenEBS分布式存储方案 + localStorage存储 以每台Node节点 三块数据存储盘为例: vdb vdc vdd

# 针对每个Node节点操作处理磁盘如下:(需要保留一块裸盘提供OpenEBS使用)
# 一、磁盘分区
####针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 500G # 磁盘1 500Gb

####针对新数据盘 vdc进行分区
[root@ones ~]# parted /dev/vdc mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdc mkpart 1 xfs 2048 500G # 磁盘2 500Gb

####数据盘 vdd 无需处理,提供裸盘 openEBS方案(注意)
# 一块未被使用的磁盘,提供给OpenEBS管理和使用,最终数据将以zfs文件系统格式进行存储。OpenEBS为业务提供 非结构化数据的存储,比如: 附件、wiki页面数据等


# 二、磁盘格式化并挂载
####若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdc1

####通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid

####创建挂载点
[root@ones ~]#mkdir -p /data/ones/ones-local-storage/mysql

####检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3sad9 /data/ones xfs defaults 0 0 # vdb1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3xxxx /data/ones/ones-local-storage/mysql xfs defaults 0 0 # vdc1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题

####挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h

# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s

[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet

[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘,将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd