exsi6.7快速克隆虚拟机

前言

这周一直在重装笔记本的系统。因为公司搬家,也有了充足的时间可以把需要的内容一点一点装上,并配置上。啥?装个系统要一周?是的,确切地说,也用不了。不过如果集中时间来装的话,两到三天还是要的。这次连换硬盘等货,还是浪费了点时间。趁这周也就配置了一下家里的内网。带固定IP可以的家用内网环境搭好了,就有了折腾的基础基于OpenWrt的内网搭建。今天就是继网络环境之后的内容,安装虚拟机。之前关于安装虚拟机整理过一篇Hyper-V快速克隆虚拟机 。这次我们不用Hyper-V,转用esxi6.7。Hyper-V是基于本机的虚拟机搭建环境,更多的用途是用来支撑平时的使用和开发环境。这两种虚拟机环境我的选择思路主要如下:

  • Hyper-V是运行在windows中的虚拟机环境,而esxi6.7是一个独立的虚拟机操作系统。在硬件的虚拟化效率上来说,esxi6.7无疑会更高一些。
  • Hyper-V的虚拟机我主要是使用在随身携带的笔记本上。为了能够支撑足够的虚拟机运行,我已经把内存条插满,扩容到32G了(当年单条32G的DDR4还没出)。但是,我笔记本经常被携带到不通的网络环境中去。所以Hyper-V的网络我配置的是NAT网络。这种网络是很难让其它机器对这些虚拟机进行访问的。而独立的esxi服务器就不同。在家里,它的网络环境相对固定,他上面的一个一个的虚拟机在网络上就是独立的主机,通信起来非常方便。
  • esxi6.7系统本身占用的资源比windows要小的多,毕竟是自己折腾,资源有限。

创建虚拟机

esxi创建虚拟机其实很简单。
虚拟机管理界面
在“虚拟机“界面中,点击“创建/注册虚拟机”,跟随想到创建一个虚拟机就好了。我创建的虚拟机叫ubuntu-prototype。这个时候虚拟机中是没有操作系统的,就相当于与你组装了一台新电脑,插上了一块新硬盘。

上传操作系统

是的,要上传操作系统。因为,我们需要给虚拟机的光驱加载操作系统的ISO文件,但是与Hyper-V不同的是,esxi是一个独立的服务器,你电脑上的ISO文件是不可以直接使用的。
数据存储浏览器
打开“存储”菜单,点击“数据存储浏览器”。我这里只有一个硬盘分配给了esxi,叫datastore1。图中可以看到ubuntu-prototype目录,是刚才创建虚拟机时默认创建的目录。这里我们点击“创建目录”,创建一个叫package的目录,用来存储以后我们上传上来的软件包。然后,选中package目录,点击“上载”,选择你的ISO文件即可。

安装操作系统

编辑虚拟机

上传完操作系统后,我们回到“虚拟机”菜单中,选中我们创建的虚拟机,点击“编辑”。

  • 在CD/DVD驱动器1中,选择“数据存储ISO文件”,病选中刚才我们上传的文件。记得勾选连接。
  • 上面切换到“虚拟机选项”,点开“引导选项”,勾选“虚拟机下次引导时,强制进入BIOS设置画面”
    点击“保存”按钮。

安装

打开电源,这时会默认进入BIOS。不过,因为虚拟机没有操作系统,所以我们没法通过ssh远程访问,点击页面中的画面,就可以直接操作虚拟机了。
在BIOS中,切换到BOOT,将光盘启动移动到第一位,保存退出。然后就会引导我们安装操作系统了。接下来安装的步骤参见我另一篇博客ubuntu操作系统安装机基本配置(20.04)
这里唯一需要注意的就是,为了保证该镜像被克隆后不会与其它机器IP冲突,我们保留网络的DHCP配置,在创建好克隆的虚拟机后再更改网络配置。
安装完成并重启后,之前我们连接的ISO会自动断开,不用操心。
ip可以直接在esxi的页面中看到,不用登录系统后去查。

克隆虚拟机

  1. 准备动作,关闭虚拟机电源。
  2. 创建新的虚拟机的文件夹,我这里是打算用它来装基础设施的 ,所以就叫ubuntu-foundation
  3. 复制.vmx(虚拟机)和.vmdk(虚拟磁盘)到新的文件夹中
  4. 在.vmx文件中点击右键,注册虚拟机
  5. 修改虚拟机名称和硬件信息,并启动虚拟机
  6. 启动虚拟机。这时会提示该虚拟机可能已被移动或者复制。选择我已复制。网卡将会被重新创建,从而不会重复。

修改IP及机器名

首先查询IP信息

ip addr

我查询到的信息如下:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:c7:2c:63 brd ff:ff:ff:ff:ff:ff
    inet 192.168.31.216/24 brd 192.168.31.255 scope global dynamic ens160
       valid_lft 40719sec preferred_lft 40719sec
    inet6 fe80::20c:29ff:fec7:2c63/64 scope link 
       valid_lft forever preferred_lft forever

第一个lo,对应的是127.0.0.1的IP,我们略过不看。第二个ens160对应的是我们的内网IP。
这时我们再打开网络配置文件

sudo vim /etc/netplan/00-installer-config.yaml

由于之前我们安装原型虚拟机时没有配置IP,使用的是动态IP,所以这里ens160下面我们可以看到只有dhcp的配置。完整文件如下:

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens160:
      dhcp4: true
  version: 2

