Device Mapper Multipath Configuration

1. Setup Steps

1.1 install and load device mapper (not necessary in RHEL58)

a) install Device Mapper Multipath/DMMP

b) load and check device mapper and multipath modules

c) start the multipathd service

Continue reading

Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下编译 pciutils (lspci, setpci)

pciutils 是 Linux 下查看 PCI/PCIe 设备的利器。可以用来 dump PCI configuration space,可惜在 Windows 平台下类似功能的工具寥寥无几。在 pcituils 的官网(http://mj.ucw.cz/pciutils.html)说明中提到了可以在 Windows 平台下工作。那下面来介绍 Windows 下编译 pciutils 的经验。遗憾的是在 x86_64/amd64 下没有成功,如果各位有成功的经验希望留言来描述下,谢谢。

  1. 下载 pciutils source code。在 ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/ 可以下载到最新的版本。
  2. 然后需要找到编译环境,这里推荐使用 mingw 来编译。mingw 也有许多版本,我是用的是 mplayer 项目的压缩包。(http://nchc.dl.sourceforge.net/project/mplayer-win32/MinGW/MinGW%20BE%20gcc%204.2.5/MinGW-full-gcc-4.2.5-Dec-2010.7z
  3. 再者由于 pciutils 原生是在 Linux 下运用的,在 Windows 下需要提供能够访问 kernel space 的接口,pciutils 使用了 WinIO 来实现这个。所以还要去下载 WinIO,地址在这里 http://www.internals.com/utilities/WinIo.zip
  4. 好了解压好三个包后,运行 mingw 下的 msys.bat。看到的命令行就是操作的环境。其中已经包含了所要使用的 gcc 编译器。需要提的是,由于 pciutils 中的 configure 在 Windows 是没办法使用的。所以要使用预先编制好的 config.h 和 config.mk。这两个文件存放在 pciutils 目录的 win32目录中。将他们拷贝到 lib 目录下。
  5. 然后修改 lib/i386-io-windows.h 文件,找到 lib = LoadLibrary("WinIo.dll");(3.17版本中在第39行),将 WinIo.dll 替换成 WinIo32.dll(当然 64 位系统应该替换成 WinIo64.dll)。保存下。将 WinIo 压缩包中 Binaries 目录下的 WinIo 相对应的 dll 和 sys 文件拷贝到 pciutils 的更目录下。
  6. 接下来就开始正式编译工作了。非常简单,进入到 pciutils 的根目录下,打入 make 稍等片刻,lspci 和 setpci 就生成好了。

Windows 下的 lspci 和 setpci 的使用方法完全和 Linux 中一摸一样。使用 -t 查看 tree view,使用 -xxx 来 dump configuration space, 使用 -vvv 查看具体功能描述,这些都不再赘述。呵呵。

 

pciutils-3.1.7-x86 下载:Download

How to issue SMART command

smartmontools 5.40-1:
For Windows: http://sourceforge.net/projects/smartmontools/files/smartmontools/5.40/smartmontools-5.40-1.win32-setup.exe/download
For Linux: http://sourceforge.net/projects/smartmontools/files/smartmontools/5.40/smartmontools-5.40.tar.gz/download

Table 60 — SMART Feature field values
00h-CFh Reserved  
D0h SMART READ DATA smartctl /dev/sda –a
D1h Obsolete  
D2h SMART ENABLE/DISABLE ATTRIBUTE AUTOSAVE smartctl /dev/sda –S on
D3h Obsolete  
D4h SMART EXECUTE OFF-LINE IMMEDIATE smartctl /dev/sda –t short
D5h SMART READ LOG smartctl /dev/sda –a
D6h SMART WRITE LOG smartctl /dev/sda -t select,10-20
D7h Obsolete  
D8h SMART ENABLE OPERATIONS smartctl /dev/sda -s on
D9h SMART DISABLE OPERATIONS smartctl /dev/sda –s off
DAh SMART RETURN STATUS smartctl /dev/sda -a
DBh Obsolete  
DCh-DFh Reserved  
E0h-FFh vendor specific  

MPIO (Multi-Path I/O) 多路径数据传输,冗余链路

MPIO (Multi-Path I/O)  多路径数据传输,是在企业级存储系统中非常常见一种错误挽救的系统配置。优势在于可以在某条传输路径出现故障时,无间断的由另一条路径连接至存储介质继续数据传输。这些都需要软硬件上的支持,需要 2 套或者 2 套以上的硬件系统设备,以及额外的软件解决方案支撑。

最简单的例子是将一颗 SCSI 硬盘连接至同一系统上的 2 块独立 SCSI 控制器上。

对于 SAS 设备,每个设备都有唯一的 2 个 SAS Address (WWN,World Wide Name),一般情况下是连续的 2 组 ID。对应于 2 组 SAS PHY,可以用于配置为 MPIO 冗余链路。在没有安装 MPIO 驱动或者软件的情况下,系统会将一个 SAS 设备侦测为 2 个独立的设备。只有正确配置 MPIO 后,才能发挥 MPIO 的作用。如下图。


SAS 硬盘

MPIO 驱动或者软件能够通过多条路径提供性能上的增强:

  1. 动态负载平衡
  2. 流量控制
  3. 路径管理
  4. 动态重配置

现在主流的系统和厂商都已提供了 MPIO 的支持,如 Windows 2008 的 Microsoft Multi-Path I/O,LSI MegaRAID,可以参考:http://en.wikipedia.org/wiki/Multipath_I/O