Linux下MPIO

合集下载

openfoam mpi编译

openfoam mpi编译

OpenFOAM是一个由英国OpenCFD公司开发的开源计算流体力学软件。

它采用C++编程语言,可以在Linux操作系统上运行。

OpenFOAM具有模块化的结构,使得用户可以方便地定制和扩展其功能。

为了加快计算速度,OpenFOAM还支持MPI并行计算。

MPI(Message Passing Interface)是一种用于编写并行程序的标准。

使用MPI,用户可以在多个处理器上同时执行程序,从而加快计算速度。

在OpenFOAM中,MPI被用于加速求解大规模计算流体力学问题的速度。

在本文中,我们将介绍如何在OpenFOAM中使用MPI进行编译。

一、安装MPI库我们需要安装MPI库。

在Linux系统中,MPI一般通过包管理器进行安装。

以Ubuntu系统为例,可以使用以下命令安装MPI库:sudo apt-get install mpich二、配置MPI环境安装完MPI库后,需要配置MPI环境。

在OpenFOAM中,MPI的配置是通过修改OpenFOAM的环境变量来实现的。

我们需要找到OpenFOAM的安装路径,然后在用户目录下找到.bashrc文件,在其中添加如下行:export WM_MPLIB=SYSTEMOPENMPIexport WM_COMPILE_OPTION=mpi其中,WM_MPLIB指定了使用的MPI库,这里我们使用了OpenMPI;WM_COMPILE_OPTION指定了编译选项为MPI。

三、进行编译配置完成后,就可以进行编译了。

需要清理之前的编译结果,可以使用以下命令进行清理:wclean all进行新的编译:wmake这样就可以在OpenFOAM中使用MPI进行编译了。

四、检查编译结果需要检查编译结果是否正确。

可以通过运行一个包含MPI并行计算的例子来验证编译是否成功。

如果例子能够正确运行并且加速效果明显,说明MPI编译成功。

总结通过本文介绍,我们了解了如何在OpenFOAM中使用MPI进行编译。

mpi程序编译

mpi程序编译

MPI(Message Passing Interface)是一种并行计算中常用的编程模型,它提供了一种在多个处理器上并行执行程序的方法。

要编译MPI程序,您需要使用支持MPI的编译器,例如GCC或Intel MPI 库。

以下是在Linux系统上使用GCC编译器编译MPI程序的示例:
1. 编写MPI程序,例如名为“program.c”的源代码文件。

2. 打开终端并进入源代码文件所在的目录。

3. 运行以下命令来编译MPI程序:
```shell
mpicc program.c -o program
```
这将使用mpicc编译器将“program.c”编译为名为“program”的可执行文件。

4. 运行可执行文件以执行MPI程序:
```shell
./program
```
这将启动MPI程序,并在多个进程上并行执行。

如果您使用的是其他操作系统或编译器,则编译和运行MPI程序的方式可能会有所不同。

请查阅相应的文档以获取更多详细信息。

(完整版)LINUXPPPOEV6服务器搭建测试

(完整版)LINUXPPPOEV6服务器搭建测试

