linux磁盘乱序 UUID,【工程师笔记】第一期:小议Linux下磁盘乱序问题
做技术的朋友可能有过类似这样的感觉——每天都会遇到新的问题,或者学到新的知识。然而一个人的时间和精力毕竟有限,不是所有的岗位都能做到总是亲力亲为,每人最擅长的领域也各不相同。为了使工程师自己踩过的坑、那些实用的心得体会也能给大家带来帮助,把经验记录和分享出来就显得尤为可贵,这就是我们开设《工程师笔记》专栏的目的。
小议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下磁盘乱序问题相关推荐
- Linux达人养成计划I详细笔记(二)Linux分区与安装
本系列博文是听了课程Linux达人养成计划后的个人学习笔记,较为详细,供大家参考. 目录 第2章 Linux分区与安装 2.1系统分区 2.2 Linux安装 第2章 Linux分区与安装 2.1系统 ...
- linux windows10双系统安装教程,【笔记】windows10安装linux双系统教程(可能是现今最简单方法)...
这周测试成功了大牛漂移菌教的树莓派系统镜像的压缩方法,虚拟机下备份镜像不太方便,无论是存储空间还是读卡操作都不方便.所以打算装个linux系统,一个硬盘纯装一个linux太浪费了,毕竟我linux用不 ...
- Linux基础(二)的笔记
文章目录 前言 一. VIM文本编辑器 1.VIM文本编辑器的概述 2.VIM编辑器的操作模式 二.磁盘管理 1.Linux磁盘管理常用命令 2.Linux硬盘分区和格式化概述 3.Virtual b ...
- linux安装旧版硬件驱动,【工程师笔记】第四期:老版Linux不用愁 ——使用DKMS轻松制作RAID卡驱动...
做技术的朋友可能有过类似这样的感觉--每天都会遇到新的问题,或者学到新的知识.然而一个人的时间和精力毕竟有限,不是所有的岗位都能做到总是亲力亲为,每人最擅长的领域也各不相同.为了使工程师自己踩过的坑. ...
- SRE运维工程师笔记-Linux文件管理和IO重定向
SRE运维工程师笔记-Linux文件管理和IO重定向 1. 文件系统目录结构 1.1 文件系统的目录结构 1.2 常见的文件系统目录功能 1.3 应用程序的组成部分 1.4 CentOS 7 以后版本 ...
- SRE运维工程师笔记-Linux基础入门
SRE运维工程师笔记-Linux基础入门 1. Linux基础 1.1 用户类型 1.2 终端terminal 1.2.1 终端类型 1.2.2 查看当前的终端设备 1.3 交互式接口 1.3.1 交 ...
- SRE运维工程师笔记-Linux用户组和权限管理
SRE运维工程师笔记-Linux用户组和权限管理 用户.组和权限 内容概述 1. Linux安全模型 1.1 用户 1.2 用户组 1.3 用户和组的关系 1.4 安全上下文 2. 用户和组的配置文件 ...
- Linux磁盘与文件系统管理学习笔记
0:序 系统管理员很重要的任务之一就是管理号自己的磁盘文件系统,每个分区的大小分配,不能太大,也不能太小,太大浪费空间,太小不够用,该小节记录如何制作文件系统,和怎么样分区,格式化,等. 1:一下借用 ...
- Linux磁盘分区及格式化简介,Linux硬盘分区及格式化学习笔记
一.硬盘分区 (一)硬盘分区好处 1.可避免数据丢失.通常在Windows系统中,常常将硬盘划分成多个分区,如C.D.E.F盘等,而C盘主要作为系统盘.这样的好处在于一旦系统崩溃需重装系统时,除C盘之 ...
最新文章
- Spring Cloud Feign Clients 无需 Controller自动暴露Restful接口
- qt opencv cmake配置 单纯小白
- 接口与继承动手动脑整理
- Flexbox弹性盒模型
- LeetCode MySQL 1623. 三人国家代表队
- 关于UML中逻辑模型的工具的详细介绍
- thinkphp5 mysql助手_ThinkPHP5-数据库基本操作
- linux中同步例子(完成量completion)
- thinkphp下载远程图片到本地
- 《JavaScript高级程序设计》学习笔记 JavaScript基本(1)
- react的生命周期函数(超详细)
- wget php mirror 地址,wget命令镜像网站
- 用户流量红利消退的下半场,淘宝如何保持高速增长?
- 电驴维持友情链接地址、更新服务器列表
- 关于使用Python——写模拟手机通讯录查询系统
- 实践 ArcGIS Web 3D
- IDEA中maven项目dependencies报错飘红问题解决
- 当域名被微信封了怎么办?
- android 手电筒开关,Android 系统开关,wifi、手电筒等的开关
- Unity中使用动画状态机控制Spine动画