设为首页 加入收藏

TOP

KVM导入Ubuntu/Centos Cloud Image创建虚机及调整磁盘大小(一)
2023-07-23 13:35:50 】 浏览:271
Tags:KVM 导入 Ubuntu/Centos Cloud Image

Cloud Image

Ubuntu Cloud Images

Ubuntu官网会给各种公有云平台提供cloud镜像, 例如AWS, MS Azure, Google Cloud, 以及本地虚机环境例如 QEMU, VMware, Vagrant等, 这些镜像的下载地址:

Ubuntu Cloud 镜像类型

cloud-images.ubuntu.com 上面的镜像主要可以分成两大类, daily 和 release, 每个大类里又区分为 minimal(最小安装)和普通版本.

  • 如果对这些没概念, 下载 release 版本, 在 releases 目录下有从 8.04 到 22.04 的各个发行版镜像
    • 从上面进入的发行版目录下面, 是按日期排列的目录, 用最新日期的那个目录
    • 目录下面, 都是形如 ubuntu-22.04-server-cloudimg-[宿主架构]-xxx.[img/vmdk/ova] 这种文件名的文件, 对应KVM需要下载
  • 如果只是需要能运行的最小系统, 在 minimal 目录下 releases 目录找对应发行版的迷你安装. 标准版的大小是迷你版的两倍左右
    • 迷你版只有给x86-64架构宿主的镜像

Centos Cloud Images

如果运行KVM的是普通x86_64机器, 下载其中的 x86_64 版本, 建议使用 qcow2 或 qcow2c 后缀. 后者是压缩格式, 下载能省点时间, 使用区别不大.

安装 KVM, 配置桥接网络

机器上要安装好 KVM 环境,

sudo apt install -y qemu-kvm cloud-image-utils

创建好桥接网络, 假设桥接网口为 br0, 具体步骤可以参考之前的文章, 这里给一个例子

$ more /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:
  ethernets:
    enp2s0f0:
      dhcp4: false
      dhcp6: false
  version: 2
  bridges:
    br0:
      interfaces: [enp2s0f0]
      addresses:
      - 192.168.1.152/24
      routes:
      - to: default
        via: 192.168.1.1
      nameservers:
        addresses:
        - 192.168.1.1
        - 8.8.8.8
        search: []

修改虚机磁盘大小

默认的镜像只有2GB的磁盘大小, 可以在导入前通过 qemu-img resize 修改大小, 如果安装后需要修改大小, 要先关闭虚机再修改

查看镜像的磁盘情况

$ qemu-img info ubuntu20.04_1.img 
image: ubuntu20.04_1.img
file format: qcow2
virtual size: 2.2 GiB (2361393152 bytes)
disk size: 273 MiB
cluster_size: 65536
Format specific information:
    compat: 0.10
    refcount bits: 16

修改磁盘到20G

$ qemu-img resize ubuntu20.04_1.img 20G
qemu-img: Could not open 'ubuntu20.04_1.img': Could not open 'ubuntu20.04_1.img': Permission denied
milton@miltmac:/data/vms$ sudo qemu-img resize ubuntu20.04_1.img 20G
[sudo] password for milton: 
Image resized.

检查设置

$ qemu-img info ubuntu20.04_1.img 
image: ubuntu20.04_1.img
file format: qcow2
virtual size: 20 GiB (21474836480 bytes)
disk size: 273 MiB
cluster_size: 65536
Format specific information:
    compat: 0.10
    refcount bits: 16

准备 seed.img

当cloud image启动时, 会搜索包含实例信息的数据源, 用于初始化当前的实例, 包括 hostname, 网络设置等, 通常包含两类内容:

  • metadata: 这一般是由云平台提供的唯一编号, 包含 hostname, 网络信息, SSH keys等.
  • user data: 用于指定登录虚机的用户的相关设置.

创建文件 metadata.yaml

instance-id: iid-local01
local-hostname: cloudimg
  • instance-id:
  • local-hostname: 虚机启动后看到的 hostname

创建文件 user-data.yaml

手册: https://cloudinit.readthedocs.io/en/latest/reference/modules.html#users-and-groups

用id_rsa密钥登录的例子

#cloud-config
ssh_authorized_keys:
    - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSc4mEaOsvQusPZRUIV6PUz2yM2D/Td3FKkdumu... .............. ... ......hQI6ofjLCxBKRqBbTl milton@somewherec
ssh_import_id:
    - gh:
    - lp:
  • ssh_authorized_keys 用于免密登录的公钥. 需要在本地预先创建好密钥对, 并配置到 .ssh/config 里. 用户是默认的ubuntu, 不需要指定
  • ssh_import_id 用于第三方平台的密钥, 这里都留空

用密码登录的例子, 会创建默认用户 ubuntu

#cloud-config
password: ubuntu
chpasswd: { expire: False }
ssh_pwauth: True
ssh_import_id: ${USER}
  • password: ubuntu 设置的密码为 ubuntu
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇LNMP简介 下一篇linux包管理器rpm和dpkg的使用说明

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目