`

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

阅读更多
Linux下磁盘设备文件(sda,sdb,sdc….)变化问题

扩展文件系统的时候由于挂载了多个磁盘阵列,出现了启动顺序与设备号对应不上等问题,搜索后解决方法如下,通过方法1来实现的。

  
引用
在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda, sdb, sdc等等在某些情况下会混乱掉,比如sda变成了sdb或者sdc变成了sdb等等,这样无形中会导致磁盘
在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 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系统启动入口中做以下更改:
引用
kernel /boot/vmlinuz-2.6.27.7 root=/dev/disk/by-id/scsi-3600050e03d7c67007bf400009f890000-part1

在 /etc/fstab文件系统启动入口中做以下更改:
引用
/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设置标签:
引用
/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 / ext3 defaults 1 1
LABEL=myhome /home ext3 defaults 1 1


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

分享到:
评论

相关推荐

    电信设备-一种基于LINUX系统区分本地磁盘与USB移动磁盘的方法.zip

    例如,本地硬盘可能被命名为`sda`、`sdb`等,而USB移动磁盘则可能是`sdc`、`sdd`等。区分这些设备主要依赖于以下几种方法: 1. **查看设备挂载点**:Linux系统中,每个挂载的磁盘都有一个挂载点,例如 `/mnt` 或 `/...

    centos7.3多块硬盘LVM分区

    使用`fdisk -l`命令,可以列出系统中所有硬盘及其分区的信息,包括设备名(如`sda`, `sdb`, `sdc`, `sdd`)和分区状态,这有助于了解当前的硬盘配置。 2. **处理大于2TB的硬盘**: 对于大于2TB的硬盘,由于MBR...

    Linux应用技术:Linux的安装.pptx

    Linux下分区表示详解;思 考;我们假设一个极限的情况,假设,我们的磁盘盘符,只有C可以使用,其他盘符都不能使用。那么我们可以把这几个分区,分别安装在C:\XX,C:\YY,C:\ZZ文件夹下,访问对应的分区只需要访问对应的...

    Linux与Win文件系统大交换之Linux篇——教你Linux下的挂载技巧.pdf

    在Linux和Windows共存的环境中,需要确保正确挂载Windows分区以便在Linux下访问Windows文件。由于两者文件系统不兼容,Linux需要使用特定的工具和方法来实现这一目标。例如,使用`ntfs-3g`软件包可以支持读写NTFS...

    Linux基础之磁盘管理练习.txt

    ### Linux基础之磁盘管理知识点解析 #### 一、获取磁盘系统详细信息 - **命令**: `dumpe2fs /dev/sda1` - **解释**: 使用`dumpe2fs`命令来获取指定文件系统的详细信息。这里查询的是`/dev/sda1`的信息。 - **知识...

    Linux下RAID实验的实验步骤.pdf

    Linux下的RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种通过组合多个物理磁盘以提供数据冗余、性能提升或两者兼有的技术。本实验旨在介绍如何在Linux环境中创建和管理RAID阵列,包括RAID 0...

    在Linux环境中使用USB接口的存储设备.pdf

    注意,如果有多个USB设备,它们在Linux下的设备名会按照`sda`, `sdb`, `sdc`等顺序递增。`fdisk -l`会显示设备的详细信息,如容量、文件系统类型等。 当系统找到USB设备(例如`/dev/sda1`),就可以进行挂载操作。...

    磁盘管理软件ASM介绍

    如果sdb路径出现问题,多路径系统将自动切换到sdc路径,确保数据访问的连续性。 然而,大多数系统软件可能无法识别这种多路径配置,包括默认的ASMLib。它们可以无感知地使用sdb、sdc或multipatha中的任何路径,而...

    在Linux系统下使用USB硬盘.pdf

    硬盘设备及其分区在Linux中以文件形式存在于`/dev/`目录下,如`hda`、`hdb`代表IDE接口的主从硬盘,`sda`、`sdb`代表SCSI或SATA接口的硬盘。分区则通过数字来区分,如`sda1`代表第一块硬盘的第一个主分区。 对于USB...

    Linux分区,格式化,SWAP,LVM,软RAID的创建.doc

    1. 创建 RAID 设备:mdadm --create /dev/md0 -- level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 2. 格式化 RAID 设备:mkfs.ext3 /dev/md0 3. 挂载 RAID 设备:mount -t ext3 /dev/md0 /mnt/backup Linux 分区、...

    RAID磁盘阵列 for Linux

    mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc ``` 其中,`--level=5`表示创建RAID 5级别;`--raid-devices=3`表示共有三个磁盘参与RAID。 4. **添加热备份**:继续使用`mdadm...

    怎样在linux下识别U盘

    需要注意的是,这里的`sda`可能因实际情况而异,如`sdb`、`sdc`等,具体取决于系统中已存在的其他磁盘设备。 **3. 挂载U盘** 一旦确定了U盘的设备名称,就可以将其挂载到之前创建的目录中: ```bash sudo mount /...

    Linux磁盘挂载

    该命令会列出所有已经存在的磁盘及其分区情况,其中新添加的硬盘通常会被标记为`/dev/sdb`(如果有多个新硬盘,则可能会标记为`/dev/sdc`、`/dev/sdd`等)。 #### 四、硬盘分区 在Linux中,新硬盘需要经过分区才能...

    Linux系统管理.pptx

    - `mkfs -t 文件系统类型 分区设备`:创建指定类型的文件系统,如`mkfs -t ext4 /dev/sda1`,将sda1分区格式化为ext4。 - `mkswap 分区设备`:用于创建交换分区,比如`mkswap /dev/sdb1`,将sdb1分区设置为交换...

    Linux系统下如何加载U盘或移动硬盘

    在Linux中,硬件设备通常会被分配一个设备文件,位于`/dev`目录下。对于硬盘和存储设备,它们通常以`sd`开头,如`sda`、`sdb`等,每个字母后的数字代表不同的硬盘,而数字后的数字则表示硬盘的分区。例如,`sda1`是...

    ORALCE创建裸设备手工建库笔记

    这里展示了sda、sdb、sdc和sdd四个磁盘的信息。sdc和sdd被新加入,且它们没有有效的分区表,这意味着它们是全新的硬盘,尚未被格式化或分区。 ##### 3. 创建扩展分区 重新启动Linux后,需要对sdc和sdd进行分区。...

    linux 基础 –存储管理 磁盘管理

    方法一:查看设备文件(磁盘文件) sdb,sdc,sdd,sde,sdf刚添加的五个磁盘;sda是系统盘 方法二:lsblk命令查询 创建分区 fdisk 磁盘地址 [root@localhost ~]# fdisk /dev/sdc 欢迎使用 fdisk (util-linux ...

    linux下u盘使用的两种方法.docx

    你可以通过`fdisk -l`命令来查看系统中的磁盘设备,通常U盘会被识别为`sda1`(根据系统中已有的硬盘设备,U盘可能被识别为其他sdx1,例如sdb1、sdc1等)。 2. **创建挂载点**: 在使用U盘之前,需要创建一个挂载点。...

    在linux下u盘如何使用.docx

    通常,U盘会被识别为`sda1`(如果有其他硬盘,可能依次为`sdb1`,`sdc1`等)。请注意,确切的设备名称可能因系统而异。 2. **创建挂载点**: 在使用U盘之前,需要创建一个挂载点,通常是位于`/mnt`目录下的一个子...

    linux虚拟机追加磁盘磁盘分区

    首先,当在虚拟机中增加新的硬盘时,假设已有硬盘为/dev/sda,新添加的硬盘会依次被识别为/dev/sdb、/dev/sdc等。这可以通过虚拟机管理软件(如VMware、VirtualBox等)的设置界面来完成。 接下来,我们需要使用`...

Global site tag (gtag.js) - Google Analytics