Linux:服务器硬件及RAID配置
服务器
服务器是什么
服务器的英文名称为“ Server”,是指在网络上提供各种服务的高性能计算机。作为网络的节点,存储、处理网络上80%的数据、信息,因此也被称为网络的灵魂。
服务器和普通计算机的功能是类似的。只是相对于普通计算机,服务器在稳定性、安全性、性能等方面都要求更高,因此CPU、芯片组、内存、磁盘系统、网络等硬件和普通计算机有所不同。
服务器与普通计算机的主要区别包括:
-
通信方式为一对多
-
资源通过网络共享
-
硬件性能更加强大
服务器的结构
以华为FusionServer 1288H V5为例
- 物理结构
序号 | 硬件设备 | 序号 | 硬件设备 |
---|---|---|---|
1 | 电源模块 | 2 | 机箱 |
3 | 风扇支架 | 4 | 风扇模块 |
5 | 前置硬盘背板 | 6 | 硬盘 |
7 | 光驱 | 8 | 灯板模块 |
9 | VGA板 | 10 | 散热器 |
11 | 处理器 | 12 | 内存 |
13 | TPM/TCM扣卡 | 14 | RAID控制扣卡 |
15 | 主板 | 16 | 灵活IO卡 |
17 | PCIe Riser模组1 | 18 | PCIe Riser模组2 |
- 逻辑结构
-
支持1个或2个英特尔®至强®可扩展处理器。
-
支持24条内存。
-
处理器与处理器之间通过2个UPI(UltraPath Interconnect)总线互连,传输速率最高可达10.4GT/s。
-
处理器通过PCIe总线与2个PCIe Riser卡相连,通过不同的PCIe Riser卡支持不同规格的PCIe槽位。
-
RAID控制卡通过PCIe总线与CPU1相连,通过SAS信号线缆与硬盘背板相连,通过不同的硬盘背板支持多种本地存储规格。
-
使用LBG-2 PCH(Platform Controller Hub),通过PCH:
- 支持2个板载10GE光口或者2个板载10GE电口。
- 支持2个板载GE电口。
-
使用Hi1710管理芯片,支持外出VGA(Video Graphic Array)、管理网口、调试串口等管理接口。
RAID
硬RAID与软RAID对比
硬RAID | 软RAID | |
---|---|---|
实现方式 | 使用专门的raid控制器来实现 | 操作系统和软件来实现 |
性能 | 由于使用专用硬件,通常能提供更好的性能 | 性能受到操作系统负载和主机CPU性能的影响 |
数据安全性 | 更佳(硬raid控制器可以提供更多的数据保护和冗余功能) | 较弱(软RAID的故障恢复可能更复杂,需要更多的手动干预) |
灵活性与成本 | 需要特定的硬件和控制器,配置后难以更改。 | 可以在几乎任何计算机上运行,可以随时添加或删除磁盘 |
可靠性和容错性 | RAID卡通常具有纠错能力,可以检测和纠正磁盘故障,因此可以保证数据的完整性和可靠性 | 需要CPU处理所有RAID任务,包括读写磁盘和计算校验和等操作,这可能会降低系统性能 |
RAID级别介绍
RAID 0
RAID 0又称为条带化(Stripe),代表了所有RAID级别中最高的存储性能。
通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。但由于其没有数据冗余,无法保护数据的安全性,只能适用于I/O速率要求高,但数据安全性要求低的场合。
RAID 1
RAID 1又称镜像(Mirror或Mirroring),即每个工作盘都有一个镜像盘,每次写数据时必须同时写入镜像盘,读数据时同时从工作盘和镜像盘读出。
当更换故障盘后,数据可以重构,恢复工作盘正确数据。RAID 1可靠性高,但其有效容量减小到总容量一半,因此常用于对容错要求较高的应用场合。
RAID 5
RAID 5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。为保障存储数据的可靠性,采用循环冗余校验方式,并将校验数据分散存储在RAID的各成员盘上。当RAID的某个成员盘出现故障时,通过其他成员盘上的数据可以重新构建故障硬盘上的数据。
RAID 5既适用于大数据量的操作,也适用于各种小数据的事务处理,是一种快速、大容量和容错分布合理的磁盘阵列。
RAID 5具有较RAID 0略低的数据读写速度,但写性能比写入单个硬盘时要高。
RAID 6
RAID 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块硬盘同时失效也不会影响数据的使用。
数据块和校验块一起分散存储到RAID 6的各个成员盘上。当任意一个或两个成员硬盘出现故障时,控制卡可以从其他处于正常状态的硬盘上重新恢复或生成丢失的数据而不影响数据的可用性。
数据块和校验块一起分散存储到RAID 6的各个成员盘上。当任意一个或两个成员硬盘出现故障时,控制卡可以从其他处于正常状态的硬盘上重新恢复或生成丢失的数据而不影响数据的可用性。
RAID 10
RAID 10是将镜像和条带进行两级组合的RAID级别,即RAID 1+RAID 0的组合形式,第一级是RAID 1,第二级是RAID 0。RAID 10是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能。
原先顺序的数据请求按照RAID 0的方式,被分散到两个子组中并行执行,同时通过RAID 1的方式,系统在向硬盘Drive 0写入数据的同时把数据自动复制到硬盘Drive 1上,向硬盘Drive 2写入数据的同时把数据自动复制到硬盘Drive 3上。
RAID级别对比
RAID 级别 | 硬盘数量要求 | 利用率 | 是否有冗余能力 | 读写性能 |
---|---|---|---|---|
RAID 0 | N | N | 无 | 单个硬盘的N倍 |
RAID 1 | N (偶数) | N/2 | 有,允许一个设备故障 | 读性能提升,写没有提升 |
RAID 5 | N>=3 | (N-1/N) | 有,允许一个设备故障 | 读性能提升,写没有提升 |
RAID 6 | N>=4 | (N-2)/N | 有,允许两个设备故障 | 需要多写两份纠删码,所以写性能相对raid5更低一些 |
RAID 10 | N>=4 | N/2 | 有,允许不同组中各坏一个 | 读性能可提升N倍,写性能提升N/2倍 |
配置RAID
硬RAID
状态 | 说明 |
---|---|
Available(AVL) | 硬盘可能未就绪,并且不适合在逻辑盘或热备池中使用。 |
Online(ONL) | 为某个虚拟磁盘的成员盘,可正常使用,处于在线状态。 |
Fault | 硬盘故障。 |
Hot Spare(HSP) | 被设置为热备盘。 |
Unconfigured Good(ugood/ucfggood) | 硬盘状态正常,但不是虚拟磁盘的成员盘或热备盘。 |
- 进入硬RAID管理界面
- 创建RAID磁盘
光标移动至第二行,按f2选择“Create Virtual Drive”
- 按照需求选择创建RAID级别、需要加入的物理磁盘、虚拟磁盘的空间大小及名称
选择加入的物理磁盘选择为“空格键”;完成后按"ok"
是否跳过初始化选择“OK”
创建完成
- 初始化虚拟磁盘
光标移动至新建的虚拟磁盘上按“f2”选择“Initialization”初始化,选择“Fast Init”快速初始化
提示信息选择“YES”
初始化完成提示信息
- 查看物理磁盘状态
"Ctrl+N"到“PD Mgmt”界面,检查创建虚拟磁盘时选中的物理磁盘状态是否为“OnLine”
- 设置全局热备盘
在“PD Mgmt”界面选择空闲物理磁盘,按“f2”选择“Make Global HS”成为全局热备盘
创建完成后检查物理磁盘是否为“HotSpare”
软RAID
使用Linux系统为例
- 添加容量相同的硬盘
- 检查“mdadm”软件包
- 将添加的三块硬盘新建分区
nvme0n3、nvme0n4均需要进行相同操作
- 创建RAID
#创建RAID5
mdadm -C -v /dev/md0 [-a yes] -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
-C:表示新建;
-v:显示创建过程中的详细信息。
/dev/md0:创建 RAID5 的名称。
-a yes:--auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。
-l:指定 RAID 的级别,l5 表示创建 RAID5。
-n:指定使用几块硬盘创建 RAID,n3 表示使用 3 块硬盘创建 RAID。
/dev/sd[bcd]1:指定使用这3块磁盘分区去创建 RAID。
-x:指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用
/dev/sde1:指定用作于备用的磁盘
#查看RAID磁盘详细信息
cat /proc/mdstat #还能查看创建RAID的进度
或者
mdadm -D /dev/md0
#用watch命令来每隔一段时间刷新 /proc/mdstat 的输出
watch -n 10 'cat /proc/mdstat'
#检查磁盘是否已做RAID
mdadm -E /dev/sd[b-e]1
- 格式化磁盘
[root@rhel9-1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 9.8G 0 rom /mnt
nvme0n1 259:0 0 80G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 78.4G 0 part
├─rhel-root 253:0 0 47.4G 0 lvm /
├─rhel-swap 253:1 0 7.8G 0 lvm [SWAP]
└─rhel-home 253:2 0 23.2G 0 lvm /home
nvme0n2 259:4 0 50G 0 disk
nvme0n3 259:5 0 50G 0 disk
nvme0n4 259:6 0 50G 0 disk
[root@rhel9-1 ~]# yum install -y mdadm
正在更新 Subscription Management 软件仓库。
ali_baseos 9.5 kB/s | 3.9 kB 00:00
ali_baseos 5.4 MB/s | 8.0 MB 00:01
ali_appstream 11 kB/s | 4.4 kB 00:00
ali_appstream 6.7 MB/s | 19 MB 00:02
redhat9-BaseOS 2.7 MB/s | 2.7 kB 00:00
redhat9-AppStream 3.1 MB/s | 3.2 kB 00:00
软件包 mdadm-4.2-9.el9.x86_64 已安装。
依赖关系解决。
=========================================================================================================
软件包 架构 版本 仓库 大小
=========================================================================================================
升级:
mdadm x86_64 4.3-1.el9 ali_baseos 433 k
事务概要
=========================================================================================================
升级 1 软件包
总下载:433 k
下载软件包:
mdadm-4.3-1.el9.x86_64.rpm 716 kB/s | 433 kB 00:00
---------------------------------------------------------------------------------------------------------
总计 714 kB/s | 433 kB 00:00
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
升级 : mdadm-4.3-1.el9.x86_64 1/2
运行脚本: mdadm-4.3-1.el9.x86_64 1/2
运行脚本: mdadm-4.2-9.el9.x86_64 2/2
清理 : mdadm-4.2-9.el9.x86_64 2/2
运行脚本: mdadm-4.2-9.el9.x86_64 2/2
验证 : mdadm-4.3-1.el9.x86_64 1/2
验证 : mdadm-4.2-9.el9.x86_64 2/2
已更新安装的产品。
已升级:
mdadm-4.3-1.el9.x86_64
完毕!
[root@rhel9-1 ~]# fdisk /dev/nvme0n2
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x804d6263 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):
将使用默认回应 p。
分区号 (1-4, 默认 1):
第一个扇区 (2048-104857599, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-104857599, 默认 104857599):
创建了一个新分区 1,类型为“Linux”,大小为 50 GiB。
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码或别名(输入 L 列出所有代码):L
00 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
01 FAT12 27 隐藏的 NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
02 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
03 XENIX usr 3c PartitionMagic 84 OS/2 隐藏 或 In c6 DRDOS/sec (FAT-
04 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
05 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
06 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
07 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
08 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
09 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
0a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
0b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
0c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 ea Linux 扩展启动
0e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
0f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f4 SpeedStor
16 隐藏的 FAT16 63 GNU HURD 或 Sys af HFS / HFS+ f2 DOS 次要
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fd Linux raid 自动
1c 隐藏的 W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e 隐藏的 W95 FAT1 80 旧 Minix be Solaris 启动 ff BBT
别名:
linux - 83
swap - 82
extended - 05
uefi - EF
raid - FD
lvm - 8E
linuxex - 85
Hex 代码或别名(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@rhel9-1 ~]# fdisk /dev/nvme0n3
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x281f507d 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):
将使用默认回应 p。
分区号 (1-4, 默认 1):
第一个扇区 (2048-104857599, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-104857599, 默认 104857599):
创建了一个新分区 1,类型为“Linux”,大小为 50 GiB。
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码或别名(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@rhel9-1 ~]# fdisk /dev/nvme0n4
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0xdc53e37c 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n\
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):
将使用默认回应 p。
分区号 (1-4, 默认 1):
第一个扇区 (2048-104857599, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-104857599, 默认 104857599):
创建了一个新分区 1,类型为“Linux”,大小为 50 GiB。
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码或别名(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@rhel9-1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 9.8G 0 rom /mnt
nvme0n1 259:0 0 80G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 78.4G 0 part
├─rhel-root 253:0 0 47.4G 0 lvm /
├─rhel-swap 253:1 0 7.8G 0 lvm [SWAP]
└─rhel-home 253:2 0 23.2G 0 lvm /home
nvme0n2 259:4 0 50G 0 disk
└─nvme0n2p1 259:8 0 50G 0 part
nvme0n3 259:5 0 50G 0 disk
└─nvme0n3p1 259:9 0 50G 0 part
nvme0n4 259:6 0 50G 0 disk
└─nvme0n4p1 259:10 0 50G 0 part
[root@rhel9-1 ~]# mdadm -C -v /dev/md0 -a yes -l5 -n3 /dev/nvme0n2p1 /dev/nvme0n3p1 /dev/nvme0n4p1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 52393984K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@rhel9-1 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Apr 22 20:36:53 2024
Raid Level : raid5
Array Size : 104787968 (99.93 GiB 107.30 GB)
Used Dev Size : 52393984 (49.97 GiB 53.65 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Apr 22 20:37:58 2024
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 25% complete
Name : xy10:0 (local to host xy10)
UUID : d6e6ba0b:53220703:72633004:6e0877d2
Events : 5
Number Major Minor RaidDevice State
0 259 8 0 active sync /dev/nvme0n2p1
1 259 9 1 active sync /dev/nvme0n3p1
3 259 10 2 spare rebuilding /dev/nvme0n4p1
[root@rhel9-1 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Apr 22 20:36:53 2024
Raid Level : raid5
Array Size : 104787968 (99.93 GiB 107.30 GB)
Used Dev Size : 52393984 (49.97 GiB 53.65 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Apr 22 20:41:34 2024
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : xy10:0 (local to host xy10)
UUID : d6e6ba0b:53220703:72633004:6e0877d2
Events : 18
Number Major Minor RaidDevice State
0 259 8 0 active sync /dev/nvme0n2p1
1 259 9 1 active sync /dev/nvme0n3p1
3 259 10 2 active sync /dev/nvme0n4p1
[root@rhel9-1 ~]# mkfs.xfs /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=512 agcount=16, agsize=1637248 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=26195968, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@rhel9-1 ~]# mkdir /opt/data
[root@rhel9-1 ~]# blkid /dev/md0
/dev/md0: UUID="730d538d-751f-482e-893f-8cd2d8a38e10" TYPE="xfs"
[root@rhel9-1 ~]# vim /etc/fstab
[root@rhel9-1 ~]# mount -a
[root@rhel9-1 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 724M 9.7M 714M 2% /run
/dev/mapper/rhel-root 48G 4.5G 43G 10% /
/dev/sr0 9.9G 9.9G 0 100% /mnt
/dev/mapper/rhel-home 24G 198M 23G 1% /home
/dev/nvme0n1p2 960M 292M 669M 31% /boot
/dev/nvme0n1p1 599M 7.0M 592M 2% /boot/efi
tmpfs 362M 52K 362M 1% /run/user/42
tmpfs 362M 36K 362M 1% /run/user/0
/dev/md0 100G 747M 100G 1% /opt/data
[root@rhel9-1 ~]#
[root@rhel9-1 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Apr 15 06:43:50 2024
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=fd674837-4996-4f18-91b3-d25bd7506779 /boot xfs defaults 0 0
UUID=C9F0-9BE3 /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/mapper/rhel-home /home xfs defaults 0 0
/dev/mapper/rhel-swap none swap defaults 0 0
/dev/sr0 /mnt iso9660 defaults 0 0
UUID=730d538d-751f-482e-893f-8cd2d8a38e10 /opt/data xfs defaults 0 0