VMWare 克隆多台 Linux 虚拟机

本文最后更新于:2025年5月12日

一、准备操作

1. 硬件要求:推荐 16G 内存以上电脑(8G 开启多台虚拟机可能会导致系统卡顿)。

2. 请确保 VMware 上安装了 Linux 虚拟机,需要安装 Linux 虚拟机的小伙伴,根据自己的实际需求点击下方链接查看安装教程:

CentOS Ubuntu Debian
点我查看 点我查看 点我查看

3. 强烈推荐 Linux 虚拟机配置静态 IP,配置静态 IP 的主要好处是确保服务器 IP 地址固定,避免动态分配导致的网络中断或服务不可达问题。根据自己安装的 Linux 发行版本查看配置教程:

CentOS Ubuntu Debian
点我查看 点我查看 点我查看

4. 上述内容没有问题后,接下来我么就可以克隆多台虚拟机了。这里我使用的是 Debian 虚拟机(已经配置好静态 IP),克隆两台虚拟机(具体克隆数量根据自己实际需求和电脑性能决定),以下是规划图:

以下是配置教程。

二、克隆虚拟机

1. 选择一台处于关机状态的 Debian 虚拟机,按照下图所示进行操作:

2. 点击下一页

3. 克隆源选择第一个虚拟机中的当前状态,然后点击下一页

4. 克隆方式选择第二个创建完整克隆,然后点击下一页

5. 虚拟机名称,按照上述规划,我将虚拟机名称命名为 debian101(根据自己实际情况调整),然后点击完成,开始克隆:

6. 克隆中,请耐心等待:

7. 克隆完成,点击关闭

8. 克隆另一台虚拟机的步骤和上述步骤完全一样,只需要注意将克隆的虚拟机名称命名为 debian102,选好克隆位置即可,这里不再赘述。

三、修改 MAC 地址

这里我已经克隆出两台虚拟机,但是在正式使用之前,我们需要先修改两台虚拟机对应的 MAC 地址。

这里我以 debian101 举例(debian102 的操作步骤和下面的描述完全相同):

1. 鼠标右键点击克隆的虚拟机,点击设置

2. 在设置的界面选择网络适配器,然后在右下角点击高级

3. 点击下方生成,重新生成一个 MAC 地址,完成后点击确定

4. 点击确定,完成配置:

四、虚拟机的配置

说明:

  1. 这一部分演示的是 debian100 的操作过程,debian101/debian102 的操作配置基本相同,只需要注意修改对应的主机名和 IP 地址;
  2. 为了避免 IP 冲突,在配置过程中,只需要开启一台虚拟机,配置完成后,当前虚拟机关机,然后再开启下一台虚拟机进行配置。

1. 开启虚拟机 debian100 并登录到 root 用户:

2. 虚拟机成功启动并使用 root 登录后,修改当前主机名称:

1
vim /etc/hostname

3. 这里默认显示的是原始虚拟机的主机名称,这里我们将其改为 debian100:

说明:如果你开启的是 debian101,那么就将此处的主机名称命名为 debian101。debian102 也是同理。

4. 保存完成后,编辑 hosts 文件:

1
vim /etc/hosts

5. 根据实际情况,修改 IP 和主机的映射关系:

1
2
3
主机1的IP地址 主机1的名称
主机2的IP地址 主机2的名称
主机3的IP地址 主机3的名称

按照上述修改后的内容如下(具体的修改结果以你们的为准):

1
2
3
192.168.40.100 debian100
192.168.40.101 debian101
192.168.40.102 debian102

6. 在 hosts 文件后面修改之前的映射内容,效果图如下:

7. 将 debian100 的 IP 地址修改成 192.168.40.100,根据 Linux 发行版本查看具体教程:

CentOS Ubuntu Debian
点我查看 点我查看 点我查看

8. 完成上述配置后,重启虚拟机:

1
reboot

9. 至此,克隆虚拟机 debian100 的相关配置完成了。debian101 和 debian102 配置基本上大同小异,只需要在配置注意当前的主机名和 IP 地址即可。

五、配置免密登录

1. 开启三台虚拟机,这里我规划让 debian100 编写指令,然后让三台机器同时执行一条命令。

2. 配置 SSH 免密登录。在 debian100 上执行如下命令:

1
ssh-keygen -t rsa

依次按下回车键即可,后续会生成密钥对:

3. 将生成的密钥分发到 debian100、debian101 和 debian102,依次执行如下命令:

1
2
3
ssh-copy-id root@debian100
ssh-copy-id root@debian101
ssh-copy-id root@debian102

执行此命令要求输入 root 密码(不在命令行中显示):

4. 接下来测试一下使用 root 用户是否能够免密登录到 debian101 和 debian102。这里我以 debian101 进行测试:

1
ssh root@debian101

退出登录,返回 debian100:

1
exit

六、多台主机同时执行一个命令

上述免密登录没有问题,我们就可以通过编写脚本,实现在一台主机编写命令,三台主机同时执行一条命令。

1. 编写一个 parallel-execute 命令:

1
vim parallel-execute

2. 根据实际情况,修改如下脚本内容:

说明:下面的脚本中,需要修改的是 SERVER1/SERVER2/SERVER3 的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash

SERVER1="root@debian100"
SERVER2="root@debian101"
SERVER3="root@debian102"

if [ $# -eq 0 ]; then
echo "Command arg error!"
exit 1
fi

COMMAND="$@"

execute_remote() {
local server=$1
echo "Execute command: $COMMAND"
ssh -o ConnectTimeout=5 "$server" "$COMMAND"
if [ $? -ne 0 ]; then
echo "Execute failed"
fi
echo "----------------------------------------"
}

execute_remote "$SERVER1"
execute_remote "$SERVER2"
execute_remote "$SERVER3"

3. 将修改好的的内容粘贴到 parallel-execute 中,然后保存。

4. 为 parallel-execute 赋予可执行的权限:

1
chmod 744 parallel-execute

5. 脚本的使用:

1
./parallel-execute "命令"

例如:查看三台主机的 /usr/local 目录下有哪些文件和文件夹:

1
./parallel-execute "ls -al /usr/local"

6. 将当前脚本可以在任意目录下使用,只需要将脚本复制到 /bin 目录下即可:

1
cp parallel-execute /bin

7. 在其他目录下也可以执行 parallel-execute 命令:

至此,我们成功实现了在一台主机编写命令,三台主机同时运行一个命令的效果!


VMWare 克隆多台 Linux 虚拟机
https://www.icode504.com/posts/118.html
作者
iCode504
发布于
2025年5月6日
许可协议