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