VMWare Workstation版本: VMware® Workstation 16 Pro 16.1.2 build-17966106

Proxmox版本: pve-manager/7.0-8/b1dbf562 (running kernel: 5.11.22-1-pve)

迁移步骤

  1. 在workstation里启动一下目标vm, 然后走正常流程关机, 在workstation面板里关闭这个vm.

  2. 打开这个vm所在的文件夹, 找到vmdk文件, 将其复制到PVE机器上.

  3. 在PVE机器上走正常流程新建一个虚拟机, 拿到vm号码 (以104举例)

  4. 运行 qm importdisk 104 <vmdk文件路径> <本地存储名称>. 一般来说本地存储名称叫 local-lvm, 可以在Proxmox存储面板上看到

  5. 等待导入完成后, 在PVE面板上找到VM104, 可以看到一个没有挂载的硬盘, 将其挂载, 并将刚刚创建的空磁盘分离并删除.

  6. 【关键】在VM104面板上, 点击<选项>, 编辑<引导顺序>, 勾选新加入的磁盘, 取消对net0的勾选.

  7. 开机测试迁移效果.

注意事项

  1. Ubuntu Server 20.04 LTS 迁移后可能会因为网卡名称发生变化而没有网, 需要编辑 /etc/netplan下的文件调整原网卡名到新的网卡名, 再运行 sudo netplan apply

  2. 如果出现CPU单核打满, 屏幕显示Booting from Hard Disk...且持续很长时间, 则考虑磁盘的控制器是否选错了. 一般来说从vmware迁移过来的磁盘都是基于SATA的. 有帖子称跟UEFI BIOS有关, 但实际测试中没有解决问题.

参考

qm(1) - pve

importdisk可能是新出的命令, 之前的很多帖子都要先convert再挂载, 对pve7参考价值不大.

vmware 迁移 虚拟机proxmox - CSDN

How to migrate a VMWare vmdk to Proxmox 4.4 with local-lvm storage

ProxmoxVE 之 V2V迁移(vmware->PVE)

Proxmox VE导入OVA、VMDK虚拟机文件,可以“随心所欲”的迁移到PVE平台

Proxmox VE磁盘/目录详解,并且安装第二个硬盘,修改ISO/虚拟机存放位置

Proxmox to Vmware: How to migrate a Proxmox VM to Vmware

Location of Disk Images in Local-LVM

Migration of servers to Proxmox VE

import virtual box VM?

Importing VMWare and VirtualBox VMs to Proxmox

Migrating VM Disk from HyperV to Proxmox (qm importdisk) BOOT FAILED

help,”Booting from Hard Disk …” the problem

Debian Guest Stuck On “Booting From Hard Disk”

请支持正版, 在日常使用机器上购买正版并激活Windows操作系统

某些场景下(例如VM环境), windows实例存活时间较短, 激活不是很划算. 此时想要调整任务栏样式, 例如不合并按钮等, 则需要调整注册表:

Dir: 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced (英文操作系统请将计算机替换为Computer)

Key Type Value Notice
TaskbarGlomLevel REG_DWORD 2 主屏任务栏按钮不合并
MMTaskbarGlomLevel REG_DWORD 2 多显示器其他任务栏按钮不合并
MMTaskbarMode REG_DWORD 2 多显示器其他任务栏只显示打开的程序

调整后, 在任务管理器-进程-应用中, 选中Windows资源管理器, 右键重新启动即可.

创建 win10_customize_taskbar.reg

1
2
3
4
5
6
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"TaskbarGlomLevel"=dword:2
"MMTaskbarGlomLevel"=dword:2
"MMTaskbarMode"=dword:2

参考

Task Bar Settings Not Editable with deactivated windows 10

Disable Windows 10 Taskbar Grouping and Small Icons about Registry?

How-to: Windows 10 registry - user interface settings

Hide Taskbar on Multiple Displays in Windows 10

Why Does Linus Pirate Windows??

问题现象

Surface Book 2 13寸, USB-TypeC接hub, 鼠标键盘接在hub上. 大约30秒-1分钟间隔键盘鼠标会停止响应. 尝试切换鼠标直接接usb也没有改善.

解决方案

