在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda, sdb, sdc等等在某些情况下会混乱掉,比如sda变成了sdb或者sdc变成了sdb等等,这样无形中会导致磁盘设备管理的混乱,最常见的比如Linux文件系统的启动问题。很多人在遇到这种问题的时候都去找磁盘、阵列厂家,怀疑是他们的问题,其实这种底层的磁盘(单个磁盘或者RAID阵列)和Linux下磁盘设备文件的映射并不是磁盘、阵列厂家来决定的,而是Linux内核自身的原因。

目前Linux内核对于这种磁盘设备的映射基本上取决于三个顺序,一是磁盘驱动程序的加载;二是主机PCI插槽的监测;三是磁盘本身的监测,先来的当然是a,以此类推。所以,在出现热插拔了某些设备、重启等特殊情况下,实际磁盘在Linux下映射的设备文件可能由于这种“排队”的原因而发生改变,而这种底层“偷偷的”变化有时候会让管理员犯一些低级错误。

这是Linux Kernel的限制,所以目前还没办法来正面的克服应对,但有两个“迂回战术”的办法来减少可能出现的问题,一个是采用UUID设备唯一识别的方法,另一个是采用对设备卷做Label标识的办法。

一、UUID (globally unique identifier),唯一的身份识别,是采用SCSI Inquiry命令的Page 83信息来映射磁盘设备的。例如我们可以在Linux下查询一些磁盘设备的UUID标识代码。

bash# ls -la /dev/disk/by-id

total 0

drwxr-xr-x 2 root root 280 Mar 11 12:29 .

drwxr-xr-x 5 root root 100 Mar 11 12:28 ..

lrwxrwxrwx 1 root root9 Mar 11 12:29 edd-int13_dev80 -> ../../sda

lrwxrwxrwx 1 root root10 Mar 11 12:29 edd-int13_dev80-part1 -> ../../sda1

lrwxrwxrwx 1 root root10 Mar 11 12:29 edd-int13_dev80-part3 -> ../../sda3

lrwxrwxrwx 1 root root10 Mar 11 12:29 edd-int13_dev80-part4 -> ../../sda4

lrwxrwxrwx 1 root root10 Mar 11 12:29 edd-int13_dev80-part5 -> ../../sda5

lrwxrwxrwx 1 root root10 Mar 11 12:29 edd-int13_dev80-part6 -> ../../sda6

lrwxrwxrwx 1 root root9 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000 -

> ../../sda

lrwxrwxrwx 1 root root10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p

art1 -> ../../sda1

lrwxrwxrwx 1 root root10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p

art3 -> ../../sda3

lrwxrwxrwx 1 root root10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p

art4 -> ../../sda4

lrwxrwxrwx 1 root root10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p

art5 -> ../../sda5

lrwxrwxrwx 1 root root10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p

art6 -> ../../sda6

找到了磁盘设备唯一的UUID代码后,就可以加到/etc/grub.conf和/etc/fstab中,这样即使初始的系统盘sda变成了sdb,但Linux和文件系统的启动加载都是按照UUID来的,所以上层也不会受到影响,例如,

在/etc/grub.conf系统启动入口中做以下更改:

kernel /boot/vmlinuz-2.6.27.7 root=/dev/disk/by-id/scsi-3600050e03d7c67007bf400009f890000-part1

在/etc/fstab文件系统启动入口中做以下更改:

/dev/disk/by-id/scsi-3600050e03d7c67007bf400009f890000-part1 /ext311

/dev/disk/by-id/scsi-234892819987c8f828473829becf38289-part2 /homeext311

二、第二种算是比较老式的解决方法,即对磁盘卷设置Label标签,同样的道理,系统启动的时候只看标签,不看底层的sda/sdb等设备号,所以也不会影响到系统、文件系统的启动。例如,

使用e2label命令对sda1和sdb1设置标签:

/sbin/e2label /dev/sda1 myroot

/sbin/e2label /dev/sdb1 myhome

之后在/etc/grub.conf系统启动入口中做以下更改:

kernel /boot/vmlinuz-2.6.29 ro root=LABEL=myroot

在/etc/fstab文件系统启动入口中做以下更改:

LABEL=myroot/ext3defaults1 1

LABEL=myhome /homeext3defaults1 1

当然,以上两种都是为了不影响系统和文件系统的启动采用的变通方法,在实际的系统管理时还是要密切注意底层设备的变化,否则如果出现了磁盘分区误删除的事情罪过可就大了L