linux 搭建 ipv6 的 pppoe server 端近期在做PPP0EV6的测试,就尝试着在linux 搭建pppoe 相关软件,主要是开源软件 ppp-2.4.5 和 rp-pppoe-3.8以下是对网上资料的整理,跳过很多人写的乱七八糟的COPY 完全按下面步骤走就可以了 网络架构 pc ------------ router -------- serverPC: WIN7ROUTER:dlink 860lbServer:DEBIAN 5(这个安好就自带了 ppp rp-pppoe ,但下面我还是讲下如何用 GZ 来安,你可 以用 apt-get autoremove ppp pppoe 将它删了 )如何查看是否安好了,用 dpkg debian:/etc/ppp# dpkg -l | grep ppprc ppp 2.4.5-4 Point-to-Point Protocol (PPP ) - daemon rc pppoe 3.8-3 PPP over Ethernet driver debian:/etc/ppp# dpkg --get-selections | grep pppppppppoe如上,系统自带的被我删了,然后我自己装了这 2 个软件1. 下载 ppp-2.4.5.tar.gz 、rp-pppoe-3.8.tar.gz2. 安装a. 将 ppp 、rp-pppoe 解压b. 安装pppdcd ppp-2.4.5/pppdvi Makefile.linux 开启 HAVE_INET6=y // 关键点,不然不支持 IPV6cd ppp-2.4.5./configure(备注:先 make clean 一下,确保 HAVE_INET6开启)makemake installc. 安装 rp-pppoecd rp-pppoe/src./configure --enable-plugin=/opt/ppp-2.4.5// 这句好像没什么意义makemake install3. 修改配置文件vim /etc/ppp/pppoe.conf修改下面几个值,其他的不要动ETH=eth0USER=rp-pppoe //拨号用户名LINUX_PLUGIN=/etc/ppp/plugi ns/rp-pppoe.sovim /etc/ppp/pppoe-server-optio nsdeinstall deinstall下面是全部内容# PPP options for the PPPoE server# LIC: GPLrequire-chap // 表示会用至U chap-secrets 文件#logi nlcp-echo-i nterval 10lcp-echo-failure 2+ipv6ipv6 ::1,::2SERVER^分到一个FE80::1/10的地址,ROUTER会分到一个FE80::2/10的地址,然后我们需要配置dibbler才能让ROUTER拿到GLOBAL地址vim /etc/ppp/chap-secrets# Secrets for authe nticati on using CHAP# clie nt server secret IP addressesrp-pppoe * rp-pppoe *用*代替地址,这个表是CHAP认证的账号和密码对照表,所以实际上我们拨号的账号密码都是rp-pppoevim opti onslocal4. 开启server端pppoe-server -I eth05. 页面和配置效果PPPOEV6 ONLY设置»互联W» IPv6拨号成功以后可以看到PPP0 分配了一个本地地址FE80::2/10 ppp0 Link encap:Point-to-Point Protocol inet6 addr: fe80::2/10 Scope:LinkUP POINTOPOINT RUNNING NOARP MULTICASTMTU:1492 Metric:1RX packets:7 errors:0 dropped:0 overruns:0 frame:0TX packets:17 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3RX bytes:196 (196.0 B) TX bytes:1291 (1.2 KiB)但是我们还没有拿到GLOBAL地址,所以我们需要在debian上跑radvd和dibbler来给PPP接口分配地址1. STATELES S情况,这种模式下只跑RADVD就可以了,RADVD的配置文件如下Vim /etc/radvd.confinterface ppp0 {AdvSendAdvert on;MinRtrAdvInterval 3;MaxRtrAdvInterval 10;AdvDefaultPreference high;AdvHomeAgentFlag off;IgnoreIfMissing on; // 这个很关键AdvManagedFlag off; // 这个很关键AdvOtherConfigFlag off; // 这个很关键prefix 2001::/96 {AdvOnLink on;AdvAutonomous on; // 让PPP接口根据PREFIX生成地址AdvRouterAddr on;};RDNSS 2001::1 2001::2 {AdvRDNSSPreference 8; AdvRDNSSLifetime 30;};};然后看效果,GLOBAL地址成功分配ppp0 Link encap:Point-to-Point Protocolinet6 addr: 2001::2/64 Scope:Globalinet6 addr: fe80::2/10 Scope:LinkUP POINTOPOINT RUNNING NOARP MULTICASTMTU:1492 Metric:1RX packets:47 errors:0 dropped:0 overruns:0 frame:0TX packets:13 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3RX bytes:5452 (5.3 KiB) TX bytes:1439 (1.4 KiB)cat /etc/resolv.conf# Auto-Generatednameserver 192.168.0.1search但是RDNSS没有解析成功,没拿到DNS地址,看来只有换STATEFU蟆式2. STATEFU蟆式,既要配置RADVD又要配置DIBBLERVim /etc/radvd.conf 注意红色部分的不同interface ppp0{AdvSendAdvert on;MinRtrAdvInterval 3;MaxRtrAdvInterval 10;AdvDefaultPreference high;AdvHomeAgentFlag off;IgnoreIfMissing on;AdvManagedFlag on;AdvOtherConfigFlag on;prefix 2001::/96{AdvOnLink on;AdvAutonomous off;AdvRouterAddr on;};RDNSS 2001::1 2001::2AdvRDNSSPreference 8; AdvRDNSSLifetime 30;};};红色部分意思是RADVD不分配地址,用DIBBLER来分,原理就是协议上规定的M和0值Vim /etc/dibbler/server.conf# Logging level range: 1(Emergency)-8(Debug) log-level 8# Don't log full datelog-mode short# set preference of this server to 0 (higher = more prefered)preference 0{iface "ppp0" {// also ranges can be defines, instead of exact values t1 1800-2000t2 2700-3000prefered-lifetime 3600valid-lifetime 7200class {pool 2000::/64}# assign temporary addresses from this poolta-class {pool 3000::/96}#assign /96 prefixes from this poolpd-class {pd-pool 3000:458:ff01:ff03:abcd::/80pd-length 96}option dns-server 2000::ff,2000::fe}有时候会发生不回报文的问题,红色部分pppO表示在这个接口上跑dibbler然后我将pppO改成ethO,居然成功了,但第二次失败,又改回pppO,成功,后来我发现原来是因为PPPO接口建立之前带DIBBLER会不能通信,必须在PPP0建立后把DIBBLER带起来, 这个BUG看来需要自己研究配置文件才行了,暂时放着成功以后分得GLOBAL地址pppO Link en cap:Po in t-to-Po int Protocolinet6 addr: 2000::ea5c:2de2:713e:a561/96 Scope:Globalinet6 addr: fe80::2/10 Scope:Li nkUP POINTOPOINT RUNNING NOARP MULTICAS1MTU:1492 Metric:1RX packets:56 errors:。

