介绍

Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命令是什么?本文总结了Linux主机对磁盘设备进行重新配置的方式,并附加命令实例。

更多信息

Linux系统提供多重机制以重新扫描SCSI总线并重认系统中加入的SCSI设备。在2.4内核方案中,由于动态LUN扫描机制不具备一致性,往往需要中断I/O。

2.6内核里,LUN扫描有了显著改进并添加了动态LUN扫描机制。Linux目前缺乏像drvconfig或ioscan那样允许动态SCSI通道重配的命令。

Linux主机对磁盘设备进行重新配置的方式包括:

  • 重启系统
  • 卸载并重新加载HBA驱动模块
  • Echo /proc下的SCSI设备列表
  • 通过/sys下的属性设置运行SCSI扫描
  • 通过HBA厂商脚本运行SCSI扫描

系统重启

重启主机是检测新添加磁盘设备的可靠方式。在所有I/O停止之后方可重启主机,同时静态或以模块方式连接磁盘驱动。系统初始化时会扫描PCI总线,因此挂载其上的SCSI host adapter会被扫描到,并生成一个PCI device。之后扫描软件会为该PCI device加载相应的驱动程序。加载SCSI host驱动时,其探测函数会初始化SCSI host,注册中断处理函数,最后调用scsi_scan_host函数扫描scsi host adapter所管理的所有scsi总线。

重新加载HBA驱动

通常情况下,HBA驱动在系统中以模块形式加载。从而允许模块被卸载并重新加载,在该过程中SCSI扫描函数得以调用。通常,在卸载HBA驱动之前,SCSI设备的所有I/O都应该停止,卸载文件系统,多路径服务应用也需停止。如果有代理或HBA应用帮助模块,也应当中止。

命令示例:

例如,rac节点上某台服务器执行fdisk –l命令看不到共享磁盘,可尝试执行如下命令:

# modprobe -r lpfc(卸载驱动)

# modprobe lpfc(加载驱动)

/proc下SCSI扫描

2.4内核中,/proc文件系统提供了可用SCSI设备的列表。如果系统中SCSI设备重新配置,那么所有这些改变通过echo /proc接口反映到SCSI设备中。添加一个设备,主机,channel,target ID,以及磁盘设备的LUN编号会被添加到/proc/scsi/,需指定scsi编号。

命令示例:

# echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi

0:主机ID

1:channel ID

2:target ID

3:LUN编号

该命令会将新磁盘设备添加到/proc/scsi/scsi文件中。如果没有找到相应文件,需为/dev路径下新增磁盘设备创建设备文件名。

如果要删除一个磁盘设备,使用适当的主机,channel,target ID及LUN编号运行如下格式命令:

# echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi

0:主机ID

1:channel ID

2:target ID

3:LUN编号

/sys下SCSI扫描

2.6内核中,HBA驱动将SCAN功能导出至/sys目录下,可用来重新扫描该接口下的SCSI磁盘设备。命令如下:

# cd /sys/class/scsi_host/host4/

# ls -al scan

# echo ‘- - -’ > scan

‘- - -’代表channel,target和LUN编号。以上命令会导致hba4下所有channel,target以及可见LUN被扫描。

RHEL5 或SUSE10:

echo ‘- - -’  > /sys/class/scsi_host/host0/scan

/sys/class/scsi_host/ 下面有几个host 就扫描几次

RHEL4 或SUSE9:

echo 1 >> /sys/class/scsi_host/host0/issue_lip

同样是/sys/class/scsi_host/ 下面有几个host 就执行几次

echo ‘- - -’ >> /sys/class/scsi_host/host0/scan

在现有PowerPath环境中增加LUN:

1.    1.确保存储端已配置好LUN并输出给Linux 主机

2.    2.通过powermt命令获得HBA 卡列表,并扫描列表中所有的HBA

echo ‘- - -’ > /sys/class/scsi_host/host#/scan

例如, 如果powermt 显示列出HBA 4 和5, 使用如下命令开始扫描:

echo ‘- - -’ > /sys/class/scsi_host/host4/scan

echo ‘- - -’ > /sys/class/scsi_host/host5/scan

3.    3.运行powermt config 配置新认到的磁盘,生成虚拟设备

4.    4.用powermt display 检查新认到的LUN 及设备路径

在现有PowerPath环境中动态删除 LUN

注意,必须严格遵守操作次序,如果次序有误可能会造成主机OS panic。

1.    1.在将要删除的设备上停止所有的I/O。

2.    2.通过以下命令确定虚拟设备对应的原始SCSI设备:

powermt display dev=emcpower

3.    3.删除虚拟设备

powermt remove dev=emcpower

4.    4.回收虚拟设备号以备后用

powermt release

如果此命令失败,已删除的虚拟设备仍会存在于/dev 和/sys/block 下,并且在以后动态添加新LUN时可能会引发问题。

5.    5.对每个原始SCSI 设备执行以下命令:

echo 1 > /sys/block/sd/device/delete

此命令使PowerPath 停止这些原始sd 设备上的I/O 并且将其从/dev 和/sys/block下移除。如此命令执行不成功,在以后动态添加新LUN时可能会引发问题。

6.    6.在存储阵列中删除对应的LUN,执行powermt display 验证设备已被删除。

通过HBA厂商脚本进行SCSI扫描

QLogic

利用QLogic FC HBA LUN Scan Utility 脚本即可无需重启动系统而识别新添加的LUN。也无需对QLogic FC driver 的重新加载。

命令示例:

通过以下命令重新扫描所有HBA:

# ./ql-dynamic-tgt-lun-disc.sh