据传因固件问题导致CPU过度超频影响USB设备. 通过以下命令调整DC/AC模式下CPU的最大频率, 防止过度超频. 调整后需要重启才能生效.

1
2
powercfg -SETDCVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCFREQMAX 3800
powercfg -SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCFREQMAX 3800

参考

修复Surface Book 2 15英寸的鼠标卡顿/USB卡顿问题

Nginx版本: nginx/1.14.0 (Ubuntu)

Let’s Encrypt证书使用acme.sh客户端获取, 由Let’s Encrypt颁发.

问题现象: nginx配置https网站后, 浏览器(Edge/Chrome等)访问正常, curl访问报错提示curl: (60) SSL certificate problem: unable to get local issuer certificate. 从Java中通过HttpClient访问也提示证书校验失败.

分析: 根据 SSL Server Test 系统测试提示 This server's certificate chain is incomplete. Grade capped to B. 多处搜索无果, 于是查看通过acme.sh获取到的几个证书, 可以看到chain.cer中包含两个证书, *开头的cer文件中包含一个证书, fullchain.cer中包含以上两个证书, 考虑是否因证书链不完整导致报错.

解决方案: nginx对应server配置中:

ssl_certificate 改用 fullchain.cer

ssl_trusted_certificate 改用 chain.cer.

改动后需重新加载服务器: systemctl reload nginx

比较疑惑的是为什么非泛解析域名就不存在这个问题, 还没太想明白.

呐呐呐(x) 爆爆爆(√)

【鏡音リン・初音ミク】呐呐呐。【ピノキオピー】

《曾经的你》曾梦想仗剑走天涯 看一看世界的繁华 【突然听懂系列】

“假如我年少有为 不自卑”

《后来》刘若英 MV 1080P 50帧(CD音轨)

Audio Paradyne - Lost In Space

K-391 - Everybody

The Bass & The Melody - S3RL

Predictable Rave Song (Roski Veair Remix) - S3RL ft Tamika

【M A R i A】马口铁之舞

八目鳗穴

沙丁鱼从地面钻了出来

我在八目鳗穴飙着车

【音源配布】全部国产素材的沙丁鱼

【UTAU7人】沙丁鱼从地里钻了出来

!

【中文翻唱】!

【ころんば4号· デフォ子】八目鳗穴

毫无干劲的 八目鳗穴【イシル】

用一首先进国带你认识2009年NICO全明星

唱了一下”马口铁之舞”【MiraiAkari】

往期优秀作品推荐

2021年7月

主板: 微星MSI 迫击炮 B550

网卡: Intel Corporation Ethernet Connection (7) I219-V (rev 10)

内核版本: Linux 5.11.22-1-pve #1 SMP PVE 5.11.22-2

PVE版本: pve-manager/7.0-8/b1dbf562

问题现象: 每隔1-3分钟, 网卡会掉线15-30秒, 期间ping丢包100%, ip丢包100%. 系统日志提示如下:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Aug 15 18:48:46 proxmox kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang:
TDH <39>
TDT <7b>
next_to_use <7b>
next_to_clean <38>
buffer_info[next_to_clean]:
time_stamp <1015769ac>
next_to_watch <39>
jiffies <101576ae0>
next_to_watch.status <0>
MAC Status <40080083>
PHY Status <796d>
PHY 1000BASE-T Status <3800>
PHY Extended Status <3000>
PCI Status <10>
Aug 15 18:48:48 proxmox kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang:
TDH <39>
TDT <7b>
next_to_use <7b>
next_to_clean <38>
buffer_info[next_to_clean]:
time_stamp <1015769ac>
next_to_watch <39>
jiffies <101576cd0>
next_to_watch.status <0>
MAC Status <40080083>
PHY Status <796d>
PHY 1000BASE-T Status <3800>
PHY Extended Status <3000>
PCI Status <10>
Aug 15 18:48:50 proxmox kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang:
TDH <39>
TDT <7b>
next_to_use <7b>
next_to_clean <38>
buffer_info[next_to_clean]:
time_stamp <1015769ac>
next_to_watch <39>
jiffies <101576ec8>
next_to_watch.status <0>
MAC Status <40080083>
PHY Status <796d>
PHY 1000BASE-T Status <3800>
PHY Extended Status <3000>
PCI Status <10>
Aug 15 18:48:52 proxmox kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang:
TDH <39>
TDT <7b>
next_to_use <7b>
next_to_clean <38>
buffer_info[next_to_clean]:
time_stamp <1015769ac>
next_to_watch <39>
jiffies <1015770b8>
next_to_watch.status <0>
MAC Status <40080083>
PHY Status <796d>
PHY 1000BASE-T Status <3800>
PHY Extended Status <3000>
PCI Status <10>
Aug 15 18:48:54 proxmox kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang:
TDH <39>
TDT <7b>
next_to_use <7b>
next_to_clean <38>
buffer_info[next_to_clean]:
time_stamp <1015769ac>
next_to_watch <39>
jiffies <1015772b0>
next_to_watch.status <0>
MAC Status <40080083>
PHY Status <796d>
PHY 1000BASE-T Status <3800>
PHY Extended Status <3000>
PCI Status <10>
Aug 15 18:48:54 proxmox kernel: e1000e 0000:00:1f.6 eno1: Reset adapter unexpectedly