linux 中cfg80211_ops的调用关系

linux 中cfg80211_ops的调用关系

cfg80211 是Linux 内核中用于处理无线局域网(WLAN)配置的子系统。

cfg80211_ops 是这个子系统中的一个关键结构体,它包含了一系列的操作函数指针,用于实现不同的无线功能。

这些操作函数通常会被设备驱动程序实现,并通过cfg80211_ops 结构体注册到cfg80211 子系统中。

下面是cfg80211_ops 中一些重要操作函数的调用关系:add_virtual_intf: 当需要添加虚拟接口时,cfg80211 子系统会调用此函数。

这通常发生在创建新的无线网络接口(如wlan0、wlan1 等)时。

del_virtual_intf: 当需要删除虚拟接口时,cfg80211 子系统会调用此函数。

change_virtual_intf: 当需要修改虚拟接口的属性时,cfg80211 子系统会调用此函数。

add_key 和del_key: 当需要添加或删除加密密钥时,cfg80211 子系统会调用这些函数。

get_station: 当需要获取与某个站点相关的信息时,cfg80211 子系统会调用此函数。

dump_station: 用于导出与站点相关的信息,通常用于调试或诊断目的。

set_wiphy_params: 当需要设置无线硬件参数时,cfg80211 子系统会调用此函数。

set_tx_power: 用于设置发射功率。

get_tx_power: 用于获取当前的发射功率。

set_rts_threshold: 设置RTS 阈值。

set_frag_threshold: 设置分片阈值。

此外,还有许多其他的操作函数,用于处理不同的无线功能和事件,如扫描、连接、断开连接、认证、关联等。

设备驱动程序在实现这些操作函数时,通常会与硬件进行交互,以实现相应的功能。

一旦驱动程序注册了cfg80211_ops 结构体,cfg80211 子系统就可以在需要时调用这些操作函数。

需要注意的是,具体的调用关系可能会因不同的设备和驱动程序而有所差异。

linux ops调用流程

linux ops调用流程

linux ops调用流程
Linuxops调用流程是Linux内核中常见的一种操作方式,它是
由一组特定的函数组成的。

这些函数可以被设备驱动程序使用,以便在用户空间和内核空间之间进行数据传输。

整个调用流程可以分为以下几个步骤:
1. 调用open函数:当用户程序打开设备文件时,系统会调用设备驱动程序中的open函数。

这个函数会初始化设备并返回文件描述符。

2. 调用read函数:当用户程序从设备文件中读取数据时,系统会调用设备驱动程序中的read函数。

这个函数会将设备中的数据读
取到内核空间中,并将其返回到用户空间。

3. 调用write函数:当用户程序向设备文件中写入数据时,系
统会调用设备驱动程序中的write函数。

这个函数会将用户空间中的数据传输到内核空间中,并最终将其写入设备。

4. 调用ioctl函数:当需要进行设备的控制操作时,系统会调
用设备驱动程序中的ioctl函数。

这个函数可以进行一些特殊的控制操作,例如设置设备的参数等。

5. 调用close函数:当用户程序关闭设备文件时,系统会调用
设备驱动程序中的close函数。

这个函数会释放设备资源并关闭设备。

总的来说,Linux ops调用流程是一个在内核空间和用户空间之间进行数据传输的重要过程。

通过了解调用流程,我们可以更好地理解Linux内核的运作机制,并且可以更加高效地编写设备驱动程序。

