做技术的朋友可能有过类似这样的感觉——每天都会遇到新的问题,或者学到新的知识。然而一个人的时间和精力毕竟有限,不是所有的岗位都能做到总是亲力亲为,每人最擅长的领域也各不相同。为了使工程师自己踩过的坑、那些实用的心得体会也能给大家带来帮助,把经验记录和分享出来就显得尤为可贵,这就是我们开设《工程师笔记》专栏的目的。

小议Linux下磁盘乱序问题

最近碰到客户问有关Linux系统下磁盘乱序的问题,整理了一下供各位参考。个人观点,纰漏之处,还请不吝指正~

在戴尔PowerEdge 11G和12G服务器上,由于LSI(如今的Avago)当时的控制器微码、驱动以及对应Linux kernel 的版本支持问题,确实出现过这种状况(具体涉及到两种SAS HBA/RAID卡: PERC H200(LSI 9211-8i)和 LSI 9207)。此问题在使用了LSI 对应直通SAS控制器芯片的服务器上均会出现,与服务器厂商并无直接关系。结论是客户提到的“磁盘乱序”情况确实是存在过的。

尽管当时的影响不小,圈中也小有轰动,但LSI很快通过Firmware和kernel驱动解决掉了。

当前戴尔全线服务器(13G/12G等),PERC H330(LSI 3008 芯片)、H730/P(LSI 3108 芯片)或是外部端口的12Gbps SAS Ext. HBA等,均不存在磁盘乱序的问题。

所以,在不存在Firmware或驱动bug的情况下,系统识别磁盘设备顺序会按照总线及驱动加载顺序进行。从前向后,或从后向前,总之是规则有序的,不能称为“乱”序。

Linux kernel指派sdx为设备名对应磁盘的方式其实很早就已经不推荐了。大约在2.6.13 Kernel版本以后,为保证persistent naming(持久的命名),udev默认会在/dev目录下创建by-lable、by-uuid 等目录,通过磁盘唯一的标识方式创建symbolic link(符号连接)来指向实际的设备节点。

结合服务器上的RAID控制器,当用户既要配置JBOD又要配置RAID时,JBOD的每块磁盘其实是最先被系统识别到的,优先级最高;然后按照磁盘slot ID 依次排序。如果同时配置了Raid VD,均会被靠后识别,排至JBOD最后一块磁盘的后面。

举个实际的例子如下:

戴尔一款16个硬盘槽位的服务器机型,当slot 0,1上的硬盘做RAID 1为第一个VD0,slot 12-slot 15 硬盘做RAID 6 为第二个VD1;其余槽位硬盘slot 2-slot 11 均做JBOD。这样,做JBOD 的第一块盘即slot2 槽位的磁盘将会是dev/sda,以此类推直到JBOD 全部磁盘按顺序分配,之后才开始为RAID 第一组VD 进行分配。即VD0 会是dev/sdk,VD1 为/dev/sdl。

如果客户仍然希望用 sdX 的方式来对应磁盘物理顺序,有一个变通的办法,就是需要通过手工改动/etc/udev/rules.d 文件的方式来实现。

具体可参考如下:

KERNEL==”sda*” NAME=”sdb%n”

KERNEL==”sdb*” NAME=”sdc%n”

KERNEL==”sdc*” NAME=”sdd%n”

KERNEL==”sdd*” NAME=”sde%n”

KERNEL==”sde*” NAME=”sdf%n”

KERNEL==”sdf*” NAME=”sdg%n”

KERNEL==”sdg*” NAME=”sdh%n”

KERNEL==”sdh*” NAME=”sdi%n”

KERNEL==”sdi*” NAME=”sdj%n”

KERNEL==”sdj*” NAME=”sdk%n”

KERNEL==”sdk*” NAME=”sda%n”

但是要注意,这种方式有很大的局限性。一旦RAID配置改变,增减VD或者JBOD磁盘的增减都会造成人为乱序的情况。

综上所述,我们仍然建议引导客户接受采用By uuid(绑定)或By lable的方式来管理。

具体可参见:《Persistent block device naming》https://wiki.archlinux.org/index.php/Persistent_block_device_naming#Persistent_naming_methods

不知您看完本文有什么感想,是否有帮助呢?如果您对《工程师笔记》栏目有任何的意见或者建议,都可以在文章下面留言,以便我们将来能够更好地为读者服务。

linux磁盘乱序 UUID,【工程师笔记】第一期:小议Linux下磁盘乱序问题相关推荐

  1. Linux达人养成计划I详细笔记(二)Linux分区与安装

    本系列博文是听了课程Linux达人养成计划后的个人学习笔记,较为详细,供大家参考. 目录 第2章 Linux分区与安装 2.1系统分区 2.2 Linux安装 第2章 Linux分区与安装 2.1系统 ...

  2. linux windows10双系统安装教程,【笔记】windows10安装linux双系统教程(可能是现今最简单方法)...

    这周测试成功了大牛漂移菌教的树莓派系统镜像的压缩方法,虚拟机下备份镜像不太方便,无论是存储空间还是读卡操作都不方便.所以打算装个linux系统,一个硬盘纯装一个linux太浪费了,毕竟我linux用不 ...

  3. Linux基础(二)的笔记

    文章目录 前言 一. VIM文本编辑器 1.VIM文本编辑器的概述 2.VIM编辑器的操作模式 二.磁盘管理 1.Linux磁盘管理常用命令 2.Linux硬盘分区和格式化概述 3.Virtual b ...

  4. linux安装旧版硬件驱动,【工程师笔记】第四期:老版Linux不用愁 ——使用DKMS轻松制作RAID卡驱动...

    做技术的朋友可能有过类似这样的感觉--每天都会遇到新的问题,或者学到新的知识.然而一个人的时间和精力毕竟有限,不是所有的岗位都能做到总是亲力亲为,每人最擅长的领域也各不相同.为了使工程师自己踩过的坑. ...

  5. SRE运维工程师笔记-Linux文件管理和IO重定向

    SRE运维工程师笔记-Linux文件管理和IO重定向 1. 文件系统目录结构 1.1 文件系统的目录结构 1.2 常见的文件系统目录功能 1.3 应用程序的组成部分 1.4 CentOS 7 以后版本 ...

  6. SRE运维工程师笔记-Linux基础入门

    SRE运维工程师笔记-Linux基础入门 1. Linux基础 1.1 用户类型 1.2 终端terminal 1.2.1 终端类型 1.2.2 查看当前的终端设备 1.3 交互式接口 1.3.1 交 ...

  7. SRE运维工程师笔记-Linux用户组和权限管理

    SRE运维工程师笔记-Linux用户组和权限管理 用户.组和权限 内容概述 1. Linux安全模型 1.1 用户 1.2 用户组 1.3 用户和组的关系 1.4 安全上下文 2. 用户和组的配置文件 ...

  8. Linux磁盘与文件系统管理学习笔记

    0:序 系统管理员很重要的任务之一就是管理号自己的磁盘文件系统,每个分区的大小分配,不能太大,也不能太小,太大浪费空间,太小不够用,该小节记录如何制作文件系统,和怎么样分区,格式化,等. 1:一下借用 ...

  9. Linux磁盘分区及格式化简介,Linux硬盘分区及格式化学习笔记

    一.硬盘分区 (一)硬盘分区好处 1.可避免数据丢失.通常在Windows系统中,常常将硬盘划分成多个分区,如C.D.E.F盘等,而C盘主要作为系统盘.这样的好处在于一旦系统崩溃需重装系统时,除C盘之 ...

最新文章

  1. Spring Cloud Feign Clients 无需 Controller自动暴露Restful接口
  2. qt opencv cmake配置 单纯小白
  3. 接口与继承动手动脑整理
  4. Flexbox弹性盒模型
  5. LeetCode MySQL 1623. 三人国家代表队
  6. 关于UML中逻辑模型的工具的详细介绍
  7. thinkphp5 mysql助手_ThinkPHP5-数据库基本操作
  8. linux中同步例子(完成量completion)
  9. thinkphp下载远程图片到本地
  10. 《JavaScript高级程序设计》学习笔记 JavaScript基本(1)
  11. react的生命周期函数(超详细)
  12. wget php mirror 地址,wget命令镜像网站
  13. 用户流量红利消退的下半场,淘宝如何保持高速增长?
  14. 电驴维持友情链接地址、更新服务器列表
  15. 关于使用Python——写模拟手机通讯录查询系统
  16. 实践 ArcGIS Web 3D
  17. IDEA中maven项目dependencies报错飘红问题解决
  18. 当域名被微信封了怎么办?
  19. android 手电筒开关,Android 系统开关,wifi、手电筒等的开关
  20. Unity中使用动画状态机控制Spine动画

热门文章

  1. 塑胶模具界,经常用到的50个行业术语,你有几个没听过的?
  2. Python模拟登录淘宝都实现了,你还怕模拟登录?
  3. 电脑恢复删除文件及注册表实现
  4. 【ZZULIOJ】1049: 平方和与立方和
  5. SD卡插上上网本时显示文件夹变成文件请问怎么才能修复
  6. Java语言进阶-List、Set、数据结构、Collections
  7. HTML HTML+CSS 样式
  8. php数据类型转换分为哪两种,PHP数据类型转换方法有哪些
  9. 如何在Excel中轻松选择单元格块
  10. 腾讯轻量云服务器控制台详细介绍及建站操作图文教程