linux下不重启OS增删磁盘
一、背景
负责虚拟化的同事问了一个问题:业务部分有需求,希望在不重启OS的情况下,在虚机系统下识别新增的硬盘。在KVM环境下,我之前有记录过《KVM虚拟机动态增加网卡和硬盘》,但在vmware虚拟化和阿里云(私有云)环境下,通过硬件配置新增后,在主机OS里通过fdisk -l 是看不到新增的盘的,不过在/proc/scsi/scsi 文件中一般可以读取到该文件。如何正常识别呢?接下来记录下方法。
二、识别新盘
查看当前盘信息:
1[root@361way ~]# fdisk -l
2Disk /dev/sda: 107.4 GB, 107374182400 bytes
3255 heads, 63 sectors/track, 13054 cylinders
4Units = cylinders of 16065 * 512 = 8225280 bytes
5Sector size (logical/physical): 512 bytes / 512 bytes
6I/O size (minimum/optimal): 512 bytes / 512 bytes
7Disk identifier: 0x00057e3c
8 Device Boot Start End Blocks Id System
9/dev/sda1 * 1 26 204800 83 Linux
10Partition 1 does not end on cylinder boundary.
11/dev/sda2 26 1332 10485760 83 Linux
12/dev/sda3 1332 2376 8388608 82 Linux swap / Solaris
13/dev/sda4 2376 13055 85777408 5 Extended
14/dev/sda5 2376 13055 85776384 83 Linux
15[root@361way ~]# cat /proc/scsi/scsi
16Attached devices:
17Host: scsi1 Channel: 00 Id: 00 Lun: 00
18 Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
19 Type: CD-ROM ANSI SCSI revision: 05
20Host: scsi2 Channel: 00 Id: 00 Lun: 00
21 Vendor: VMware Model: Virtual disk Rev: 1.0
22 Type: Direct-Access ANSI SCSI revision: 02
发现,只有一块盘(另一个为CD-ROM)。此时通过虚拟化管理平台新增一块盘:
此时再在系统下查看下:
1#查看当前的设备信息
2[root@361way ~]# fdisk -l|grep Disk
3Disk /dev/sda: 107.4 GB, 107374182400 bytes
4Disk identifier: 0x00057e3c
5[root@361way ~]# cat /proc/scsi/scsi |grep Channel
6Host: scsi1 Channel: 00 Id: 00 Lun: 00
7Host: scsi2 Channel: 00 Id: 00 Lun: 00
8#增加设备号到scsi虚文件
9[root@361way ~]# echo 'scsi add-single-device 2 0 1 0' > /proc/scsi/scsi
10#重新查看磁盘信息
11[root@361way ~]# fdisk -l|grep Disk|grep dev
12Disk /dev/sda: 107.4 GB, 107374182400 bytes
13Disk /dev/sdb: 2147 MB, 2147483648 bytes
14[root@361way ~]# cat /proc/scsi/scsi |grep Channel
15Host: scsi1 Channel: 00 Id: 00 Lun: 00
16Host: scsi2 Channel: 00 Id: 00 Lun: 00
17Host: scsi2 Channel: 00 Id: 01 Lun: 00
我们接下来再来看下上面的命令,具体的解释:
1echo "scsi add-single-device x y z u" > /proc/scsi/scsi
2
3其中:
4x是硬盘所在SCSI控制器号(一般机器就一个SCSI控制器,所以就是0);
5y是硬盘所在SCSI通道的编号(一般单通道的就是0,多通道的要看是哪个通道了);
6z是硬盘的SCSI ID号(可以通过具体插入的硬盘插槽来判断,一般是在前一个号码+1);
7u是硬盘的lun号(默认情况都是0)
三、移除磁盘
同理,如果通过虚拟化平台移除硬盘后,在系统下看到未生效的,也可以通过如下命令进行移除:
1echo "scsi remove-single-device x y z u" >/proc/scsi/scsi
另外也有提到可以通过重新扫盘,识别新盘或移除旧盘,命令如下:
1echo '- - -' > /sys/class/scsi_host/host0/scan
注意:三个横线之间有空格
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/linux-add-remove-disk/5657.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.