PVE(Proxmox VE)快照和备份有什么区别?

备份

可以理解为克隆,备份文件之间是完整且独立的,Proxmox VE 备份始终是完整备份-包含VM / CT配置和所有数据,占用空间较大。备份后可以删除虚拟机,然后从备份文件恢复虚拟机,[备份👉快照模式] 只是虚拟机备份模式中的一种,以最小的不一致风险为代价,提供了最低的操作停机时间。它通过执行 Proxmox VE 实时备份来工作,该备份在VM运行时复制数据块。

快照

快照的数据(存储开销)是基于上一次快照的数据变化部分,而不是像备份那样复制一份完整虚拟机生存数据,占用空间较小,不能通过快照恢复被删除的虚拟机,快照不能脱离原始虚拟机运行,还原快照也就是把虚拟机从”创建快照时的状态(包括RAM数据)“还原到创建快照的时候,类似“时间机器”。

建议在为运行中的VM拍摄快照时包括RAM或使用QEMU Guest Agent,以避免不一致。

时间机器:如果备份磁盘已满,则最早的备份会被删除。

首次备份可能需要很长时间,只会备份自上次备份以来有变动的文件,因此将来的备份速度会加快。

https://support.apple.com/zh-cn/HT201250

让 JVM 抛出一个 OutOfMemoryError 内存溢出错误

本机内存溢出

DirectMemory容量可以通过-XX:MaxDirectMemorySize指定。

import java.lang.reflect.Field;
import sun.misc.Unsafe;

public classDirectMemoryOOM {
    private static final int _1MB = 1024 * 1024;

    public static void main(String[] args) throws IllegalArgumentException,
            IllegalAccessException {
        Field unsafeField = Unsafe.class.getDeclaredFields()[0];
        unsafeField.setAccessible(true);
        Unsafe unsafe = (Unsafe) unsafeField.get(null);

        while (true) {
            try {
                unsafe.allocateMemory(_1MB);
            } catch (OutOfMemoryError er) {
                System.out.println(er.toString());
                System.exit(0);
            }
        }
    }
}

// java.lang.OutOfMemoryError

Proxmox VE(PVE)硬盘扩容,支持EMMC

pve,esxi都是用lvm管理分区,可以使用lvm扩容分区

  • 启动emmc里的pve
  • 扩充的是local-lvm(local主要是VZDump备份文件, ISO镜像, 容器模板,local-lvm主要是 磁盘映像, 容器)
  • 使用putty、xshell一类的软件通过ssh进pve,端口22,用户名root,密码是安装pve时设置的密码

扩容前

检查可能出现的情况

fdisk -l

如果提示

GPT PMBR size mismatch (67108863 != 121634815) will be corrected by write.

执行

apt-get update
apt-get install parted
parted -l

Fix

扩容分区

安装需要的软件

apt-get update
apt-get install parted

执行

fdisk -l

提示

GPT PMBR size mismatch (67108863 != 121634815) will be corrected by write.
Disk /dev/sda: 58 GiB, 62277025792 bytes, 121634816 sectors
Disk model: VMware Virtual S
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: gpt
Disk identifier: 0C17A6FD-69E2-401F-97C8-209F38118AC9

Device       Start      End  Sectors  Size Type
/dev/sda1       34     2047     2014 1007K BIOS boot
/dev/sda2     2048  1050623  1048576  512M EFI System
/dev/sda3  1050624 67108830 66058207 31.5G Linux LVM


Disk /dev/mapper/pve-swap: 3.9 GiB, 4160749568 bytes, 8126464 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/pve-root: 7.8 GiB, 8321499136 bytes, 16252928 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

查看系统内硬盘名称(这一步可省略)

lsblk

提示

NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk1            179:0    0 58.2G  0 disk
├─mmcblk1p1        179:1    0 1007K  0 part
├─mmcblk1p2        179:2    0  512M  0 part /boot/efi
└─mmcblk1p3        179:3    0 57.8G  0 part
  ├─pve-swap       253:0    0  3.6G  0 lvm  [SWAP]
  ├─pve-root       253:1    0  7.3G  0 lvm  /
  ├─pve-data_tmeta 253:2    0    1G  0 lvm
  │ └─pve-data     253:4    0 44.9G  0 lvm
  └─pve-data_tdata 253:3    0 44.9G  0 lvm
    └─pve-data     253:4    0 44.9G  0 lvm
mmcblk1boot0       179:8    0    4M  1 disk
mmcblk1boot1       179:16   0    4M  1 disk

如果是emmc,硬盘名称是mmcblk1,执行

parted /dev/mmcblk1

如果是非emmc,硬盘名称是sda,执行

parted /dev/sda

提示

GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

执行

print

提示

(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 62.3GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  1049kB  1031kB                     bios_grub
 2      1049kB  538MB   537MB   fat32              boot, esp
 3      538MB   34.4GB  33.8GB                     lvm

(parted)

扩容LVM,执行

resizepart 3 100%

quit

提示

(parted) resizepart 3 100%
(parted) quit
Information: You may need to update /etc/fstab.

更新物理卷的大小,LVM所在驱动器

如果是emmc,执行

pvresize /dev/mmcblk3

非emmc,执行

pvresize /dev/sda3

提示

Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

扩容逻辑卷,执行

cat /etc/pve/storage.cfg

提示

dir: local
        path /var/lib/vz
        content iso,vztmpl,backup

lvmthin: local-lvm
        thinpool data
        vgname pve
        content rootdir,images

执行

lvdisplay

提示

--- Logical volume ---
  LV Path                /dev/pve/swap
  LV Name                swap
  VG Name                pve
  LV UUID                ArHV9L-H5ZI-M4gs-Gj1M-4bFV-qbWO-K2VYk4
  LV Write Access        read/write
  LV Creation host, time proxmox, 2020-07-02 19:06:14 +0800
  LV Status              available
  # open                 2
  LV Size                <3.88 GiB
  Current LE             992
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/pve/root
  LV Name                root
  VG Name                pve
  LV UUID                L1MtJ0-LX2s-JfVn-5bTY-WdM8-jfxZ-Gi2oTD
  LV Write Access        read/write
  LV Creation host, time proxmox, 2020-07-02 19:06:14 +0800
  LV Status              available
  # open                 1
  LV Size                7.75 GiB
  Current LE             1984
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Name                data
  VG Name                pve
  LV UUID                AYiySQ-K6O5-Ye17-XAtF-m154-tRoG-mljDuL
  LV Write Access        read/write
  LV Creation host, time proxmox, 2020-07-02 19:06:15 +0800
  LV Pool metadata       data_tmeta
  LV Pool data           data_tdata
  LV Status              available
  # open                 0
  LV Size                <14.00 GiB
  Allocated pool data    0.00%
  Allocated metadata     1.58%
  Current LE             3583
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

执行

pvs

lvextend -l +100%FREE /dev/pve/data

提示

Size of logical volume pve/data_tdata changed from <14.00 GiB (3583 extents) to 43.87 GiB (11231 extents).
Logical volume pve/data_tdata successfully resized.

扩容成功,可在pve控制端网页查看

微信无法登录,扫码后报错:java.lang.NumberFormatException:null

原因:微信需加JVM运行参数

找到你的IDE所在的安装目录下的bin文件夹,打开,找到你的exe运行参数文件,如(idea64.exe.vmoptions,studio64.exe.vmoptions)使用编辑器打开,在最后一行添加

-Djsse.enableSNIExtension=false
// 保存后重启IDE

也可以通过exe快捷方式添加参数,如快捷方式目标指向:

E:\Android\eclipse\eclipse.exe -nl=en -Djsse.enableSNIExtension=false

这种方式要求exe所在的路径不能带空格

*Java系统属性的修改通常只能用于本次运行

将Java系统属性Djsse.enableSNIExtension设置为false,$java -Djsse.enableSNIExtension=false
尝试运行时只输出帮助信息?解决方法:

$java -Djsse.enableSNIExtension=false MainClass
$java -Djsse.enableSNIExtension=false -jar foobar.jar

虚拟机病毒会感染电脑吗?

基本就是两个方向,一个方向是虚拟机本身存在漏洞,历史上在18、19年的时候 VMware就出现过这样的一次问题:

VMware Workstation有一个拖放功能,就曾经出现了越界内存访问漏洞,在虚拟机正常情况下应该是访问虚拟的内存,而不访问宿主机(实体机)的内存,但漏洞导致有时候会访问实体机内存,黑客就可以制作一个命令执行。如果虚拟机已经中毒了,病毒就可以逃出虚拟机感染宿主机,在宿主机上执行命令。

第二个方向是在自己不知道虚拟机已经被病毒感染的情况下,从虚拟机里把文件拷贝出来,存储到了宿主机的硬盘中,就会导致电脑被感染。

除去以上两种情况,虚拟机还是很安全的,在里边安装杀毒软件后再下载软件,出现的问题就不会很严重了。

在虚拟机安全中,有个专业的名词就叫做虚拟机逃逸,指的是进程越过虚拟机范围,进入到宿主机的操作系统中,也就是病毒逃离虚拟机,对真实主机造成危害。

Pwn2Own黑客大赛:虚拟机逃逸获得10500美元奖金——通过三个独立漏洞的巧妙利用
在加拿大温哥华的Pwn2Own世界黑客大赛上,来自360安全战队的参赛选手完成了一项令人印象极其深刻的战绩:他们完成了虚拟化软件VMware Workstation的逃逸,并攻破了微软防御工事森严的Edge浏览器。这次破解给他们带来了10.5万美元的奖励,这是Pwn2Own连续三天赛程上的最高奖励。
根据Pwn2Own赛事主办方在周五早上(加拿大当地时间)发布的Tweet显示,来自360安全战队的成员运用了Edge的堆溢出漏洞、微软内核的一种混乱缺陷、VMware的缓冲区漏洞,成功完成了“完整的虚拟机逃逸过程”。

“实际上,虚拟机管理程序就是另一个存在漏洞,且可以被攻破的软件隔离层。”Capsule8的联合创始人兼首席技术官Dino Dai Zovi告诉记者,Capsule8是为现代网络基础设施提供实时威胁防护的公司。“隔离层比如沙箱、虚拟化、封装等都让黑客的攻击难度增加,但是没有一个隔离层是完美的。作为防御者来说,应该始终保持这样的态度,那就是所有的防御措施都可以通过攻击者的足够努力而被攻破。”报道链接:https://arstechnica.com/security/2017/03/hack-that-escapes-vm-by-exploiting-edge-browser-fetches-105000-at-pwn2own/