微信号:dellemc_tech

介绍:为戴尔易安信客户提供技术支持服务,为广大IT行业用户分享技术文章与行业信息。

Linux系统SCSI磁盘管理全攻略(二)

2017-04-25 17:08 EMC中国技术社区

本系列文章系统、全面地介绍了Linux 的SCSI设备管理机制和整套操作命令。


包括以下六大主题:

  1. Linux SCSI子系统概述

  2. Linux主机LUN识别

  3. 动态SAN网络重配

  4. LUN发现步骤

  5. Linux设备命名

  6. SCSI磁盘限制

附:SCSI磁盘问题识别与解决方法

 

系列文章第一篇看这里:

Linux系统SCSI磁盘管理全攻略(一)


作为系列之二,本文主要介绍LUN发现步骤和Linux设备命名两大主题,解答用户常见问题乳:Linux驱动除了LUN 0以外,没有自动配置其他LUN怎么办?Linux磁盘的命名规则是什么?

 

 

LUN发现步骤:

 

如果用户的Linux驱动除了LUN 0以外,没有自动配置其他LUN,用户可以根据SCSI中间层驱动使用的参数和设置来手动配置。以下示例显示了Linux主机/proc/scsi/scsi文件中,各适配器端口仅配置了第一个LUN,即LUN 0的情况。

 

# cat proc/scsi/scsi

...

Host: scsi0 Channel: 00 Id: 00 Lun: 00

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi0 Channel: 00 Id: 15 Lun: 00

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi2 Channel: 00 Id: 00 Lun: 00

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi3 Channel: 00 Id: 00 Lun: 00

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi3 Channel: 00 Id: 01 Lun: 00

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

 

解决这一问题有两种方式:

  1. 创建脚本在/proc/scsi/scsi文件中手动添加磁盘设备

  2. 通过修改initrd设置系统启动时自动发现LUN

 

创建脚本echo /proc文件系统


使用scsi add-single-device命令连续配置分配给主机的所有LUN。写一个脚本为各主机适配器重复scsi add-single-device命令,从而给每一个LUN配置ID。该脚本必须扫描所有主机适配器端口并识别分配给各端口的所有LUN。

 

脚本运行结束之后,用户可以在/proc/scsi/scsi文件中查看分配的所有LUN。

以下示例列出脚本配置所有LUN之后的/proc/scsi/scsi文件。

# cat proc/scsi/scsi

...

Host: scsi3 Channel: 00 Id: 01 Lun: 00

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi3 Channel: 00 Id: 00 Lun: 01

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi3 Channel: 00 Id: 00 Lun: 02

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi3 Channel: 00 Id: 00 Lun: 03

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

Host: scsi3 Channel: 00 Id: 00 Lun: 04

  Vendor: EMC      Model: SYMMETRIX    Rev: 5773

  Type:   Direct-Access                    ANSI SCSI revision: 04

...


在系统启动时自动发现LUN


第二种方法是通过设置SCSI中间层驱动的参数来完成,此参数控制在SCSI总线扫描过程中扫描LUN的数量。以下步骤同时适用于2.4和2.6内核版本,但假定SCSI中间层驱动编译为scsi_mod模块,并在系统启动时自动加载。对于Linux 2.4内核版本,为了发现所有卷,通常在系统中设置为磁盘设备的最大数量,用户需要设置SCSI中间层驱动的max_scsi_luns参数。例如,如果max_scsi_luns设置为1则SCSI总线只扫描到LUN 0。此参数应当设置为内核能够支持的最大磁盘数量,例如,128或256。在Linux 2.6内核中,可使用同样的步骤,除了参数名从max_scsi_lun更改为max_lun。


  • 编辑/etc/modules.conf文件

  • 添加以下内容:

options scsi_mod max_scsi_luns=<n>(n表示探测的LUN总数)

  • 保存文件

  • 运行mkinitrd命令重新编译当前内核相应的ram-disk。以下命令示例中,<kernel>为当前运行内核版本,可参见”uname -r”命令的输出,例如:2.4.21-292-smp。

 

SUSE中命令如下:

cd /boot

mkinitrd –k vmlinuz-<kernel> -i initrd-<kernel>

 

Red Hat中命令如下:

cd /boot

mkinitrd –v initrd-<kernel>.img <kernel>

  • 重启主机

  • 验证 /boot/grub/menu.lst文件中,已正确配置了新创建的initrd镜像。

 


Linux设备命名:

 

内核驱动可使用特定的设备文件来控制磁盘设备。映射到同一物理磁盘设备的设备文件可能不止一个。例如,在多路径环境下某一设备配置四条路径,则会有四个不同的设备文件映射到同一设备。

 

设备文件位于/dev目录下,通过major和minor编号访问。光纤通道连接的设备通过sd驱动作为SCSI磁盘设备管理。因此,每一个LUN在/dev目录下有一个对应的设备文件。

 

SCSI磁盘设备有一个以“sd”为前缀的特定设备文件,具有如下命名格式:

/dev/sd[a-z][1-15]


名称中不带数字表示整个磁盘,而名称中有数字则表示磁盘的一个分区。依据惯例,一个SCSI磁盘设备最多可以有16个minor编号。因此,对于一整块磁盘,每块磁盘最多有15个分区,使用一个minor编号来标示整块磁盘(例如/dev/sda),其他15个minor编号用来标示该磁盘的分区(例如/dev/sda1,/dev/sda2,等等)。以下示例显示整块磁盘/dev/sda的设备文件,该设备major编号为8,minor编号为0,有15个分区。


# ls -l /dev/sda*

brw-rw----  1 root disk  8,   0 May 24 08:09 /dev/sda

brw-rw----  1 root disk  8,   1 May 24 08:09 /dev/sda1

brw-rw----  1 root disk  8,  10 May 24 08:09 /dev/sda10

brw-rw----  1 root disk  8,  11 May 24 08:09 /dev/sda11

brw-rw----  1 root disk  8,  12 May 24 08:09 /dev/sda12

brw-rw----  1 root disk  8,  13 May 24 08:09 /dev/sda13

brw-rw----  1 root disk  8,  14 May 24 08:09 /dev/sda14

brw-rw----  1 root disk  8,  15 May 24 08:09 /dev/sda15

brw-rw----  1 root disk  8,   2 May 24 08:09 /dev/sda2

brw-rw----  1 root disk  8,   3 May 24 08:09 /dev/sda3

brw-rw----  1 root disk  8,   4 May 24 08:09 /dev/sda4

brw-rw----  1 root disk  8,   5 May 24 08:09 /dev/sda5

brw-rw----  1 root disk  8,   6 May 24 08:09 /dev/sda6

brw-rw----  1 root disk  8,   7 May 24 08:09 /dev/sda7

brw-rw----  1 root disk  8,   8 May 24 08:09 /dev/sda8

brw-rw----  1 root disk  8,   9 May 24 08:09 /dev/sda9

 

对于Red Hat版本,内核实际上为128个设备创建了设备文件。对于SUSE,只有前16块磁盘有设备文件。用户必须使用mknod命令为其他磁盘创建设备文件。在2.6内核版本中,只有在内核发现并识别出设备时才能创建设备文件。/proc/partitions文件列出所有SCSI磁盘驱动识别出的“sd”设备,包括sd名,major编号,minor编号,以及各磁盘设备的大小。

 

以下示例列出/proc/partitions文件的内容:

# cat /proc/partitions

major minor  #blocks  name

 

   8     0   17774160 sda

   8     1    1052226 sda1

   8     2     208845 sda2

   8     3   10490445 sda3

   8    16     976576 sdb

   8    32     976576 sdc

   8    48     976576 sdd

   8    64     976576 sde

   8    80     976576 sdf

   8    96     976576 sdg

   8   112     976576 sdh

   8   128     976576 sdi

   8   144     976576 sdj

   8   160     976576 sdk

   8   176     976576 sdl

   8   192     976576 sdm

   8   208     976576 sdn

   8   224     976576 sdo

   8   240     976576 sdp

  65     0     976576 sdq

  65    16    1048576 sdr

  65    32    1048576 sds

  65    48    1048576 sdt

  65    64    1048576 sdu

  65    80    1048576 sdv

  65    96    1048576 sdw

  65   112    1048576 sdx

  65   128    1048576 sdy

  65   144    1048576 sdz

  65   160    1048576 sdaa

  65   176    1048576 sdab

  65   192    1048576 sdac

  65   208    1048576 sdad

  65   224    1048576 sdae

  65   240    1048576 sdaf

  66     0    1048576 sdag

  66    16    1048576 sdah

  66    32    1048576 sdai

  66    48    1048576 sdaj

  66    64    1048576 sdak

  66    80    1048576 sdal

  66    96    1048576 sdam

  66   112    1048576 sdan

  66   128    1048576 sdao

  66   144    1048576 sdap

  66   160    1048576 sdaq

  66   176    1048576 sdar

  66   192    1048576 sdas

  66   208    1048576 sdat

  66   224    1048576 sdau

  66   240    1048576 sdav




其它参考文章:

【存储入门必读】存储基础知识



更多精彩内容,请点击阅读原文”进行查看!

如何每天都能收到如此精彩的文章?

①点击右上角点击查看官方账号”→点击关注

②长按并识别下图中的二维码,直接访问EMC中文支持论坛


 
戴尔易安信技术支持 更多文章 存储基础(二) 为什么客户会选择部署 VMAX 全闪存? Raid-7小七的故事 【新年快乐】EMC中文支持论坛简报(2016年12月下) 2017 新年快乐!
猜您喜欢 Android兼容性系列(三)测试方法 ㊙央视已报到,大家别转发类似微信了,会惹祸上身,太可怕! 大牛讲堂 | 亚马逊AWS大牛Alex Smola做客地平线,解读MXNet 让Docker容器对你『言听计从』 Azure云中配置R Server