# ./ql-dynamic-tgt-lun-disc.sh -s

# ./ql-dynamic-tgt-lun-disc.sh –scan

重新扫描并删除丢失的LUN,使用以下两个命令其中任何一个:

# ./ql-dynamic-tgt-lun-disc.sh -s -r

# ./ql-dynamic-tgt-lun-disc.sh --scan –refresh

Emulex

使用 Emulex LUN Scan Utility 脚本可以动态扫描新添加的LUN。

命令示例:

# gunzip lun_scan.sh.gz

# chmod a+x lun_scan

扫描所有lpfc HBA:

# lun_scan all

扫描scsi主机编号2的lpfc HBA:

# lun_scan 2

之后确认OS 识别到新设备:

# fdisk -l

如果系统中有PowerPath ,还需要运行:

# powermt config

参考

EMC Host Connectivity Guide for Linux

应用于

Linux主机Kernel 2.4、2.6版本

RHEL, SUSE

Linux系统SCSI磁盘扫描机制解析及命令实例相关推荐

  1. linux系统scsi硬盘,Linux系统SCSI磁盘管理全攻略(一)

    Linux系统SCSI磁盘管理全攻略(一) 介绍 本系列文章系统.全面地介绍了Linux 的SCSI设备管理机制和整套操作命令.包括以下六大主题:Linux SCSI子系统概述 Linux主机LUN识 ...

  2. Linux 系统查看磁盘空间的五个命令

    工作中,经常会遇到磁盘爆满的情况,尤其是一台服务器运行了 N 年之后,里面会充满各种各样垃圾文件,比如:编译产生的中间文件.打包的镜像文件.日志文件,等等. 别问我怎么知道,我上家公司服务器就是这样的 ...

  3. [Machine Check机制]X86服务器Linux系统对于MCE的Log解析

    X86服务器Linux系统对于MCE的Log解析 Linux Log信息主要包括两部份内容: APEI的GHES(Generic Hardware Error Soure,通用硬件错误源)解析部分,对 ...

  4. Linux系统的磁盘管理

    Linux系统的磁盘管理 一.环境介绍 1.Linux系统版本 2.系统磁盘情况 二.磁盘介绍 1.磁盘分区理解 2.MBR分区方案 2.GPT分区分区方案 三.分区工具fidsk使用 1.查看磁盘和 ...

  5. Linux系统中磁盘创建管理(一)

    Linux系统中磁盘创建管理(一) 在linux系统中安装lvm必要的服务 install lvm-common lvm2 evms Linux系统中有一张分区表,系统在开机之后根据这个表里面的记录来 ...

  6. linux分区变为空闲,分析linux系统中磁盘空闲空间的管理方法

    分析linux系统中磁盘空闲空间的管理方法 汪建国 摘要:要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲块.如何实现存储空间的分配和收回,取决于对空闲块的管理方法,主要有两种对磁盘存 ...

  7. linux的dns怎么配置正向区域文件,linux系统下部署DNS正向解析

    DNS服务概述: DNS(Domain Name System)域名系统,能够提供域名与IP地址的解析服务. 正向解析 正向解析是指域名到IP 地址的解析过程. 部署DNS正向解析 DNS服务的三个配 ...

  8. Linux系统怎么使用扫描仪,Linux系统中Nmap扫描命令的使用方法 -电脑资料

    我们可以使用ping扫描的方法(-sP),与fping的工作方式比较相似,它发送icmp回送请求到指定范围的ip地址并等待响应,证明主机正在运行,反之,则无法判断主机是否开机或者是否在网络上互连. 扫 ...

  9. Linux系统查看磁盘类型

    Linux系统查看磁盘类型 方式1--/sys/block/ 方式2--lsblk 方式3--fdisk 方法4--smartctl 方式1–/sys/block/ 判断cat /sys/block/ ...

最新文章

  1. 二.第五单元     lvm管理
  2. 动态标题_动态打印区域和打印标题
  3. boost::proto模块实现构建算术表达式的简单示例 带有占位符的评估器的测试程序
  4. .Net Core with 微服务 - 使用 AgileDT 快速实现基于可靠消息的分布式事务
  5. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)
  6. 7.Shell 编程从入门到精通 --- 流编辑
  7. 《HBase权威指南》读书笔记(二)
  8. 创业挑战杯获奖作品范例_挑战杯创业计划大赛金奖作品1——【挑战杯获奖作品】...
  9. 小米系列手机开源代码
  10. android获取手机唯一识别号
  11. Node.js v0.10.31API手册-Addons插件
  12. 炸金花游戏(3)--基于EV(期望收益)的简单AI模型
  13. Windows10让资源管理器始终显示文件的详细信息
  14. 好片推荐---《WALL·E》(又名《机器人瓦力》
  15. Python运算符与if结构
  16. 使用charles修改服务器返回数据,Charles使用part4——修改网络请求
  17. “最不合格”的SAP应聘者: 从大学生到SAP成都研究院开发工程师
  18. CentOS7部署fabric
  19. JavaScript最大的秘密
  20. Java中super详解

热门文章

  1. java 绝对路径双斜线_路径分隔符:正斜线/、反斜线\、双反斜线\\的区别
  2. Linux 中CPU占用过高问题
  3. mysql CPU占用过高解决方案
  4. python 发邮件 带附件
  5. 熊猫分发_熊猫实用指南
  6. 第4关 注册配置中心实现
  7. 美国依靠美元霸权, 是如何收割世界财富的?
  8. Spring知识点讲解 【笔记】
  9. 关于以太坊 雷电网络 的思考
  10. 由交通银行卡被盗42万元谈网络应用安全攻防