KVM 虚拟机磁盘扩容

一、镜像扩容 注意:需要先关闭虚拟机才能操作,+号前面有空格,后面没有空格。 qemu-img resize test.qcow2 +80G 原镜像磁盘大小20GB,扩容完成后可使用以下命令查看 qemu-img info test.qcow2 输出 image: test.qcow2 file format: qcow2 virtual size: 100G (107374182400 bytes) disk size: 885M cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false 二、Windows磁盘扩容 Windows磁盘扩容比较方便,进入 计算机管理>磁盘管理 找到新增的分区把它添加到需要的分区即可。 三、Linux磁盘扩容 启动虚拟机后,进入虚拟机控制台,使用fdisk -l命令查看磁盘信息。 Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xe11f7f01 Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 2099199 2097152 1G 83 Linux /dev/vda2 2099200 41943039 39843840 19G 8e Linux LVM Disk /dev/mapper/cl-root: 17 GiB, 18249416704 bytes, 35643392 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/cl-swap: 2 GiB, 2147483648 bytes, 4194304 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 可以看到这台虚拟机的磁盘大小已经有100GB了,但分区大小还是没有变化,只有初始大小20GB。...

May 31, 2021 · 4 分钟 · dushixiang

Linux虚拟化技术KVM

在Windows平台上我们习惯于使用VmWare或者virtual box来实现虚拟化,虽然它们拥有Linux版本,但大多数企业都选择了使用KVM来做Linux平台的虚拟化,因此学习掌握KVM是一项必不可少的技能。 安装KVM 以centos为例,下面是安装KVM虚拟化的命令。 yum install -y qemu-kvm libvirt virt-install bridge-utils 这么多软件都是什么作用? 软件 作用 qemu-kvm 整合了QEMU 和 KVM 的一个软件。 libvirt 封装了QEMU的接口,可以更加方便的操作虚拟机,并且提供了很多种编程语言的SDK。 virt-install 用来创建虚拟机的命令行工具。 bridge-utils Linux网桥,用来配置虚拟机的桥接网络。 kvm、qemu、qemu-kvm和libvirt到底有什么关系? KVM(Kernel Virtual Machine)是Linux的一个内核驱动模块,它需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT、AMD-V;内存相关如Intel的EPT和AMD的RVI技术,使得它能够让Linux主机成为一个Hypervisor(虚拟机监控器)。 QEMU是一个纯软件实现的虚拟机,它可以模拟CPU、内存、磁盘等其他硬件,让虚拟机认为自己底层就是硬件,其实这些都是QEMU模拟的,虚拟机的所有操作都要经过QEMU转译一层,也就导致了QEMU本身的性能较差。 qemu-kvm是QEMU整合了KVM,把CPU虚拟化和内存虚拟化交给了KVM来做,自己来模拟IO设备,例如网卡和磁盘。这一套组合拳打下来,性能损失大大降低,相较于直接使用硬件,带来的损耗大概在1%-2%之间。 libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API。Libvirtd是一个daemon进程,可以被本地的virsh调用,也可以被远程的virsh调用,Libvirtd调用qemu-kvm操作虚拟机。 启动libvirt systemctl start libvirtd systemctl enable libvirtd 如果你不想使用命令行工具来管理虚拟机,可以安装 virt-manager 。 yum install -y virt-manager 在支持x11转发的ssh客户端(例如:MobaXterm)上可以直接输入 virt-manager 来启动。 虚拟网络类型 和vmware类型,kvm也支持多种类型的网络,主要分为三种。 NAT模式 虚拟机需要把流量发送到宿主机,宿主机器转换网络信息后再发出,外部机器无法感知到虚拟机的存在。此种方式宿主机器相当于一个路由器,因此宿主机上会有一个和虚拟机同网段的IP,并且虚拟机的网关地址是宿主机的这个IP。 主机模式 虚拟机只能互相访问,不能访问宿主机。此种方式与NAT模式类似,但它没有与虚拟机同网段的IP,因此虚拟机也不能借助于宿主机来访问外部网络。 桥接模式 虚拟机和宿主机都关联在一个网桥上,因此虚拟机可以与宿主机在同一个网段,并且外部机器可以直接访问到虚拟机,虚拟机也可以借助网桥来访问外部网络。 还有一种模式在openstack等云平台上使用较为广泛,网桥上绑定的物理网卡没有IP,对应交换机配置端口为trunk模式,虚拟机 端口连接到网桥上,并配置端口不同的VLAN tag以达到隔离和互联的目的。 NAT模式和主机模式都无需单独配置,接下来我们看下如何配置桥接网络。 配置桥接网络 物理网卡绑定到网桥上之后就会导致网络断开,因此我们需要把原IP配置到网桥上。 # 进入网卡配置文件夹 cd /etc/sysconfig/network-scripts/ # 拷贝原网卡配置文件作为桥接网卡 cp ifcfg-enp134s0f0 ifcfg-br0 修改 ifcfg-br0 中的 TYPE=Ethernet 为 TYPE=Bridge,最终效果如下:...

