Linux:不重启系统,识别新加的磁盘设备
如题所示,有时候给Linux系统添加了新的磁盘之后,不希望重启系统就能够识别到新加的设备。
如图所示,我给虚拟机添加了一块100GB的磁盘。
但是,当前的Linux,并没有立即识别到:
1 2 3 4 5 6 7 8 9 10 |
[root@localhost scsi]# fdisk -l Disk /dev/sda: 53.6 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 6527 52323705 8e Linux LVM [root@localhost scsi]# |
这个情况下,可以按如下方式操作:
进入/proc/scsi目录中:
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@localhost scsi]# pwd /proc/scsi [root@localhost scsi]# [root@localhost scsi]# ls device_info mptspi scsi [root@localhost scsi]# [root@localhost scsi]# cat scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 [root@localhost scsi]# |
可以看到当前scsi文件中只有一条记录。
它对应的就是当前的磁盘:/dev/sda。
上面的文件中,需要关注:“Host: scsi0 Channel: 00 Id: 00 Lun: 00”。
分别代表:
“scsi0”,是硬盘所在SCSI控制器号(我的VM只有1个SCSI控制器,所以就是0);
“Channel: 00”,是硬盘所在SCSI通道的编号(一般单通道的就是0,多通道的要看是哪个通道了,这里我的环境中是单通道,故而为:0);
“Id: 00”,是硬盘的SCSI ID号(可以通过具体插入的硬盘插槽来判断);
“Lun: 00”,是硬盘的lun号(默认情况都是0)
关于SCSI控制器与磁盘的SCSI ID编号,可以通过下面几个虚拟机的配置查看清楚:
这里可以很清楚的看到,SCSI控制器只有一个。而Linux中对于SCSI控制器的编号,从0开始计数。
可以看到这块硬盘的SCSI ID为:0:0,表示在0号控制器上,它为第0块硬盘。
可以看到这块硬盘的SCSI ID为:0:1,表示在0号控制器上,它为第1块硬盘。
所以,接下来操作磁盘设备热识别的时候,命令如下:
1 2 |
[root@localhost scsi]# echo "scsi add-single-device 0 0 1 0" > /proc/scsi/scsi [root@localhost scsi]# |
语法如下:
“scsi add-single-device a b c d”
其中,a、b、c、d一次为上面的:
SCSI控制器编号 – a;
SCSI通道编号 – b;
硬盘SCSI ID – c;
硬盘LUN编号 – d;
执行成功后,再次查看/proc/scsi/scsi的内容:
1 2 3 4 5 6 7 8 9 |
[root@localhost scsi]# cat scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi0 Channel: 00 Id: 01 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 [root@localhost scsi]# |
这时候“fdisk”也能看到内容了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@localhost scsi]# fdisk -l Disk /dev/sda: 53.6 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 6527 52323705 8e Linux LVM Disk /dev/sdb: 107.3 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table [root@localhost scsi]# |
至此,Linux系统的新加磁盘的热识别完成。
————————————
Done。
[root@hkkc-vm-oradb0001a scsi]# cat scsi Attached devices:Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00 Type: CD-ROM ANSI SCSI revision: 05Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Host: scsi2 Channel: 00 Id: 01 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02[root@hkkc-vm-oradb0001a scsi]# [root@hkkc-vm-oradb0001a scsi]# echo “scsi add-single-device 2 0 2 0” > /proc/scsi/scsi[root@hkkc-vm-oradb0001a scsi]# [root@hkkc-vm-oradb0001a scsi]# cat scsi Attached devices:Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00 Type: CD-ROM ANSI SCSI revision: 05Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Host: scsi2 Channel: 00 Id: 01 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02Host: scsi2 Channel: 00 Id: 02 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02[root@hkkc-vm-oradb0001a scsi]#