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

在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标识代码。

<ccid_nobr>

<ccid_code>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 root   9 Mar 11 12:29 edd-int13_dev80 -> ../../sda
lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part1 -> ../../sda1
lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part3 -> ../../sda3
lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part4 -> ../../sda4
lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part5 -> ../../sda5
lrwxrwxrwx 1 root root  10 Mar 11 12:29 edd-int13_dev80-part6 -> ../../sda6
lrwxrwxrwx 1 root root   9 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000 -
> ../../sda
lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art1 -> ../../sda1
lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art3 -> ../../sda3
lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art4 -> ../../sda4
lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art5 -> ../../sda5
lrwxrwxrwx 1 root root  10 Mar 11 12:28 scsi-3600050e03d7c67007bf400009f890000-p
art6 -> ../../sda6

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

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

<ccid_nobr>

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

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

<ccid_nobr>

<ccid_code>/dev/disk/by-id/scsi-3600050e03d7c67007bf400009f890000-part1 /          ext3   1  1
/dev/disk/by-id/scsi-234892819987c8f828473829becf38289-part2 /home      ext3   1  1

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

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

<ccid_nobr>

<ccid_code>/sbin/e2label /dev/sda1 myroot
/sbin/e2label /dev/sdb1 myhome

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

<ccid_nobr>

<ccid_code>kernel /boot/vmlinuz-2.6.29 ro root=LABEL=myroot

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

<ccid_nobr>

<ccid_code>LABEL=myroot      /      ext3  defaults  1 1
LABEL=myhome  /home  ext3  defaults  1 1

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

时间: 2024-08-26 00:36:58

Linux磁盘设备文件(sda,sdb,sdc…)变化问题的相关文章

linux磁盘及文件系统管理的部分知识一

今天学习了linux磁盘及文件系统管理的部分知识,这里做下小结备忘. 文件系统相关: 虚拟文件系统(VFS): 可以这么理解吗? 对上层用户命令及操作进行翻译转换 目的是可以在不同文件系统上运行. 根(\): 理解存储及访问方式. 一切目录不管它是否被挂载到其他分区上 对于这个目录本身而言及它的父目录都是存储在根分区的\var \etc \etc\rc.d\init.d 访问的时候不管直接或者间接都是通过根目录进行访问的. 文件系统类型: ext4\3\2  xfs ... 硬盘相关: 1.硬盘

linux磁盘及文件系统管理进阶

回顾: 磁盘,磁盘分区,文件系统 现在的磁盘有两类:机械硬盘和固态硬盘 为了使机械硬盘上流传下来的概念,和组织方式依然可用,固态硬盘也模拟了类似于机         械硬盘上的很多特性,想MBR之类的哪些东西,依然模拟扇区和那些机制,只不过是        固态硬盘是电器设备工作,机械硬盘是机械方式工作而已. 无论是那种格式的硬盘在cent0S6,7只要是磁盘设备而且能够驱动的话统统识别为:                 /dev/sd[a-z]# 管理分区:fdisk,parted,sfdi

linux磁盘设备知识

linux分区数字编号: 1.分区数字编号1至4留给主分区或扩展分区使用,逻辑分区编号从5开始. 2.IDE硬盘设备名均以/dev/hd开头,不同硬盘编号依次是/dev/hda/./dev/hdb./dev/hdc........ 3.SAS/SCSI/SATA/USB接口硬盘的设备名均以/dev/sd开头,不同硬盘编号依次是/dev/sda,/dev/sdb,/dev/sdc............ 4.linux中常用的外部设备文件名: 软盘   /dev/fdN(N=0,1......)

linux磁盘及文件系统管理初步(1)

Linux系统管理 磁盘分区及文件系统管理 RAID LVM:能够实现磁盘边界的动态管理 网络属性管理 程序包管理:程序包的增删查改 sed 和awk 进程查看和管理 内核管理:内核的组成部分,内核的编译安装 系统启动流程 Linux内核的定制,编译内核,busybox 系统安装:kickstart,dhcp,pxe shell脚本编程 Linux磁盘及文件系统管理: 整个操作系统的组成部分:硬件和软件 整个操作系统的组成层次:最底层为硬件设备(这也是我们计算机能够运行的基础),在硬件设备上冯诺

Linux系统--Linux磁盘和文件系统管理

Linux磁盘和文件系统管理 一.Linux磁盘管理: 1.磁盘的物理组成部分(这里介绍的主要是机械硬盘) a.磁盘的组成主要有: 盘片,机械手臂和磁头,主轴马达 b.磁盘的数据存储和读取在于磁盘的盘片,在盘片上的一些概念: 扇区(sector):就是将盘片划分成若干个扇区.扇区是最小的存储单位,每个扇区512个字节. 柱面(Cylinder):磁盘是有多个盘片组合而成,而柱面是有不在同一磁盘上的相同位置上的扇区组成.柱面是分区的最小单位,也就是分区是根据柱面分区的. c.第一个扇区的组成: 有

第八章、Linux 磁盘与文件系统管理

第八章.Linux 磁盘与文件系统管理 1. 认识 EXT2 文件系统 1.1 硬盘组成与分割的复习 1.2 文件系统特性: 索引式文件系统 1.3 Linux 的 EXT2 文件系统(inode): data block, inode table, superblock, dumpe2fs 1.4 与目录树的关系 1.5 EXT2/EXT3 文件的存取与日志式文件系统的功能 1.6 Linux 文件系统的运行 1.7 挂载点的意义 (mount point) 1.8 其他 Linux 支持的文

Linux磁盘与文件系统管理

Linux磁盘与文件系统管理 磁盘分区后需要进行格式化,是为什么呢? 因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此需要将分区进行格式化,以成为操作系统能够利用的文件系统格式.

三、linux磁盘和文件系统管理

磁盘分区格式化: /bin./sbin :二进制程序,操作系统自身运行就需要的程序. /usr/bin./usr/sbin:二进制程序,基本的系统管理工具.命令. /usr/local/bin./usr/local/sbin:第三方程序,命令. /lib:为bin.sbin及/usr/下面的bin.sbin提供与内核通信的接口服务. /etc:为/bin ./sbin提供配置文件命令. /tmp /var:提供经常变化的目录,像log.mail.cache /proc:内核数据的表现形式,可以通

Linux磁盘和文件系统管理--9.1作业

一 Linux磁盘管理 1.硬盘分为:机械式硬盘.SSD 2.机械式: 1)盘片(Platter):一块硬盘有若干盘片,每个盘片有可以存储数据的上.下两盘面(Side).这些盘面堆叠在主轴上高速旋转,它们从上至下从"0"开始依次编号: 2)磁道(Track):每个盘面被划分成许多同心圆,这些同心圆轨迹叫做磁道:磁道从外向内从0开始顺序编号: 3)扇区(sector): 最小的物理存储单位,每个扇区为512bytes:将一个盘面划分为若干内角相同的扇形,这样盘面上的每个磁道就被分为若干段