May 29, 2021 · 2 分钟 · dushixiang

Linux 环回网络接口

在开发或者调试时,我们经常需要和本地的服务器进行通信,例如启动nginx之后,在浏览器输入lcoalhost或者127.0.0.1就可以访问到本机上面的http服务。 Linux是如何访问本机IP的? 大多数操作系统都在网络层实现了环回能力,通常是使用一个虚拟的环回网络接口来实现。这个虚拟的环回网络接口看着像是一个真实的网卡,实际上是操作系统用软件模拟的,它可以通过TCP/IP与同一台主机上的其他服务进行通信,以127开头的IPv4地址就是为它保留的,主流Linux操作系统为环回网卡分配的地址都是127.0.0.1,主机名是localhost。 环回网络接口之所以被称之为环回网络接口,是因为从本机发送到本机任意一个IP的数据报文都会在网络层交给环回网络接口,不再下发到数据链路层进行处理,环回网络接口直接发送回网络层,最终交由应用层软件程序进行处理。这种方式对于性能测试非常有用,因为省去了硬件的开销,可以直接测试协议栈软件所需要的时间。 那环回网络接口是如何判断目的IP是否为本机地址的呢? 答案就是网络层在进行路由转发的时候会先查本地的路由表,发现是本机IP后交给环回网络接口。查看本地路由表的命令如下: ip route show table local 输出内容如下: broadcast 10.141.128.0 dev eth0 proto kernel scope link src 10.141.155.131 local 10.141.155.131 dev eth0 proto kernel scope host src 10.141.155.131 broadcast 10.141.191.255 dev eth0 proto kernel scope link src 10.141.155.131 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127....

January 28, 2021 · 1 分钟 · dushixiang

Linux 修改最大文件描述符

echo "fs.file-max=655350" >>/etc/sysctl.conf echo "* soft nofile 655350" >> /etc/security/limits.conf echo "* hard nofile 655350" >> /etc/security/limits.conf ulimit -n 655350

January 11, 2021 · 1 分钟 · dushixiang

服务器不允许上网并且需要跳板机才能访问?学会使用这个工具,轻松让服务器使用yum。

前言 你是否遇到过这样的场景,服务器不能上网,但是又需要安装某个软件,面对如蛛网般杂乱的rpm包依赖关系,放弃或许是最好的选择,这样你就不必再为无法完成工作而痛苦又懊恼。 但是今天,你有了一个更好的选择。 4DNAT 4DNAT取名源自4和DNAT。这个工具工作在OSI模型的第四层传输层,同时4和for谐音,意为专门为目标地址转换而服务的工具。4DNAT使用go语言开发,具有天然的跨平台性,并且完全使用go标准库开发,没有任何的第三方依赖,编译之后只有一个二进制可执行文件。它有4种工作模式: 转发模式 接受两个参数,监听端口和目标地址,在监听端口接收到请求后会主动连接目标地址,示例: ./4dnat -forward 2222 192.168.1.100:22 监听模式 接受两个参数,监听端口1和监听端口2,并交换两个端口接收到的数据,示例: ./4dnat -listen 10000 10001 代理人模式 接受两个参数,目标地址1和目标地址2,启动后会主动连接这两个目标地址,并交换两个端口接收到的数据,示例: ./4dnat -agent 127.0.0.1:10000 127.0.0.1:22 http/https代理模式 接受两个参数或四个参数,代理类型、监听端口、证书路径和私钥路径,示例: http代理 ./4dnat -proxy http 1080 https代理 ./4dnat -proxy https 1080 server.crt server.key 使用场景 场景一 期望可以在用户电脑上直接访问目标服务器上的3306端口,跳板机器是一台Windows机器,没办法做ssh端口转发。 单向虚线箭头表示可以单向访问,反之不行。 使用4DNAT在跳板机器上执行如下命令做端口转发 # 本地监听3307端口,接收到请求后主动连接10.1.0.40的3306端口 ./4dnat -forward 3307 10.1.0.40:3306 在用户电脑上访问172.16.0.30:3307即等同于访问10.1.0.40:3306,于是就可以在用户电脑愉快的访问目标机器上的服务啦。 场景二 期望目标目标机器可以上网,如使用yum安装软件。 在用户电脑上开启一个http代理 ./4dnat -proxy http 1080 在跳板机器上使用监听模式监听两个端口,用于交换数据 ./4dnat -listen 10000 10001 在目标机器上使用监听模式监听两个端口,用于交换数据 ./4dnat -listen 20000 20001 在用户电脑上使用代理人模式主动连接两个目标地址,用于交换数据 ./4dnat -agent 127.0.0.1:1080 172....

November 19, 2020 · 1 分钟 · dushixiang