首页
Search
1
v2ray异常错误之二
3,310 阅读
2
linux时区设置
2,698 阅读
3
DB2常用操作
2,173 阅读
4
websphere修改jvm内存xmx和xms
1,929 阅读
5
nfs客户端文件属主为nobody的现象
1,552 阅读
技术
生活
运动
游戏
电影
登录
Search
标签搜索
docker
linux
troubleshooting
nginx
secure
truenas
mysql
windows
python
esxi
docker swarm
oracle
zabbix
tomcat
blog
dsm
群晖
rpa
freenas
db
yuc
累计撰写
291
篇文章
累计收到
0
条评论
首页
栏目
技术
生活
运动
游戏
电影
页面
搜索到
4
篇与
的结果
2025-06-12
raid性能问题和建议
起因 研究这个问题的起因是需要在ESXI机器分配一台高IO的虚拟机做数据库,但实际测试性能完全没有达到测试预期 本想着5块ssd硬盘做raid5,性能肯定没有问题,但分配硬盘后测试发现,4k随机读取iops有500k,符合甚至超出预期,但4k随机写入iops仅11k左右,不仅与我理想中的40k+相差甚远,甚至比我我预期单盘4k随机写入iops(20k)都相差甚远 推测和排查 根据这个结果,我认为是ESXI限制了其性能的发挥,于是找了一些资料,其中可能的问题包括如下: esxi版本比较低,其存储驱动可能有瓶颈 阵列卡驱动可能较低,达到瓶颈 ESXI低版本固有的性能问题 于是我分别从这三个问题入手,尝试升级驱动,也新增了一台高版本ESXI虚拟机(3块SSD硬盘raid5),结果读iops与之前差不多,写iops也与之前差不多,这似乎说明并非ESXI的问题 为了印证不是虚拟化影响的性能,接着我又把ESXI物理机直接更换为centos,跳过所有虚拟化的性能影响,仍保持3块SSD硬盘raid5,结果读写iops与之前仍然相似 至此,问题变成了raid本身的性能问题 RAID级别 我们通常接触的raid级别有raid0、raid1、raid10、raid5、raid6,还有一些更高级的raid50、raid60基本上不太常用,其要求的硬盘位较多,接下来我们从安全性、空间、性能分别分析一下常用的几种raid的特点 raid0 空间:N,raid0拥有最大的空间,他跟jbod有点类似,把所有的硬盘空间叠加 性能:把数据条带化分布到每块硬盘,那么其性能也是最高的,可以是所有硬盘的叠加 安全性:安全性最低,因为所有数据分布在不同硬盘,如果一块硬盘损坏,那么所有数据不可用 raid1 空间:2,raid1因为需要保持镜像,所以空间利用率为50% 性能:写入的时候需要写入两份数据,所以写入性能会下降,读取策略如果每块硬盘都可以参与,那么示有性能提升的 安全性:安全性适中,允许损失一块硬盘 raid10 空间:N/2,可以看做是多块硬盘两两组合成raid1之后再组成raid0,所以空间利用率为50% 性能:写入的时候会先写入两个raid0,再同步两个raid1,理论上是有提升的。读取性能肯定会有提升 安全性:允许两个raid1各丢失一块硬盘,最多丢失两块硬盘,但不能允许单个raid1中丢失两块硬盘 raid5 空间:N-1,数据会被条带化为硬盘数量-1,如果有5块硬盘,那么数据会被条带化为4份数据+1份(条带数据异或)奇偶校验值,如果数据甚至小于条带大小,那么只有第一块硬盘会存储完整数据,其他硬盘则存储填充值 性能:写入的时候需要做奇偶计算,性能有所下降,读取时会分布式读取不同硬盘,性能有所提升 安全:允许丢失任意一块硬盘 raid6 空间:N-2,数据会被条带化为硬盘数量-2,如果有4块硬盘,那么数据会被条带化为2份数据+2份数据的奇偶校验,如果数据甚至小于条带大小,那么只有第一块硬盘会存储完整数据,其他硬盘则存储填充值 性能:写入的时候需要生成两份奇偶计算数据,性能有所下降,读取时会分布式读取不同硬盘,性能有所提升 安全:允许丢失任意两块硬盘(与raid10的差别) 基于以上特性,我们一直使用的 raid5、raid6的模式,因为不挑损坏的硬盘,比如raid10和raid6都是4块硬盘,但raid10不能一组raid1同时损坏,而raid6可以损坏任意两块,在安全性上更高 raid选择 根据数据安全、可用容量、性能等特性,raid5写入性能比较差,raid6理论上会更差,raid建议如下: 对于性能要求较高的场景,考虑使用raid10的方式来均衡性能和权限,但同时安全性要通过监控+到期更换的方式来弥补 对于安全要求保障较高的场景,建议raid6,其空间在超过4盘时优于raid10 对于空间要求较高的场景,建议raid5
2025年06月12日
7 阅读
0 评论
0 点赞
2025-06-04
esxi安装阵列卡固件的方法
固件下载 跟其他固件驱动、bios固件一行,在dell官方下载即可,或者搜索关键字,然后找到最新的版本 正常情况下,是会提供LINUX的BIN、MS64的EXE、ESXI的VIB三个版本,但有时候仅提供了 MS64 和 LINUX 版本,所以只能先全部下载,再看应该如何使用 固件安装 这次固件只提供了 MS64和LINUX两个版本,我先尝试了BIN增加x权限,但执行报错了,MS64的EXE我就不直接尝试的,显然无法直接执行 查看原文档的资料后,发现perccli可以支持安装固件的,使用以下命令 /opt/lsi/perccli/perccli /c0 download file=XXX c后的0表示第几个阵列卡,我只有一个所以是0,file接安装文件 但file尝试接BIN和EXE文件都无法正常使用,似乎又陷入了僵局 峰回路转 我们可以猜测即使分为了BIN和EXE文件,这些大概也只是不同平台的执行器、启动器、安装器,真正的固件文件对于同一个阵列卡而言理论上应该是相同的。 所以我只要提取出固件文件,就可以使用 perccli 安装了吗? 于是我在windows系统上,重命名EXE为zip,果然能够正常打开,查看目录结构和文件 payload/FW0001.rom 似乎是真正的固件文件,再次上传后使用 perccli 安装成功
2025年06月04日
6 阅读
0 评论
0 点赞
2024-08-01
TrueNAS zfs raidz扩展磁盘expand
背景 在使用 TrueNAS 4年后的今天,终于迎来了存储池空间使用率超过了90%,存储池是使用的 10 块 2T 做的 raidz3,即可以损失任意3块盘仍然保证数据安全,剩余的空间计算为 (10-3) x 2T = 14T,实际最大可用空间 11.98T,而现在剩余可用空间不足 1T 扩容问题 手头上刚好有一块 2T 的磁盘,是否可以加进去直接扩展空间呢? 尝试在池中加入新盘,提示需要添加 5块 硬盘,实在难以理解为何一次扩容需要5块盘,因为之前玩群晖组raid6扩展还是相当方便的,基本上新增一块、两块扩展空间都可以。 所以根据这个特殊的要求,我查阅了一些资料,才发现问题不止是扩展需要5块硬盘那么简单,最少要5块是会在此池中新建一个vdev组,它具有此池相同的raidz功能,所以raidz3最低的要求是5块新盘,但它不会扩展到原有的空间,那这个方案是相当浪费空间的 于是我查询了一些关于raidz、zfs扩展的资料,截至到2024.08.01最新的资料如下: # 12楼 https://www.truenas.com/community/threads/raidz-expansion-best-method-when-increasing-disks-and-replacing-with-larger-at-same-time.105448/ # 4楼 https://www.truenas.com/community/threads/adding-a-drive-to-a-raidz1-pool.111805/ # 正规文档关于之前是如何扩展的(新建一个vdev) https://openzfs.org/wiki/OpenZFS_Developer_Summit_2023_Talks#RAIDZ_Expansion_(Matt_Ahrens_&_Don_Brady) # 关于解决方案和其他的一些讨论 https://www.truenas.com/community/threads/adding-disk-to-raidz1.111375/ # 关于扩展以及扩展后数据分布的讨论 https://github.com/openzfs/zfs/pull/15022 # 关于扩展以及数据分布的讨论后续 https://github.com/openzfs/zfs/discussions/15232 关于上面的讨论,大概在今年底 TrueNAS 可以集成这一功能,但不知道能否解决数据分布问题,raidz 与 raid 完全不同,其扩展后不会重新分布数据,导致原数据与新数据盘符存储不同,推荐的方法是,删除原数据重新创建,则会以新盘的数量重新分布 PS. 其他的解决方案 较推荐的是把原硬盘一个一个更换更大的盘,每更换一个则等到同步完成再继续,等所有硬盘更换后会自动扩展空间 新建一个更大的池,然后把数据同步过去
2024年08月01日
10 阅读
0 评论
0 点赞
2022-07-04
megacli的一些常用命令
0x0 raid是否降级,如果降级那么有硬件问题 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL | grep 'State' 如果E为空N/A,可以用空代替,比如查看指定盘信息 /opt/MegaRAID/MegaCli/MegaCli64 -pdinfo -physdrv[E:S] -a0 /opt/MegaRAID/MegaCli/MegaCli64 -pdinfo -physdrv[:7] -a0 | more 查看 raid 卡日志 megacli -FwTermLog -Dsply -aALL 显示适配器个数 megacli -adpCount 显示适配器时间 megacli -AdpGetTime –aALL 显示所有适配器信息 megacli -AdpAllInfo -aAll 显示所有逻辑磁盘组信息 megacli -LDInfo -LALL -aAll 查 raid 卡信息 (生产商、电池信息及所支持的 raid 级别) megacli -AdpAllInfo -aALL |grep -E "Product Name|BBU|Memory Size|RAID Level Supported" 查看虚拟化 (vd) 和物理盘 (pd) 的信息,比如查看物理硬盘数,是否有硬盘 offline 或者 degraded megacli -AdpAllInfo -aALL |grep -E "Device Present" -A9 查看硬盘是否 online megacli -PDList -aALL |grep "Firmware state" 查看硬盘是否存在物理错误 (error 不为 0,可能会有硬盘故障即将发生) megacli -PDList -aALL |grep -i error 查看电池信息 (电池类型、电池状态、充电状态、温度等) megacli -AdpBbuCmd -aAll raid 卡个数 megacli –adpCount 检测磁盘 ID 注意,该 ID 值用于标注磁盘 megacli -PDlist -aALL | grep "ID" | uniq 显示所有逻辑磁盘组信息 (做了几组 raid,raid cache 的默认和当前策略,做好 raid 后的虚拟盘容量) megacli -LDInfo -LALL -aAll 显示所有物理盘 (物理磁盘个数、大小、是否存在 error) megacli -PDList -aAll 显示所有物理盘物理错误 megacli -PDList -aAll |grep -i error 查看充电状态 megacli -AdpBbuCmd -GetBbuStatus -aALL |grep 'Charger Status' 显示 BBU 状态信息,比如电池是否,如果 issohgood 为 Yes 为正常,No 为异常 megacli -AdpBbuCmd -GetBbuStatus -aALL|grep -i issohgood 显示 BBU 状态信息 megacli -AdpBbuCmd -GetBbuStatus -aALL 显示 BBU 容量信息 megacli -AdpBbuCmd -GetBbuCapacityInfo -aALL 显示 BBU 设计参数 megacli -AdpBbuCmd -GetBbuDesignInfo -aALL 显示当前 BBU 属性 megacli -AdpBbuCmd -GetBbuProperties -aALL 显示 Raid 卡型号,cache 大小、Raid 设置,cache 策略、Disk 相关信息 megacli -cfgdsply -aALL |egrep "PDs|VDs|Product Name|Memory|BBU:" 查看磁盘缓存策略 (查看 vd 的) megacli -LDGetProp -Cache -LALL -aALL 查看磁盘缓存策略 (查看 pd 的) megacli -LDGetProp -DskCache -LALL -aALL 查看物理磁盘重建进度 megacli -PDRbld -ShowProg -PhysDrv \[1:5\] -a0 以动态可视化文字界面显示 megacli -PDRbld -ProgDsply -PhysDrv \[1:5\] -a0 关闭缓存 megacli -LDSetProp -DisDskCache -L0 -a0 显示 Rebuid 进度 megacli -PDRbld -ShowProg -physdrv\[20:2\] -aALL 查看 E S megacli -PDList -aAll -NoLog | grep -Ei "(enclosure|slot)" 查看所有硬盘的状态 megacli -PDList -aAll -NoLog 查看所有 Virtual Disk 的状态 megacli -LdPdInfo -aAll -NoLog 在线做 Raid megacli -CfgLdAdd -r0\[0:11\] WB NORA Direct CachedBadBBU -strpsz64 -a0 -NoLog megacli -CfgLdAdd -r5 \[12:2,12:3,12:4,12:5,12:6,12:7\] WB Direct -a0 点亮指定硬盘 (定位) megacli -PdLocate -start -physdrv\[252:2\] -a0 清除 Foreign 状态 megacli -CfgForeign -Clear -a0 查看 RAID 阵列中掉线的盘 megacli -pdgetmissing -a0 替换坏掉的模块 megacli -pdreplacemissing -physdrv\[12:10\] -Array5 -row0 -a0 手动开启 rebuid megacli -pdrbld -start -physdrv\[12:10\] -a0 查看 Megacli 的 log megacli -FwTermLog dsply -a0 > adp2.log 设置 HotSpare megacli -pdhsp -set \[-Dedicated \[-Array2\]\] \[-EnclAffinity\] \[-nonRevertible\] -PhysDrv\[4:11\] -a0 megacli -pdhsp -set \[-EnclAffinity\] \[-nonRevertible\] -PhysDrv\[32:1}\] -a0 关闭 Rebuild megacli -AdpAutoRbld -Dsbl -a0 设置 rebuild 的速率 megacli -AdpSetProp RebuildRate -30 -a0 创建一个 raid5 阵列,由物理盘 2,3 4 构成,该阵列的热备盘是物理盘 5 megacli-CfgLdA d -r5 \[1:2,1:3,1:4\] WB Direct -Hsp\[1:5\] -a0 创建阵列,不指定热备 megacli-CfgLdA d -r5 \[1:2,1:3,1:4\] WB Direct -a0 删除阵列 megacli-CfgLdDel -L1 -a0 在线添加磁盘 megacli-LDRecon -Star - 5 Ad -PhysDrv\[1:4\] -L1 -a0 阵列创建完后,会有一个初始化同步块的过程,可以看 其进度。 megacli-LDInit -ShowProg -LA L -aAL 以动态可视化文字界面显示 megacli-LDInit -ProgDsply -LA L -aAL 查看阵列后台初始化进度 megacli-LDBI -ShowProg -LA L -aAL 或者以动态可视化文字界面显示 megacli-LDBI -ProgDsply -LA L -aAL 指定第 5 块盘作为全局热备 megacli-PDHSP -Set \[-EnclAf in ty\] \[-no Rev rtible\] -PhysDrv\[1:5\] -a0 指定为某个阵列的专用热备 megacli-PDHSP -Set \[-Dedicated \[-Ar ay1\] \[-EnclAf in ty\] \[-no Rev rtible\] -PhysDrv\[1:5\] -a0 删除全局热备 megacli-PDHSP -Rmv -PhysDrv\[1:5\] -a0 将某块物理盘下线 / 上线 megacli -PDOffline -PhysDrv \[1:4\] -a0 megacli -PDOnline -PhysDrv \[1:4\] -a0 查看物理磁盘重建进度 megacli-PDRbld -ShowProg -PhysDrv \[1:5\] -a0 或者以动态可视化文字界面显示 megacli -PDRbld -ProgDsply -PhysDrv \[1:5\] -a0 查看做 raid 的情况 megacli -LDInfo -Lal -aAL | grep -E "RAID Lev l|Strip Size|NumberOf Drives|Span Depth|^Size" 取 Enclosure Device ID uiqnum= megacli -PDlist -aAL | grep "ID" | uniq |awk -F: '{print $2}' | awk '{print $1}' 取 Slot Number disknum=megacli -PDList -aAL | grep -E "DISK GROUP|Slot Number|postion:|Firmware sta e:" | grep Slot | awk -F\[: \] '{print $NF}' 算出总数 diskto al=megacli -PDList -aAL | grep -E "DISK GROUP|Slot Number|postion:|Firmware sta e:" | grep Slot | awk -F\[: \] '{print $NF}' | wc -l ar ay=($disknum) 查看当前 raid 缓存状态,raid 缓存状态设置为 wb 的话要注意电池放电事宜,设置电池放电模式为自动学习模式 megacli -ldgetprop -dskcache -lall -aall raid 电池设置相关 # 查看电池状态信息 (Display BBU Status Information) megacli -AdpBbuCmd -GetBbuStatus -aN|-a0,1,2|-aALL megacli -AdpBbuCmd -GetBbuStatus -aALL 查看电池容量(Display BBU Capacity Information) megacli -AdpBbuCmd -GetBbuCapacityInfo -aN|-a0,1,2|-aALL megacli -AdpBbuCmd -GetBbuCapacityInfo –aALL 查看电池设计参数 (Display BBU Design Parameters) megacli -AdpBbuCmd -GetBbuDesignInfo -aN|-a0,1,2|-aALL megacli -AdpBbuCmd -GetBbuDesignInfo –aALL 查看电池属性(Display Current BBU Properties) megacli -AdpBbuCmd -GetBbuProperties -aN|-a0,1,2|-aALL megacli -AdpBbuCmd -GetBbuProperties –aALL 设置电池为学习模式为循环模式(Start BBU Learning Cycle) megacli -AdpBbuCmd -BbuLearn -aN|-a0,1,2|-aALL 查询 raid 级别,磁盘数量,容量,条带大小。 megacli -cfgdsply -aALL |grep Policy 查询控制器 cache 策略 megacli -LDSetProp WB -L0 -a0 设置 write back 功能 megacli -LDSetProp CachedBadBBU -L0 -a0 设置即使电池坏了还是保持 WB 功能 megacli -AdpBbuCmd -BbuLearn a0 手动充电 megacli -FwTermLog -Dsply -aALL 显示适配器个数: megacli -adpCount 显示所有适配器信息: megacli -AdpAllInfo -aAll 显示所有逻辑磁盘组信息: megacli -LDInfo -LALL -aAll 显示所有的物理信息: megacli -PDList -aAll Media 查看充电状态: megacli -AdpBbuCmd -GetBbuStatus -aALL 显示 BBU (后备电池) 状态信息: megacli -AdpBbuCmd -GetBbuStatus -aALL 显示 BBU 容量信息: megacli -AdpBbuCmd -GetBbuCapacityInfo -aALL 显示 BBU 设计参数: megacli -AdpBbuCmd -GetBbuDesignInfo -aALL 显示当前 BBU 属性: megacli -AdpBbuCmd -GetBbuProperties -aALL 显示 Raid 卡型号,Raid 设置,Disk 相关信息: megacli -cfgdsply -aALL 查看 Cache 策略设置: megacli -cfgdsply -aALL |grep -i Policy 查看充电进度百分比: megacli -AdpBbuCmd -GetBbuStatus -aALL 参考文档: https://jueee.github.io/2020/11/2020-11-26-RAID%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7MegaCli%E7%9A%84%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/ https://www.cnblogs.com/machangwei-8/p/10403626.html
2022年07月04日
833 阅读
0 评论
0 点赞