linux下磁盘sda,Linux下磁盘设备文件(sda,sdb,sdc….)变化的问题相关推荐

  1. linux下echo /dev/ttys* 到字符设备文件,linux之tty pty pts

    一.基本概念: 1> tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后 ...

  2. 怎么查看linux硬盘多路径,linux下磁盘多路径

    有时我们在linux系统 中通过"fdisk-l"命令,会看到/dev/mapper/xxxxx的磁盘,这中磁盘有可能是逻辑卷,也有可能是配置的多路径,可以先通过"lvd ...

  3. 探秘Linux特殊设备文件:(/dev/null,/dev/zero,/dev/random,/dev/urandom等)

    目录标题 第一章:设备文件简介(Introduction to Device Files) 1.1 设备文件概述(Overview of Device Files) 1.2 设备文件类型(Types ...

  4. linux 设备文件动态,使用 udev 高效、动态地管理 Linux 设备文件

    概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等.通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是 ...

  5. linux mknod 建立管道,linux 设备号以及mknod的使用

    先来看看linux系统中设备管理的基本知识: 我们的linux操作系统跟外部设备(如磁盘.光盘等)的通信都是通过设备文件进行的,应用程序可以打开.关闭.读写这些设备文件,从而对设备进行读写,这种操作就 ...

  6. linux读取 dev tty0,linux命令: ls命令

    ls命令:(list directory contents),列出目录内容 用法: ls [option] [file_or_dirs] ls命令常用选项 -l 显示文件的长格式信息 -d 显示目录或 ...

  7. Linux系统配置及服务管理_02章_文件和用户管理

    文章目录 一.文件管理命令 Linux目录结构 1.1.创建文件 1.2. 创建目录 1.3. 复制 1.4.移动 1.5.删除 1.6.查看文件 1.7.修改文件内容 1.8.文件类型 二.用户管理 ...

  8. linux系统建立文件系统,linux文件系统的建立

    1 根文件系统 嵌入式Linux中都需要构建根文件系统,构建根文件系统的规则在FHS(Filesystem Hierarchy Standard)文档中,下面是根文件系统顶层目录. 目录 内容 bin ...

  9. linux串口驱动机制,Linux串口驱动移植的一些心得总结

    串口驱动的源文件一般是使用drivers/serial/8250.c文件,或该文件的稍作修改.这是因为大多的串口接口的操作寄存器都是符合相关的定义,都是基本一样的.那么在移植串口驱动时,一般是为该驱动 ...

  10. linux下磁盘sda,Linux下磁盘设备文件(sda,sdb,sdc….)变化问题

    在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda, sdb, sdc等等在某些情况下会混乱掉,比如sda变成了sdb或者sdc变成了sdb等等,这样无形中会导致磁盘设备管理的混 ...

最新文章

  1. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】
  2. 桌面计算机密码应由哪项组成,计算机应用能力考试模拟试题
  3. EV3 直接命令 - 第 2 课 让你的 EV3 做点什么
  4. 计算机基础:存储系统知识笔记(一)
  5. B2B行业网站电话销售应具备的精神
  6. python安全攻防---信息收集---ICMP主机探测 以及optionparser的使用
  7. soapUI中多个TestCase之间传递参数
  8. Pandas to_bool
  9. [Java] 蓝桥杯ALGO-59 算法训练 快速排序
  10. configure: error: gperf is needed
  11. 基于内容和用户画像的个性化推荐
  12. 使用jmeter快速生成测试报告
  13. 高项计算题2-三点估算(计划评审技术PERT),时差,投资回收期,贴现率,沟通渠道
  14. 关于Java中double类型的变量保留指定位数的方法
  15. Large-scale Video Classification with Convolutional Neural Networks
  16. HTTPS数字证书原理
  17. 串口通信的隔离传输方案记录
  18. 洛阳理工学院计算机类分数线,2017洛阳理工学院录取分数线
  19. 解决虚拟专用网络拨号后本地上网流量都走此网络的问题
  20. 关于研发过程中测试工作的一些思考

热门文章

  1. 微软裁员方式曝光:鼓励自愿退休 减少合同工
  2. 三分钟简单了解SaaS、PaaS、IaaS,别再企业上云时犯糊涂!
  3. 关于RoboMaster2019新型能量机关的一些感想(大风车)
  4. 有哪些鲜为人知,但是很有意思的网站?
  5. 计算机专业程序员必备的几大技术栈:计算机历史,CPU,操作系统
  6. 产业智能化时代,百度有了倚天剑,也有了屠龙刀
  7. 传感器实验——寻迹模块
  8. 【GPU加速】安装pycuda异常:Failed to build pycuda ERROR: Could not build wheels for pycuda, which is requir
  9. 中信国健临床通讯  2011年2月第1期
  10. pcb线路板制作过程分析