日期:2014-05-16  浏览次数:20856 次

Linux下磁盘顺序混乱的情况
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命令sda1sdb1设置标签:

/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

当然,以两种都不影响系统文系统启动采变通,实际系统管理时还密切注意底层设备,否则如果出现磁盘分区误除罪过就