ens160就是我们上面查到的内网IP的网卡,我们要把动态IP改成静态IP。改完后如下:

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens160:
      addresses:
       - 192.168.31.21/24
      gateway4: 192.168.31.1
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
        search: []
  version: 2

文件中我们指定了IP,掩码位数,IPv4的网关和域名解析服务器地址。
执行命令

sudo netplan apply

使网络配置生效。需要注意的是,这个命令执行完了,由于IP地址变更了,所以你的连接也就断了,需要更换IP后重新连接。
修改主机名称:

sudo hostnamectl set-hostname nature.foundation

修改hosts文件

sudo vim /etc/hosts

我这里选择的是把127.0.1.1的host注释掉,其实也可以在原型系统中注释掉。

虚拟机调整

对于原型虚拟机来说,硬件配置其实是很不好调整的。

  • 核心数和内存:这个是最好调整的,可以不关机增加核心数和内存,但是想要减少就必须要关机调整。
  • 磁盘:这个即使我们对虚拟机的磁盘进行了调整,linux中挂载的磁盘大小也不会因此改变。

有鉴于此,原形虚拟机的配置我们基本使用最低配置(1核1G),磁盘大小我这里设置的是默认的16GB。后面需要,我们再调高配置或者挂载磁盘。

修改核心数及内存

这个很好调整,编辑虚拟机,修改并保存就可以了。不过,推荐核心数不要超过物理CPU的核心数,内存也尽量就低不就高。更高的虚拟机配置并不一定意味着更高的性能,但一定会占用更多的资源。

磁盘扩容

ubuntu默认会把大部分的磁盘都挂在在根下面。这样其实蛮好用的。但是,由于esxi会预先把分配的虚拟机的磁盘占用出来。也就是50G的虚拟机就真的占用50G,复制或者传输也是这么大。这样就很不方便。所以,我原型虚拟机选择了16G,需要的时候再进行扩容。

首先查看当前的磁盘状态

df -Th

结果如下

Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  447M     0  447M   0% /dev
tmpfs          tmpfs      99M  1.2M   97M   2% /run
/dev/sda2      ext4       16G  4.8G   11G  33% /
tmpfs          tmpfs     491M     0  491M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     491M     0  491M   0% /sys/fs/cgroup
/dev/loop1     squashfs   62M   62M     0 100% /snap/core20/1270
/dev/loop2     squashfs   55M   55M     0 100% /snap/core18/1705
/dev/loop3     squashfs   73M   73M     0 100% /snap/lxd/22147
/dev/loop4     squashfs   69M   69M     0 100% /snap/lxd/14804
/dev/loop0     squashfs   56M   56M     0 100% /snap/core18/2253
/dev/loop5     squashfs   28M   28M     0 100% /snap/snapd/7264
/dev/loop6     squashfs   44M   44M     0 100% /snap/snapd/14295
tmpfs          tmpfs      99M     0   99M   0% /run/user/1000

然后,关闭虚拟机,将磁盘从16G调整到20G,再开机。

sudo fdisk -l

这时信息中会出现一行红色字体的错误

GPT PMBR size mismatch (33554431 != 41943039) will be corrected by write.

如下指令,修复分区表

sudo parted -l

结果如下:

Model: VMware Virtual disk (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  17.2GB  17.2GB  ext4

输入指令追加磁盘

sudo parted /dev/sda

指令中的/dev/sda就是我们上面看到的Disk的信息,有21.5GB

输入命令 unit s 设置Size单位,方便追加输入
输入命令 p free 查看详情
这时我看到的信息如下:

Number  Start      End        Size       File system  Name  Flags
        34s        2047s      2014s      Free Space
 1      2048s      4095s      2048s                         bios_grub
 2      4096s      33552383s  33548288s  ext4
        33552384s  41943006s  8390623s   Free Space

和之前parted -l查到的信息是可以对应上的,number为2的是我们现在要扩展容量的磁盘。
输入命令 resizepart 2 追加容量到sda2
确认后,需要输入追加磁盘到哪个位置。追加到的位置就是最后的Free Space的End的位置
输入命令 41943006s
再输入 p free 可以看到FreeSpace没有了
输入命令 q 退出

这个时候如果我们在用df查看/dev/sda2的大小,会发现它并没有改变。但是如果我们用fdisk -l查看,会发现扩容成功了。原因是fdisk查看的是磁盘的大小,而df查看的是文件系统的大小。所以需要执行如下指令,再查看df就对了。

sudo resize2fs /dev/sda2

需要注意,这里可能比实际的情况简化了很多。因为在这个系统里既没有物理卷也没有逻辑卷。

逻辑卷

在后来我安装ubuntu2204的时候,磁盘默认是被划分到一个LVM分区的,也就是逻辑卷。经过上述扩容操作的时候,我们会发现最后的resize2fs操作是没有效果的。因为,我们现在需要resize的是一个逻辑卷而非物理分区,所以应该使用如下指令:

sudo pvresize /dev/sda3

是的,我这一次的分区是sda3。这可以通过指令:sudo lsblk查看到。
然后执行如下指令:

sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

该指令的意思是将剩余的空间100%分配到/dev/mapper/ubuntu–vg-ubuntu–lv中。而这个/dev/mapper/ubuntu–vg-ubuntu–lv的名字,是我们在df指令中看到的。上述指令就完成了LVM中的磁盘扩容,这时候再执行下述指令:

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

就可以看到df指令中被成功扩容了。这时候,文件系统就成功完成了扩容。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

征途无悔

发文不易,谢谢认可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值