linux中iotop实现原理

linux中iotop实现原理

linux中iotop实现原理iotop是一个基于Linux系统的I/O监控工具,旨在帮助用户发现和分析系统中的I/O瓶颈和问题。

实现原理:当用户在Linux系统中执行iotop命令时,iotop工具会读取/proc目录下的I/O统计信息,并使用这些数据进行分析和显示。

具体来说,iotop会使用以下两个文件来获取I/O统计信息:1. /proc/diskstats:该文件中包含了磁盘的I/O统计信息,包括每个磁盘的读写操作次数、读写字节数、块设备队列长度等数据。

2. /proc/self/io:该文件中包含了当前进程的I/O统计信息,包括进程的读写操作次数、读写字节数、读写操作等待时间等数据。

通过读取这些文件,iotop可以获得系统中每个进程的I/O使用情况(包括磁盘的I/O使用情况),并将其按照I/O使用率进行排序和显示。

同时,iotop还可以通过参数的设置,实现不同维度的I/O监控,例如:-显示每个进程的I/O使用情况(默认模式);-显示每个磁盘的I/O使用情况(使用-d参数);-显示I/O使用情况的累计值(使用-a参数);-显示I/O使用情况的实时变化(使用-P参数)等。

总之,iotop通过读取系统中的I/O统计信息,结合各种参数的设置,实现了对系统中I/O使用情况的全面监控和分析。

总结:Iotop工具是一个基于Linux系统的I/O监控工具,通过读取/proc目录下的I/O统计信息来实现对系统中I/O使用情况的全面监控和分析。

其主要实现原理是通过读取/proc/diskstats和/proc/self/io等文件来获取系统中每个进程和磁盘的I/O使用情况,并将其排序和显示。

同时,通过参数的设置,可以实现不同维度的I/O监控。

linux parallel --pipe 的用法

linux parallel --pipe 的用法

linux parallel --pipe 的用法Linux Parallel --pipe的用法Linux Parallel是一个命令行工具,用于将任务并行处理,提高任务执行的效率。

其中的--pipe选项可以帮助用户更好地利用多核处理器,提升并行处理的效果。

下面将详细介绍Linux Parallel --pipe的使用方法。

1. 简介Linux Parallel是一个实用工具,可以同时处理多个任务,将任务划分为多个子任务,在多个CPU核心上并行执行,从而加快任务的执行速度。

它支持任务定义、管道传输和结果收集等功能,可以被广泛用于多种场景中。

2. 安装首先,需要在系统上安装Linux Parallel。

可以通过运行以下命令来完成安装:```sudo apt updatesudo apt install parallel```安装完成后,就可以开始使用Linux Parallel了。

3. 基本用法Linux Parallel的基本用法非常简单。

使用--pipe选项可以启用管道传输,并将输入分割成多个子任务执行。

例如,我们有一个包含多行文本的文件input.txt,我们可以使用以下命令将其分割成多个子任务,并通过管道传递给其他命令进行处理:```cat input.txt | parallel --pipe COMMAND```其中,COMMAND是一个具体的命令,用于处理输入文本。

4. 并行处理使用--pipe选项可以实现多个任务的并行处理。

在命令行中指定多个COMMAND,Linux Parallel会将输入分割成多个子任务,并同时在多个CPU核心上执行这些任务。

以下是一个示例,将输入文件input.txt分割成多个子任务,并通过grep命令搜索包含指定关键字的行:```cat input.txt | parallel --pipe grep 'keyword'```在执行上述命令时,Linux Parallel会将输入文件input.txt分割成多个子任务,并同时在多个CPU核心上执行这些子任务,从而加速搜索过程。

of_iomap函数

of_iomap函数

of_iomap函数Linux内核中,of_iomap函数是一个具有重要意义的函数。

该函数能够将一个虚拟地址映射到一个物理地址上,使得程序可以直接使用物理地址来访问对应的硬件内存空间,从而实现对硬件的控制。

of_iomap函数的使用流程如下:1. 应用程序使用设备树节点路径和硬件地址作为输入参数,调用of_find_node_by_path函数,查找设备树中相应的节点。

2. 获得设备树节点后,可以使用of_get_iomap函数获取节点对应的物理地址。

3. 利用获得的物理地址,我们便可以将其映射到虚拟地址空间上。

这里可以使用ioremap函数来实现。

该函数会在内核虚拟地址空间中创建一段映射到物理地址空间中的内存区域,从而实现相应硬件的控制。

在使用完成后,还需要使用iounmap函数来解除映射。

至此,我们已经了解了of_iomap函数的使用流程,下面我们来逐一解析每个步骤。

第一步,of_find_node_by_path函数的作用是查找设备树中的节点。

设备树是Linux内核中用于描述系统硬件的一种树形数据结构。

由于Linux中硬件支持非常广泛,因此设备树是必不可少的一种描述硬件的机制。

of_find_node_by_path函数需要提供一个设备树节点的路径作为参数,例如:“/soc/axi@10000000/axi-gpio@10002000”,该路径是指在设备树中,从根节点(即“/”)开始按层级逐步查找到指定的节点。

第二步,of_get_iomap函数会返回目标节点的物理地址。

在设备树节点中,一般会包含有用于操作设备的寄存器地址信息。

当我们需要访问设备直接的内存时,就可以通过of_get_iomap函数将该节点的物理地址转换为虚拟地址,从而获取对应的内存区域。

第三步,当我们获得了节点的物理地址后,需要将其映射到虚拟地址空间上才能进行后续的操作。

ioremap函数用于在内核虚拟地址空间中创建一段映射到物理地址空间中的内存区域。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux下MPIO一、什么是多路径普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。

而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来连接,这样的话,就构成了多对多的关系。

也就是说,主机到存储可以有多条路径可以选择。

主机到存储之间的IO由多条路径可以选择。

每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。

多路径软件就是为了解决上面的问题应运而生的。

多路径的主要功能就是和存储设备一起配合实现如下功能:1.故障的切换和恢复2.IO流量的负载均衡3.磁盘的虚拟化由于多路径软件是需要和存储在一起配合使用的,不同的厂商基于不同的操作系统,都提供了不同的版本。

并且有的厂商,软件和硬件也不是一起卖的,如果要使用多路径软件的话,可能还需要向厂商购买license才行。

比如EMC公司基于linux下的多路径软件,就需要单独的购买license。

好在, RedHat和Suse的2.6的内核中都自带了免费的多路径软件包,并且可以免费使用,同时也是一个比较通用的包,可以支持大多数存储厂商的设备,即使是一些不是出名的厂商,通过对配置文件进行稍作修改,也是可以支持并运行的很好的。

二、Linux下multipath介绍,需要以下工具包:在CentOS 5中,最小安装系统时multipath已经被安装,查看multipath是否安装如下:1、device-mapper-multipath:即multipath-tools。

主要提供multipathd和multipath等工具和 multipath.conf等配置文件。

这些工具通过device mapper 的ioctr的接口创建和配置multipath设备(调用device-mapper的用户空间库。

创建的多路径设备会在/dev /mapper中)。

2、 device-mapper:主要包括两大部分:内核部分和用户部分。

内核部分主要由device mapper核心(dm.ko)和一些target driver(md-multipath.ko)。

核心完成设备的映射,而target根据映射关系和自身特点具体处理从mappered device 下来的i/o。

同时,在核心部分,提供了一个接口,用户通过ioctr可和内核部分通信,以指导内核驱动的行为,比如如何创建mappered device,这些divece的属性等。

linux device mapper的用户空间部分主要包括device-mapper这个包。

其中包括dmsetup工具和一些帮助创建和配置mappered device的库。

这些库主要抽象,封装了与ioctr通信的接口,以便方便创建和配置mappered device。

multipath-tool的程序中就需要调用这些库。

3、dm-multipath.ko和dm.ko:dm.ko是device mapper驱动。

它是实现multipath 的基础。

dm-multipath其实是dm的一个target驱动。

4、scsi_id:包含在udev程序包中,可以在multipath.conf中配置该程序来获取scsi设备的序号。

通过序号,便可以判断多个路径对应了同一设备。

这个是多路径实现的关键。

scsi_id是通过sg驱动,向设备发送EVPD page80或page83 的inquery命令来查询scsi设备的标识。

但一些设备并不支持EVPD 的inquery 命令,所以他们无法被用来生成multipath设备。

但可以改写scsi_id,为不能提供scsi设备标识的设备虚拟一个标识符,并输出到标准输出。

multipath程序在创建multipath设备时,会调用scsi_id,从其标准输出中获得该设备的scsi id。

在改写时,需要修改scsi_id程序的返回值为0。

因为在multipath程序中,会检查该直来确定scsi id是否已经成功得到。

三、multipath在CentOS 5中的基本配置过程:1、安装和加载多路径软件包# yum –y install device-mapper device-mapper-multipath# chkconfig –level 2345 multipathd on #设置成开机自启动multipathd# lsmod |grep dm_multipath #来检查安装是否正常如果模块没有加载成功请使用下列命初始化DM,或重启系统---Use the following commands to initialize and start DM for the first time:# modprobe dm-multipath# modprobe dm-round-robin# service multipathd start# multipath –v22、配置multipath:Multipath的配置文件是/etc/multipath.conf , 如需要multipath正常工作只需要如下配置即可:(如果需要更加详细的配置,请看本文后续的介绍)blacklist {devnode "^sda"}defaults {user_friendly_names yespath_grouping_policy multibusfailback immediateno_path_retry fail}# vi /etc/multipath.conf3、multipath基本操作命令# /etc/init.d/multipathd start #开启mulitipath服务# multipath -F #删除现有路径# multipath -v2 #格式化路径# multipath -ll #查看多路径如果配置正确的话就会在/dev/mapper/目录下多出mpath0、mpath1等之类设备。

用fdisk -l命令可以看到多路径软件创建的磁盘,如下图中的/dev/dm-[0-3]4、multipath磁盘的基本操作要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行. 在对多路径软件生成的磁盘进行分区之前最好运行一下pvcreate命令:# pvcreate /dev/mapper/mpath0# fdisk /dev/mapper/mpath0用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会。

fdisk对多路径软件生成的磁盘进行分区之后,所生成的磁盘分区并没有马上添加到/dev/目录下,此时我们要重启IPSAN或者FCSAN的驱动,如果是用iscsi-initiator来连接IPSAN的重启ISCSI服务就可以发现所生成的磁盘分区了# service iscsi restart# ls -l /dev/mapper/如上图中的mpath0p1和mpath1p1就是我们对multipath磁盘进行的分区# mkfs.ext3 /dev/mapper/mpath0p1 #对mpath1p1分区格式化成ext3文件系统# mount /dev/mapper/mpath0p1 /ipsan/ #挂载mpath1p1分区四、multipath的高有配置以上都是用multipath的默认配置来完成multipath的配置,比如映射设备的名称,multipath 负载均衡的方法都是默认设置。

那有没有按照我们自己定义的方法来配置multipath呢,当可以。

1、multipath.conf文件的配置接下来的工作就是要编辑/etc/multipath.conf的配置文件multipath.conf主要包括blacklist、multipaths、devices三部份的配置blacklist配置blacklist {devnode "^sda"}Multipaths部分配置multipaths和devices两部份的配置。

multipaths {multipath {wwid **************** #此值multipath -v3可以看到alias iscsi-dm0 #映射后的别名,可以随便取path_grouping_policy multibus #路径组策略path_checker tur #决定路径状态的方法path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法}}Devices部分配置devices {device {vendor "iSCSI-Enterprise" #厂商名称product "Virtual disk" #产品型号path_grouping_policy multibus #默认的路径组策略getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序prio_callout "/sbin/acs_prio_alua %d" #获取有限级数值使用的默认程序path_checker readsector0 #决定路径状态的方法path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法failback immediate #故障恢复的模式no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO 请求的数目}}如下是一个完整的配置文件blacklist {devnode "^sda"}defaults {user_friendly_names no}multipaths {multipath {wwid 14945540000000000a67854c6270b4359c66c272e2f356321alias iscsi-dm0path_grouping_policy multibuspath_checker turpath_selector "round-robin 0"}multipath {wwid 14945540000000000dcca2eda91d70b81edbcfce2357f99eealias iscsi-dm1path_grouping_policy multibuspath_checker turpath_selector "round-robin 0"}multipath {wwid 1494554000000000020f763489c165561101813333957ed96alias iscsi-dm2path_grouping_policy multibuspath_checker turpath_selector "round-robin 0"}multipath {wwid 14945540000000000919ca813020a195422ba3663e1f03cc3alias iscsi-dm3path_grouping_policy multibuspath_checker turpath_selector "round-robin 0"}}devices {device {vendor "iSCSI-Enterprise"product "Virtual disk"path_grouping_policy multibusgetuid_callout "/sbin/scsi_id -g -u -s /block/%n"path_checker readsector0path_selector "round-robin 0"}}获取wwid的方法:(1)默认情况下,将使用/var/lib/multipath/bindings 内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。

相关文档
最新文档