开始新对话

未解决

此帖子已超过 5 年

4271

2013年12月15日 18:00

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

​ ​
​ ​

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

​ ​
​ ​

​ ​

​转载请在文首保留原文出处:​​EMC​​中文支持论坛​​https://community.emc.com/go/chinese​

​ ​


​ ​
​ ​

​介绍​

​ ​
​ ​

​ ​

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

​ ​

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

​ ​

​本系列文章系统、全面地介绍了​​Linux ​​的​​SCSI​​设备管理机制和整套操作命令。包括以下六大主题:​

​ ​
    ​ ​
  1. ​Linux SCSI​​子系统概述​
  2. ​ ​
  3. ​Linux​​主机​​LUN​​识别​
  4. ​ ​
  5. ​动态​​SAN​​网络重配​
  6. ​ ​
  7. ​LUN​​发现步骤​
  8. ​ ​
  9. ​Linux​​设备命名​
  10. ​ ​
  11. ​SCSI​​磁盘限制​
  12. ​ ​
​ ​

​ 附:​​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. ​ ​
  3. ​通过修改​​initrd​​设置系统启动时自动发现​​LUN​
  4. ​ ​
​ ​

​ ​

​创建脚本​​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​​表示探测的​​LUN​​总数)​

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

​ ​

​SUSE​​中命令如下:​

​ ​

​cd /boot​

​ ​

​mkinitrd –k vmlinuz- -i initrd- ​

​ ​

​ ​

​Red Hat​​中命令如下:​

​ ​

​cd /boot​

​ ​

​mkinitrd –v initrd- .img ​

​ ​
    ​ ​
  • ​重启主机​
  • ​ ​
  • ​验证​​ ​​/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​

​ ​


​ ​
​ ​

​参考​

​ ​
​ ​

​ ​

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

​ ​

​Linux​​系统​​SCSI​​磁盘扫描机制解析及命令实例​

​ ​


​ ​
​ ​

​应用于​

​ ​
​ ​

​ ​

​Linux​​操作系统​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​
没有回复!
找不到事件!

Top