虚拟并行运算环境 mpi 的配置简介科研菜鸟 v2.0 http://blog.sciencenet.cn/u/sanshiphy 问题 : 有一台电脑,1 cpu, 超线程 8 核, 已安装 Ubuntu 系统 现配置两台虚拟机, 每台虚拟机 1cpu,3 核, 两台虚拟机均安装 Ubuntu server 系统, 并实现 mpi 并行运算 思路 : 利用 vmware 构造虚拟机, 利用 ssh 实现不同虚拟机之间的免密码访问, 在虚拟机主节点上利用 nfs 服务器设置不同节点之间的共享文件夹 说明 : 宿主机的代码用绿色表示,node1 用红色表示,node2 用蓝 色表示 步骤 : 1) 利用 vmware 建立虚拟机, 并进行配置 下载 VMware Workstation, 在 linux 下的程序的扩展名是.bundle chmod +x Full-*.x86_64.bundle sudo./full-*.x86_64.bundle 按提示安装好 vmware, 打开 vmware, 添加 2 台虚拟机, 按提示安装虚拟机操 作系统 每台虚拟机器均建立一个名称相同的用户, 本例建立的用户名均为 sa nshi-vm. 两台虚拟机的 hostname 分别改为 node1( 主节点 ) 和 node2( 在 /etc/hostname 文件中修改 ) 本例中 ip 自动分配的, 利用 ifconfig 查看 node1/node2 的 ip 地址 将 ip 地址添加到域名文件中, 例如 : vim /etc/hosts
192.168.46.130 node1 192.168.46.125 node2 vim /etc/hosts 192.168.46.130 node1 192.168.46.125 node2 修改完成后, 重启 node1 和 node2 2) 利用 ssh 实现不同虚拟机之间的免密码访问 ssh-keygen -t rsa cd.ssh cat id_rsa.pub >> authorized_keys ssh node1 # 能实现自访问 如不能实现自访问, 查看 ssh 是否已安装 ssh-keygen -t rsa scp sanshi-vm@node1:~/.ssh/*./ ssh node2 ssh node1 ssh node2 # 能实现自访 # 能实现互访 3) 配置 nfs 服务器 sudo apt-get install nfs-kernel-server sudo apt-get install nfs-common sudo apt-get install portmap mkdir /home/sanshi-vm/cluster sudo vi /etc/exports /home/sanshi-vm/cluster *(rw,sync,no_subtree_check) # 在文件末尾添加这一行 sudo exportfs -r sudo systemctl start portmap sudo systemctl start nfs-kernel-server
sudo apt-get install nfs-kernel-server sudo apt-get install nfs-common sudo apt-get install portmap mkdir /home/sanshi-vm/cluster sudo mount -t nfs node1:/home/sanshi-vm/cluster /home/sanshi-vm/clus ter # 每次重启需重新挂载 4) 安装 mpich 及多节点配置 下载 mpich-3.2.tar.gz, tar xvf mpich-3.2.tar.gz cd mpich-3.2./configure --prefix=/home/sanshi-vm/cluster/mpich make make install vim ~/.bashrc PATH=$PATH:/home/sanshi-vm/cluster/mpich/bin MANPATH=$MANPATH:/home/sanshi-vm/cluster/mpich/man export PATH MANPATH scp sanshi-vm@node1:~/.bashrc ~/ source ~/.bashrc touch /home/sanshi-vm/cluster/mpich/servers vim /home/sanshi-vm/cluster/mpich/servers 添加 : node1:3 # node1 上运行三个线程 node2:3 5) 测试 cp -r./examples /home/sanshi-vm/cluster/mpich/ # 将安装包中的文件拷贝到程序所在的文件夹 mpirun -np 4 /home/sanshi-vm/cluster/mpich/examples/cpi # 单节点运行示例程序
mpiexec -np 4 -f /home/sanshi-vm/cluster/mpich/servers /home/sanshi-vm/cluster/mpich/examples/cpi # 多节点运行示例程序 6) 问题 > 如何实现主机与虚拟机之间互传文件? 利用 scp, 例如 : scp -r /usr/local/ncl-6.3.0/ sanshi-vm@192.168.41.128:~/cluster1 如果出现 permission denied, 则需要利用 chrgp 和 chown 修改 ~ /cluster1 的用户组和所属用户 > 如何给虚拟机的硬盘增加容量? 利用 vmware 扩展硬盘的容量 ( 例如 : 右键 node1->settings->hardware->hard Disk->Disk Utilities->Expand Disk), 注意设置扩展容量时是总容量 = 旧分区容量 + 实际扩展的容量
扩展后利用 fdisk 给硬盘设置分区 : fdisk -l # 查看所有硬盘设备, 例如 :/dev/sda1 是已有的旧分区, /dev/sda2 是扩展的部分, 还未分区 sudo fdisk /dev/sda # 进入 fdisk 对话环境,/dev/sda 是需要设置分 区的盘符 m # 查看可执行命令 n # 添加新分区 p # 创建主分区 然后一路回车, 采用默认设置即可 w # 保存设置 Reboot 后格式化分区 :mkfs.ext4 /dev/sda2 创建挂载新分区的目录 :mkdir /home/sanshi-vm/cluster1 修改 /etc/fstab, 保证每次开机时自动挂载 /dev/sda2: sudo vim /etc/fstab 在文件尾添加 : /dev/sda2 /home/sanshi-vm/cluster1 ext4 errors=remount-ro 0 1 ( 后面部分参数可照抄 /dev/sda1 的设置 ) 参考文献 : https://wenku.baidu.com/view/1a5313c7e518964bce847c3e.html http://www.linuxidc.com/linux/2016-09/135483.htm
http://www.linuxidc.com/linux/2011-02/32083.htm http://zhaochj.blog.51cto.com/368705/1719640