解决方法: 驱动问题, 需要关闭网卡的一些属性.

1
ethtool -K eno1 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off

使用apt install -y ethtool以安装以太网工具.

此改动仅限本次开机期间, 重启后会失效. 持久化保存需要修改 /etc/network/interfaces

在对应的网卡配置下, 与address同级添加配置:

1
2
3
4
5
6
7
8
9
10
offload-gso off
offload-gro off
offload-tso off
offload-rx off
offload-tx off
offload-rxvlan off
offload-txvlan off
offload-sg off
offload-ufo off
offload-lro off

不修改interfaces也可以使用另一种方式, 即开机运行一次ethtool命令, 创建一个ethfix.service

1
2
3
4
5
6
7
8
9
[Unit]
Description=Fix network card on boot

[Service]
Type=simple
ExecStart=/usr/sbin/ethtool -K eno1 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off

[Install]
WantedBy=multi-user.target

运行systemctl enable ethfix, 即可在今后开机时自动应用改动.

参考

e1000 driver hang | Proxmox Support Forum

e1000 driver hang | Page 8 | Proxmox Support Forum

e1000e eno1: Detected Hardware Unit Hang: | Proxmox Support Forum

ethtool(8) — Linux manual page

TSO、UFO、GSO、LRO、GRO和RSS介绍(ethtool命令)

局域网内Linux机器间如何快速传文件? ssh过于繁琐, 转而采用 nc(netcat)

TL;DR:

先在接收端监听端口: nc -l 12345 > filename

在发送端写入文件: nc -w 3 <ip> 12345 < sourcefile

其中-w 3的含义是输入数据到达末尾三秒后, 关闭socket. 针对openbsd.nc实现也可以改用 nc -N <ip> 12345 < sourcefile. 不加这个参数会导致接收端一直等待数据而无法退出.

注意 nc 是 netcat. Ubuntu上预装的是openbsd实现. 和nmap套件中的 ncat 要区分开.

传输完成后可通过hash校验判断文件是否完整传输:

sha256sum filname

sha256sum sourcefile

需要注意的是, nc是基于明文传输的, 因此只适用于受信任的局域网环境. 公网环境下还是老实用ssh/scp/sftp吧.

参考

Using Netcat for File Transfers

nc(1) - OpenBSD manual pages

ncat(1) - Linux manual page

tcpdump -nnvvXSs 1514 -i <device> <filters>

举例: sudo tcpdump -nnvvXSs 1514 -i eth0 src host 1.2.3.4

-nn 不解析协议和端口号.

-vv 输出更多详细信息.

-X 除了输出包头部信息外, 还以十六进制和ASCII码的格式输出payload

-S 输出绝对TCP报文序号. (默认是相对的)

-s <size> 设置抓取包长度为size, 默认为65535字节. 当包长度超过此设置时将出现截断. 若出现截断则输出中会出现[|tcp](以tcp协议举例). 处理时间随长度增加而增加.

参考

See entire packet payload using tcpdump.

tcpdump(8) - Linux man page

tcpdump详细教程

A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic