From 81a1d743a13de3af43a49e10205902d97874c16a Mon Sep 17 00:00:00 2001
From: GitHub 2024 年
42b2075
@ USTC-vlab/sshmux
\u200b\u6ce8\u610f\u200b
\u200b\u672c\u200b\u6587\u6863\u200b\u662f\u200b\u5e73\u53f0\u200b\u7684\u200b\u6280\u672f\u6027\u200b\u6587\u6863\u200b\uff0c\u200b\u5185\u5bb9\u200b\u4e3b\u8981\u200b\u5bf9\u200b\u7ef4\u62a4\u200b\u5de5\u4f5c\u200b\u6709\u7528\u200b\uff0c\u200b\u7528\u6237\u200b\u8bf7\u200b\u770b\u200b\u7528\u6237\u6587\u6863\u200b\u3002
\u200b\u4e3a\u4e86\u200b\u4f7f\u200b\u5185\u5bb9\u200b\u7b80\u6d01\u200b\u7cbe\u70bc\u200b\u3001\u200b\u5c3d\u91cf\u200b\u4fdd\u6301\u200b\u4e0e\u200b\u4e3b\u9898\u200b\u76f8\u5173\u200b\uff0c\u200b\u672c\u200b\u6587\u6863\u200b\u65e0\u6cd5\u200b\u63d0\u4f9b\u200b\u8fc7\u4e8e\u200b\u8be6\u5c3d\u200b\u7684\u200b Linux \u200b\u57fa\u7840\u77e5\u8bc6\u200b\uff0c\u200b\u5982\u679c\u200b\u9047\u5230\u200b\u95ee\u9898\u200b\uff0c\u200b\u8bf7\u200b\u5584\u7528\u200b Google \u200b\u7b49\u200b\u5de5\u5177\u200b\u3002
Linux \u200b\u5165\u95e8\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b\u6821\u200b Linux \u200b\u7528\u6237\u200b\u534f\u4f1a\u200b\u7684\u200b Linux 101 \u200b\u8bfe\u7a0b\u200b\u8bb2\u4e49\u200b\u6216\u200b\u5176\u4ed6\u200b\u5728\u7ebf\u6559\u7a0b\u200b\u3002
When in doubt, ask.
\u200b\u6587\u6863\u200b\u7f3a\u5931\u200b
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u7f3a\u4e4f\u200b\u5bf9\u5e94\u200b\u7684\u200b\u7ef4\u62a4\u200b\u6587\u6863\u200b\uff1a
\u200b\u8bb0\u5f55\u200b\u6211\u4eec\u200b\u4e0a\u7ebf\u200b\u90e8\u7f72\u200b\u65b0\u200b\u529f\u80fd\u200b\uff08\u200b\u6216\u200b bug fix \u200b\u7b49\u200b\uff09\u200b\u7684\u200b\u5386\u53f2\u200b\u3002
\u200b\u7f16\u5199\u200b\u65f6\u8bf7\u200b\u6309\u200b\u65f6\u95f4\u200b\u5012\u5e8f\u200b\u6392\u5e8f\u200b\uff0c\u200b\u5373\u200b\u6700\u65b0\u200b\u7684\u200b\u65e5\u671f\u200b\u5728\u200b\u6700\u200b\u4e0a\u9762\u200b\u3002\u200b\u6709\u200b\u4e13\u95e8\u200b\u7684\u200b\u5de5\u4f5c\u200b\u8bb0\u5f55\u200b\u9875\u9762\u200b\u7684\u200b\u8bf7\u200b\u628a\u200b\u65f6\u95f4\u200b\u94fe\u63a5\u200b\u5230\u200b\u5bf9\u5e94\u200b\u7684\u200b\u9875\u9762\u200b\u3002
"},{"location":"changelog/#\u66f4\u65b0\u8bb0\u5f55","title":"\u66f4\u65b0\u200b\u8bb0\u5f55","text":""},{"location":"changelog/#2024-\u5e74","title":"2024 \u200b\u5e74","text":"7 \u200b\u6708\u200b 5 \u200b\u65e5\u200b\u200b\u4fee\u590d\u200b\u4e86\u200b\u4f7f\u7528\u200b\u8f83\u200b\u65b0\u200b\u7684\u200b OpenSSH \u200b\u5ba2\u6237\u7aef\u200b\uff08>= 9.5\uff09\u200b\u8fde\u63a5\u200b sshmux\uff0c\u200b\u4e14\u200b\u865a\u62df\u673a\u200b\u4e2d\u200b\u7684\u200b OpenSSH \u200b\u670d\u52a1\u7aef\u200b\u8f83\u200b\u8001\u200b\uff08< 9.5\uff09\u200b\u65f6\u200b\uff0c\u200b\u6309\u200b\u4efb\u610f\u200b\u952e\u76d8\u200b\u6309\u952e\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u8fde\u63a5\u200b\u65ad\u5f00\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
\u200b\u7ec6\u8282\u200b\u200b\u5728\u200b sshmux \u200b\u4e2d\u200b\u6dfb\u52a0\u200b\u8f93\u51fa\u200b\u6253\u5370\u200b\u8fde\u63a5\u200b\u65ad\u5f00\u200b\u7684\u200b\u7406\u7531\u200b\uff0c\u200b\u53d1\u73b0\u9519\u8bef\u200b\u5185\u5bb9\u200b\u4e3a\u200b\uff1a
ssh: disconnect, reason 2: Invalid ssh2 packet type: 192\n
\u200b\u68c0\u67e5\u200b x/crypto/ssh
\u200b\u7684\u200b\u4ee3\u7801\u200b\u672a\u200b\u53d1\u73b0\u200b\u76f8\u5173\u200b\u5b57\u7b26\u4e32\u200b\uff0c\u200b\u7136\u540e\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u5185\u200b\u5173\u95ed\u200b sshd \u200b\u5e76\u200b\u624b\u52a8\u200b\u4ee5\u200b debug \u200b\u6a21\u5f0f\u200b\u542f\u52a8\u200b\uff08/usr/sbin/sshd -ddd
\uff09\uff0c\u200b\u53d1\u73b0\u200b\u5982\u4e0b\u200b\u8f93\u51fa\u200b\uff1a
debug3: receive packet: type 192\ndebug2: sshpkt_disconnect: sending SSH2_MSG_DISCONNECT: Invalid ssh2 packet type: 192\n
\u200b\u67e5\u8be2\u200b SSH packet type\uff0c\u200b\u53d1\u73b0\u200b RFC 4250 \u00a7 4.1.3 \u200b\u5c06\u200b 192-255 \u200b\u5b9a\u4e49\u200b\u4e3a\u200b private use\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b OpenSSH \u200b\u4f7f\u7528\u200b\u8fd9\u4e9b\u200b\u6570\u503c\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u81ea\u5df1\u200b\u7684\u200b\u6269\u5c55\u200b\u3002
\u200b\u540c\u65f6\u200b\u68c0\u67e5\u200b x/crypto/ssh
\u200b\u548c\u200b OpenSSH \u200b\u7684\u200b\u4ee3\u7801\u200b\uff0c\u200b\u53d1\u73b0\u200b\u76f8\u4e92\u200b\u5339\u914d\u200b\u7684\u200b\u5b9a\u4e49\u200b\uff1a
// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9\nconst msgPing = 192\n\ntype pingMsg struct {\n Data string `sshtype:\"192\"`\n}\n\n// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9\nconst msgPong = 193\n\ntype pongMsg struct {\n Data string `sshtype:\"193\"`\n}\n
ssh2.h/* transport layer: OpenSSH extensions */\n#define SSH2_MSG_PING 192\n#define SSH2_MSG_PONG 193\n
\u200b\u7ee7\u7eed\u200b\u641c\u7d22\u200b\u53d1\u73b0\u200b OpenSSH 9.5 (2023/08/27) \u200b\u5f15\u5165\u200b\u4e86\u200b Keystroke timing obfuscation\uff0c\u200b\u5bf9\u5e94\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u65b0\u200b\u7684\u200b message type\u3002
\u200b\u95ee\u9898\u200b\u5728\u4e8e\u200b\uff0c\u200b\u4f7f\u7528\u200b\u8f83\u200b\u65b0\u200b\u7684\u200b\u5ba2\u6237\u7aef\u200b\u548c\u200b\u8f83\u200b\u65b0\u200b\u7684\u200b x/crypto
\u200b\u5199\u6210\u200b\u7684\u200b sshmux \u200b\u670d\u52a1\u7aef\u200b\u4f1a\u200b\u534f\u5546\u200b\u51fa\u200b\u8fd9\u4e2a\u200b\u6269\u5c55\u200b\uff0c\u200b\u800c\u200b sshmux \u200b\u76f4\u63a5\u200b\u5728\u200b\u5ba2\u6237\u7aef\u200b\u548c\u200b\u4e0a\u6e38\u200b\u670d\u52a1\u7aef\u200b\u4e4b\u95f4\u200b\u8f6c\u53d1\u200b\u6240\u6709\u200b\u7684\u200b SSH packet\uff0c\u200b\u5ffd\u7565\u200b\u7684\u200b\u670d\u52a1\u7aef\u200b\u652f\u6301\u200b\u7684\u200b\u6269\u5c55\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u4e86\u200b\u5ba2\u6237\u7aef\u200b\u53d1\u9001\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u670d\u52a1\u7aef\u200b\u4e0d\u200b\u8ba4\u8bc6\u200b\u7684\u200b packet\uff0c\u200b\u4ece\u800c\u200b\u4f7f\u200b\u670d\u52a1\u7aef\u200b\u65ad\u5f00\u8fde\u63a5\u200b\u3002
OpenSSH 9.6 \u200b\u5ba2\u6237\u7aef\u200b\u548c\u200b\u57fa\u4e8e\u200b x/crypto
v0.24.0 \u200b\u670d\u52a1\u7aef\u200b\u7684\u200b\u65e5\u5fd7\u200b\u8282\u9009\u200b\u5982\u4e0b\u200b\uff1a
debug1: SSH2_MSG_EXT_INFO received\ndebug1: kex_ext_info_client_parse: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-256,rsa-sha2-512,ssh-rsa,ssh-dss>\ndebug1: kex_ext_info_check_ver: ping@openssh.com=<0>\ndebug2: service_accept: ssh-userauth\ndebug1: SSH2_MSG_SERVICE_ACCEPT received\n
\u200b\u800c\u200b\u540c\u6837\u200b\u7684\u200b\u5ba2\u6237\u7aef\u200b\u76f4\u8fde\u200b OpenSSH 8.9 \u200b\u670d\u52a1\u7aef\u200b\uff08Ubuntu 22.04\uff09\u200b\u7684\u200b\u65e5\u5fd7\u200b\u8282\u9009\u200b\u5982\u4e0b\u200b\uff1a
debug1: SSH2_MSG_EXT_INFO received\ndebug1: kex_ext_info_client_parse: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com,webauthn-sk-ecdsa-sha2-nistp256@openssh.com>\ndebug1: kex_ext_info_check_ver: publickey-hostbound@openssh.com=<0>\ndebug2: service_accept: ssh-userauth\ndebug1: SSH2_MSG_SERVICE_ACCEPT received\n
\u200b\u56e0\u6b64\u200b\u786e\u8ba4\u200b\u95ee\u9898\u200b\u4e3a\u200b sshmux \u200b\u8f6c\u53d1\u200b\u4e86\u200b packet type 192\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u662f\u200b\u5728\u200b x/crypto/ssh
\u200b\u4e2d\u200b\u627e\u5230\u200b ext_info
\u200b\u76f8\u5173\u200b\u4ee3\u7801\u200b\u5e76\u200b\u4ece\u4e2d\u200b\u5220\u6389\u200b ping@openssh.com
\u200b\u7684\u200b\u652f\u6301\u200b\uff1a42b2075
@ USTC-vlab/sshmux
\u200b\u7531\u4e8e\u200b RegreSSHion\uff08CVE-2024-6387\uff09\u200b\u6f0f\u6d1e\u200b\uff0c\u200b\u4fee\u6539\u200b\u9632\u706b\u5899\u200b\u4f7f\u200b\u865a\u62df\u673a\u200b\u7684\u200b 22 \u200b\u7aef\u53e3\u200b\u53ea\u80fd\u200b\u4ece\u200b web \u200b\u5bb9\u5668\u200b\u8fde\u63a5\u200b\uff0c\u200b\u907f\u514d\u200b\u7528\u6237\u200b\u5185\u200b\u7f51\u200b\u5185\u90e8\u200b\u4e92\u76f8\u200b\u626b\u63cf\u200b\u7206\u7834\u200b\u3002
\u200b\u53e6\u5916\u200b\u4fee\u590d\u200b\u4e86\u200b sshmux \u200b\u7531\u4e8e\u200b\u4e0a\u6e38\u200b x/crypto
\u200b\u66f4\u65b0\u200b\u5bfc\u81f4\u200b SSH \u200b\u8fde\u63a5\u200b\u51fa\u73b0\u200b sign_and_send_pubkey: no mutual signature supported
\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
OpenSSH \u200b\u5f00\u542f\u200b DEBUG1 \u200b\u4e4b\u540e\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u5982\u4e0b\u200b\u8f93\u51fa\u200b\uff1a
debug1: kex_ext_info_client_parse: server-sig-algs=<>\n
\u200b\u68c0\u67e5\u200b 1 \u200b\u6708\u4efd\u200b\u5c06\u200b x/crypto
\u200b\u66f4\u65b0\u200b\u5230\u200b v0.18.0 \u200b\u7684\u200b\u65f6\u5019\u200b\u6ca1\u6709\u200b\u6ce8\u610f\u200b\u5230\u200b ServerConfig
\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u5b57\u200b\u6bb5\u200b PublicKeyAuthAlgorithms
\uff0c\u200b\u4e14\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u5217\u8868\u200b\u4ec5\u200b\u5728\u200b NewServerConn
\u200b\u5185\u200b\u8bbe\u7f6e\u200b\uff08\u200b\u4e0d\u50cf\u200b Config
\u200b\u6709\u200b SetDefaults
\u200b\u65b9\u6cd5\u200b\uff09\uff1b\u200b\u800c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\u4e86\u200b\u81ea\u5df1\u200b\u5199\u200b\u7684\u200b NewPipeSession
\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u56e0\u6b64\u200b\u8fd9\u4e2a\u200b\u5b57\u200b\u6bb5\u200b\u4e00\u76f4\u200b\u4e3a\u7a7a\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u662f\u200b\u5728\u200b pipe.go
\u200b\u4e2d\u52a0\u200b\u4e00\u4e2a\u200b\u51fd\u6570\u200b\u5c06\u200b\u9ed8\u8ba4\u200b\u7684\u200b algorithm \u200b\u5217\u8868\u200b\u5bfc\u51fa\u200b\uff1a
func DefaultPublicKeyAuthAlgos() []string {\n return supportedPublicKeyAuthAlgos\n}\n
\u200b\u7136\u540e\u200b\u5728\u200b\u6211\u4eec\u200b\u7684\u200b\u524d\u7aef\u200b\u4ee3\u7801\u200b\u4e2d\u200b\u4f7f\u7528\u200b\u5373\u53ef\u200b\uff1a
sshConfig := &ssh.ServerConfig{\n PublicKeyAuthAlgorithms: ssh.DefaultPublicKeyAuthAlgos(),\n}\n
5 \u200b\u6708\u200b 10 \u200b\u65e5\u200b \u200b\u4fee\u590d\u200b\uff1a\u200b\u66f4\u65b0\u200b code-server \u200b\u7684\u200b\u811a\u672c\u200b\uff08pv1:/root/vlab-software/code-server.sh
\uff09\u200b\u8c03\u7528\u200b rsync \u200b\u65f6\u200b\u5fd8\u8bb0\u200b\u52a0\u200b --delete
\u200b\u4e86\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u66f4\u65b0\u200b\u5230\u200b 4.89.0 \u200b\u540e\u200b\u51fa\u9519\u200b\u3002
\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u7ba1\u7406\u200b\u9875\u9762\u200b\u65b0\u589e\u200b\u4e86\u200b\u91cd\u547d\u540d\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u9009\u9879\u200b\u548c\u200b\u201c\u200b\u7ba1\u7406\u5458\u200b\u6d88\u606f\u200b\u201d\u200b\u529f\u80fd\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u5185\u5b58\u5bb9\u91cf\u200b\u589e\u52a0\u200b\u5230\u200b\u4e86\u200b 6 GB\uff08\u200b\u65b0\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u4e5f\u200b\u91c7\u7528\u200b 6 GB\uff09\u3002
3 \u200b\u6708\u200b 8 \u200b\u65e5\u200b\u200b\u8c03\u6574\u200b\u4e86\u200b SSL \u200b\u8bc1\u4e66\u200b\u7684\u200b\u90e8\u7f72\u200b\u65b9\u5f0f\u200b\u3002
2 \u200b\u6708\u200b 18 \u200b\u65e5\u200b\u200b\u4fee\u590d\u200b\u4e86\u200b KVM \u200b\u865a\u62df\u673a\u200b\u9ed8\u8ba4\u200b\u4e0d\u5e26\u200b zram.ko
\u200b\u7684\u200b\u95ee\u9898\u200b\uff08\u200b\u901a\u8fc7\u200b cloud.cfg
\u200b\u52a0\u88c5\u200b linux-image-extra-virtual
\uff09\uff0c\u200b\u5e76\u200b\u66f4\u65b0\u200b\u4e86\u200b\u865a\u62df\u673a\u200b\u955c\u50cf\u200b\u3002
\u200b\u5168\u9762\u200b\u5f00\u653e\u200b\u4e86\u200b KVM \u200b\u865a\u62df\u673a\u200b\u6743\u9650\u200b\uff0c\u200b\u5141\u8bb8\u200b\u7528\u6237\u200b\u81ea\u884c\u200b\u521b\u5efa\u200b KVM \u200b\u865a\u62df\u673a\u200b\u3002
1 \u200b\u6708\u200b 14 \u200b\u65e5\u200b\u200b\u66f4\u65b0\u200b\u4e86\u200b Ubuntu 22.04, Ubuntu 20.04 \u200b\u548c\u200b CECS \u200b\u4e09\u4e2a\u200b\u955c\u50cf\u200b\uff0c\u200b\u7ed9\u200b systemd-journald \u200b\u52a0\u4e0a\u200b\u4e86\u200b\u5199\u76d8\u200b\u548c\u200b\u5199\u200b /run
\u200b\u7684\u200b\u5bb9\u91cf\u200b\u9650\u5236\u200b\u3002
\u200b\u5728\u200b pv9 - pv14 \u200b\u4e0a\u200b\u5b89\u88c5\u200b\u4e86\u200b\u65b0\u200b\u7684\u200b intel-microcode
\u200b\u5305\u5e76\u200b\u5b89\u6392\u200b\u8ba1\u5212\u200b\u91cd\u542f\u200b\uff0c\u200b\u4fee\u590d\u200b\u4e86\u200b CVE-2023-23583\u3002
\u200b\u540c\u65f6\u200b\u66f4\u65b0\u200b\u4e86\u200b Django\uff0c\u200b\u5728\u200b\u865a\u62df\u673a\u200b ID \u200b\u540e\u9762\u200b\u663e\u793a\u200b\u8282\u70b9\u200b\u540d\u79f0\u200b\u3002
10 \u200b\u6708\u200b 2 \u200b\u65e5\u200bVlab Software \u200b\u4e0a\u7ebf\u200b\u4e86\u200b Vivado 2023.1\uff0c\u200b\u5bb9\u91cf\u200b\u7ea6\u200b\u4e3a\u200b 29 GB\u3002
/opt/vlab/applications/vivado2023.desktop\n/opt/vlab/bin/vivado2023\n/opt/vlab/vivado/Xilinx/Vivado/2023.1/\n
\u200b\u6d4b\u8bd5\u200b\u53d1\u73b0\u200b Vivado 2023.1 \u200b\u5728\u200b\u5f00\u59cb\u200b\u7efc\u5408\u200b\u548c\u200b\u5f00\u59cb\u200b\u5b9e\u73b0\u200b\u7684\u200b\u65f6\u5019\u200b\u90fd\u200b\u4f1a\u200b\u95ea\u9000\u200b\uff0c\u200b\u88ab\u8feb\u200b\u8865\u4e0a\u200b\u4e86\u200b\u7956\u4f20\u200b\u7684\u200b LD_PRELOAD Ubuntu 18.04 \u200b\u7684\u200b libudev.so.1.6.9
\uff1b\u200b\u63a5\u4e0b\u6765\u200b route_design \u200b\u4e00\u6b65\u200b\u8fd8\u662f\u200b\u4f1a\u200b\u5f02\u5e38\u200b\u7ed3\u675f\u200b\uff08\u200b\u4f46\u200b\u7a0b\u5e8f\u200b\u6ca1\u6709\u200b\u6574\u4e2a\u200b\u95ea\u9000\u200b\uff09\uff0c\u200b\u53c8\u200b\u88ab\u8feb\u200b\u8865\u4e0a\u200b\u4e86\u200b libdbus-glib-1.so.2.3.4
\u3002
\u200b\u6309\u7167\u200b\u89c4\u5212\u200b\u4e86\u200b\u4e00\u4e2a\u591a\u6708\u200b\u4ee5\u6765\u200b\u7684\u200b\u65b9\u6848\u200b\u5168\u9762\u200b\u5207\u6362\u200b\u5230\u200b\u4e86\u200b PVE Firewall\uff0c\u200b\u5e76\u200b\u66f4\u65b0\u200b\u4e86\u200b vlab-vnc\u3001vlab-vscode \u200b\u7b49\u200b\u56e0\u6b64\u200b\u53d7\u76ca\u200b\u7684\u200b\u8f6f\u4ef6\u200b\u3002
9 \u200b\u6708\u200b 15 \u200b\u65e5\u200b\u200b\u6d4b\u8bd5\u200b\u53d1\u73b0\u200b HPE MSA 1050 \u200b\u7684\u200b Virtual Volume \u200b\u662f\u200b\u652f\u6301\u200b SCSI Unmap \u200b\u7684\u200b\uff0c\u200b\u56e0\u6b64\u200b\u5728\u200b\u6240\u6709\u200b\u8ba1\u7b97\u200b\u8282\u70b9\u200b\u7684\u200b /etc/lvm/lvm.conf
\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\u4e86\u200b issue_discard = 1
\uff0c\u200b\u7136\u540e\u200b\u901a\u8fc7\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u4e34\u65f6\u200b LV \u200b\u7684\u200b\u65b9\u5f0f\u200b\u628a\u200b\u6240\u6709\u200b\u672a\u200b\u5206\u914d\u200b\u7a7a\u95f4\u200b\u90fd\u200b unmap \u200b\u4e86\u200b\u4e00\u4e0b\u200b\uff1a
lvcreate -l 100%FREE -n test user-data\nblkdiscard -f user-data/test\nlvremove user-data/test\n
\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u540e\u53f0\u200b\u663e\u793a\u200b\u7684\u200b Allocated \u200b\u4ece\u200b 30.3 TB \u200b\u4e0b\u964d\u200b\u5230\u200b\u4e86\u200b 17.1 TB\u3002
9 \u200b\u6708\u200b 5 \u200b\u65e5\u200b\u200b\u5b9e\u73b0\u200b\u4e86\u200b Linux KVM \u200b\u865a\u62df\u673a\u200b\u955c\u50cf\u200b\u7684\u200b\u53ef\u200b\u590d\u73b0\u200b\u914d\u7f6e\u200b\uff08\u200b\u89c1\u200b labstrap \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u7684\u200b kvmstrap
\u200b\u4ee3\u7801\u200b\uff0c\u200b\u6682\u672a\u5168\u200b\u81ea\u52a8\u5316\u200b\uff09\uff0c\u200b\u5e76\u200b\u636e\u6b64\u200b\u6784\u5efa\u200b\u51fa\u200b\u4e86\u200b\u7b2c\u4e00\u4efd\u200b \u200b\u53ef\u7528\u200b\u7684\u200b KVM \u200b\u955c\u50cf\u200b\uff08VM 200\uff09\u3002
\u200b\u66f4\u65b0\u200b\u4e86\u200b Django \u200b\u4ee3\u7801\u200b\uff0c\u200b\u652f\u6301\u200b\u5bf9\u200b\u4e0d\u540c\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u91c7\u7528\u200b\u4e0d\u540c\u200b\u914d\u7f6e\u200b\u53c2\u6570\u200b\uff0c\u200b\u5e76\u200b\u90e8\u7f72\u200b\u4e86\u200b\u66f4\u65b0\u200b\u540e\u200b\u7684\u200b\u4ee3\u7801\u200b\u3002\u200b\u8fd9\u200b\u6807\u5fd7\u200b\u7740\u200b\u65b0\u200b\u4e00\u6279\u200b\u670d\u52a1\u5668\u200b pv9-14 \u200b\u53ca\u200b\u5bf9\u5e94\u200b\u7684\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u6b63\u5f0f\u200b\u6295\u5165\u200b\u670d\u52a1\u200b\u3002
\u200b\u4ea4\u6362\u200b\u4e86\u200b pv8 \u200b\u548c\u200b pv9 \u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u73b0\u5728\u200b pv2-8 \u200b\u53ca\u200b pv10-14 \u200b\u8fd0\u884c\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u3002pv1 \u200b\u548c\u200b pv9 \u200b\u4fdd\u7559\u200b\uff0c\u200b\u5206\u522b\u200b\u7528\u4e8e\u200b\u8fd0\u884c\u200b Vlab \u200b\u6838\u5fc3\u200b\u670d\u52a1\u200b\u53ca\u5176\u200b\u4ed6\u200b\u9ad8\u200b\u914d\u7f6e\u200b\u9700\u6c42\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u3002
\u200b\u4fee\u6539\u200b\u4e86\u200b vscode-pdf \u200b\u63d2\u4ef6\u200b\u4f7f\u200b\u5176\u200b\u53ef\u4ee5\u200b\u5728\u200b code-server \u200b\u4e2d\u200b\u6b63\u5e38\u200b\u8fd0\u884c\u200b\uff08\u200b\u89c1\u200b\u7528\u6237\u6587\u6863\u200b\uff09\u3002
8 \u200b\u6708\u200b 23 \u200b\u65e5\u200b\u200b\u914d\u7f6e\u200b\u597d\u200b\u4e86\u200b pv9 - pv14 \u200b\u516d\u200b\u53f0\u200b\u673a\u5668\u200b\u548c\u200b\u65b0\u200b\u7684\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u5c06\u200b\u65b0\u200b\u7684\u200b\u8ba1\u7b97\u200b\u8282\u70b9\u200b\u5347\u7ea7\u200b\u5230\u200b\u4e86\u200b PVE 8 \u200b\u5e76\u200b\u52a0\u5165\u200b\u4e86\u200b\u73b0\u6709\u200b\u7684\u200b\u96c6\u7fa4\u200b\u3002\u200b\u6b64\u5904\u200b\u5e76\u200b\u6ca1\u6709\u200b\u8e29\u200b\u4ec0\u4e48\u200b\u5751\u200b\u3002
\u200b\u4fee\u6539\u200b\u4e86\u200b /etc/pve/corosync.conf
\uff0c\u200b\u5220\u9664\u200b\u4e86\u200b link 1\uff08\u200b\u53ea\u200b\u4fdd\u7559\u200b\u4e86\u200b link 0\uff09\u3002
\u200b\u4e3a\u200b\u300a\u200b\u8ba1\u7b97\u200b\u7cfb\u7edf\u200b\u7efc\u5408\u200b\u5b9e\u9a8c\u200b\u300b\u200b\u8bfe\u7a0b\u200b\u5b9a\u5236\u200b\u4e86\u200b\u7cfb\u7edf\u200b\u73af\u5883\u200b\uff1a
riscv64-unknown-elf
\uff09\uff0c\u200b\u901a\u8fc7\u200b /opt/vlab/riscv64
\u200b\u63d0\u4f9b\u200b\u3002/opt/vlab
\u200b\u63d0\u4f9b\u200b\u3002vlab21-CECS-ubuntu-desktop-mate-22.04
\u200b\u955c\u50cf\u200b\uff0c\u200b\u901a\u8fc7\u200b apt install
\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u76f8\u5173\u200b\u8f6f\u4ef6\u200b\u3002\u200b\u53e6\u5916\u200b\u534f\u52a9\u200b\u914d\u7f6e\u200b\u4e86\u200b soc.ustc.edu.cn \u200b\u57df\u540d\u200b\u4e0b\u200b\u7684\u200b\u76f8\u5173\u200b\u7f51\u9875\u200b\u670d\u52a1\u200b\u3002
8 \u200b\u6708\u200b 6 \u200b\u65e5\u200b\u200b\u5c06\u200b\u4e3b\u673a\u200b\u5347\u7ea7\u200b\u5230\u200b\u4e86\u200b PVE 8.0 \u200b\u4e0e\u200b PBS 3.0\uff0c\u200b\u540c\u65f6\u200b\u66f4\u65b0\u200b\u4e86\u200b\uff087 \u200b\u6708\u200b\u5df2\u200b\u5f00\u53d1\u200b\u5b8c\u6210\u200b\u7684\u200b\uff09Django KVM \u200b\u76f8\u5173\u200b\u529f\u80fd\u200b\u652f\u6301\u200b\u3002
7 \u200b\u6708\u200b 4 \u200b\u65e5\u200b\u200b\u4fee\u6539\u200b\u4e86\u200b /opt/vlab/.dev/kvm
\u200b\u6743\u9650\u200b\u4e3a\u200b 100000:100107 0660
\uff08Proxmox VE \u200b\u53ca\u200b Ubuntu \u200b\u955c\u50cf\u200b\u4e2d\u200b\u7684\u200b kvm
\u200b\u7ec4\u200b\uff09\uff0c/opt/vlab/.dev/tun
\u200b\u6743\u9650\u200b\u4e3a\u200b 100000:100000 0666
\uff0c\u200b\u4f7f\u5f97\u200b\u865a\u62df\u673a\u200b\u5185\u200b\u7684\u200b\u666e\u901a\u7528\u6237\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u8bbf\u95ee\u200b KVM \u200b\u548c\u200b TUN\u3002\u200b\u76f8\u5173\u200b\u6587\u6863\u200b\u4e8e\u200b 7 \u200b\u6708\u200b 7 \u200b\u65e5\u200b\u66f4\u65b0\u200b\u3002
vlab-earlyoom \u200b\u5df2\u200b\u4e0d\u518d\u200b\u4f9d\u8d56\u4e8e\u200b\u7cfb\u7edf\u200b\u7684\u200b earlyoom \u200b\u5305\u200b\uff0c\u200b\u8f6c\u4e3a\u200b\u4f7f\u7528\u200b\u81ea\u5df1\u200b\u9884\u200b\u7f16\u8bd1\u200b\u7684\u200b earlyoom \u200b\u7a0b\u5e8f\u200b\uff1b\u200b\u540c\u65f6\u200b\u901a\u77e5\u200b\u65b9\u5f0f\u200b\u6539\u4e3a\u200b\u4f7f\u7528\u200b Zenity \u200b\u56fe\u5f62\u5316\u200b\u901a\u77e5\u200b\u6846\u200b\uff08\u200b\u6548\u679c\u200b\uff09\u3002
Django \u200b\u4fee\u590d\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u7531\u4e8e\u200b .save()
\u200b\u4f1a\u200b\u66f4\u65b0\u200b\u6240\u6709\u200b\u5217\u200b\u5bfc\u81f4\u200b\u7684\u200b race condition\u3002
\u200b\u7531\u4e8e\u200b\u78c1\u76d8\u7a7a\u95f4\u200b\u7206\u6ee1\u200b\u540e\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u865a\u62df\u673a\u200b\u65e0\u6cd5\u200b\u5f00\u673a\u200b\uff0c\u200b\u65b0\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u5df2\u200b\u5c06\u200b ext4 reserved space \u200b\u4ece\u200b 0 \u200b\u6539\u4e3a\u200b 1%\uff08\u200b\u5728\u200b vlab-pve-agent \u200b\u4e2d\u200b\u4fee\u6539\u200b tune2fs -m
\u200b\u7684\u200b\u53c2\u6570\u200b\uff09\u3002
Django \u200b\u7684\u200b\u767b\u5f55\u200b\u9875\u9762\u200b\u9ed8\u8ba4\u200b\u6298\u53e0\u200b\u7528\u6237\u540d\u200b\u5bc6\u7801\u200b\u767b\u5f55\u200b\uff0c\u200b\u5e76\u200b\u5c55\u793a\u200b\u4e00\u4e2a\u200b\u5de8\u5927\u200b\u7684\u200b\u201c\u200b\u7edf\u4e00\u200b\u8eab\u4efd\u200b\u8ba4\u8bc1\u200b\u767b\u5f55\u200b\u201d\u200b\u6309\u94ae\u200b\uff0c\u200b\u4ee5\u200b\u9f13\u52b1\u200b\u7528\u6237\u200b\u4f7f\u7528\u200b CAS \u200b\u767b\u5f55\u200b\u3002
\u200b\u4ee5\u53ca\u200b\u4e00\u4e9b\u200b\u4e0e\u200b\u6e05\u9000\u200b\u5224\u65ad\u200b\u76f8\u5173\u200b\u7684\u200b\u540e\u53f0\u200b\u903b\u8f91\u200b\u8c03\u6574\u200b\u3002
2 \u200b\u6708\u200b 17 \u200b\u65e5\u200b\u200b\u66f4\u65b0\u200b\u4e86\u200b Django\uff0c\u200b\u9650\u5236\u200b\u5e76\u884c\u6267\u884c\u200b\u7684\u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u4efb\u52a1\u200b\uff0c\u200b\u52a0\u5feb\u200b\u5bb9\u5668\u200b\u521b\u5efa\u200b\uff0c\u200b\u5e76\u200b\u6539\u8fdb\u200b\u4e86\u200b\u865a\u62df\u673a\u200b\u7ba1\u7406\u200b\u9875\u9762\u200b\u7684\u200b\u7528\u6237\u200b\u4f53\u9a8c\u200b\u3002\u200b\u540c\u65f6\u200b\u5728\u200b\u4e2a\u4eba\u4fe1\u606f\u200b\u9875\u9762\u200b\u663e\u793a\u200b\u4ece\u200b CAS \u200b\u83b7\u53d6\u200b\u7684\u200b\u7528\u6237\u200b\u90ae\u7bb1\u200b\u3002
\u200b\u66f4\u65b0\u200b\u4e86\u200b Filestash\uff0c\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u63d0\u793a\u200b\uff0c\u200b\u4f7f\u200b\u64cd\u4f5c\u200b\u66f4\u200b\u76f4\u89c2\u200b\u3002
2 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u200b\u5c06\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u7684\u200b\u6784\u5efa\u200b\u81ea\u52a8\u5316\u200b\uff0c\u200b\u4e0d\u518d\u200b\u9700\u8981\u200b\u5728\u200b\u81ea\u5df1\u200b\u7684\u200b\u673a\u5668\u200b\u4e0a\u200b\u624b\u52a8\u200b\u8fd0\u884c\u200b\u6784\u5efa\u200b\u811a\u672c\u200b\u3002
\u200b\u540c\u65f6\u200b\u4fee\u6539\u200b\u4e86\u200b\u5df2\u6709\u200b\u7684\u200b\u5bb9\u5668\u200b\uff0c\u200b\u505c\u7528\u200b\u6216\u200b\u9519\u5f00\u200b\u4e86\u200b\u51e0\u4e2a\u200b\u56fa\u5b9a\u200b\u65f6\u95f4\u200b\u7684\u200b systemd timer \u200b\u5b9a\u65f6\u200b\u4efb\u52a1\u200b\uff0c\u200b\u5c1d\u8bd5\u200b\u7f13\u89e3\u200b\u6bcf\u5929\u200b 0 \u200b\u70b9\u200b\u548c\u200b 6 \u200b\u70b9\u200b\u7a81\u53d1\u200b\u7684\u200b iowait\u3002
"},{"location":"changelog/#2022-\u5e74","title":"2022 \u200b\u5e74","text":"9 \u200b\u6708\u200b 20 \u200b\u65e5\u200b\u200b\u5c06\u200b post creation \u200b\u4ece\u200b\u521b\u5efa\u200b\u65f6\u200b\u6267\u884c\u200b\u6539\u4e3a\u200b\u9996\u6b21\u200b\u542f\u52a8\u200b\u65f6\u200b\u6267\u884c\u200b\uff0c\u200b\u4f7f\u5f97\u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u7684\u200b\u754c\u9762\u200b\u4e0d\u518d\u200b\u963b\u585e\u200b\u3002
4 \u200b\u6708\u200b 11 \u200b\u65e5\u200b\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u7f51\u9875\u200b SSH \u200b\u767b\u5f55\u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u5728\u200b Chrome \u200b\u4e0e\u200b Edge \u200b\u6d4f\u89c8\u5668\u200b\u4e0b\u200b noVNC \u200b\u81ea\u52a8\u200b\u526a\u8d34\u677f\u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u65b9\u4fbf\u200b\u7528\u6237\u200b\u4f7f\u7528\u200b\u3002
2 \u200b\u6708\u200b 14 \u200b\u65e5\u200b\u200b\u5bf9\u200b LXC \u200b\u865a\u62df\u673a\u200b\u63d0\u4f9b\u200b\u201c\u200b\u6062\u590d\u6a21\u5f0f\u200b SSH\u201d\u200b\u63a5\u53e3\u200b\uff0c\u200b\u4f7f\u200b\u7528\u6237\u200b\u53ef\u4ee5\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u65ad\u7f51\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u901a\u8fc7\u200b SSH \u200b\u767b\u5f55\u200b\u83b7\u5f97\u200b\u865a\u62df\u673a\u200b\u7684\u200b shell\uff0c\u200b\u81ea\u4e3b\u200b\u8fdb\u884c\u200b\u6062\u590d\u200b\u5de5\u4f5c\u200b\u3002
1 \u200b\u6708\u200b 28 \u200b\u65e5\u200b\u200b\u4fee\u6539\u7248\u200b Filestash \u200b\u6d4b\u8bd5\u200b\u4e0a\u7ebf\u200b\u3002\u200b\u672c\u6b21\u200b\u66f4\u65b0\u200b\u4e3b\u8981\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u81ea\u52a8\u200b\u767b\u5f55\u200b\u529f\u80fd\u200b\uff0c\u200b\u5e76\u4e14\u200b\u4fee\u6b63\u200b\u4e86\u200b\u5927\u91cf\u200b\u95ee\u9898\u200b\u3002
1 \u200b\u6708\u200b 26 \u200b\u65e5\u200b\u200b\u7d27\u6025\u200b\u5b89\u5168\u66f4\u65b0\u200b\uff0c\u200b\u540c\u65f6\u200b\u66f4\u65b0\u200b\u4e86\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\u7684\u200b sshd_config
\u200b\u4e3a\u200b\u63a5\u4e0b\u6765\u200b\u4e3a\u200b\u6240\u6709\u200b username \u200b\u542f\u7528\u200b SSH \u200b\u8bc1\u4e66\u200b\u767b\u5f55\u200b\u505a\u597d\u200b\u51c6\u5907\u200b\u3002
vlab.ustc.edu.cn
\u200b\u914d\u7f6e\u200b\u7684\u200b HSTS \u200b\u4ece\u200b 1 \u200b\u5c0f\u65f6\u200b\u5347\u7ea7\u200b\u81f3\u200b 1 \u200b\u5468\u200b\uff08max-age=604800
\uff09\u3002
\u200b\u4fee\u590d\u200b\u4e86\u200b Grafana \u200b\u663e\u793a\u200b\u7684\u200b VNC \u200b\u5728\u7ebf\u200b\u65f6\u200b\u957f\u200b\u6bcf\u4e2a\u200b\u6708\u200b\u4f1a\u200b\u6709\u200b\u4e00\u4e2a\u200b\u5f02\u5e38\u200b\u9ad8\u5cf0\u200b\u7684\u200b\u60c5\u51b5\u200b\uff08MySQL \u200b\u65e5\u671f\u200b\u65f6\u95f4\u200b\u8ba1\u7b97\u200b\u95ee\u9898\u200b\uff09\u3002
\u200b\u539f\u6765\u200b\u4f7f\u7528\u200b\u7684\u200b SELECT \u200b\u9879\u76ee\u200b\u662f\u200b SUM(disconnect_time - connect_time)
\uff0c\u200b\u6539\u4e3a\u200b SUM(TIME_TO_SEC(TIMEDIFF(disconnect_time, connect_time)))
\u200b\u540e\u200b\u6b63\u5e38\u200b\u4e86\u200b\u3002
\u200b\u66f4\u65b0\u200b\u4e86\u200b 01 \u200b\u53f7\u200b\u955c\u50cf\u200b\uff0c\u200b\u5347\u7ea7\u200b\u4e86\u200b\u6240\u6709\u200b\u8f6f\u4ef6\u5305\u200b\uff0c\u200b\u6e05\u7406\u200b\u4e86\u200b\u591a\u4f59\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b apt \u200b\u6e90\u200b\u6362\u56de\u200b\u4e86\u200b\u79d1\u5927\u200b\u955c\u50cf\u200b\u7ad9\u200b\u3002
8 \u200b\u6708\u200b 21 \u200b\u65e5\u200b\u200b\u5c06\u200b\u96c6\u7fa4\u200b\u5168\u90e8\u200b\u5347\u7ea7\u200b\u81f3\u200b Proxmox VE 7.0
8 \u200b\u6708\u200b 12 \u200b\u65e5\u200b\u200b\u4fee\u590d\u200b\u4e86\u200b\u62e5\u6709\u200b\u591a\u4e2a\u200b\u5b66\u53f7\u200b\u6216\u200b\u5de5\u53f7\u200b\u7684\u200b\u7528\u6237\u200b\u901a\u8fc7\u200b\u4e0d\u540c\u200b\u5b66\u5de5\u200b\u53f7\u200b\u767b\u5f55\u200b\u65f6\u200b\u6570\u636e\u200b\u4e0d\u200b\u4e92\u901a\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
4 \u200b\u6708\u200b 11 \u200b\u65e5\u200b\u200b\u901a\u8fc7\u200b Vlab Software \u200b\u63d0\u4f9b\u200b\u4e86\u200b RISC-V \u200b\u7684\u200b GCC \u200b\u5de5\u5177\u200b\u94fe\u200b\uff0c\u200b\u4ee5\u53ca\u200b RARS \u200b\u6a21\u62df\u5668\u200b\uff08\u200b\u5df2\u200b\u7f16\u5199\u200b .desktop
\u200b\u6587\u4ef6\u200b\u4f7f\u7528\u200b Vlab Software \u200b\u63d0\u4f9b\u200b\u7684\u200b JDK 14 \u200b\u8fd0\u884c\u200b\uff09
\u200b\u901a\u8fc7\u200b Vlab Software \u200b\u63d0\u4f9b\u200b\u4e86\u200b Xilinx Vivado 2016.3 \u200b\u7248\u672c\u200b\uff0c\u200b\u4e3a\u200b 2019.1 \u200b\u7248\u672c\u200b\u7684\u200b\u517c\u5bb9\u6027\u95ee\u9898\u200b\u63d0\u4f9b\u200b\u4e00\u4e2a\u200b\u5907\u200b\u9009\u9879\u200b\u3002
"},{"location":"changelog/#2020-\u5e74","title":"2020 \u200b\u5e74","text":"11 \u200b\u6708\u200b 18 \u200b\u65e5\u200b\u200b\u5c06\u200b\u6545\u969c\u200b\u635f\u6bc1\u200b\u7684\u200b CT 100 \u200b\u6062\u590d\u200b\u5e76\u200b\u91cd\u5efa\u200b\u3002
11 \u200b\u6708\u200b 14 \u200b\u65e5\u200bVivado \u200b\u4eff\u771f\u200b\u7684\u200b\u62a5\u9519\u200b\u5df2\u7ecf\u200b\u5728\u200b\u955c\u50cf\u200b\u4e2d\u200b\u4fee\u590d\u200b\uff0c\u200b\u65b0\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\uff08ID \u200b\u5927\u4e8e\u200b 2266\uff09\u200b\u4e0d\u518d\u200b\u53d7\u6b64\u200b\u5f71\u54cd\u200b\u3002
\u200b\u5728\u7ebf\u200b VSCode \u200b\u7f16\u7a0b\u200b\u5e73\u53f0\u200b\u5f00\u653e\u200b\u6d4b\u8bd5\u200b\u3002
10 \u200b\u6708\u200b 29 \u200b\u65e5\u200b\u200b\u7528\u6237\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u5173\u95ed\u200b VNC \u200b\u767b\u5f55\u200b\u65f6\u200b\u663e\u793a\u200b\u7684\u200b\u52a0\u5165\u200b QQ \u200b\u7fa4\u200b\u7684\u200b\u901a\u77e5\u200b\u3002
Note
\u200b\u672c\u200b\u9875\u9762\u200b\u4e8e\u200b 2020 \u200b\u5e74\u200b 9 \u200b\u6708\u521d\u200b\u521b\u5efa\u200b\uff0c\u200b\u56e0\u6b64\u200b 2020 \u200b\u5e74\u200b 8 \u200b\u6708\u200b\u53ca\u200b\u4ee5\u524d\u200b\u7684\u200b\u66f4\u65b0\u200b\u8bb0\u5f55\u200b\u662f\u200b\u4e0d\u200b\u5b8c\u6574\u200b\u7684\u200b\u3002\u200b\u5c3d\u7ba1\u200b\u7f16\u8005\u200b\u5df2\u200b\u4ece\u200b\u8ba8\u8bba\u200b\u7fa4\u200b\u7684\u200b\u804a\u5929\u8bb0\u5f55\u200b\u7b49\u200b\u5730\u200b\u5c3d\u53ef\u80fd\u200b\u6062\u590d\u200b\uff08\u200b\u8865\u5199\u200b\uff09\u200b\u51fa\u200b\u4e86\u200b\u4e00\u4e9b\u200b\uff0c\u200b\u4f46\u200b\u8bb8\u591a\u200b\u7ec6\u8282\u200b\u4ecd\u7136\u200b\u96be\u4ee5\u200b\u4fdd\u8bc1\u200b\u5b8c\u6574\u6027\u200b\u53ca\u200b\u51c6\u786e\u6027\u200b\u3002
9 \u200b\u6708\u200b 8 \u200b\u65e5\u200b\u200b\u5b8c\u6210\u200b\u4e86\u200b\u5728\u200b\u5bb9\u5668\u200b\u4e4b\u95f4\u200b\u5171\u4eab\u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\u7684\u200b\u8bbe\u8ba1\u200b\uff08\u200b\u955c\u50cf\u200b 01 \u200b\u5df2\u7ecf\u200b\u66ff\u6362\u200b\u4e3a\u200b\u65b0\u200b\u7248\u672c\u200b\uff09\uff0c\u200b\u8fd9\u200b\u53ef\u4ee5\u200b\u51cf\u5c11\u200b\u76f8\u540c\u200b\u7684\u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\u91cd\u590d\u200b\u5b58\u50a8\u200b\u7684\u200b\u95ee\u9898\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5c06\u200b\u8f6f\u4ef6\u200b\u653e\u7f6e\u200b\u5728\u200b SSD \u200b\u4e0a\u200b\uff0c\u200b\u4e5f\u200b\u9884\u671f\u200b\u53ef\u4ee5\u200b\u63d0\u9ad8\u200b\u6027\u80fd\u200b\u3002\u200b\u540c\u65f6\u200b\uff0c\u200b\u65b0\u521b\u5efa\u200b\u7684\u200b\u5bb9\u5668\u200b\u4e5f\u200b\u652f\u6301\u200b\u5d4c\u5957\u200b\u5bb9\u5668\u200b\u4e86\u200b\u3002
9 \u200b\u6708\u200b 5 \u200b\u65e5\u200b\u200b\u865a\u62df\u673a\u200b\u7ba1\u7406\u200b\u754c\u9762\u200b\u7684\u200b\u684c\u9762\u200b\u8fde\u63a5\u529f\u80fd\u200b\u73b0\u5728\u200b\u53ef\u4ee5\u200b\u81ea\u52a8\u200b\u8fde\u63a5\u200b\u5bf9\u5e94\u200b\u865a\u62df\u673a\u200b\uff08\u200b\u4f7f\u7528\u200b URL parameters \u200b\u4f20\u9012\u4fe1\u606f\u200b\uff09
9 \u200b\u6708\u200b 3 \u200b\u65e5\u200bSSH \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4e86\u200b\u3002\u200b\u9884\u8ba1\u200b\u5c06\u200b\u5728\u200b\u4e00\u6bb5\u65f6\u95f4\u200b\u4e4b\u540e\u200b\u5173\u95ed\u200b\u65e7\u200b\u7684\u200b\u767b\u5f55\u200b\u65b9\u5f0f\u200b\uff08\u200b\u7aef\u53e3\u200b\u8f6c\u53d1\u200b\uff09\uff0c\u200b\u5177\u4f53\u200b\u65f6\u95f4\u200b\u5f85\u5b9a\u200b
8 \u200b\u6708\u200b 4 \u200b\u65e5\u200b\u200b\u57fa\u4e8e\u200b Grafana + InfluxDB / MySQL \u200b\u7684\u200b\u7528\u91cf\u200b\u6570\u636e\u200b\u7edf\u8ba1\u200b\u9875\u9762\u200b
8 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u200b\u5149\u7ea4\u7f51\u7edc\u200b\uff08ens1f0\u3001ens1f1\uff09\u200b\u7684\u200b MTU \u200b\u73b0\u5728\u200b\u662f\u200b 1550 \u200b\u5b57\u8282\u200b\u4e86\u200b
\u200b\u4fee\u590d\u200b\u4e86\u200b pv8 \u200b\u7684\u200b\u5149\u7ea4\u7f51\u7edc\u200b
noVNC \u200b\u652f\u6301\u200b\u57fa\u4e8e\u200b\u6d4f\u89c8\u5668\u200b cookie \u200b\u7684\u200b\u4e00\u952e\u200b\u767b\u5f55\u200b\uff0c\u200b\u51cf\u5c11\u200b\u91cd\u590d\u200b\u8f93\u5165\u200b\u7528\u6237\u540d\u200b\u5bc6\u7801\u200b\u7684\u200b\u9ebb\u70e6\u200b
\u200b\u914d\u7f6e\u200b\u5e76\u200b\u6253\u5305\u200b\u597d\u200b\u4e86\u200b Ubuntu 20.04 \u200b\u7684\u200b\u955c\u50cf\u200b\uff0c\u200b\u6682\u65f6\u200b\u4ee5\u200b\u7f16\u53f7\u200b 99 \u200b\u63d0\u4f9b\u200b
3 \u200b\u6708\u200b 31 \u200b\u65e5\u200b\u200b\u5411\u200b pv0 \u200b\u52a0\u88c5\u200b\u4e86\u200b 32 GB \u200b\u5185\u5b58\u200b\uff0c\u200b\u5411\u200b pv2~pv8 \u200b\u52a0\u88c5\u200b\u4e86\u200b 64 GB \u200b\u5185\u5b58\u200b\uff0c\u200b\u5411\u200b pv2~pv5 \u200b\u52a0\u88c5\u200b\u4e86\u200b Netronome Agilio \u200b\u7cfb\u5217\u200b\u7f51\u5361\u200b
3 \u200b\u6708\u200b 25 \u200b\u65e5\u200b2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u5b66\u671f\u200b\u63d0\u4f9b\u200b\u670d\u52a1\u200b\u7684\u200b\u5355\u53f0\u200b\u670d\u52a1\u5668\u200b\u5df2\u200b\u683c\u5f0f\u5316\u200b\u91cd\u88c5\u200b\u4e3a\u200b Proxmox VE 6.1 \u200b\u64cd\u4f5c\u7cfb\u7edf\u200b\uff0c\u200b\u547d\u540d\u200b\u4e3a\u200b pv0
2 \u200b\u6708\u200b\u200b\u5185\u200b\u7f51\u200b\u7f51\u5173\u200b\uff08CT 100\uff09\u200b\u521d\u6b65\u200b\u914d\u7f6e\u200b\u5b8c\u6210\u200b
Web \u200b\u670d\u52a1\u5668\u200b\uff08CT 101\uff09\u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u7684\u200b\u5bb9\u5668\u200b\u4e0a\u200b\uff0c2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u7684\u200b\u65e7\u200b\u673a\u5668\u200b\u6682\u65f6\u200b\u95f2\u7f6e\u200b
pdlan \u200b\u4f7f\u7528\u200b C++ \u200b\u7f16\u5199\u200b\u7684\u200b VNC \u200b\u7f51\u5173\u200b\u6d4b\u8bd5\u200b\u5b8c\u6210\u200b
\u200b\u7f51\u9875\u200b\u865a\u62df\u673a\u200b\u7ba1\u7406\u5668\u200b\uff08Django\uff09\u200b\u9002\u914d\u200b\u4e86\u200b Proxmox VE API\uff0c\u200b\u5220\u9664\u200b\u4e86\u200b LXC / LXD \u200b\u76f8\u5173\u200b\u7684\u200b\u4ee3\u7801\u200b
\u200b\u4fee\u6539\u200b\u4e86\u200b\u5f00\u6e90\u200b\u8f6f\u4ef6\u200b noVNC\uff0c\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u6d4f\u89c8\u5668\u200b\u767b\u5f55\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u65b9\u5f0f\u200b
\u200b\u91cd\u65b0\u200b\u6253\u5305\u200b\u4e86\u200b\u51e0\u4e2a\u200b\u65b0\u200b\u955c\u50cf\u200b\uff0c\u200b\u4f9b\u200b\u7528\u6237\u200b\u5728\u200b\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u65f6\u200b\u9009\u62e9\u200b
\u200b\u7ecf\u8fc7\u200b\u591a\u756a\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u9009\u5b9a\u200b\u4e86\u200b LightDM + TigerVNC\uff0c\u200b\u517c\u5bb9\u6027\u200b\u6700\u597d\u200b\u4e14\u200b\u6700\u200b\u5bb9\u6613\u200b\u914d\u7f6e\u200b
\u200b\u6d4b\u8bd5\u200b\u4e86\u200b fcitx \u200b\u4e0e\u200b ibus\uff0c\u200b\u914d\u7f6e\u200b\u597d\u200b\u4e86\u200b\u4e2d\u6587\u200b\u8f93\u5165\u6cd5\u200b
\u200b\u901a\u8fc7\u200b\u955c\u50cf\u200b\u5185\u7f6e\u200b SSH CA \u200b\u7684\u200b\u65b9\u5f0f\u200b\u5b9e\u73b0\u200b\u5bb9\u5668\u200b\u5185\u200b\u8fdc\u7a0b\u200b\u547d\u4ee4\u200b\u6267\u884c\u200b
\u200b\u66f4\u65b0\u200b\u4e86\u200b\u7528\u6237\u6587\u6863\u200b\u9879\u76ee\u200b\uff0c\u200b\u66f4\u200b\u5bb9\u6613\u200b\u7f16\u5199\u200b\u3001\u200b\u9605\u8bfb\u200b\u4f53\u9a8c\u200b\u66f4\u597d\u200b\uff0c\u200b\u5e76\u4e14\u200b\u66f4\u65b0\u200b\u4e86\u200b\u6587\u6863\u200b\u5185\u5bb9\u200b
\u200b\u521b\u5efa\u200b\u4e86\u200b\u7ef4\u62a4\u8005\u200b\u6587\u6863\u200b\uff08\u200b\u5373\u672c\u200b\u6587\u6863\u200b\uff09
\u2026\u2026\u200b\u8fd8\u6709\u200b\u66f4\u200b\u591a\u200b\uff08\u200b\u5f53\u524d\u200b\u4e00\u4ee3\u200b\u7684\u200b vlab \u200b\u57fa\u672c\u200b\u90fd\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u6708\u200b\u914d\u7f6e\u200b\u90e8\u7f72\u200b\u5b8c\u6210\u200b\uff0c\u200b\u65f6\u95f4\u200b\u201c\u200b\u4e45\u8fdc\u200b\u201d\u200b\u96be\u4ee5\u200b\u4ed4\u7ec6\u200b\u8003\u8bc1\u200b\uff09
"},{"location":"changelog/#2019-\u5e74","title":"2019 \u200b\u5e74","text":"9 \u200b\u6708\u200b\u200b\u521d\u7248\u200b vlab \u200b\u5b9e\u9a8c\u200b\u5e73\u53f0\u200b\u5728\u200b\u300a\u200b\u6570\u5b57\u7535\u8def\u200b\u5b9e\u9a8c\u200b\u300b\u200b\u8bfe\u7a0b\u200b\u9009\u5b9a\u200b\u7684\u200b 30 \u200b\u4eba\u200b\u5de6\u53f3\u200b\u4e2d\u200b\u8fdb\u884c\u200b\u6d4b\u8bd5\u200b
"},{"location":"overview/","title":"Vlab \u200b\u7b2c\u4e8c\u4ee3\u200b\u670d\u52a1\u5668\u200b\u96c6\u7fa4","text":""},{"location":"overview/#compute-server","title":"\u8ba1\u7b97\u200b\u670d\u52a1\u5668","text":"\u200b\u7b2c\u4e8c\u4ee3\u200b Vlab \u200b\u7684\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5171\u6709\u200b 16 \u200b\u53f0\u200b\uff0c\u200b\u5176\u4e2d\u200b 14 \u200b\u53f0\u4e3a\u200b\u666e\u901a\u200b\u670d\u52a1\u5668\u200b\uff088 \u200b\u53f0\u4e00\u200b\u6279\u6b21\u200b\uff0c6 \u200b\u53f0\u4e8c\u200b\u6279\u6b21\u200b\uff09\uff0c2 \u200b\u53f0\u4e3a\u200b GPU \u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u53e6\u200b\u6709\u200b\u4e24\u200b\u6279\u6b21\u200b\u5404\u53f0\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u3002
"},{"location":"overview/#compute-server-cpu","title":"\u666e\u901a\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668","text":"\u200b\u7b2c\u4e00\u6279\u200b 8 \u200b\u53f0\u200b\u666e\u901a\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5206\u522b\u200b\u547d\u540d\u200b\u4e3a\u200b pv1 \u200b\u5230\u200b pv8\uff0c\u200b\u6bcf\u53f0\u200b\u670d\u52a1\u5668\u200b\u5305\u542b\u200b\u53cc\u8def\u200b Intel Xeon Scalable Silver 4110 \u200b\u5904\u7406\u5668\u200b\uff08\u200b\u5171\u200b 16 \u200b\u6838\u5fc3\u200b\u300132 \u200b\u7ebf\u7a0b\u200b\uff09\uff0c\u200b\u9884\u88c5\u200b\u5185\u5b58\u200b 32 GB\uff082 x 16 GB DDR4 2400 ECC\uff09\uff0c\u200b\u786c\u76d8\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u4e24\u5757\u200b HPE SSD 480GB \u200b\u548c\u200b\u4e09\u5757\u200b 2.4 TB 10K SAS \u200b\u786c\u76d8\u200b\uff08\u200b\u53d6\u51fa\u200b\u6765\u200b\u653e\u8fdb\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u989d\u5916\u200b\u786c\u76d8\u200b\u7b3c\u200b\uff09
\u200b\u6240\u6709\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u5185\u200b\u5b58\u5728\u200b\u8d2d\u5165\u200b\u65f6\u5747\u200b\u5347\u7ea7\u200b\u81f3\u200b 160 GB\uff082 x 16 GB + 4 x 32 GB\uff09\uff0c\u200b\u5176\u4e2d\u200b pv2 ~ pv8 \u200b\u7684\u200b\u5185\u200b\u5b58\u5728\u200b 2020 \u200b\u5e74\u200b 3 \u200b\u6708\u5e95\u200b\u518d\u6b21\u200b\u5347\u7ea7\u200b\u81f3\u200b 224 GB\uff082 x 16 GB + 6 x 32 GB\uff09\u3002
\u200b\u7f51\u7edc\u200b\u65b9\u9762\u200b\uff0c\u200b\u8fd9\u200b\u6b3e\u200b\u670d\u52a1\u5668\u200b\u81ea\u5e26\u200b\u4e00\u4e2a\u200b\u56db\u53e3\u200b\u5343\u5146\u200b\u7f51\u5361\u200b\uff08\u200b\u7cfb\u7edf\u200b\u5185\u200b\u540d\u79f0\u200b\u4e3a\u200b eno1
\u200b\u5230\u200b eno4
\uff09\uff0c\u200b\u4e00\u4e2a\u200b\u767e\u5146\u200b\u53e3\u200b\u8fde\u63a5\u200b HPE iLO 5\uff08\u200b\u5373\u200b HPE \u200b\u7684\u200b IPMI \u200b\u8fdc\u7a0b\u7ba1\u7406\u200b\u5361\u200b\uff09\u3002\u200b\u53e6\u5916\u200b\u6bcf\u53f0\u200b\u670d\u52a1\u5668\u200b\u6269\u5c55\u200b\u4e86\u200b\u4e24\u4e2a\u200b 10 Gbps \u200b\u7684\u200b\u5149\u7ea4\u200b\u63a5\u53e3\u200b\uff08\u200b\u5206\u522b\u200b\u4e3a\u200b ens1f0
\u200b\u548c\u200b ens1f1
\uff09\uff0c\u200b\u901a\u8fc7\u200b\u4e00\u4e2a\u200b\u5149\u200b\u4ea4\u6362\u673a\u200b\u5728\u200b\u6240\u6709\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u548c\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b iSCSI \u200b\u7aef\u53e3\u200b\u5b9e\u73b0\u200b\u4e00\u4e2a\u200b\u5185\u200b\u7f51\u200b\u4e92\u8054\u200b\u3002
\u200b\u7b2c\u4e00\u4ee3\u200b Vlab \u200b\u7684\u200b\u552f\u4e00\u200b\u4e00\u53f0\u200b\u670d\u52a1\u5668\u200b\u5728\u200b\u91cd\u88c5\u200b\u540e\u200b\u6709\u9650\u200b\u63d0\u4f9b\u200b\u670d\u52a1\u200b\uff0c\u200b\u547d\u540d\u200b\u4e3a\u200b pv0\uff0c\u200b\u56e0\u6b64\u200b\u96c6\u7fa4\u200b\u5171\u6709\u200b 11 \u200b\u53f0\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u3002\u200b\u4e0e\u200b 2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u65f6\u200b\u76f8\u6bd4\u200b\uff0c\u200b\u5b83\u200b\u591a\u200b\u4e86\u200b 32 GB \u200b\u7684\u200b\u5185\u5b58\u200b\uff08NUMA \u200b\u4e0d\u200b\u5747\u8861\u200b\uff09\u200b\u548c\u200b\u4e00\u5757\u200b Intel X520-DA2 \u200b\u5149\u7ea4\u5361\u200b\u7528\u4e8e\u200b\u63a5\u5165\u200b\u5149\u7ea4\u7f51\u7edc\u200b\uff08\u200b\u4f46\u662f\u200b\u6700\u540e\u200b\u6ca1\u200b\u63a5\u4e0a\u200b\uff0c\u200b\u76ee\u524d\u200b\u7528\u4e8e\u200b\u6d4b\u8bd5\u200b\u5e73\u53f0\u200b\uff09\u3002
\u200b\u4e3b\u673a\u200b\u7684\u200b IPMI \u200b\u5730\u5740\u200b\u4e3a\u200b 10.38.79.100 \u200b\u81f3\u200b 10.38.79.108\uff0c\u200b\u6700\u540e\u200b\u4e00\u4f4d\u200b\u6570\u5b57\u200b\u548c\u200b\u4e3b\u673a\u540d\u200b\u4e00\u81f4\u200b\uff0c\u200b\u8be6\u89c1\u200b IP \u200b\u5730\u5740\u200b\u5217\u8868\u200b\u3002
\u200b\u7b2c\u4e8c\u6279\u200b 6 \u200b\u53f0\u200b\u666e\u901a\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5206\u522b\u200b\u547d\u540d\u200b\u4e3a\u200b pv9 \u200b\u5230\u200b pv14\uff0c\u200b\u6bcf\u53f0\u200b\u670d\u52a1\u5668\u200b\u5305\u542b\u200b\u53cc\u8def\u200b Intel Xeon Scalable Silver 4314 \u200b\u5904\u7406\u5668\u200b\uff08\u200b\u5171\u200b 32 \u200b\u6838\u5fc3\u200b\u300164 \u200b\u7ebf\u7a0b\u200b\uff09\uff0c\u200b\u9884\u88c5\u200b\u5185\u5b58\u200b 256 GB\uff088 x 32 GB DDR4 2666 ECC\uff09\uff0c\u200b\u786c\u76d8\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u4e24\u5757\u200b 960 GB SSD\uff08\u200b\u6742\u724c\u200b SSSTC ER2-CD960A\uff09\u3002\u200b\u8fd9\u200b\u6b3e\u200b\u670d\u52a1\u5668\u200b\u914d\u7f6e\u200b\u4e86\u200b\u4e00\u5757\u200b\u53cc\u53e3\u200b I350\uff08\u200b\u53ef\u80fd\u200b\u662f\u200b\u677f\u8f7d\u200b\uff09\u200b\u7f51\u5361\u200b\u548c\u200b\u4e00\u5757\u200b\u53cc\u53e3\u200b 82599ES SFP+ \u200b\u7f51\u5361\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u72ec\u7acb\u200b\u7684\u200b IPMI \u200b\u7f51\u53e3\u200b\u3002\u200b\u65b0\u200b\u6279\u6b21\u200b\u7684\u200b\u670d\u52a1\u5668\u4e4b\u95f4\u200b\u6709\u200b\u4e00\u53f0\u200b\u65b0\u200b\u7684\u200b\u5149\u53e3\u200b\u4ea4\u6362\u673a\u200b\u4e92\u8054\u200b\uff0c\u200b\u65b0\u65e7\u200b\u4ea4\u6362\u673a\u200b\u4e4b\u95f4\u200b\u6709\u200b\u4e00\u4e2a\u200b QSFP+ 40 Gbps \u200b\u7684\u200b\u5149\u7ea4\u200b\u3002
\u200b\u540c\u200b\u524d\u200b\uff0c\u200b\u4e3b\u673a\u200b\u7684\u200b IPMI \u200b\u5730\u5740\u200b\u4e3a\u200b 10.38.79.109 \u200b\u81f3\u200b 10.38.79.114\u3002
"},{"location":"overview/#compute-server-gpu","title":"GPU \u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668","text":"2 \u200b\u53f0\u200b GPU \u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u547d\u540d\u200b\u4e3a\u200b pvg1 \u200b\u548c\u200b pvg2\uff0c\u200b\u6bcf\u53f0\u200b\u670d\u52a1\u5668\u200b\u5305\u542b\u200b\u53cc\u8def\u200b Intel Xeon Scalable Gold 5218 \u200b\u5904\u7406\u5668\u200b\uff08\u200b\u5171\u200b 32 \u200b\u6838\u5fc3\u200b\u300164 \u200b\u7ebf\u7a0b\u200b\uff09\uff0c\u200b\u5185\u5b58\u5bb9\u91cf\u200b\u4e3a\u200b 192 GB\uff08\u200b\u7ec4\u5408\u200b\u53ca\u200b NUMA \u200b\u60c5\u51b5\u200b\u672a\u77e5\u200b\uff09\u3002\u200b\u786c\u76d8\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u4e24\u5757\u200b HPE SSD 480GB\uff08pvg1 \u200b\u53e6\u6709\u200b\u56db\u5757\u200b Intel DC S4500 480GB\uff09\uff0c\u200b\u7f51\u5361\u200b\u914d\u7f6e\u200b\u4e0e\u200b CPU \u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u4e00\u81f4\u200b\u3002
\u200b\u5176\u4e2d\u200b pvg1 \u200b\u5b89\u88c5\u200b\u6709\u200b\u4e24\u5757\u200b RTX 2070 Super GPU\uff08\u200b\u53ef\u80fd\u200b\u4e3a\u200b\u6280\u5609\u200b\uff09\uff0cpvg2 \u200b\u5b89\u88c5\u200b\u6709\u200b\u4e00\u5757\u200b RTX 2070 Super GPU\uff08\u200b\u578b\u53f7\u200b\u672a\u77e5\u200b\uff09\u200b\u548c\u200b\u4e00\u5757\u200b Quadro RTX 6000 GPU\u3002
"},{"location":"overview/#operating-system","title":"\u64cd\u4f5c\u7cfb\u7edf","text":"\u200b\u8fd9\u6279\u200b\u670d\u52a1\u5668\u200b\u5168\u90e8\u200b\u5b89\u88c5\u200b Proxmox VE \u200b\u7cfb\u7edf\u200b\uff0c\u200b\u57fa\u4e8e\u200b Debian\u3002\u200b\u672c\u200b\u5e73\u53f0\u200b\u4f7f\u7528\u200b Proxmox VE \u200b\u7ba1\u7406\u200b LXC \u200b\u5bb9\u5668\u200b\u548c\u200b KVM \u200b\u865a\u62df\u673a\u200b\u3002
"},{"location":"overview/#storage-server","title":"\u5b58\u50a8\u200b\u670d\u52a1\u5668","text":"\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u4e3a\u200b HPE MSA 1050\uff0c\u200b\u6709\u200b 24 \u200b\u4e2a\u200b 2.5 \u200b\u5bf8\u200b SAS \u200b\u76d8\u4f4d\u200b\u548c\u200b\u4e24\u4e2a\u200b iSCSI \u200b\u63a7\u5236\u5668\u200b\u3002\u200b\u8d2d\u4e70\u200b\u65f6\u200b\u5e26\u6709\u200b 18 \u200b\u5757\u200b 1.2 TB \u200b\u7684\u200b\u786c\u76d8\u200b\uff0c\u200b\u540e\u6765\u200b\u90a2\u51ef\u200b\u8001\u5e08\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u989d\u5916\u200b\u7684\u200b\u786c\u76d8\u200b\u7b3c\u200b\uff0c\u200b\u6269\u5c55\u200b\u4e86\u200b 24 \u200b\u4e2a\u200b\u76d8\u4f4d\u200b\uff0c\u200b\u6b63\u597d\u200b\u653e\u4e0b\u200b 8 \u200b\u53f0\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5404\u81ea\u200b\u5e26\u200b\u7684\u200b 3 \u200b\u5757\u200b\u673a\u68b0\u200b\u786c\u76d8\u200b\u3002
\u200b\u8be5\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u6709\u200b\u4e24\u4e2a\u200b\u63a7\u5236\u5668\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u63a7\u5236\u5668\u200b\u5404\u6709\u200b\u4e00\u4e2a\u200b\u4ee5\u592a\u7f51\u200b\u53e3\u200b\uff08\u200b\u7528\u4e8e\u200b\u7ba1\u7406\u200b\u754c\u9762\u200b\uff09\u200b\u548c\u200b\u4e24\u4e2a\u200b\u5149\u7ea4\u200b\u63a5\u53e3\u200b\uff0810 Gbps\uff0c\u200b\u7528\u4e8e\u200b\u6570\u636e\u4f20\u8f93\u200b\uff09\u3002\u200b\u76ee\u524d\u200b\u4e24\u4e2a\u200b\u63a7\u5236\u5668\u200b\u7684\u200b\u7ba1\u7406\u200b\u63a5\u53e3\u200b\u90fd\u200b\u63a5\u5165\u200b\u6821\u56ed\u7f51\u200b\uff0c\u200b\u5730\u5740\u200b\u5206\u522b\u200b\u4e3a\u200b 10.38.79.98 \u200b\u548c\u200b 10.38.79.99\u3002
"},{"location":"overview/#location","title":"\u673a\u623f","text":"\u200b\u673a\u623f\u200b\u5728\u200b\u7535\u4e09\u697c\u200b 524\uff1a
5 \u200b\u53f7\u200b\u673a\u67dc\u200b\u548c\u200b 8 \u200b\u53f7\u200b\u673a\u67dc\u200b\u80cc\u540e\u200b\u6700\u200b\u4e0a\u65b9\u200b\u5404\u6709\u200b\u4e00\u4e2a\u200b\u5149\u200b\u4ea4\u6362\u673a\u200b\u548c\u200b\u7535\u200b\u4ea4\u6362\u673a\u200b\uff0c\u200b\u53c2\u89c1\u200b\u7f51\u7edc\u200b\u914d\u7f6e\u200b\u3002
"},{"location":"overview/#resources","title":"\u5176\u4ed6\u200b\u8d44\u6e90","text":"\u200b\u5b66\u6821\u200b\u5b98\u65b9\u200b\u57df\u540d\u200b vlab.ustc.edu.cn
\u200b\u5c5e\u4e8e\u200b\u672c\u200b\u9879\u76ee\u200b\uff0c\u200b\u6307\u5411\u200b A 202.38.75.226 \u200b\u53ca\u200b AAAA 2001:da8:d800:75::226\u3002\u200b\u53e6\u6709\u200b\u9759\u6001\u200b IP \u200b\u5730\u5740\u200b 202.38.75.252 \u200b\u7528\u4f5c\u200b\u5b66\u751f\u200b\u673a\u200b\u7f51\u5173\u200b\uff0c\u200b\u6ca1\u6709\u200b\u57df\u540d\u200b\u3002\u200b\u5173\u4e8e\u200b IP \u200b\u5730\u5740\u200b\u8be6\u89c1\u200b\u8fd9\u4e2a\u200b\u9875\u9762\u200b\u3002
\u200b\u6240\u6709\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u7684\u200b IPMI \u200b\u7f51\u9875\u200b\u3001\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u4e24\u4e2a\u200b\u7ba1\u7406\u200b\u63a5\u53e3\u200b\u4ee5\u53ca\u200b\u6211\u4eec\u200b\u7684\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u90fd\u200b\u4f7f\u7528\u200b\u81ea\u5df1\u200b\u7684\u200b CA \u200b\u7b7e\u53d1\u200b\u7684\u200b\u8bc1\u4e66\u200b\u3002\u200b\u8be5\u200b CA \u200b\u76ee\u524d\u200b\u7531\u200b iBug \u200b\u7ba1\u7406\u200b\uff0cCA \u200b\u8bc1\u4e66\u200b\u5728\u200b\u8fd9\u91cc\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6dfb\u52a0\u200b\u5230\u200b\u7cfb\u7edf\u200b\u7684\u200b\u8bc1\u4e66\u200b\u4fe1\u4efb\u200b\u5217\u8868\u200b\u4e2d\u200b\uff0c\u200b\u65b9\u4fbf\u200b\u540e\u7eed\u200b\u7ba1\u7406\u200b\u673a\u5668\u200b\u3002
"},{"location":"ssh-ca/","title":"SSH \u200b\u8bc1\u4e66\u200b\u8ba4\u8bc1","text":"\u200b\u6240\u6709\u200b Proxmox VE \u200b\u4e3b\u673a\u200b\u53ca\u200b\u51e0\u4e2a\u200b\u7279\u6b8a\u200b\u5bb9\u5668\u200b\uff08CT100 gateway\uff0cCT101 web \u200b\u548c\u200b\u5176\u4ed6\u200b ID \u200b\u4e3a\u200b 1xx \u200b\u7684\u200b\u5bb9\u5668\u200b/\u200b\u865a\u62df\u673a\u200b\uff09\u200b\u7684\u200b SSH \u200b\u767b\u5f55\u200b\u5747\u200b\u4f7f\u7528\u200b\u8bc1\u4e66\u200b\u3002
\u200b\u5173\u4e8e\u200b OpenSSH \u200b\u7684\u200b\u8bc1\u4e66\u200b\u8ba4\u8bc1\u200b\u65b9\u5f0f\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b iBug \u200b\u7684\u200b\u535a\u5ba2\u200b\uff08\u200b\u82f1\u6587\u200b\uff09\u3001totoro \u200b\u7684\u200b\u535a\u5ba2\u200b\u4ee5\u53ca\u200b\u6821\u200b Linux \u200b\u7528\u6237\u200b\u534f\u4f1a\u200b\u7684\u200b\u670d\u52a1\u5668\u200b\u7ef4\u62a4\u200b\u6587\u6863\u200b\u3002
CA \u200b\u516c\u94a5\u200b\uff1a
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD6KdAJzKLswXyjf4SipNL1dlK1Vq0KNOit/MTDLiamkqvHJDiKceLYmN97y3Chdx8ofXwW6sRUBJRrjmYq6M0JZSGc8roUtUnSai1P5q1kZQ59x1IhsduTg4WENSteSB6vIvpyoSmcIhi3v9UHgUsl4MsnHxffxx5BiyW7UHPY3MzzkRZL96A4QXUOFd9P+NED3zHmEZ9B2Q66+s2ep2FmNralK4XwRaVxBO2r9san8vYU5pH2TzYZLYxNZ/AFX3bLV5M+AmZytaSNLcuIzZHyqbYawvD+Lee00VB9A3JcaqsjDUCtHZ5gQsZMmqw2r7gj9lDqM6Fw6A8y5rWNJP3Q+FOEEYvzGnQ/SnzU0MpMvGpYWrm/uCJ8pFdbYTYkxAJ+VO0lJ5mAIN664cX0DQ3OyGH/xmCNWGGCfGfmvWqwMwD6Kzo06xcqzsoqaMxwgBuVyICE+VvVCf3pcX4HERDrZY0TMjZxaTc8Ws2xQHJbqekv6nIjQWUgH7LIjkYvycQkxXE2dWfDy/c2SRiKWuxW9n8Hymmfp3lbBHzlCa/LtHeuPIzmBUHUoGya0feWFjrbGnKcPs3etNqpvyIGngMaecTAsbrf5v+J1M0VLCfwzwLt13/G1BCb+BK22vYzMTusrR+6A68Fm6OWSFlBYp31uVLxPg0nqtiW8bi1FbD0hQ== Vlab-CA\n
\u200b\u53ef\u4ee5\u200b\u5728\u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b Wget \u200b\u6216\u200b cURL \u200b\u83b7\u53d6\u200b\uff1a
wget -O /etc/ssh/ssh_user_ca https://vlab.ibugone.com/assets/vlab_ca.pub\n
\u200b\u7136\u540e\u200b\u51c6\u5907\u200b /etc/ssh/sshd_config.d/vlab.conf
\uff1a
HostKey /etc/ssh/ssh_host_rsa_key\nHostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub\nTrustedUserCAKeys /etc/ssh/ssh_user_ca\n\nAuthorizedKeysFile none # \u200b\u5c4f\u853d\u200b\u4e0d\u5e26\u200b\u8bc1\u4e66\u200b\u7684\u200b\u516c\u94a5\u200b\u8ba4\u8bc1\u200b\nPermitRootLogin prohibit-password\nPasswordAuthentication no\n
"},{"location":"ssh-ca/#\u7528\u6237-ca","title":"\u7528\u6237\u200b CA","text":"\u200b\u7531\u4e8e\u200b Proxmox VE \u200b\u6ca1\u6709\u200b\u63d0\u4f9b\u200b\u76f4\u63a5\u200b\u5728\u200b\u5bb9\u5668\u200b\u5185\u200b\u6267\u884c\u547d\u4ee4\u200b\u7684\u200b API\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u901a\u8fc7\u200b\u5185\u5d4c\u200b SSH CA \u200b\u7684\u200b\u65b9\u5f0f\u200b\u81ea\u5df1\u200b\u9020\u4e2a\u200b\u8f6e\u5b50\u200b\u3002
\u200b\u51fa\u4e8e\u200b\u7ba1\u7406\u200b\u7684\u200b\u8003\u8651\u200b\uff0c\u200b\u7528\u6237\u200b CA \u200b\u548c\u200b\u4e3b\u673a\u200b CA \u200b\u72ec\u7acb\u200b\u3002\u200b\u516c\u94a5\u200b\uff1a
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAH3ZHisQY0iMpUNDQNaxcnRSqDbauE8ih6/MrEENJZa7FHKINOPi+bunK1wEXPqlKfu8INEBWCf95+t86z+jXVxmQE176xenS92wiLvR4MZyCBfD5DXAB0mK5iV1eQug5P/cD8Pohr/3wywFbKgKzsix9unky9sJGr86RunSwJbAkMGlw== Vlab-User-CA\n
\u200b\u53ef\u4ee5\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u4e2d\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b Wget \u200b\u6216\u200b cURL \u200b\u83b7\u53d6\u200b\uff1a
wget -O /etc/ssh/ssh_user_ca https://vlab.ibugone.com/assets/vlab_user_ca.pub\n
\u200b\u5c06\u200b CA \u200b\u6dfb\u52a0\u200b\u81f3\u200b\u5bb9\u5668\u200b\u6216\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u64cd\u4f5c\u200b\u4e0e\u200b\u4e0a\u9762\u200b\u7c7b\u4f3c\u200b\uff0c\u200b\u4f46\u662f\u200b\u4e0d\u200b\u9700\u8981\u200b\u5bf9\u200b\u4e3b\u673a\u200b\u516c\u94a5\u200b\u8fdb\u884c\u200b\u7b7e\u540d\u200b\uff0c\u200b\u56e0\u6b64\u200b\u53ea\u200b\u9700\u8981\u200b
/etc/ssh/ssh_user_ca
\u200b\u5728\u200b sshd_config
\u200b\u4e2d\u200b\u8ffd\u52a0\u200b\uff0c\u200b\u6216\u8005\u200b\u521b\u5efa\u200b /etc/ssh/sshd_config.d/vlab.conf
\u200b\u5e76\u200b\u5199\u5165\u200b
TrustedUserCAKeys /etc/ssh/ssh_user_ca\n
\u200b\u6ce8\u610f\u200b\u4f7f\u7528\u200b sshd_config.d
\u200b\u524d\u8981\u200b\u786e\u8ba4\u200b\u8f6f\u4ef6\u5305\u200b\u63d0\u4f9b\u200b\u7684\u200b sshd_config
\u200b\u5305\u542b\u200b\u4e86\u200b Include \u200b\u8bed\u53e5\u200b\uff0c\u200b\u5426\u5219\u8bf7\u200b\u76f4\u63a5\u200b\u4fee\u6539\u200b sshd_config
\u3002
\u200b\u5426\u5219\u200b\uff0c\u200b\u672a\u200b\u5f00\u542f\u200b\u7684\u200b\u8282\u70b9\u200b\u7531\u4e8e\u200b\u6ca1\u6709\u200b\u6536\u5230\u200b\u66f4\u65b0\u200b\u901a\u77e5\u200b\uff0c\u200b\u53ef\u80fd\u200b\u5728\u200b\u52a0\u5165\u200b\u96c6\u7fa4\u200b\u65f6\u200b\u51fa\u73b0\u200b\u9519\u8bef\u200b\u3002
\u200b\u5728\u200b\u51fa\u73b0\u200b\u9519\u8bef\u200b\u7684\u200b\u8282\u70b9\u200b\u4e0a\u200b\u7684\u200b\u75c7\u72b6\u200b\uff1a
pvesr.service
\u200b\u65e0\u6cd5\u200b\u8fd0\u884c\u200b\uff0c\u200b\u9519\u8bef\u4fe1\u606f\u200b\u5305\u542b\u200b \"error with cfs lock 'file-replication_cfg': no quorum!\"pvecm status
\u200b\u663e\u793a\u200b \"Cannot initialize CMAP service\"corosync.service
\u200b\u672a\u200b\u5728\u200b\u8fd0\u884c\u200b\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a
pve-cluster.service
pmxcfs -l
\uff0c\u200b\u5c06\u200b\u96c6\u7fa4\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u4ee5\u200b local mode \u200b\u542f\u52a8\u200b/etc/pve/corosync.conf
\uff0c\u200b\u8986\u76d6\u200b\u9519\u8bef\u200b\u8282\u70b9\u200b\u7684\u200b\u76f8\u5e94\u200b\u6587\u4ef6\u200bkillall pmxcfs
pve-cluster.service
\u200b\u548c\u200b corosync.service
service 'ct:100' in error state, must be disabled and fixed first
","text":"\u200b\u9700\u8981\u200b\u5148\u200b disable\uff1aha-manager set ct:100 --state disabled
\uff08ct:100
\u200b\u66ff\u6362\u200b\u4e3a\u200b\u62a5\u9519\u200b\u63d0\u793a\u200b\u4e2d\u200b\u5bf9\u5e94\u200b\u7684\u200b\u540d\u5b57\u200b\uff09
ERROR: migration aborted (duration 00:00:00): CT is locked (migrate)
","text":"\u200b\u5bb9\u5668\u200b\uff1apct unlock <ID \u200b\u53f7\u200b>
\u200b\u865a\u62df\u673a\u200b\uff1aqm unlock <ID \u200b\u53f7\u200b>
HA \u200b\u6ce8\u610f\u4e8b\u9879\u200b
\u200b\u8bf7\u52ff\u200b bind mount \u200b\u6216\u200b\u6302\u8f7d\u200b ISO\uff0c\u200b\u5426\u5219\u200b\u8282\u70b9\u200b\u4e0b\u7ebf\u200b\u65f6\u200b\u65e0\u6cd5\u200b\u8fdb\u884c\u200b\u81ea\u52a8\u200b migrate\u3002
"},{"location":"traps/#\u624b\u52a8\u8fc1\u79fb\u542f\u7528\u4e86-ha-\u7684\u865a\u62df\u673a\u6216\u5bb9\u5668\u53c8\u88ab\u81ea\u52a8\u8fc1\u79fb\u56de\u6765\u4e86","title":"\u624b\u52a8\u200b\u8fc1\u79fb\u200b\u542f\u7528\u200b\u4e86\u200b HA \u200b\u7684\u200b\u865a\u62df\u673a\u200b\u6216\u200b\u5bb9\u5668\u200b\u53c8\u200b\u88ab\u200b\u81ea\u52a8\u200b\u8fc1\u79fb\u200b\u56de\u6765\u200b\u4e86","text":"PVE \u200b\u7684\u200b HA \u200b\u592a\u200b\u656c\u4e1a\u200b\u4e86\u200b\uff0c\u200b\u8fd0\u884c\u200b\u865a\u62df\u673a\u200b\u65f6\u4f1a\u200b\u4e25\u683c\u200b\u6309\u7167\u200b HA \u200b\u914d\u7f6e\u200b\u597d\u200b\u7684\u200b\u8282\u70b9\u200b\u4f18\u5148\u7ea7\u200b\u6765\u200b\u8fd0\u884c\u200b\u865a\u62df\u673a\u200b\u3002
\u200b\u65e7\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u200b\u8981\u200b\u60f3\u200b HA \u201c\u200b\u542c\u8bdd\u200b\u201d\uff0c\u200b\u529e\u6cd5\u200b\u5c31\u662f\u200b\u76f4\u63a5\u200b\u6539\u200b\u5404\u200b\u8282\u70b9\u200b\u7684\u200b\u4f18\u5148\u7ea7\u200b\uff0c\u200b\u8ba9\u200b\u542c\u8bdd\u200b\u7684\u200b HA \u200b\u5e2e\u200b\u4f60\u200b\u8fc1\u79fb\u200b\u3002
\u200b\u7ef4\u62a4\u200b\u8282\u70b9\u200b\u524d\u200b\u8bf7\u200b\u5c06\u200b\u5176\u200b\u4f18\u5148\u7ea7\u200b\u8c03\u4f4e\u200b\u6216\u200b\u5220\u6389\u200b\uff08\u200b\u9ed8\u8ba4\u200b\u4e3a\u200b\u96f6\u200b\uff0c\u200b\u6570\u503c\u200b\u8d8a\u9ad8\u8d8a\u200b\u4f18\u5148\u200b\uff09\uff0c\u200b\u4ee5\u514d\u200b\u91cd\u542f\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b HA \u200b\u5c06\u200b\u865a\u62df\u673a\u200b\u9891\u7e41\u200b\u8fc1\u79fb\u200b\u3002
HA group \u200b\u6709\u200b\u4e00\u4e2a\u200b\u9009\u9879\u200b\u662f\u200b nofailback\uff0c\u200b\u5373\u200b\u7981\u7528\u200b\u201c\u200b\u6709\u200b\u66f4\u200b\u9ad8\u200b\u4f18\u5148\u7ea7\u200b\u8282\u70b9\u200b\u5728\u7ebf\u200b\u65f6\u200b\u4f18\u5148\u200b\u8fc1\u79fb\u200b\u5230\u200b\u66f4\u200b\u9ad8\u200b\u8282\u70b9\u200b\u201d\u200b\u8fd9\u4e2a\u200b\u9ed8\u8ba4\u200b\u884c\u4e3a\u200b\u3002\u200b\u542f\u7528\u200b nofailback \u200b\u540e\u200b HA \u200b\u4f1a\u200b\u5c3d\u91cf\u907f\u514d\u200b\u8fc1\u79fb\u200b\u865a\u62df\u673a\u200b\u800c\u200b\u4e0d\u662f\u200b\u5c3d\u91cf\u200b\u5f80\u9ad8\u200b\u4f18\u5148\u7ea7\u200b\u8282\u70b9\u200b\u4e0a\u200b\u8fc1\u79fb\u200b\u3002
"},{"location":"traps/#proxmox-backup-server-\u65e0\u6cd5\u8fde\u63a5\u63d0\u793a-error-fetching-datastores---fingerprint-xxxxxx","title":"Proxmox Backup Server \u200b\u65e0\u6cd5\u200b\u8fde\u63a5\u200b\uff0c\u200b\u63d0\u793a\u200b Error fetching datastores - fingerprint XX:XX:XX:\u2026","text":"PVE \u200b\u4f1a\u200b\u9a8c\u8bc1\u200b PBS \u200b\u7684\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u5982\u679c\u200b\u8bc1\u4e66\u200b\u4e0e\u200b\u914d\u7f6e\u200b\u7684\u200b fingerprint \u200b\u4e0d\u200b\u5339\u914d\u200b\uff08\u200b\u6216\u8005\u200b\u5728\u200b\u6ca1\u6709\u200b fingerprint \u200b\u7684\u200b\u65f6\u5019\u200b\u4e0d\u200b\u4fe1\u4efb\u200b\u8bc1\u4e66\u200b\uff09\uff0c\u200b\u5219\u200b\u4f1a\u200b\u63d0\u793a\u200b\u9519\u8bef\u200b\u3002
\u200b\u7531\u4e8e\u200b\u6211\u4eec\u200b\u7684\u200b\u8bc1\u4e66\u200b\u4f7f\u7528\u200b acme.sh \u200b\u81ea\u52a8\u66f4\u65b0\u200b\uff0c\u200b\u6bcf\u6b21\u200b\u66f4\u65b0\u200b\u540e\u200b\u8bc1\u4e66\u200b\u7684\u200b fingerprint \u200b\u5c31\u200b\u4f1a\u200b\u53d8\u5316\u200b\uff0c\u200b\u800c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\u5185\u200b\u7f51\u200b\u5730\u5740\u200b\u8fde\u63a5\u200b PBS \u200b\u4e5f\u200b\u4e0d\u200b\u53ef\u80fd\u200b\u83b7\u5f97\u200b\u516c\u7f51\u200b\u53ef\u200b\u4fe1\u4efb\u200b\u7684\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u56e0\u6b64\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u662f\u200b\u6bcf\u6b21\u200b\u66f4\u65b0\u200b\u8bc1\u4e66\u200b\u65f6\u200b\u540c\u6b65\u200b\u66f4\u65b0\u200b fingerprint\u3002
\u200b\u5728\u200b pv1 \u200b\u7684\u200b\u66f4\u65b0\u200b\u8bc1\u4e66\u200b\u7684\u200b cron \u200b\u811a\u672c\u200b\u6700\u540e\u200b\u52a0\u5165\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\uff0c\u200b\u4f7f\u7528\u200b OpenSSL \u200b\u83b7\u53d6\u200b\u8bc1\u4e66\u200b fingerprint \u200b\u5e76\u7528\u200b pvesm \u200b\u547d\u4ee4\u200b\u767b\u8bb0\u200b\u4fee\u6539\u200b\uff1a
FP=\"$(openssl x509 -noout -fingerprint -sha256 -inform pem -in \"$SRC/pveproxy-ssl.pem\")\"\nFP=\"${FP##*=}\"\npvesm set pbs --fingerprint \"$FP\"\n
"},{"location":"traps/#lvm","title":"LVM","text":""},{"location":"traps/#\u5f00\u673a\u663e\u793a-cannot-process-volume-group-pve-\u7b49\u9519\u8bef\u4fe1\u606f","title":"\u5f00\u673a\u200b\u663e\u793a\u200b Cannot process volume group pve \u200b\u7b49\u200b\u9519\u8bef\u4fe1\u606f","text":"\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u6bd4\u8f83\u200b\u9ebb\u70e6\u200b\uff0c\u200b\u4e3b\u8981\u200b\u662f\u56e0\u4e3a\u200b IPMI \u200b\u63d0\u4f9b\u200b\u7684\u200b\u90a3\u4e2a\u200b\u8fdc\u7a0b\u200b\u7ec8\u7aef\u200b\u7ecf\u5e38\u200b\u5361\u200b\u3002
\u200b\u539f\u56e0\u200b\u662f\u200b\u7cfb\u7edf\u200b\u4e2d\u6709\u200b /dev/sda
\u200b\u548c\u200b /dev/sdb
\u200b\u4e24\u4e2a\u200b\u8bbe\u5907\u200b\uff0c\u200b\u5176\u4e2d\u200b\u4e00\u4e2a\u200b\u662f\u200b SSD\uff0c\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u4e0d\u200b\u77e5\u9053\u200b\u662f\u200b\u54ea\u6765\u200b\u7684\u200b\uff08\u200b\u53ef\u80fd\u200b\u662f\u200b IPMI \u200b\u7684\u200b\u865a\u62df\u200b\u8bbe\u5907\u200b\uff0c\u200b\u901a\u8fc7\u200b USB \u200b\u603b\u7ebf\u200b\u63a5\u5165\u200b\uff09\uff0c\u200b\u4e3a\u4e86\u200b\u4e0d\u8ba9\u200b LVM \u200b\u6bcf\u6b21\u200b\u8fd0\u884c\u200b\u65f6\u200b\u90fd\u200b\u5410\u200b\u69fd\u200b\u4e00\u904d\u200b open /dev/sdX failed: no medium found
\uff0c\u200b\u5c06\u200b\u62a5\u9519\u200b\u7684\u200b\u90a3\u4e2a\u200b\u8bbe\u5907\u200b\u5c4f\u853d\u200b\uff0c\u200b\u65b9\u6cd5\u200b\u662f\u200b\u5728\u200b /etc/lvm/lvm.conf
\u200b\u4e2d\u200b\u7684\u200b global_filters
\u200b\u4e2d\u200b\u52a0\u5165\u200b \"r|/dev/disk/by-id/usb.*|\"
\uff0c\u200b\u4f7f\u200b LVM \u200b\u626b\u63cf\u200b PV \u200b\u65f6\u200b\u5ffd\u7565\u200b\u8fd9\u4e2a\u200b\u8bbe\u5907\u200b\u53ca\u5176\u200b\u4ed6\u200b\u7ecf\u8fc7\u200b USB \u200b\u603b\u7ebf\u200b\u8fde\u63a5\u200b\u7684\u200b\u8bbe\u5907\u200b\u3002
\u200b\u5751\u70b9\u200b 1\uff08\u200b\u5df2\u200b\u89e3\u51b3\u200b\uff09
\u200b\u66fe\u7ecf\u200b\u7684\u200b\u8fc7\u6ee4\u200b\u89c4\u5219\u200b\u662f\u200b r|/dev/sdb|
\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u628a\u200b\u4efb\u4f55\u200b\u6620\u5c04\u200b\u5230\u200b sdb \u200b\u7684\u200b\u8bbe\u5907\u200b\u90fd\u200b\u5ffd\u7565\u200b\u4e86\u200b\uff0c\u200b\u4f46\u662f\u200b\u5728\u200b\u4e0d\u660e\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u8bbe\u5907\u200b\u4f1a\u200b\u4e92\u6362\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u539f\u5148\u200b\u7684\u200b\u8fc7\u6ee4\u200b\u89c4\u5219\u200b\u628a\u200b\u771f\u6b63\u200b\u7684\u200b\u7cfb\u7edf\u76d8\u200b\u7ed9\u200b\u8fc7\u6ee4\u200b\u6389\u200b\u4e86\u200b\uff0c\u200b\u7559\u4e0b\u200b\u4e00\u4e2a\u200b\u7a7a\u200b\u8bbe\u5907\u200b\uff0c\u200b\u65e0\u6cd5\u200b\u5f00\u673a\u200b\u542f\u52a8\u200b\uff08rootfs \u200b\u5728\u200b LV \u200b\u5377\u200b pve/root \u200b\u4e0a\u200b\uff09
\u200b\u597d\u200b\u5728\u200b\u76ee\u524d\u200b\u6ca1\u6709\u200b\u53d1\u73b0\u200b\u7a7a\u200b\u8bbe\u5907\u200b\u4ece\u200b sdb \u200b\u53d8\u6210\u200b sda \u200b\u7684\u200b\u60c5\u51b5\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u6700\u200b\u591a\u53ea\u200b\u9700\u8981\u200b\u5904\u7406\u200b\u4e00\u6b21\u200b\u5c31\u884c\u200b\uff08\u200b\u5176\u5b9e\u200b\u5230\u200b\u73b0\u5728\u200b\u4e00\u5171\u200b\u5c31\u200b\u53d1\u751f\u200b\u8fc7\u200b\u4e00\u6b21\u200b\uff09\u3002
\u200b\u5751\u70b9\u200b 2
LVM \u200b\u662f\u200b\u5f00\u673a\u200b\u542f\u52a8\u200b\u5fc5\u987b\u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u56e0\u6b64\u200b LVM \u200b\u76f8\u5173\u200b\u7684\u200b\u5de5\u5177\u200b\uff08lvm
\u200b\u547d\u4ee4\u200b\uff09\u200b\u548c\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff08\u200b\u5373\u200b /etc/lvm/lvm.conf
\uff09\u200b\u4f1a\u200b\u6253\u5305\u200b\u8fdb\u200b initramfs \u200b\u91cc\u200b\uff0c\u200b\u8fd9\u65f6\u5019\u200b\u8fd9\u4e2a\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b\u7cfb\u7edf\u200b\u91cc\u200b\u548c\u200b initramfs \u200b\u91cc\u200b\u5c31\u200b\u6709\u200b\u72ec\u7acb\u200b\u7684\u200b\u4e24\u4efd\u200b\u4e86\u200b\uff0c\u200b\u8981\u200b\u4fee\u6539\u200b\u5f97\u200b\u628a\u200b\u4e24\u4efd\u200b\u90fd\u200b\u4fee\u6539\u200b\u6389\u200b\u3002
lvm
\u200b\u5de5\u5177\u200b/etc/lvm/lvm.conf
\uff0c\u200b\u627e\u5230\u200b global_filters
\uff0c\u200b\u628a\u200b\u5176\u4e2d\u200b\u7684\u200b r|/dev/sda|
\u200b\u6362\u6210\u200b r|/dev/sdb|
\uff08\u200b\u6216\u8005\u200b\u53cd\u8fc7\u6765\u200b\u6539\u200b\uff0c\u200b\u53d6\u51b3\u4e8e\u200b\u539f\u5148\u200b\u5185\u5bb9\u200b\u662f\u200b\u4ec0\u4e48\u200b\u4ee5\u53ca\u200b\u524d\u9762\u200b\u62a5\u200b no medium found \u200b\u7684\u200b\u662f\u200b\u54ea\u4e2a\u200b\u8bbe\u5907\u200b\uff09lvm vgscan
\uff0c\u200b\u8fd9\u65f6\u5019\u200b\u518d\u200b lvm vgs
\u200b\u5e94\u8be5\u200b\u5c31\u200b\u80fd\u200b\u770b\u5230\u200b pve \u200b\u8fd9\u4e2a\u200b VG \u200b\u4e86\u200blvm lvchange -ay pve/root
\u200b\u6fc0\u6d3b\u200b rootfs \u200b\u5377\u200b\uff0c\u200b\u627e\u4e2a\u200b\u5730\u65b9\u200b\u6302\u8f7d\u200b\u8d77\u6765\u200b/etc/lvm/lvm.conf
\u200b\u518d\u200b\u6539\u200b\u4e00\u904d\u200b\uff08\u200b\u548c\u200b\u7b2c\u200b 2 \u200b\u6b65\u200b\u76f8\u540c\u200b\uff09update-initramfs -u -k all
\u200b\u66f4\u65b0\u200b initramfs\uff0c\u200b\u91cd\u542f\u200b
\u200b\u5176\u5b9e\u200b\u7b2c\u200b 5 \u200b\u6b65\u200b\u4e0d\u200b\u4e00\u5b9a\u200b\u9700\u8981\u200b chroot\uff0c\u200b\u4f46\u662f\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u662f\u200b\u9700\u8981\u200b\u7684\u200b
LVM \u200b\u5377\u200b\u4e0d\u80fd\u200b\u591a\u4e2a\u200b\u4e3b\u673a\u200b\u540c\u65f6\u200b\u4f7f\u7528\u200b\uff08active \u200b\u72b6\u6001\u200b\uff09\uff0c\u200b\u5982\u679c\u200b\u51fa\u73b0\u200b\u8fd9\u79cd\u200b\u60c5\u51b5\u200b\u4f1a\u200b\u5bfc\u81f4\u200b LVM \u200b\u62d2\u7edd\u200b\u4f7f\u7528\u200b\u53d7\u200b\u5f71\u54cd\u200b\u7684\u200b\u5377\u200b\u3002
\u200b\u76ee\u524d\u200b\u6211\u4eec\u200b\u7684\u200b VG user-data
\u200b\u662f\u200b\u5171\u4eab\u200b\u7684\u200b\uff0c\u200b\u800c\u200b VG pve
\u200b\u662f\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u81ea\u5df1\u200b\u7684\u200b SSD\uff08\u200b\u5373\u200b\u4e0e\u200b\u672c\u200b\u95ee\u9898\u200b\u65e0\u5173\u200b\uff09\u3002
Proxmox VE \u200b\u4f7f\u7528\u200b LVM
Proxmox VE \u200b\u5728\u200b\u542f\u52a8\u200b\u5bb9\u5668\u200b\u6216\u200b\u865a\u62df\u673a\u200b\u65f6\u4f1a\u200b\u5c1d\u8bd5\u200b\u5360\u7528\u200b\u76f8\u5173\u200b\u7684\u200b\u5377\u200b\uff08\u200b\u8bbe\u200b\u4e3a\u200b active\uff09\uff0c\u200b\u5e76\u200b\u5728\u200b\u5173\u95ed\u200b\u5bb9\u5668\u200b\u6216\u200b\u865a\u62df\u673a\u200b\u65f6\u200b\u53d6\u6d88\u200b active \u200b\u72b6\u6001\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6b63\u5e38\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u4e0d\u4f1a\u200b\u51fa\u73b0\u200b\u8de8\u200b\u4e3b\u673a\u200b\u5360\u7528\u200b\u7684\u200b\u60c5\u51b5\u200b\u3002
\u200b\u8be5\u200b\u5751\u70b9\u200b\u53ef\u80fd\u200b\u5df2\u200b\u4fee\u590d\u200b\uff0c\u200b\u5c1a\u672a\u200b\u6d4b\u8bd5\u200b
\u200b\u5f00\u673a\u200b\u542f\u52a8\u200b\u6216\u8005\u200b\u624b\u52a8\u200b\u8fde\u63a5\u200b iSCSI \u200b\u8bbe\u5907\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u4e0a\u9762\u200b\u6240\u6709\u200b\u7684\u200b LV \u200b\u90fd\u200b\u53d8\u6210\u200b active\uff0c\u200b\u8fd9\u662f\u200b PVE \u200b\u7684\u200b\u9ed8\u8ba4\u200b\u884c\u4e3a\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u6839\u636e\u200b Server Fault \u200b\u4e0a\u200b\u7684\u200b\u8fd9\u4e2a\u200b\u56de\u7b54\u200b\uff0c\u200b\u5728\u200b /etc/lvm/lvm.conf
\u200b\u4e2d\u200b\u5199\u5165\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\uff1a
auto_activation_volume_list = [ \"pve\", \"data\" ]\n
\u200b\u4fdd\u5b58\u200b\u540e\u200b LVM \u200b\u5c31\u200b\u4e0d\u4f1a\u200b\u5728\u200b\u68c0\u6d4b\u200b\u5230\u200b\u65b0\u200b VG \u200b\u65f6\u200b\u81ea\u52a8\u200b\u542f\u7528\u200b\u5168\u90e8\u200b\u5377\u200b\u4e86\u200b\u3002\u200b\u53ef\u80fd\u200b\u9700\u8981\u200b\u66f4\u65b0\u200b initramfs \u200b\u548c\u200b/\u200b\u6216\u200b\u91cd\u542f\u200b\u3002
\u200b\u89e3\u51b3\u200b\u6b65\u9aa4\u200b\uff1a
lvchange -an <vg/lv>
\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u5728\u200b\u5168\u90e8\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u5377\u200b\u53d6\u6d88\u200b\u4e86\u200b active \u200b\u72b6\u6001\u200b\uff0c\u200b\u7136\u540e\u200b\u5176\u4e2d\u200b\u4e00\u4e2a\u200b\u4e3b\u673a\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5f00\u59cb\u200b\u4f7f\u7528\u200b\u5b83\u200b\uff08\u200b\u542f\u52a8\u200b\u5bb9\u5668\u200b\uff09\u200b\u4e86\u200b\u3002\u200b\u5982\u679c\u200b\u53d7\u200b\u5f71\u54cd\u200b\u7684\u200b\u5377\u200b\u5f88\u591a\u200b\uff08\u200b\u5e38\u89c1\u200b\u60c5\u51b5\u200b\uff09\uff0c\u200b\u8f83\u4e3a\u7b80\u5355\u200b\u7684\u200b\u65b9\u6cd5\u200b\u662f\u200b\u628a\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u5bb9\u5668\u200b\u90fd\u200b\u5173\u6389\u200b\uff0c\u200b\u7136\u540e\u200b vgchange -an <vg>
\uff0c\u200b\u4e00\u6b21\u6027\u200b\u628a\u200b\u6574\u4e2a\u200b VG \u200b\u91cc\u200b\u7684\u200b\u5168\u90e8\u200b LV \u200b\u53d6\u6d88\u200b active \u200b\u72b6\u6001\u200b\uff08\u200b\u5f53\u7136\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u90fd\u200b\u8981\u200b\u91cd\u590d\u200b\u4e00\u904d\u200b\uff09\uff0c\u200b\u7136\u540e\u200b\u4e00\u5207\u200b\u6062\u590d\u6b63\u5e38\u200b\u3002
\u200b\u53e6\u200b\u4e00\u79cd\u200b\u9ad8\u7ea7\u200b\u529e\u6cd5\u200b\u662f\u200b\u4f7f\u7528\u200b\u6587\u5b57\u5904\u7406\u200b\u6280\u5de7\u200b\uff0c\u200b\u89e3\u6790\u200b lvs
\u200b\u7684\u200b\u8f93\u51fa\u200b\u5e76\u200b\u5173\u95ed\u200b\u5168\u90e8\u200b active \u200b\u4f46\u200b\u4e0d\u662f\u200b open \u200b\u7684\u200b\u5377\u200b\uff08\u200b\u5373\u200b flags \u200b\u4e3a\u200b -wi-a-----
\u200b\u7684\u200b\u5377\u200b\uff09\u3002\u200b\u53c2\u8003\u200b\u547d\u4ee4\u200b\u5982\u4e0b\u200b\uff1a
lvs | awk '$2 == \"user-data\" && substr($3, 5, 1) == \"a\" { print $2 \"/\" $1 }' | xargs lvchange -an\n
\u200b\u91cd\u542f\u200b\u8fdb\u200b Live CD\uff0c\u200b\u6302\u8f7d\u200b\u4e00\u5806\u200b\u4e1c\u897f\u200b\uff0c\u200b\u7136\u540e\u200b chroot \u200b\u8fdb\u539f\u200b\u7cfb\u7edf\u200b\u7684\u200b rootfs\u3002
vgscan\nvgchange -ay pve/root\nmount /dev/pve/root /mnt\nmount -o rbind /run /mnt/run # For systemd-udevd\nchroot /mnt\nmount -t devtmpfs devtmpfs dev\nmount -t proc proc proc\nmount -t sysfs sysfs sys\nmount /dev/sda1 /boot/efi\n
\u200b\u7136\u540e\u200b\u5728\u200b\u4ee5\u4e0b\u200b\u65b9\u6cd5\u200b\u4e2d\u4e8c\u9009\u200b\u4e00\u200b\uff08\u200b\u4e24\u4e2a\u200b\u90fd\u200b\u505a\u200b\u4e5f\u200b\u6ca1\u200b\u95ee\u9898\u200b\uff09\uff1a
/etc/initramfs-tools/modules
\uff0c\u200b\u6dfb\u52a0\u200b\u4e24\u884c\u200b dm_raid
\u200b\u548c\u200b raid1
\uff0c\u200b\u8fd0\u884c\u200b update-initramfs -u -k all
mdadm
\u200b\u8f6f\u4ef6\u5305\u200b\u200b\u4ee5\u4e0a\u200b\u64cd\u4f5c\u200b\u5b8c\u6210\u200b\u540e\u200b\u91cd\u542f\u200b\u5373\u53ef\u200b\u3002
\u200b\u53c2\u8003\u200b\uff1ahttps://askubuntu.com/q/292092/612877
"},{"location":"traps/#\u5bb9\u5668\u4ecd\u5728\u90e8\u5206\u8fd0\u884c\u4f46\u662f-rootfs-\u672a\u5728-lvs-\u4e2d\u663e\u793a","title":"\u5bb9\u5668\u200b\u4ecd\u200b\u5728\u200b\uff08\u200b\u90e8\u5206\u200b\uff09\u200b\u8fd0\u884c\u200b\uff0c\u200b\u4f46\u662f\u200b rootfs \u200b\u672a\u200b\u5728\u200blvs
\u200b\u4e2d\u200b\u663e\u793a","text":"\u200b\u75c7\u72b6\u200b\uff1a
journalctl
\u200b\u7684\u200b\u9519\u8bef\u200b\u65e5\u5fd7\u200b\u63d0\u793a\u200b ext4\uff08\u200b\u6216\u8005\u200b\u5176\u4ed6\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\uff09\u200b\u8bfb\u5199\u200b\u5bb9\u5668\u200b rootfs \u200b\u65f6\u200b\u51fa\u73b0\u200b\u9519\u8bef\u200b\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u5f53\u65f6\u200b\u5728\u200b CT 100 \u200b\u4e0a\u200b\u51fa\u73b0\u200b\uff0c\u200b\u539f\u56e0\u200b\u4e3a\u200b\u5728\u200b\u540c\u5b66\u200b\u64cd\u4f5c\u200b\u6d4b\u8bd5\u200b\u8282\u70b9\u200b\u65f6\u200b\uff0c\u200b\u4f7f\u7528\u200b\u4e86\u200b\u548c\u200b\u6b63\u5f0f\u200b\u73af\u5883\u200b\u76f8\u540c\u200b\u7684\u200b LVM \u200b\u5b58\u50a8\u200b\uff0c\u200b\u4f46\u662f\u200b\u672a\u200b\u52a0\u5165\u200b\u96c6\u7fa4\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u9501\u200b\u5931\u6548\u200b\u3002\u200b\u8fd9\u79cd\u200b\u60c5\u51b5\u200b\u662f\u200b\u6781\u5176\u200b\u5371\u9669\u200b\u7684\u200b\uff0c\u200b\u6700\u574f\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0c\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u7834\u574f\u200b LVM \u200b\u7684\u200b\u5206\u533a\u8868\u200b\u3002
\u200b\u76ee\u524d\u200b\uff0c\u200b\u6d4b\u8bd5\u200b\u8282\u70b9\u200b\u5df2\u200b\u52a0\u5165\u200b\u96c6\u7fa4\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5bf9\u200b\u91cd\u8981\u200b\u5bb9\u5668\u200b\u7684\u200b\u5907\u4efd\u200b\u6b63\u5728\u200b\u64cd\u4f5c\u200b\u4e2d\u200b\u3002
"},{"location":"traps/#lvm-metadata-\u5df2\u6ee1\u65e0\u6cd5\u65b0\u5efa-lv","title":"LVM metadata \u200b\u5df2\u6ee1\u200b\uff0c\u200b\u65e0\u6cd5\u200b\u65b0\u5efa\u200b LV","text":"\u200b\u53c2\u89c1\u200b 2022 \u200b\u5e74\u200b 6 \u200b\u6708\u200b 16 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3\u200b\u3002
"},{"location":"traps/#networking","title":"\u7f51\u7edc","text":""},{"location":"traps/#pve-7-ifupdown2","title":"Proxmox VE 7 \u200b\u7f51\u7edc\u200b\u914d\u7f6e","text":"PVE 7 \u200b\u9ed8\u8ba4\u200b\u4f7f\u7528\u200b ifupdown2\uff0c\u200b\u662f\u200b ifupdown \u200b\u7684\u200b\u4e00\u4e2a\u200b Python \u200b\u66ff\u4ee3\u54c1\u200b\uff0c\u200b\u914d\u7f6e\u6587\u4ef6\u200b /etc/network/interfaces
\u200b\u51e0\u4e4e\u200b\u517c\u5bb9\u200b\u3002
ifupdown2 \u200b\u7684\u200b bond \u200b\u8bed\u6cd5\u200b\u6709\u200b\u4e00\u70b9\u200b\u4e0d\u200b\u4e00\u6837\u200b\uff08\u200b\u5e76\u4e14\u200b\u4f1a\u70b8\u200b\uff09\uff0c\u200b\u5c31\u662f\u200b bond \u200b\u7684\u200b slave \u200b\u662f\u200b\u5199\u200b\u5728\u200b bond \u200b\u8bbe\u5907\u200b\u4e0b\u200b\u7684\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u50cf\u200b ifupdown \u200b\u4e00\u6837\u200b\u5728\u200b slave \u200b\u8bbe\u5907\u200b\u4e0b\u5199\u200b bond-master
\uff0c\u200b\u6240\u4ee5\u200b\u4ece\u200b ifupdown \u200b\u6362\u200b\u5230\u200b ifupdown2 \u200b\u540e\u200b\u91cd\u542f\u200b\u524d\u200b\u52a1\u5fc5\u200b\u4fee\u6539\u200b\u914d\u7f6e\u200b\u3002\u200b\u5efa\u8bae\u200b\u4e0d\u8981\u200b\u7740\u6025\u200b\u5220\u6389\u200b bond-master
\uff0c\u200b\u56e0\u4e3a\u200b\u5c3d\u7ba1\u200b\u4e24\u79cd\u200b\u5199\u6cd5\u200b\u4e92\u4e0d\u200b\u517c\u5bb9\u200b\uff0c\u200b\u4f46\u662f\u200b\u5b83\u4eec\u200b\u4e5f\u200b\u4e92\u4e0d\u200b\u51b2\u7a81\u200b\uff08ifupdown / ifupdown2 \u200b\u4f1a\u200b\u4e92\u76f8\u200b\u65e0\u89c6\u200b\u53e6\u200b\u4e00\u79cd\u200b\u5199\u6cd5\u200b\uff09\u3002
\u200b\u5347\u7ea7\u200b PVE 7 \u200b\u4e0d\u200b\u4e00\u5b9a\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u66ff\u6362\u200b\u8f6f\u4ef6\u200b
\u200b\u5982\u679c\u200b\u66f4\u65b0\u200b\u5230\u200b PVE 7 \u200b\u7684\u200b\u65f6\u5019\u200b\u6ca1\u6709\u200b\u81ea\u52a8\u200b\u5c06\u200b ifupdown \u200b\u66ff\u6362\u200b\u4e3a\u200b ifupdown2\uff0c\u200b\u8bf7\u200b\u624b\u52a8\u200b\u66ff\u6362\u200b\u5e76\u200b\u66f4\u65b0\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u3002
\u200b\u8bed\u6cd5\u200b\u6bd4\u8f83\u200b\uff1a
ifupdownifupdown2auto eno1\niface eno1 inet manual\n bond-master bond0\n\nauto eno2\niface eno2 inet manual\n bond-master bond0\n\nauto bond0\niface bond0 inet manual\n bond-mode balance-alb\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n
auto eno1\niface eno1\n\nauto eno2\niface eno2\n\nauto bond0\niface bond0\n bond-slaves eno1 eno2\n bond-mode balance-alb\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n
\u200b\u66f4\u200b\u591a\u200b\u4fe1\u606f\u200b\u8bf7\u200b\u89c1\u200b\u4e3b\u673a\u200b\u7f51\u5361\u200b\u3002
\u200b\u6ce8\u610f\u200b\u4e0b\u5212\u7ebf\u200b
ifupdown2 \u200b\u91cc\u200b\u4e0d\u518d\u200b\u4f7f\u7528\u200b\u4e0b\u5212\u7ebf\u200b\u4f5c\u4e3a\u200b key\uff0c\u200b\u6240\u6709\u200b ifupdown \u200b\u91cc\u200b\u4f7f\u7528\u200b\u4e0b\u5212\u7ebf\u200b\u7684\u200b key \u200b\u90fd\u200b\u88ab\u200b\u6362\u6210\u200b\u4e86\u200b\u51cf\u53f7\u200b\uff0c\u200b\u4f8b\u5982\u200b bridge_ports
\u200b\u5df2\u7ecf\u200b\u6362\u6210\u200b\u4e86\u200b bridge-ports
\u3002
\u200b\u8be5\u200b\u95ee\u9898\u200b\u5df2\u200b\u4e8e\u200b 2020 \u200b\u5e74\u200b 7 \u200b\u6708\u200b 31 \u200b\u65e5\u200b\u89e3\u51b3\u200b\uff0c\u200b\u89c1\u200b\u4e0b\u200b
\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b Linux \u200b\u4f1a\u200b\u5bf9\u200b\u672c\u673a\u200b\u7684\u200b\u6240\u6709\u200b IP \u200b\u5730\u5740\u200b\u5728\u200b\u6240\u6709\u200b\u754c\u9762\u200b\u4e0a\u200b\u54cd\u5e94\u200b ARP \u200b\u8bf7\u6c42\u200b\uff08\u200b\u5f53\u7136\u200b 127.0.0.0/8 \u200b\u662f\u200b\u9664\u5916\u200b\u7684\u200b\uff09\uff0c\u200b\u4f8b\u5982\u200b\u4e00\u4e2a\u200b\u4e3b\u673a\u200b\u62e5\u6709\u200b\u4e24\u4e2a\u200b\u754c\u9762\u200b ifA \u200b\u548c\u200b ifB\uff0c\u200b\u5b83\u4eec\u200b\u5206\u522b\u200b\u5177\u6709\u200b IP \u200b\u5730\u5740\u200b ipA \u200b\u548c\u200b ipB\uff0c\u200b\u90a3\u4e48\u200b Linux \u200b\u4f1a\u200b\u5728\u200b ifA \u200b\u4e0a\u200b\u54cd\u5e94\u200b who-has ipB \u200b\u7684\u200b\u8bf7\u6c42\u200b\uff0c\u200b\u53cd\u4e4b\u4ea6\u7136\u200b\u3002
\u200b\u8fd9\u200b\u5728\u200b 2020 \u200b\u5e74\u200b\u4e0a\u534a\u5e74\u200b\u7814\u7a76\u200b pv8 \u200b\u4e3a\u4ec0\u4e48\u200b\u8fde\u4e0d\u4e0a\u200b VXLAN \u200b\u7684\u200b\u65f6\u5019\u200b\u9020\u6210\u200b\u4e86\u200b\u5f88\u5927\u200b\u7684\u200b\u56f0\u60d1\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u5b9e\u9645\u4e0a\u200b pv8 \u200b\u7684\u200b ens1f1 \u200b\u754c\u9762\u200b\u662f\u200b\u574f\u200b\u7684\u200b\uff08\u200b\u53ef\u80fd\u200b\u662f\u200b\u5149\u7ea4\u200b\u6ca1\u200b\u63d2\u200b\u597d\u200b\u4e4b\u7c7b\u200b\u7684\u200b\uff09\uff0c\u200b\u7136\u540e\u200b\u7cfb\u7edf\u200b\u5728\u200b ens1f0 \u200b\u754c\u9762\u200b\u4e0a\u200b\u54cd\u5e94\u200b\u4e86\u200b\u5b9e\u9645\u200b\u5c5e\u4e8e\u200b ens1f1 \u200b\u7684\u200b IP \u200b\u5730\u5740\u200b\uff0c\u200b\u5728\u200b\u5176\u4ed6\u200b\u673a\u5668\u200b\u4e0a\u200b\u770b\u8d77\u6765\u200b\u5c31\u200b\u50cf\u662f\u200b ens1f1 \u200b\u80fd\u200b\u8fde\u901a\u200b\u4f46\u200b vxlan0 \u200b\u8fde\u200b\u4e0d\u901a\u200b\uff0c\u200b\u800c\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b 10.0.0.28 \u200b\u88ab\u200b\u89e3\u6790\u200b\u5230\u200b\u4e86\u200b pv8 \u200b\u7684\u200b ens1f0 \u200b\u4e0a\u200b\uff0c\u200b\u6ca1\u200b\u6545\u969c\u200b\u5f53\u7136\u200b\u5c31\u200b\u80fd\u200b\u8fde\u901a\u200b\u4e86\u200b\u3002
iBug \u200b\u5907\u6ce8\u200b
\u200b\u8fd9\u4e2a\u200b\u5730\u65b9\u200b\u6211\u200b\u4e5f\u200b\u6ca1\u60f3\u5230\u200b\uff0c\u200b\u5176\u5b9e\u200b\u53ea\u8981\u200b\u5728\u200b\u5176\u4ed6\u200b\u673a\u5668\u200b\u4e0a\u200b\u770b\u770b\u200b ARP \u200b\u7f13\u5b58\u200b\u8868\u200b\uff08arp -a
\uff09\u200b\u5c31\u200b\u80fd\u200b\u53d1\u73b0\u200b\u4e24\u4e2a\u200b IP \u200b\u89e3\u6790\u200b\u51fa\u6765\u200b\u7684\u200b MAC \u200b\u4e00\u6837\u200b\u4e86\u200b
\u200b\u89e3\u51b3\u529e\u6cd5\u200b\u5c31\u662f\u200b\u8bbe\u7f6e\u200b Linux \u200b\u53c2\u6570\u200b\u8ba9\u200b\u5176\u200b\u53ea\u200b\u5728\u200b\u201c\u200b\u6b63\u786e\u200b\u7684\u200b\u201d\u200b\u754c\u9762\u200b\u4e0a\u200b\u54cd\u5e94\u200b\uff0c\u200b\u8be6\u7ec6\u200b\u89e3\u91ca\u200b\u53c2\u89c1\u200b Server Fault \u200b\u4e0a\u200b\u7684\u200b\u8fd9\u4e2a\u200b\u56de\u7b54\u200b\u3002\u200b\u6211\u4eec\u200b\u7684\u200b\u505a\u6cd5\u200b\u662f\u200b\u5411\u200b /etc/sysctl.d/arp.conf
\u200b\u91cc\u200b\u5199\u5165\u200b\u4e86\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff1a
net.ipv4.conf.all.arp_ignore=1\nnet.ipv4.conf.all.arp_announce=2\n
"},{"location":"traps/#vxlan-mtu","title":"VXLAN MTU","text":"\u200b\u8be5\u200b\u5751\u70b9\u200b\u5df2\u4e8e\u200b 2020 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u4fee\u590d\u200b
\u200b\u5728\u200b\u6b64\u6b21\u200b\u7ef4\u62a4\u200b\u5de5\u4f5c\u200b\u4e2d\u200b\uff0c\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u5361\u200b ens1f1 \u200b\u7684\u200b MTU \u200b\u5df2\u200b\u88ab\u200b\u8c03\u6574\u200b\u4e3a\u200b 1550 \u200b\u5b57\u8282\u200b\uff0c\u200b\u4ece\u800c\u200b\u6b64\u540e\u200b\u7684\u200b VXLAN \u200b\u7f51\u7edc\u200b\u90fd\u200b\u5177\u6709\u200b\u201c\u200b\u6b63\u5e38\u200b\u201d\u200b\u7684\u200b 1500 \u200b\u5b57\u8282\u200b\u7684\u200b\u8bbe\u7f6e\u200b\u3002
\u200b\u6ce8\u610f\u200b\u4ee5\u540e\u200b\u82e5\u6709\u200b\u65b0\u589e\u200b\u7684\u200b\u673a\u5668\u200b\u8fd8\u662f\u200b\u9700\u8981\u200b\u989d\u5916\u200b\u8bbe\u7f6e\u200b\u4e00\u904d\u200b\u7684\u200b\u3002
VXLAN \u200b\u662f\u200b\u4e00\u79cd\u200b overlay \u200b\u7f51\u7edc\u200b\u5b9e\u73b0\u200b\uff0c\u200b\u5c06\u200b\u5e27\u200b\u5305\u88c5\u200b\u5728\u200b UDP \u200b\u5305\u4e2d\u200b\u4f20\u8f93\u200b\u3002\u200b\u7531\u4e8e\u200b\u4e00\u4e2a\u200b UDP \u200b\u5305\u200b\u5bf9\u5e94\u200b\u4e00\u4e2a\u200b\u5e27\u200b\uff0c\u200b\u56e0\u6b64\u200b VXLAN \u200b\u7f51\u7edc\u200b\u7684\u200b MTU \u200b\u4e3a\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u200b\u7684\u200b MTU \u200b\u51cf\u6389\u200b 50 \u200b\u5b57\u8282\u200b\uff08\u200b\u5404\u79cd\u200b\u5934\u200b\u4e4b\u7c7b\u200b\u7684\u200b\uff09\uff0c\u200b\u6240\u4ee5\u200b\u5728\u200b\u4e0b\u5c42\u200b\u7f51\u7edc\u200b\u4f7f\u7528\u200b\u9ed8\u8ba4\u200b\u914d\u7f6e\u200b\uff08MTU 1500\uff09\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b VXLAN \u200b\u7f51\u7edc\u200b\u7684\u200b MTU \u200b\u4e3a\u200b 1450\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u975e\u6807\u51c6\u200b\u7684\u200b\u503c\u200b\uff0c\u200b\u800c\u200b\u4ece\u200b\u8be5\u200b VXLAN \u200b\u7f51\u7edc\u200b\u4e2d\u200b\u6865\u63a5\u200b\u51fa\u6765\u200b\u7684\u200b\u754c\u9762\u200b\u5e76\u4e0d\u77e5\u9053\u200b\u5176\u200b\u7f51\u7edc\u200b\u7684\u200b\u771f\u5b9e\u200b MTU \u200b\u5c0f\u4e8e\u200b 1500\uff0c\u200b\u7ed3\u679c\u200b\u5c31\u662f\u200b\u4f20\u8f93\u200b\u7684\u200b\u5185\u5bb9\u200b\u7a0d\u5fae\u200b\u591a\u4e00\u70b9\u200b\uff08\u200b\u5355\u4e2a\u200b\u5e27\u200b\u8d85\u8fc7\u200b 1450 \u200b\u5b57\u8282\u200b\uff09\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u4f1a\u200b\u88ab\u200b\u6574\u4e2a\u200b\u4e22\u6389\u200b\uff0c\u200b\u9020\u6210\u200b\u65e0\u6cd5\u200b\u8054\u7f51\u200b\u7684\u200b\u60c5\u51b5\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u5012\u200b\u4e5f\u200b\u4e0d\u96be\u200b\uff0c\u200b\u5728\u200b\u7cfb\u7edf\u200b\u91cc\u200b\u8bbe\u7f6e\u200b\u7f51\u7edc\u200b\u7684\u200b MTU \u200b\u4e3a\u200b 1450 \u200b\u5c31\u884c\u200b\u3002Proxmox VE \u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u7684\u200b\u65f6\u5019\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5728\u200b\u7f51\u7edc\u200b\u53c2\u6570\u200b\u4e2d\u200b\u6307\u5b9a\u200b mtu=1450
\uff0c\u200b\u4f46\u200b KVM \u200b\u865a\u62df\u673a\u200b\u5c31\u200b\u5fc5\u987b\u200b\u6bcf\u4e2a\u200b\u865a\u62df\u673a\u200b\u8bbe\u7f6e\u200b\u4e86\u200b\uff0c\u200b\u8fd9\u200b\u5728\u200b Windows \u200b\u4e0b\u200b\u5c24\u5176\u200b\u9ebb\u70e6\u200b\u3002
\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u8ba1\u5212\u200b\u5728\u200b 2020 \u200b\u5e74\u200b\u6691\u5047\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u5f7b\u5e95\u89e3\u51b3\u200b\uff0c\u200b\u529e\u6cd5\u200b\u662f\u200b\u628a\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u200b\u7684\u200b MTU \u200b\u8c03\u5927\u200b 50 \u200b\u5b57\u8282\u200b\uff08\u200b\u53d8\u6210\u200b 1550 \u200b\u5b57\u8282\u200b\uff0c\u200b\u4fee\u6539\u200b pv1 \u200b\u5230\u200b pv8 \u200b\u7684\u200b ens1f1 \u200b\u754c\u9762\u200b\uff09\uff0c\u200b\u8fd9\u6837\u200b VXLAN \u200b\u5c31\u200b\u80fd\u200b\u62e5\u6709\u200b\u201c\u200b\u6b63\u5e38\u200b\u201d\u200b\u7684\u200b 1500 \u200b\u5b57\u8282\u200b\u7684\u200b MTU \u200b\u4e86\u200b\uff0c\u200b\u80fd\u4e3a\u200b\u4ee5\u540e\u200b\u51cf\u5c11\u200b\u4e0d\u5c11\u200b\u9ebb\u70e6\u200b\u3002
"},{"location":"traps/#pve-fwbr","title":"PVE \u200b\u9632\u706b\u5899\u200b\u4e0e\u200b ebtables","text":"PVE \u200b\u4f1a\u200b\u5c06\u200b\u5f00\u542f\u200b\u4e86\u200b firewall \u200b\u7684\u200b\u865a\u62df\u673a\u200b\u7f51\u5361\u200b\u989d\u5916\u200b\u6865\u63a5\u200b\u4e00\u6b21\u200b\uff0c\u200b\u5982\u56fe\u6240\u793a\u200b\uff1a
\u200b\u672a\u200b\u5f00\u542f\u200b firewall \u200b\u65f6\u200bflowchart LR\nvmbr{{vmbr0}} ---|\"veth100i0 / eth0@vm\"| vm([VM])
\u200b\u5f00\u542f\u200b firewall \u200b\u65f6\u200b flowchart LR\nvmbr{{vmbr0}} ---|\"fwpr100i0 / fwln100i0\"| fwbr{{fwbr100i0}} ---|\"veth100i0 / eth0@vm\"| vm([VM])
\u200b\u4e3a\u4e86\u200b\u5168\u9762\u200b\u8fc1\u79fb\u200b\u5230\u200b PVE \u200b\u9632\u706b\u5899\u200b\uff0c\u200b\u6211\u4eec\u200b\u63d0\u524d\u200b\u4fee\u6539\u200b\u4e86\u200b Django \u200b\u4e3a\u200b\u65b0\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u7f51\u5361\u200b\u542f\u7528\u200b\u9632\u706b\u5899\u200b\uff0c\u200b\u4f46\u662f\u200b\u610f\u5916\u200b\u7684\u200b\u662f\u200b\uff0cPVE Datacenter \u200b\u5c42\u9762\u200b\u7684\u200b\u9632\u706b\u5899\u200b\u603b\u5f00\u5173\u200b\u53ea\u200b\u63a7\u5236\u200b\u662f\u5426\u200b\u5e94\u7528\u200b iptables \u200b\u89c4\u5219\u200b\uff0c\u200b\u603b\u5f00\u5173\u200b\u5173\u95ed\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b PVE \u200b\u4ecd\u7136\u200b\u8fdb\u884c\u200b\u4e0a\u8ff0\u200b\u6865\u63a5\u200b\u64cd\u4f5c\u200b\u3002\u200b\u8be5\u200b\u6865\u63a5\u200b\u4e0e\u200b\u6211\u4eec\u200b\u624b\u200b\u6413\u200b\u7684\u200b ebtables \u200b\u89c4\u5219\u200b\u6709\u200b\u51b2\u7a81\u200b\uff0c\u200b\u4f7f\u200b\u6240\u6709\u200b\u5e27\u200b\u90fd\u200b\u65e0\u6cd5\u200b\u7ecf\u8fc7\u200b fwbr100i0\uff0c\u200b\u5bfc\u81f4\u200b\u865a\u62df\u673a\u200b\u6574\u4e2a\u200b\u65ad\u7f51\u200b\u3002
\u200b\u867d\u7136\u200b ebtables -I VLAB_SECURE 4 -i fwln+ -j ACCEPT
\u200b\u53ef\u4ee5\u200b\u89e3\u51b3\u95ee\u9898\u200b\uff0c\u200b\u4f46\u662f\u200b\u65e2\u7136\u200b\u8981\u200b\u8fc1\u79fb\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fd8\u662f\u200b\u9009\u62e9\u200b\u76f4\u63a5\u200b\u5220\u9664\u200b\u624b\u200b\u6413\u200b\u7684\u200b ebtables \u200b\u914d\u7f6e\u200b\uff0c\u200b\u907f\u514d\u200b\u4ee5\u540e\u200b\u8d77\u200b\u66f4\u200b\u591a\u200b\u51b2\u7a81\u200b\u3002
PVE Firewall \u200b\u4f1a\u200b\u5728\u200b\u542f\u52a8\u200b\u65f6\u200b\u81ea\u52a8\u200b\u5c06\u200b iptables \u200b\u547d\u4ee4\u200b\u7684\u200b alternatives \u200b\u5207\u6362\u200b\u81f3\u200b iptables-legacy\uff0c\u200b\u4f46\u662f\u200b\u5e76\u200b\u4e0d\u4f1a\u200b\u5e2e\u5fd9\u200b\u6e05\u6389\u200b iptables-nft \u200b\u91cc\u200b\u5df2\u6709\u200b\u7684\u200b\u89c4\u5219\u200b\uff0c\u200b\u6240\u4ee5\u200b\u521a\u200b\u5f00\u542f\u200b\u5168\u5c40\u200b\u9632\u706b\u5899\u200b\u5f00\u5173\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u5c3d\u7ba1\u200b iptables -S
\u200b\u548c\u200b iptables-save
\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u770b\u8d77\u6765\u200b\u6ca1\u200b\u5565\u200b\u95ee\u9898\u200b\uff0c\u200b\u4f46\u662f\u200b\u865a\u62df\u673a\u200b\u8fd8\u662f\u200b\u65ad\u7f51\u200b\u4e86\u200b\uff0c\u200b\u4ed4\u7ec6\u200b\u601d\u8003\u200b\u4e86\u200b 20 \u200b\u5206\u949f\u200b\u624d\u200b\u60f3\u200b\u8d77\u6765\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u662f\u200b\u624b\u52a8\u200b\u6e05\u6389\u200b iptables-nft \u200b\u91cc\u200b\u7684\u200b\u89c4\u5219\u200b\uff0c\u200b\u5728\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u8fd0\u884c\u200b\uff1a
iptables-nft -F\niptables-nft -X\niptables-nft -Z\n
\u200b\u6b64\u65f6\u200b\u8fd8\u200b\u6ca1\u6709\u200b\u6ce8\u610f\u200b\u5230\u200b IPv6 \u200b\u4e5f\u200b\u574f\u200b\u4e86\u200b\uff0c\u200b\u53c8\u200b\u82b1\u200b\u4e86\u200b 10 \u200b\u5206\u949f\u200b\u60f3\u200b\u8d77\u6765\u200b\u8fd8\u200b\u9700\u8981\u200b\u6267\u884c\u200b\u4e0b\u9762\u200b\u7684\u200b\u547d\u4ee4\u200b\uff1a
ip6tables-nft -F\nip6tables-nft -X\nip6tables-nft -Z\n
\u200b\u8003\u8651\u200b\u5230\u200b\u6211\u4eec\u200b\u5148\u524d\u200b\u5bf9\u200b INPUT, OUTPUT, FORWARD \u200b\u94fe\u200b\u8bbe\u7f6e\u200b\u7684\u200b policy \u200b\u90fd\u200b\u662f\u200b ACCEPT\uff0c\u200b\u5c31\u200b\u4e0d\u200b\u9700\u8981\u200b\u91cd\u7f6e\u200b\u4e86\u200b\u3002
"},{"location":"traps/#vm","title":"\u865a\u62df\u673a","text":""},{"location":"traps/#systemd-logind-\u542f\u52a8\u5931\u8d25","title":"systemd-logind \u200b\u542f\u52a8\u200b\u5931\u8d25","text":"\u200b\u5c24\u5176\u200b\u662f\u200b\u5728\u200b\u5bb9\u5668\u200b\u4ece\u200b Debian buster \u200b\u5347\u7ea7\u200b\u5230\u200b bullseye \u200b\u540e\u200b\u5bb9\u6613\u200b\u51fa\u73b0\u200b\u3002
\u200b\u75c7\u72b6\u200b\uff1a
SSH \u200b\u767b\u5f55\u200b\u5df2\u200b\u8fde\u63a5\u200b\uff0c\u200b\u4f46\u200b\u957f\u65f6\u95f4\u200b\u4e0d\u5f39\u200b\u51fa\u200b shell\uff0c/var/log/auth.log
\u200b\u663e\u793a\u200b pam_systemd(sshd:session): Failed to create session: Failed to activate service 'org.freedesktop.login1': timed out
\uff0csystemctl status systemd-logind
\u200b\u663e\u793a\u200b failed
/ code=226/NAMESPACE
\u3002
\u200b\u539f\u56e0\u200b\uff1a
Systemd \u200b\u4ece\u200b\u7248\u672c\u200b 242 \u200b\u5f00\u59cb\u200b\u91c7\u7528\u200b\u66f4\u200b\u591a\u200b\u6280\u672f\u200b\u6765\u200b\u9650\u5236\u200b\u8fd0\u884c\u200b\u670d\u52a1\u200b\u7684\u200b\u6743\u9650\u200b\uff0c\u200b\u800c\u200b\u9ed8\u8ba4\u200b\u6ca1\u200b\u5f00\u200b nesting \u200b\u7684\u200b\u5bb9\u5668\u200b\u7f3a\u5c11\u200b\u5fc5\u8981\u200b\u6743\u9650\u200b\uff0c\u200b\u5bfc\u81f4\u200b systemd-logind \u200b\u65e0\u6cd5\u200b\u542f\u52a8\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a
\u200b\u4e3a\u200b\u5bb9\u5668\u200b\u5f00\u542f\u200b nesting\uff08\u200b\u548c\u200b keyctl\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u60f3\u200b\u7684\u8bdd\u200b\uff09\u3002\u200b\u6211\u4eec\u200b\u5df2\u7ecf\u200b\u9ed8\u8ba4\u200b\u4e3a\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\u5f00\u542f\u200b\u4e86\u200b\u8fd9\u4e24\u9879\u200b\u6743\u9650\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e3a\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u7684\u200b\u670d\u52a1\u200b\u5bb9\u5668\u200b\u5f00\u542f\u200b\u5b83\u4eec\u200b\u4e0d\u4f1a\u200b\u6709\u200b\u989d\u5916\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
pvesh set /nodes/<node_name>/lxc/<vmid>/config -features keyctl=1,nesting=1\n
\u200b\u53c2\u8003\u8d44\u6599\u200b\uff1ahttps://discuss.linuxcontainers.org/t/apparmor-blocks-systemd-services-in-container/9812
"},{"location":"traps/#user1000service-\u542f\u52a8\u5931\u8d25","title":"user@1000.service \u200b\u542f\u52a8\u200b\u5931\u8d25","text":"\u200b\u68c0\u67e5\u200b\u73af\u5883\u53d8\u91cf\u200b XDG_RUNTIME_DIR
\u200b\u662f\u5426\u200b\u8bbe\u7f6e\u200b\u6b63\u786e\u200b\uff0c\u200b\u5e94\u4e3a\u200b /run/user/<uid>
\u3002
\u200b\u53e6\u5916\u200b\u5728\u200b\u672a\u77e5\u200b\u60c5\u51b5\u200b\u4e0b\u8be5\u200b\u76ee\u5f55\u200b\u6709\u200b\u53ef\u80fd\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\uff08\u200b\u4fdd\u9669\u200b\u8d77\u200b\u89c1\u200b\uff0c\u200b\u540c\u65f6\u200b chown \u200b\u4e00\u4e0b\u200b\uff09\uff1a
UID=\"$(id -u)\"\nmkdir -p \"/run/user/$UID\"\nchown \"$UID.$UID\" \"/run/user/$UID\"\n
Ref: https://github.com/systemd/systemd/issues/9461#issuecomment-409929860
"},{"location":"traps/#docker-in-lxc-\u542f\u52a8\u5931\u8d25","title":"Docker in LXC \u200b\u542f\u52a8\u200b\u5931\u8d25","text":"\u200b\u75c7\u72b6\u200b\uff1a
\u200b\u5c1d\u8bd5\u200b\u8fd0\u884c\u200b Docker \u200b\u5bb9\u5668\u200b\u65f6\u200b\u51fa\u73b0\u200b\u5982\u4e0b\u200b\u9519\u8bef\u200b\uff1a
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused \"process_linux.go:449: container init caused \\\"join session keyring: create session key: disk quota exceeded\\\"\": unknown.
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a
\u200b\u53c2\u8003\u200b https://github.com/docker/compose/issues/7295#issuecomment-657475590\u3002
Docker \u200b\u9700\u8981\u200b\u83b7\u53d6\u200b\u5230\u200b kernel session key \u200b\u624d\u80fd\u200b\u6b63\u5e38\u200b\u8fd0\u884c\u200b\u3002\u200b\u9996\u5148\u200b\u67e5\u770b\u200b /proc/key-users
\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5206\u6790\u200b\u9650\u989d\u200b\u5361\u200b\u5728\u200b\u4e86\u200b\u54ea\u91cc\u200b\u3002\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u7c7b\u4f3c\u200b\u4e8e\u200b\uff1a
0: 336 335/335 238/1000000 4597/25000000\n 100: 1 1/1 1/50000 9/20000\n 998: 1 1/1 1/50000 9/20000\n100000: 1198 1198/1198 1198/50000 19871/20000\n100101: 2 2/2 2/50000 18/20000\n
\u200b\u5176\u4e2d\u200b\uff1a
\u200b\u6ce8\u610f\u200b\u6700\u540e\u200b\u4e24\u5217\u200b\u3002\u200b\u5982\u679c\u200b\u51fa\u73b0\u200b\u5f88\u200b\u8d34\u8fd1\u200b\u9650\u989d\u200b\u7684\u200b\u60c5\u51b5\u200b\uff0c\u200b\u9700\u8981\u200b\u8c03\u6574\u200b /proc/sys/kernel/keys/maxbytes
\u200b\u548c\u200b /proc/sys/kernel/keys/maxkeys
\u200b\u7684\u200b\u503c\u200b\u3002root \u200b\u4e0b\u200b echo \u200b\u4e00\u4e2a\u200b\u66f4\u5927\u200b\u7684\u200b\u6570\u200b\u8fdb\u53bb\u200b\u5373\u53ef\u200b\u3002
root_maxbytes
\u200b\u548c\u200b root_maxkeys
\u200b\u4e00\u822c\u200b\u90fd\u200b\u975e\u5e38\u200b\u5927\u200b\uff08\u200b\u89c1\u200b key-users
\u200b\u7684\u200b\u7b2c\u4e00\u884c\u200b\uff09\uff0c\u200b\u53ef\u4ee5\u200b\u4e0d\u7528\u200b\u7ba1\u200b\u3002
\u200b\u5982\u679c\u200b\u9700\u8981\u200b\u6301\u4e45\u200b\u5316\u200b\u914d\u7f6e\u200b\uff0c\u200b\u8bf7\u200b\u6dfb\u52a0\u200b /etc/sysctl.d/20-keys.conf
\uff0c\u200b\u5199\u5165\u200b\u4e0b\u9762\u200b\u7684\u200b\u5185\u5bb9\u200b\uff1a
kernel.keys.maxbytes = 500000\nkernel.keys.maxkeys = 5000\n
\u200b\u7136\u540e\u200b\u6267\u884c\u200b sysctl --system
\u3002
\u200b\u4ece\u200b Proxmox VE 6 \u200b\u5347\u7ea7\u200b\u5230\u200b Proxmox VE 7 \u200b\u540e\u200b\u914d\u7f6e\u200b\u4e86\u200b keyctl=1,nesting=1
\u200b\u7684\u200b\u5bb9\u5668\u200b\u65e0\u6cd5\u200b\u542f\u52a8\u200b docker.service
\uff0cjournalctl \u200b\u8f93\u51fa\u200b\u6709\u200b Devices cgroup isn't mounted
\u3002
\u200b\u539f\u56e0\u200b\uff1aProxmox VE 7 \u200b\u9ed8\u8ba4\u200b\u5f00\u542f\u200b\u4e86\u200b unified cgroup hierarchy\uff08\u200b\u5373\u200b cgroup v2\uff09\uff0c\u200b\u800c\u200b\u65e7\u7248\u672c\u200b\u7684\u200b Docker \u200b\u9700\u8981\u200b\u539f\u6765\u200b\u7684\u200b cgroup v1 \u200b\u7ed3\u6784\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u5728\u200b\u5185\u6838\u200b\u53c2\u6570\u200b\u4e2d\u200b\u52a0\u4e0a\u200b systemd.unified_cgroup_hierarchy=0
\uff0c\u200b\u7136\u540e\u200b\u91cd\u542f\u200b\u4e3b\u673a\u200b\u3002\u200b\u5177\u4f53\u64cd\u4f5c\u200b\u662f\u200b\u5728\u200b /etc/default/grub
\u200b\u7684\u200b GRUB_CMDLINE_LINUX_DEFAULT
\u200b\u540e\u9762\u200b\u8865\u200b\u4e0a\u200b systemd.unified_cgroup_hierarchy=0
\uff0c\u200b\u7136\u540e\u200b\u6267\u884c\u200b update-grub
\u200b\u5e76\u200b\u91cd\u542f\u200b\u3002
Note
Docker Engine 20.10 \u200b\u5f00\u59cb\u200b\u652f\u6301\u200b cgroup v2\uff0c\u200b\u4f46\u662f\u200b\u5230\u200b\u5168\u9762\u200b\u5e94\u7528\u200b\u8fd8\u200b\u6709\u70b9\u200b\u65e9\u200b\uff0c\u200b\u6240\u4ee5\u200b\u8fd9\u4e2a\u200b\u517c\u5bb9\u200b\u8bbe\u7f6e\u200b\u5148\u5f00\u200b\u7740\u200b\u3002
"},{"location":"traps/#systemd-\u670d\u52a1\u56e0\u7a7a\u95f4\u4e0d\u8db3\u542f\u52a8\u5931\u8d25","title":"Systemd \u200b\u670d\u52a1\u200b\u56e0\u200b\u300c\u200b\u7a7a\u95f4\u200b\u4e0d\u8db3\u200b\u300d\u200b\u542f\u52a8\u200b\u5931\u8d25\u200b\u3002","text":"\u200b\u75c7\u72b6\u200b\uff1a\u200b\u91cd\u8981\u200b\u670d\u52a1\u200b\u65e0\u6cd5\u200b\u542f\u52a8\u200b\uff0c\u200b\u63d0\u793a\u200b Failed to add /run/systemd/ask-password to directory watch: No space left on device
\uff0c\u200b\u4f46\u662f\u200b df
\u200b\u663e\u793a\u200b\u5269\u4f59\u200b\u7a7a\u95f4\u200b\u8fd8\u6709\u200b\u5f88\u591a\u200b\u3002
\u200b\u53ef\u80fd\u200b\u7684\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u8bbe\u7f6e\u200b sysctl:
fs.inotify.max_user_watches = 1048576\n
\u200b\u56e0\u4e3a\u200b\u51fa\u200b\u95ee\u9898\u200b\u7684\u200b\u5bb9\u5668\u200b\u88ab\u200b\u540c\u5b66\u200b\u5220\u6389\u200b\u4e86\u200b\uff0c\u200b\u6240\u4ee5\u200b\u672a\u200b\u9a8c\u8bc1\u200b\u662f\u5426\u200b\u80fd\u591f\u200b\u89e3\u51b3\u95ee\u9898\u200b\u3002
"},{"location":"traps/#\u56fe\u5f62\u754c\u9762\u4e2d\u8fd0\u884c\u7684\u8fdb\u7a0b\u6570\u6700\u591a\u53ea\u80fd\u8dd1-4915-\u4e2a","title":"\u56fe\u5f62\u754c\u9762\u200b\u4e2d\u200b\u8fd0\u884c\u200b\u7684\u200b\u8fdb\u7a0b\u200b\u6570\u6700\u591a\u200b\u53ea\u80fd\u200b\u8dd1\u200b 4915 \u200b\u4e2a","text":"\u200b\u6240\u6709\u200b\u56fe\u5f62\u754c\u9762\u200b\u8fdb\u7a0b\u200b cgroup \u200b\u90fd\u200b\u6302\u200b\u5728\u200b lightdm.service \u200b\u7684\u200b\u9650\u5236\u200b\u4e0b\u9762\u200b\uff0c\u200b\u800c\u200b systemd \u200b\u9ed8\u8ba4\u200b\u914d\u7f6e\u200b\u9650\u989d\u200b\u4e3a\u200b 4915\u3002
\u200b\u7b80\u5355\u200b\u5feb\u901f\u200b\u7684\u200b\u4fee\u6539\u200b\u547d\u4ee4\u200b\uff1asystemctl set-property lightdm.service TasksMax=18000
\u200b\u66f4\u200b\u8be6\u7ec6\u200b\u7684\u200b\u6307\u5bfc\u200b\u53c2\u89c1\u200b https://www.suse.com/support/kb/doc/?id=000015901
"},{"location":"traps/#\u4f7f\u7528-ubuntu-cloud-image-\u955c\u50cf-import-\u7684\u865a\u62df\u673a\u542f\u52a8\u5361\u6b7b","title":"\u4f7f\u7528\u200b Ubuntu cloud-image \u200b\u955c\u50cf\u200b import \u200b\u7684\u200b\u865a\u62df\u673a\u200b\u542f\u52a8\u200b\u5361\u6b7b","text":"\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u624b\u52a8\u200b\u6302\u8f7d\u200b\uff08lvchange -ay \u200b\u78c1\u76d8\u200b\u540d\u200b
\uff09\uff0c\u200b\u4f7f\u7528\u200b fdisk -l
\u200b\u68c0\u67e5\u200b\u5206\u533a\u8868\u200b\u662f\u5426\u200b\u6709\u200b\u95ee\u9898\u200b\u3002\u200b\u5982\u679c\u200b\u6709\u200b\uff08\u200b\u63d0\u793a\u200b The primary GPT table is corrupt, but the backup appears OK, so that will be used\uff09\uff0c\u200b\u4f7f\u7528\u200b fdisk
\u200b\u6253\u5f00\u200b\uff0c\u200b\u518d\u200b\u6267\u884c\u200b w
\u200b\u5229\u7528\u200b\u5907\u4efd\u200b\u5206\u533a\u8868\u200b\u5199\u5165\u200b\u4fee\u590d\u200b\u3002
tcpdump
\u200b\u8fd0\u884c\u200b\u65e0\u200b\u8f93\u51fa","text":"2021/12/19 \u200b\u51cc\u6668\u200b\u6709\u200b\u540c\u5b66\u200b\u53cd\u9988\u200b\u8be5\u200b\u95ee\u9898\u200b\uff0c\u200b\u7ecf\u200b\u68c0\u67e5\u200b\u95ee\u9898\u200b\u4e3a\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7684\u200b apparmor \u200b\u89c4\u5219\u200b\u963b\u6b62\u200b\u4e86\u200b tcpdump
\u200b\u5411\u200b stdout
/stderr
\u200b\u5bfc\u81f4\u200b\u7684\u200b\u3002\u200b\u7b80\u5355\u200b\u7684\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u5982\u4e0b\u200b\uff1a
cd /etc/apparmor.d\nsudo mv usr.sbin.tcpdump disable/\nsudo apparmor_parser -R /etc/apparmor.d/disable/\n
\u200b\u4e4b\u540e\u200b\u9700\u8981\u200b\u4fee\u6539\u200b\u955c\u50cf\u200b\uff0c\u200b\u79fb\u9664\u200b usr.sbin.tcpdump
\u200b\u89c4\u5219\u200b\u3002
/proc/<\u200b\u5f88\u5927\u200b\u7684\u200b PID>/mounts
\u200b\u83b7\u5f97\u200b VMIDecho 1 > /sys/fs/cgroup/lxc/<VMID>/cgroup.kill
cgroup.kill
\u200b\u4f1a\u200b\u963b\u6b62\u200b cgroup \u200b\u5185\u90e8\u200b\u8fdb\u7a0b\u200b\u521b\u5efa\u200b\u65b0\u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u5e76\u4e14\u200b\u53d1\u9001\u200b SIGKILL\uff09\u3002\u200b\u5982\u679c\u200b\u6709\u200b\u9700\u8981\u200b\uff0c\u200b\u5355\u72ec\u200b\u6dfb\u52a0\u200b\u66f4\u200b\u4e25\u683c\u200b\u7684\u200b\u9650\u989d\u200b\uff08\u200b\u5728\u200b\u6587\u4ef6\u200b /etc/pve/lxc/<VMID>.conf
\u200b\u6dfb\u52a0\u200b lxc.cgroup2.pids.max: 2000
\uff09lvchange -ay
\u200b\u6fc0\u6d3b\u200b\u7528\u6237\u200b\u76d8\u200blxc-start -n <vmid> -F -I DEBUG -o debug.log
2023/04/07 \u200b\u9047\u5230\u200b\u4e00\u4e2a\u200b\u76d8\u5199\u200b\u6ee1\u200b\uff0c\u200b\u7ed3\u679c\u200b\u5199\u200b\u4e0d\u4e86\u200b\u9700\u8981\u200b\u7ed9\u200b systemd-network \u200b\u7684\u200b\u4e34\u65f6\u6587\u4ef6\u200b\uff0c\u200b\u7136\u540e\u200b\u542f\u52a8\u200b\u5931\u8d25\u200b\u7684\u200b\uff0c\u200b\u4e4b\u540e\u200b\u7ed9\u200b postcreation \u200b\u7684\u200b tune2fs \u200b\u8bbe\u7f6e\u200b\u4e86\u200b\u4fdd\u7559\u200b 1% \u200b\u7684\u200b\u9884\u7559\u200b\u7a7a\u95f4\u200b\uff08\u200b\u800c\u200b\u4e0d\u662f\u200b\u4e0d\u200b\u4fdd\u7559\u200b\uff09\u3002
"},{"location":"traps/#\u5b9a\u65f6\u4efb\u52a1\u8c03\u6574","title":"\u5b9a\u65f6\u200b\u4efb\u52a1\u200b\u8c03\u6574","text":"\u200b\u5982\u679c\u200b\u53d1\u73b0\u200b\u51cc\u6668\u200b 0 \u200b\u70b9\u200b\u6216\u8005\u200b\u51cc\u6668\u200b 6 \u200b\u81f3\u200b 7 \u200b\u70b9\u200b iowait% \u200b\u4ee5\u53ca\u200b IO time \u200b\u8fc7\u9ad8\u200b\uff0c\u200b\u5bf9\u200b\u6240\u6709\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u5bb9\u5668\u200b\u6267\u884c\u200b\u4ee5\u4e0b\u200b\u64cd\u4f5c\u200b\uff1a
See 2023 \u200b\u5e74\u200b 1 \u200b\u6708\u200b 28 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u8bb0\u5f55\u200b.
# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- systemctl disable man-db.timer\n# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- systemctl disable apt-daily-upgrade.timer\n# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- bash -c 'echo xxx && [ ! -f \"/etc/systemd/system/logrotate.timer.d/vlab.conf\" ] && mkdir -p /etc/systemd/system/logrotate.timer.d && echo -e \"[Timer]\\nRandomizedDelaySec=3h\" > /etc/systemd/system/logrotate.timer.d/vlab.conf && systemctl daemon-reload'\n
"},{"location":"traps/#web-\u53ca\u7528\u6237\u754c\u9762","title":"Web \u200b\u53ca\u200b\u7528\u6237\u754c\u9762","text":""},{"location":"traps/#\u521b\u5efa\u865a\u62df\u673a\u51fa\u73b0-connection-aborted-remotedisconnectedremote-end-closed-connection-without-response","title":"\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u51fa\u73b0\u200b Connection aborted, RemoteDisconnected('Remote end closed connection without response')","text":"\u200b\u67e5\u770b\u200b pv1 \u200b\u4e0a\u200b\u7684\u200b systemctl status pveproxy
\u200b\u53ef\u89c1\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff1a
Oct 27 17:13:56 pv1 pveproxy[34382]: problem with client ::ffff:172.30.0.2; rsa_padding_check_pkcs1_type_1: invalid padding\n
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u76f4\u63a5\u200b reload django \u200b\u5e94\u7528\u200b\u5373\u53ef\u200b\uff0c\u200b\u539f\u56e0\u200b\u53ca\u200b\u590d\u73b0\u200b\u65b9\u6cd5\u200b\u672a\u77e5\u200b\u3002
"},{"location":"traps/#hpe-\u670d\u52a1\u5668-ipmihpe-ilo","title":"HPE \u200b\u670d\u52a1\u5668\u200b IPMI\uff08HPE iLO\uff09","text":"HPE iLO \u200b\u56fa\u4ef6\u200b\u4e0b\u8f7d\u200b\uff08\u200b\u5b98\u65b9\u200b\u94fe\u63a5\u200b\uff0c\u200b\u514d\u200b\u767b\u5f55\u200b\uff09\uff1ahttps://pingtool.org/latest-hp-ilo-firmwares/
P.S. \u200b\u5982\u679c\u200b\u94fe\u63a5\u200b\u6302\u200b\u4e86\u200b\uff0c\u200b\u8bf7\u200b\u5584\u7528\u200b\u5404\u79cd\u200b Internet Archive \u200b\u4ee5\u53ca\u200b Google Web Cache\u3002
"},{"location":"traps/#\u66f4\u65b0-ilo-\u56fa\u4ef6\u62a5\u9519-the-file-signature-is-invalid","title":"\u66f4\u65b0\u200b iLO \u200b\u56fa\u4ef6\u200b\u62a5\u9519\u200b The file signature is invalid.","text":"\u200b\u66f4\u65b0\u200b iLO \u200b\u56fa\u4ef6\u200b\u65f6\u62a5\u200b\u9519\u200b The file signature is invalid. Make sure you are using a valid, signed flash file and try again.
\u200b\u539f\u56e0\u200b\uff1a\u200b\u8de8\u200b\u7248\u672c\u200b\u7684\u200b iLO \u200b\u56fa\u4ef6\u200b\u6709\u65f6\u5019\u200b\u9700\u8981\u200b\u5148\u200b\u66f4\u65b0\u200b\u5230\u200b\u67d0\u4e2a\u200b\u201c\u200b\u4e2d\u95f4\u200b\u7248\u672c\u200b\u201d\uff0c\u200b\u4f8b\u5982\u200b iLO 5 1.40 \u200b\u4ee5\u524d\u200b\u7684\u200b\u7248\u672c\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u66f4\u65b0\u200b\u5230\u200b 2.10 \u200b\u4ee5\u540e\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u200b\u66f4\u65b0\u200b\u5230\u200b 1.40 \u200b\u624d\u80fd\u200b\u518d\u200b\u66f4\u65b0\u200b\u5230\u200b 2.10\u3002
\u200b\u53c2\u8003\u8d44\u6599\u200b\uff1ahttps://community.hpe.com/t5/ProLiant-Servers-ML-DL-SL/ILO5-firware-update-fails-quot-the-file-siganture-is-invalid/td-p/7085862
"},{"location":"backup/","title":"\u5907\u4efd","text":"\u200b\u6211\u4eec\u200b\u5728\u200b pv1 \u200b\u4e0a\u200b\u540c\u65f6\u200b\u5b89\u88c5\u200b\u4e86\u200b Proxmox Backup Server \u200b\u76f8\u5173\u200b\u8f6f\u4ef6\u200b\u4ee5\u200b\u63d0\u4f9b\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u5907\u4efd\u200b\u670d\u52a1\u200b\u3002
/etc/apt/sources.list.d/pve.listdeb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription\ndeb https://mirrors.ustc.edu.cn/proxmox/debian/pbs bookworm pbs-no-subscription\n
\u200b\u7531\u4e8e\u200b PBS \u200b\u4e0d\u80fd\u200b\u52a0\u5165\u200b PVE \u200b\u96c6\u7fa4\u200b\uff0c\u200b\u53ea\u80fd\u200b\u6dfb\u52a0\u200b\u4e3a\u200b\u4e00\u4e2a\u200b Storage location\uff0c\u200b\u81ea\u7136\u200b\u4e5f\u200b\u65e0\u6cd5\u200b\u4f7f\u7528\u200b PVE \u200b\u7684\u200b\u8d26\u53f7\u200b\u7cfb\u7edf\u200b\u3002\u200b\u6211\u4eec\u200b\u76ee\u524d\u200b\u7684\u200b\u505a\u6cd5\u200b\u662f\u200b\u6bcf\u6b21\u200b\u9700\u8981\u200b\u767b\u5f55\u200b web \u200b\u754c\u9762\u200b\u65f6\u5148\u200b SSH \u200b\u4e0a\u53bb\u200b\u5c06\u200b root \u200b\u5bc6\u7801\u200b\u6539\u6389\u200b\uff0c\u200b\u7136\u540e\u200b\u4f7f\u7528\u200b root \u200b\u767b\u5f55\u200b\uff0c\u200b\u5728\u200b\u64cd\u4f5c\u200b\u5b8c\u6210\u200b\u540e\u200b\u518d\u200b passwd -d root
\u3002\u200b\u5982\u679c\u200b\u4f60\u200b\u9700\u8981\u200b\u7ecf\u5e38\u200b\u767b\u5f55\u200b PBS \u200b\u7684\u8bdd\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7ed9\u200b\u81ea\u5df1\u200b\u5efa\u200b\u4e00\u4e2a\u200b\u8d26\u53f7\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5b83\u200b\u4e0e\u200b PVE \u200b\u8d26\u53f7\u200b\u662f\u200b\u72ec\u7acb\u200b\u7684\u200b\u3002
\u200b\u7b2c\u4e00\u4ee3\u200b Vlab \u200b\u8fdc\u7a0b\u200b\u865a\u62df\u200b\u684c\u9762\u200b\u5e73\u53f0\u200b\u5728\u200b 2019 \u200b\u5e74\u200b 6 \u200b\u6708\u200b\u7531\u200b\u674e\u5b50\u200b\u5929\u200b\u5b66\u957f\u200b\u521d\u6b65\u200b\u914d\u7f6e\u200b\u597d\u200b\uff0c\u200b\u7ecf\u8fc7\u200b @iBug \u200b\u548c\u200b @taoky \u200b\u7b49\u200b\u4eba\u200b\u8fdb\u4e00\u6b65\u200b\u8c03\u6574\u200b\u5e76\u200b\u7f16\u5199\u200b\u524d\u7aef\u200b\u7ba1\u7406\u7cfb\u7edf\u200b\u540e\u200b\uff0c\u200b\u4e8e\u200b 2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u5b66\u671f\u5f00\u59cb\u200b\u5c0f\u200b\u8303\u56f4\u200b\u6d4b\u8bd5\u200b\uff08\u200b\u6b63\u5f0f\u200b\u4e0a\u7ebf\u200b\uff09\u3002
"},{"location":"history/gen1/#hardware","title":"\u786c\u4ef6","text":"\u200b\u7b2c\u4e00\u4ee3\u200b Vlab \u200b\u670d\u52a1\u5668\u200b\u5305\u542b\u200b\u53cc\u8def\u200b Intel Xeon E5-2630 v4 \u200b\u5904\u7406\u5668\u200b\uff08\u200b\u5171\u200b 20 \u200b\u6838\u5fc3\u200b\u300140 \u200b\u7ebf\u7a0b\u200b\uff09\uff0c\u200b\u5b89\u88c5\u200b\u5185\u5b58\u200b 128 GB\uff088 x 16 GB DDR4 2400 ECC\uff09\u3002\u200b\u786c\u76d8\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u4e00\u5757\u200b Intel Optane 905P 480GB\uff08\u200b\u7cfb\u7edf\u76d8\u200b\uff0cswap \u200b\u548c\u200b\u7f13\u5b58\u200b\uff09\u200b\u548c\u200b\u56db\u5757\u200b HPE 2.4TB SAS \u200b\u786c\u76d8\u200b\u3002
\u200b\u53e6\u5916\u200b\u8be5\u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\u8fd8\u6709\u200b\u4e00\u5757\u200b NVIDIA Tesla P4 GPU\uff0c\u200b\u539f\u672c\u200b\u8ba1\u5212\u200b\u7528\u4e8e\u200b\u52a0\u901f\u200b\u6df1\u5ea6\u200b\u5b66\u4e60\u200b\u7b49\u200b\u8d1f\u8f7d\u200b\uff0c\u200b\u5b9e\u9645\u4e0a\u200b\u7531\u4e8e\u200b\u627f\u62c5\u200b\u7684\u200b\u8bfe\u7a0b\u200b\u5b9e\u9a8c\u200b\u4efb\u52a1\u200b\u7c7b\u578b\u200b\u4e0d\u540c\u200b\uff0c\u200b\u5e76\u672a\u200b\u6d3e\u4e0a\u7528\u573a\u200b\u3002
"},{"location":"history/gen1/#operating-system","title":"\u64cd\u4f5c\u7cfb\u7edf","text":"\u200b\u642d\u5efa\u200b\u8fd9\u53f0\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u5b66\u957f\u200b\u9009\u62e9\u200b\u4e86\u200b Ubuntu 18.04 LTS\uff0c\u200b\u4f46\u662f\u200b\u5c06\u200b\u5185\u6838\u200b\u66ff\u6362\u200b\u4e3a\u200b 3.10.0-514.61.1.el7.x86_64
\uff08\u200b\u6765\u81ea\u200b RHEL 7.3 EUS\uff09\uff0c\u200b\u539f\u56e0\u200b\u662f\u200b NVIDIA \u200b\u7684\u200b\u9a71\u52a8\u200b\uff08\u200b\u5185\u6838\u6a21\u5757\u200b\uff09\u200b\u9700\u8981\u200b\u7f16\u8bd1\u200b\uff0c\u200b\u800c\u4e14\u200b\u5bf9\u200b\u5185\u6838\u200b\u7248\u672c\u200b\u975e\u5e38\u200b\u654f\u611f\u200b\uff0c\u200b\u4e3a\u4e86\u200b\u4fdd\u8bc1\u200b\u8fd9\u4e2a\u200b\u96be\u6574\u200b\u7684\u200b\u9a71\u52a8\u200b\u80fd\u200b\u6b63\u5e38\u200b\u4f7f\u7528\u200b\uff0c\u200b\u4e0d\u200b\u65b9\u4fbf\u200b\u5c06\u200b\u5185\u6838\u200b\u4ea4\u7531\u200b apt \u200b\u7ba1\u7406\u200b\u5347\u7ea7\u200b\u3002
\u200b\u91c7\u7528\u200b LXD \u200b\u5bb9\u5668\u200b\uff0c\u200b\u8fd0\u884c\u200b\u4e00\u4e2a\u200b\u5b9a\u5236\u200b\u7684\u200b\u955c\u50cf\u200b\uff08Ubuntu Minimal \u200b\u5b89\u88c5\u200b\u4e86\u200b Xfce \u200b\u548c\u200b Xilinx Vivado\uff09\uff0c\u200b\u4e3a\u200b 2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u5b66\u671f\u200b\u7684\u200b\u300a\u200b\u6570\u5b57\u7535\u8def\u200b\u5b9e\u9a8c\u200b\u300b\u200b\u8bfe\u7a0b\u200b\u63d0\u4f9b\u200b\u670d\u52a1\u200b\u3002
"},{"location":"history/gen1/#storage","title":"\u5b58\u50a8","text":"\u200b\u6700\u200b\u5f00\u59cb\u200b\uff082019 \u200b\u5e74\u200b\u6691\u5047\u200b\u671f\u95f4\u200b\uff09\u200b\u6ca1\u6709\u200b\u4efb\u4f55\u200b\u7279\u522b\u200b\u7684\u200b\u5b58\u50a8\u200b\u67b6\u6784\u200b\uff0c\u200b\u76f4\u63a5\u200b\u7528\u200b\u7684\u200b LXD \u200b\u7684\u200b Directory\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u7eaf\u200b\u76ee\u5f55\u200b\uff09\u200b\u5b58\u50a8\u200b\uff0c\u200b\u540e\u6765\u200b\u5728\u200b\u6b63\u5f0f\u200b\u4e0a\u7ebf\u200b\u524d\u200b\u7531\u200b iBug \u200b\u66ff\u6362\u6210\u200b\u4e86\u200b ZFS\uff0c\u200b\u5e76\u200b\u4e00\u76f4\u200b\u8fd0\u884c\u200b\u4e0b\u53bb\u200b\u3002
"},{"location":"history/gen1/#follow-ups","title":"\u540e\u7eed","text":"\u200b\u8fd9\u53f0\u200b\u673a\u5668\u200b\u5728\u200b 2020 \u200b\u5e74\u200b 3 \u200b\u6708\u5e95\u200b\u88ab\u200b\u91cd\u88c5\u200b\u4e3a\u200b Proxmox VE \u200b\u7cfb\u7edf\u200b\uff0c\u200b\u5185\u5b58\u200b\u7531\u200b 128 GB \u200b\u5347\u7ea7\u200b\u5230\u200b 160 GB\uff0c\u200b\u91cd\u65b0\u200b\u6307\u6d3e\u200b hostname \u200b\u4e3a\u200b pv0\uff0c\u200b\u8ba1\u5212\u200b\u662f\u200b\u63d0\u4f9b\u200b GPU \u200b\u5bb9\u5668\u200b\u670d\u52a1\u200b\uff0c\uff0c\u200b\u4e0d\u8fc7\u200b\u540e\u6765\u200b\u53d1\u73b0\u200b\u7b2c\u4e8c\u4ee3\u200b\u7684\u200b\u673a\u5668\u200b\u65e0\u6cd5\u200b\u52a0\u88c5\u200b GPU \u200b\u4e4b\u540e\u200b\u5c31\u200b\u6539\u4e3a\u200b\u7528\u4f5c\u200b\u6211\u4eec\u200b\u7684\u200b\u5f00\u53d1\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u4e86\u200b\uff0c\u200b\u4e0d\u200b\u63d0\u4f9b\u200b\u4efb\u4f55\u200b\u6b63\u5f0f\u200b\u670d\u52a1\u200b\uff08\u200b\u4e5f\u200b\u6ca1\u6709\u200b\u63a5\u5165\u200b\u5149\u7ea4\u200b\u5185\u200b\u7f51\u200b\uff09\u3002
"},{"location":"kvm/cloud-init/","title":"\u865a\u62df\u673a\u200b cloud-init \u200b\u914d\u7f6e\u200b\u548c\u200b\u4f7f\u7528","text":""},{"location":"kvm/cloud-init/#\u914d\u7f6e\u5e26\u6709-cloud-init-\u7684\u955c\u50cf","title":"\u914d\u7f6e\u200b\u5e26\u6709\u200b cloud-init \u200b\u7684\u200b\u955c\u50cf","text":""},{"location":"kvm/cloud-init/#\u521b\u5efa\u865a\u62df\u673a\u5e76\u5b89\u88c5-cloud-init","title":"\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u5e76\u200b\u5b89\u88c5\u200b cloud-init","text":"\u200b\u4ece\u200b\u672c\u5730\u200b\u9009\u62e9\u200b iso \u200b\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u88c5\u200b\u597d\u200b\u7cfb\u7edf\u200b\u540e\u200b\u8fdb\u5165\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u5b89\u88c5\u200b cloud-init\u3002\u200b\u5982\u679c\u200b\u5728\u200b\u88c5\u200b\u7cfb\u7edf\u200b\u65f6\u200b\u6ca1\u6709\u200b\u6362\u6e90\u200b\uff0c\u200b\u5c31\u200b\u5148\u6362\u6e90\u200b\u3002
sudo apt install cloud-init # Ubuntu\nsudo yum install cloud-init # CentOS\n
cloud-init \u200b\u7684\u200b\u914d\u7f6e\u200b\u4fe1\u606f\u200b\u5728\u200b\u6587\u4ef6\u200b /etc/cloud/cloud.cfg.d/*.cfg
\u200b\u548c\u200b /etc/cloud/cloud.cfg
\u200b\u4e2d\u200b\u3002cloud-init \u200b\u4ee5\u200b\u5b57\u6bcd\u200b\u987a\u5e8f\u200b\u8bfb\u53d6\u200b\u6240\u6709\u200b\u7684\u200b *.cfg
\u200b\u6587\u4ef6\u200b\uff0c\u200b\u76f8\u540c\u200b\u53c2\u6570\u200b\u540e\u9762\u200b\u7684\u200b\u6587\u4ef6\u200b\u4f1a\u200b\u8986\u76d6\u200b\u524d\u9762\u200b\u7684\u200b\u6587\u4ef6\u200b\u3002
\u200b\u5728\u200b cloud.cfg \u200b\u6587\u4ef6\u200b\u4e2d\u200b\uff0c\u200b\u4efb\u52a1\u200b\u4ee5\u200b module \u200b\u5f62\u5f0f\u200b\u7ec4\u7ec7\u200b. \u200b\u4f8b\u5982\u200b\u6307\u5b9a\u200b set_hostname
\u200b\u7684\u200b moudle \u200b\u65f6\u200b\uff0ccloud-init \u200b\u4f1a\u200b\u6267\u884c\u200b hostname \u200b\u4efb\u52a1\u200b\uff0c\u200b\u5177\u4f53\u200b\u7684\u200b\u914d\u7f6e\u200b\u53c2\u6570\u200b\u7531\u200b metadata \u200b\u6307\u5b9a\u200b\u3002
\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5728\u200b\u6b64\u200b\u6587\u4ef6\u200b\u4e2d\u200b\u5220\u9664\u200b\u4e0d\u200b\u9700\u8981\u200b\u7684\u200b\u6a21\u5757\u200b, \u200b\u4f8b\u5982\u200b disable-ec2-metadata
\u200b\u548c\u200b byobu
\u200b\u7b49\u200b\u3002
cloud_config_modules:\n- snap\n- snap_config\n- ubuntu-advantage\n- disable-ec2-metadata\n- byobu\n\ncloud_final_modules:\n- snappy\n- fan\n- landscape\n- lxd\n- puppet\n- chef\n- mcollective\n- salt-minion\n- rightscale_userdata\n
cloud-init \u200b\u7684\u200b\u6570\u636e\u6587\u4ef6\u200b\u653e\u5728\u200b /var/lib/cloud/data
\u200b\u4e2d\u200b\uff0c \u200b\u65e5\u5fd7\u200b\u6587\u4ef6\u200b\u653e\u5728\u200b /var/log/cloud-init-output.log
(\u200b\u6bcf\u200b\u9636\u6bb5\u200b\u8f93\u51fa\u200b)\uff0c /var/log/cloud-init.log
(\u200b\u6bcf\u200b\u4e00\u4e2a\u200b\u64cd\u4f5c\u200b\u66f4\u200b\u8be6\u7ec6\u200b\u7684\u200b\u8c03\u8bd5\u200b\u65e5\u5fd7\u200b)\uff0c /run/cloud-init
\u200b\u51b3\u5b9a\u200b\u5f00\u542f\u200b\u548c\u200b\u5173\u95ed\u200b\u81ea\u8eab\u200b\u7684\u200b\u67d0\u4e9b\u200b\u529f\u80fd\u200b\u3002
Proxmox \u200b\u4f1a\u200b\u5bf9\u200b\u521b\u5efa\u200b\u7684\u200b\u65b0\u200b\u865a\u62df\u673a\u200b\u81ea\u52a8\u200b\u5206\u914d\u200b\u4e0d\u540c\u200b\u7684\u200b MAC \u200b\u5730\u5740\u200b\u3002
\u200b\u4f46\u662f\u200b\u5bf9\u4e8e\u200b Ubuntu\uff0c\u200b\u4ece\u200b\u7edf\u4e00\u200b\u6a21\u677f\u200b\u4e2d\u200b\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u6709\u200b\u548c\u200b\u6a21\u677f\u200b\u76f8\u540c\u200b\u7684\u200b machine-id\uff0c\u200b\u865a\u62df\u673a\u200b\u4f7f\u7528\u200b\u6b64\u200b machine-id \u200b\u6765\u200b\u83b7\u53d6\u200b DHCP \u200b\u7684\u200b lease\uff0c\u200b\u4ece\u200b\u5bfc\u81f4\u200b\u591a\u4e2a\u200b\u865a\u62df\u673a\u200b\u7ade\u4e89\u200b\u540c\u4e00\u4e2a\u200b IP \u200b\u5730\u5740\u200b\u3002
\u200b\u89e3\u51b3\u200b\u6b64\u200b\u95ee\u9898\u200b\u7684\u200b\u65b9\u6cd5\u200b\u662f\u200b\u6587\u4ef6\u200b /etc/machine-id
\u200b\u5220\u9664\u200b\uff0c\u200b\u91cd\u65b0\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u540c\u540d\u200b\u7a7a\u767d\u200b\u6587\u4ef6\u200b
sudo rm /etc/machine-id\nsudo touch /etc/machine-id\n
\u200b\u4e4b\u540e\u200b\uff0c\u200b\u8f6c\u200b\u5230\u200b\u6587\u4ef6\u200b /var/lib/dbus/machine-id
\uff0c\u200b\u6b64\u200b\u6587\u4ef6\u200b\u4f1a\u200b\u5728\u200b\u6bcf\u6b21\u200b\u865a\u62df\u673a\u200b\u91cd\u542f\u200b\u4e4b\u540e\u200b\u5c06\u200b machine-id \u200b\u590d\u5236\u5230\u200b /etc/machine-id
\u200b\u4e2d\u200b\u3002 \u200b\u6240\u4ee5\u200b\u5c06\u200b\u6b64\u200b\u6587\u4ef6\u200b\u5220\u9664\u200b\uff0c\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b /etc/machine-id
\u200b\u7684\u200b\u7b26\u53f7\u200b\u94fe\u63a5\u200b\u5230\u200b\u6b64\u5904\u200b\u3002
sudo rm /var/lib/dbus/machine-id\nsudo ln -s /etc/machine-id /var/lib/dbus/machine-id\n
\u200b\u7136\u540e\u200b\u5c06\u200b\u6b64\u200b\u865a\u62df\u200b\u673a\u5173\u200b\u673a\u200b\uff08\u200b\u4e0d\u662f\u200b\u91cd\u542f\u200b\uff0c\u200b\u5426\u5219\u200b\u4f1a\u200b\u751f\u6210\u200b\u65b0\u200b\u7684\u200b machine-id\uff09\uff0c\u200b\u5236\u4f5c\u200b\u4e3a\u200b\u6a21\u677f\u200b\u3002
"},{"location":"kvm/cloud-init/#\u65b9\u6cd5-2","title":"\u65b9\u6cd5\u200b 2","text":"\u200b\u4fee\u6539\u200b DHCP \u200b\u7684\u200b identifier\uff0c/etc/netplan/
\u200b\u4e0b\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5728\u200b network \u200b\u4e0b\u200b\u7684\u200b ethernets \u200b\u4e0b\u200b\u7684\u200b\u6761\u76ee\u200b\u589e\u52a0\u200b dhcp-identifier: mac
\uff0c\u200b\u5373\u53ef\u200b\u4f7f\u7528\u200b MAC \u200b\u4f5c\u4e3a\u200b DHCP \u200b\u5206\u914d\u200b IP \u200b\u7684\u200b\u552f\u4e00\u200b\u6807\u5fd7\u200b\u3002 \u200b\u4f46\u200b SSH \u200b\u4e5f\u200b\u4f7f\u7528\u200b machine-id\uff0c\u200b\u6240\u4ee5\u200b\u6b64\u200b\u65b9\u6cd5\u200b\u53ea\u200b\u89e3\u51b3\u200b\u4e86\u200b ip \u200b\u7684\u200b\u95ee\u9898\u200b\u3002
\u200b\u5b89\u88c5\u200b net-tools, openssh-server \u200b\u7b49\u200b\u5de5\u5177\u200b
"},{"location":"kvm/cloud-init/#\u8bbe\u7f6e-username-\u548c-password-\u5931\u8d25\u65e0\u6cd5\u4f7f\u7528\u5728-proxmox-web-\u9875\u9762\u4e0a\u8bbe\u7f6e\u7684-username-\u548c-password-\u767b\u5f55\u865a\u62df\u673a","title":"\u8bbe\u7f6e\u200b username \u200b\u548c\u200b password (\u200b\u5931\u8d25\u200b\uff0c\u200b\u65e0\u6cd5\u200b\u4f7f\u7528\u200b\u5728\u200b proxmox web \u200b\u9875\u9762\u200b\u4e0a\u200b\u8bbe\u7f6e\u200b\u7684\u200b username \u200b\u548c\u200b password \u200b\u767b\u5f55\u200b\u865a\u62df\u673a\u200b)","text":"\u200b\u5b8c\u6210\u200b\u4e0a\u9762\u200b\u7684\u200b\u5de5\u4f5c\u200b\u540e\u200b\u5c06\u200b\u865a\u62df\u200b\u673a\u5173\u200b\u673a\u200b\uff0c\u200b\u5728\u200b proxmox web \u200b\u754c\u9762\u200b hardware \u200b\u680f\u4e2d\u200b add cloudinit Drive\uff0c\u200b\u7136\u540e\u200b\u5728\u200b Cloud-init \u200b\u680f\u4e2d\u200b\u8bbe\u7f6e\u200b\u7528\u6237\u540d\u200b\u548c\u200b\u5bc6\u7801\u200b\uff08\u200b\u5fc5\u987b\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u5426\u5219\u200b\u65e0\u6cd5\u200b\u8fdb\u5165\u200b\u7531\u6b64\u200b\u6a21\u677f\u200b\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\uff09\u3002
"},{"location":"kvm/cloud-init/#cloud-init-\u7b80\u4ecb\u548c\u914d\u7f6e\u89e3\u91ca","title":"cloud-init \u200b\u7b80\u4ecb\u200b\u548c\u200b\u914d\u7f6e\u200b\u89e3\u91ca","text":""},{"location":"kvm/cloud-init/#\u9636\u6bb5","title":"\u9636\u6bb5","text":"cloud-init.cfg \u200b\u6587\u4ef6\u200b\u4e2d\u6709\u200b\u4e94\u4e2a\u200b stage\uff0ccloud-init \u200b\u5206\u4e3a\u200b\u4e94\u4e2a\u200b\u9636\u6bb5\u200b\u8fdb\u884c\u200b\uff0c\u200b\u5177\u4f53\u200b\u4ee5\u200b\u670d\u52a1\u200b\u7684\u200b\u5f62\u5f0f\u200b\u6ce8\u518c\u200b\u5230\u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u6309\u200b\u5982\u4e0b\u200b\u6b21\u5e8f\u200b\u6267\u884c\u200b\uff1a
generator
\u200b\u6b64\u200b\u9636\u6bb5\u200b\u68c0\u6d4b\u200b ci \u200b\u662f\u5426\u200b\u88ab\u200b\u7981\u7528\u200b
local:cloud-init-local.service
\u200b\u5f53\u200b/\u200b\u6302\u8f7d\u200b\u65f6\u200b\u6267\u884c\u200b\uff0c\u200b\u6b64\u200b\u9636\u6bb5\u200b\u7684\u200b\u4efb\u52a1\u200b\u4e3b\u8981\u200b\u662f\u200b\u5b9a\u4f4d\u200b\u672c\u5730\u200b\u6570\u636e\u200b\uff0c\u200b\u5c06\u200b\u7f51\u7edc\u200b\u914d\u7f6e\u200b\u5e94\u7528\u200b\u5230\u200b\u672c\u5730\u200b\u3002
\u200b\u9700\u8981\u200b\u5c06\u200b\u7f51\u7edc\u200b block
\u200b\u6b64\u200b\u9636\u6bb5\u200b\u6ca1\u6709\u200b\u7528\u5230\u200b\u7684\u200b\u6a21\u5757\u200b
network:cloud-init.service
\u200b\u5904\u7406\u200b\u6240\u6709\u200b\u7684\u200b user-data, \u200b\u5305\u62ec\u200b\u4efb\u4f55\u200b #include
or #include-once
, \u200b\u89e3\u538b\u7f29\u200b\u6240\u6709\u200b\u538b\u7f29\u6587\u4ef6\u200b, \u200b\u8fd0\u884c\u200b\u6240\u6709\u200b\u7684\u200b part-handler
config:cloud.config.service
\u200b\u6b64\u200b\u9636\u6bb5\u200b\u4ec5\u200b\u8fd0\u884c\u200b config module, \u200b\u5176\u4ed6\u200b\u9636\u6bb5\u200b\u4e0d\u8d77\u4f5c\u7528\u200b\u7684\u200b\u6a21\u5757\u200b\u90fd\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u9636\u6bb5\u200b\u8fd0\u884c\u200b
final:cloud-final.service
\u200b\u6b64\u200b\u9636\u6bb5\u200b\u8fd0\u884c\u200b\u7528\u6237\u200b\u81ea\u5b9a\u4e49\u200b\u7684\u200b\u9700\u8981\u200b\u5728\u200b\u767b\u5f55\u200b\u7cfb\u7edf\u200b\u540e\u200b\u6267\u884c\u200b\u7684\u200b\u811a\u672c\u200b\u5728\u200b\u6b64\u5904\u200b\u8fd0\u884c\u200b\u3002
\u200b\u6bcf\u4e2a\u200b\u9636\u6bb5\u200b\u4e2d\u200b\u6267\u884c\u200b\u7684\u200b\u4efb\u52a1\u200b\u4ee5\u200b\u6a21\u5757\u200b\u7684\u200b\u5f62\u5f0f\u200b\u5b9a\u4e49\u200b, \u200b\u6a21\u5757\u200b\u6267\u884c\u200b\u7684\u200b\u5177\u4f53\u4efb\u52a1\u200b\u7531\u200b metadata \u200b\u51b3\u5b9a\u200b
"},{"location":"kvm/cloud-init/#user-data","title":"User-Data","text":"cloud-init \u200b\u901a\u8fc7\u200b\u547d\u4ee4\u884c\u200b --cicustom
\u200b\u5c06\u200b\u7528\u6237\u200b\u81ea\u5b9a\u4e49\u200b\u7684\u200b config \u200b\u6587\u4ef6\u200b\u8fdb\u884c\u200b\u914d\u7f6e\u200b
# Syntax\nqm set <vid> --cicustom \"user=<volume>, network=<volume>, meta=<volume>\" \n\n# Example\nqm set 9000 --cicustom \"user=local:snippets/userconfig.yaml\" \n
cicustom \u200b\u6587\u4ef6\u200b\u9700\u8981\u200b\u5728\u200b\u652f\u6301\u200b snippets \u200b\u5e76\u4e14\u200b\u6240\u6709\u200b\u7684\u200b VM \u200b\u90fd\u200b\u80fd\u200b access \u200b\u7684\u200b\u8282\u70b9\u200b\u4e0a\u200b\u3002
\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b snippets: \u200b\u5728\u200b proxmox \u200b\u7684\u200b web \u200b\u754c\u9762\u200b\u4e0a\u200b\u7684\u200b datacenter \u200b\u4e2d\u200b\u70b9\u51fb\u200b\u5b58\u50a8\u200b - add-directory, \u200b\u8bbe\u7f6e\u200b id, \u200b\u9009\u62e9\u200b\u76ee\u5f55\u200b content \u200b\u9009\u62e9\u200b snippets, node \u200b\u9009\u200b ALL (No restrictions)\u3002
"},{"location":"kvm/cloud-init/#\u5173\u4e8e-volumes","title":"\u5173\u4e8e\u200b volumes","text":"local \u200b\u9ed8\u8ba4\u200b\u4f4d\u7f6e\u200b\u4e3a\u200b /var/lib/vz
\uff08\u200b\u5b9a\u4e49\u200b\u5728\u200b\u914d\u7f6e\u6587\u4ef6\u200b /etc/pve/storage.cfg
\u200b\u4e2d\u200b\uff09
cloudinit \u200b\u65e5\u5fd7\u200b\u6587\u4ef6\u200b\u5728\u200b /var/log/cloud-init-ouput.log
\u200b\u4e2d\u200b
\u200b\u901a\u5e38\u200b\u7528\u4e8e\u200b\u4ec5\u200b\u9700\u8981\u200b\u6267\u884c\u200b\u4e00\u4e2a\u200b shell \u200b\u811a\u672c\u200b\u7684\u200b\u65f6\u5019\u200b
\u200b\u683c\u5f0f\u200b\uff1a\u200b\u4ee5\u200b #!
\u200b\u5f00\u59cb\u200b\u6216\u8005\u200b\u5f53\u200b\u4f7f\u7528\u200b MIME \u200b\u5f52\u6863\u200b\u65f6\u4ee5\u200b Content-Type: text/x-shellscript
\u200b\u5f00\u59cb\u200b
\u200b\u793a\u4f8b\u200b
#!/bin/sh\necho \"Hello World. The time is now $(date -R)!\" | tee /root/output.txt\n
\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u7684\u200b /var/lib/cloud/scripts
\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u5b58\u653e\u200b\u8981\u200b\u6267\u884c\u200b\u7684\u200b\u811a\u672c\u200b\u6587\u4ef6\u200b\u3002
\u200b\u5fc5\u987b\u200b\u662f\u200b\u5408\u6cd5\u200b\u7684\u200b yaml \u200b\u683c\u5f0f\u200b
local \u200b\u76ee\u5f55\u200b\u5728\u200b /var/lib/vz
\u200b\u4e0b\u200b\uff08\u200b\u5728\u200b /etc/pve/storage.cfg
\u200b\u4e2d\u200b\u914d\u7f6e\u200b\uff09
\u200b\u683c\u5f0f\u200b: \u200b\u4ee5\u200b #cloud-config
\u200b\u5f00\u59cb\u200b\u6216\u8005\u200b\u5f53\u200b\u4f7f\u7528\u200b MIME \u200b\u65f6\u4ee5\u200b Content-Type: text/cloud-config
\u200b\u5f00\u59cb\u200b
\u200b\u5404\u200b module \u200b\u5bf9\u5e94\u200b\u4e0b\u200b config data \u200b\u683c\u5f0f\u200b\u53ca\u200b\u529f\u80fd\u200b\u8bf4\u660e\u200b\uff1ahttps://cloudinit.readthedocs.io/en/latest/topics/modules.html
\u200b\u793a\u4f8b\u200b
bootcmd:\n - echo 192.168.1.130 us.archive.com > /etc/hosts\n - [ cloud-init-per, one, mymkfs, mkfs, /dev/vdb ]\n
"},{"location":"kvm/cloud-init/#config-\u793a\u4f8b","title":"config \u200b\u793a\u4f8b\u200b:","text":"\u200b\u914d\u7f6e\u200b\u5b9e\u4f8b\u200b\u7684\u200b SSH key\uff1ahttps://cloudinit.readthedocs.io/en/latest/topics/modules.html#ssh
\u200b\u6269\u5bb9\u200b\uff1ahttps://cloudinit.readthedocs.io/en/latest/topics/modules.html#growpart
"},{"location":"kvm/cloud-init/#kernel-command-line","title":"Kernel Command Line","text":"\u200b\u4f7f\u7528\u200b NoCloud \u200b\u65f6\u200b\uff0c\u200b\u7528\u6237\u200b\u53ef\u4ee5\u200b\u5c06\u200b\u7528\u6237\u200b\u6570\u636e\u200b\u901a\u8fc7\u200b\u5185\u6838\u200b\u547d\u4ee4\u884c\u200b\u53c2\u6570\u4f20\u9012\u200b\u3002
"},{"location":"kvm/cloud-init/#\u5176\u4ed6","title":"\u5176\u4ed6","text":"\u200b\u5176\u4ed6\u200b\u683c\u5f0f\u200b\u8fd8\u6709\u200b include, upstart job, cloud boothook, part handler \u200b\u7b49\u200b
ci \u200b\u6709\u200b\u4e00\u4e2a\u200b\u811a\u672c\u200b make-mime.py
\u200b\u53ef\u4ee5\u200b\u5c06\u200b\u4e0d\u540c\u200b\u7c7b\u578b\u200b\u7684\u200b\u7528\u6237\u200b\u6570\u636e\u200b\u7efc\u5408\u200b\u5728\u200b\u4e00\u8d77\u200b\uff0c\u200b\u4f8b\u5982\u200b\u5c06\u200b cloud-config \u200b\u7c7b\u578b\u200b\u7684\u200b config.yaml \u200b\u548c\u200b x-shellscript \u200b\u7c7b\u578b\u200b\u7684\u200b script.sh \u200b\u7ec4\u5408\u200b\u5728\u200b\u4e00\u8d77\u200b\u5f62\u6210\u200b user-data \u200b\u6570\u636e\u200b:
./tools/make-mime.py -a config.yaml:cloud-config -a script.sh:x-shellscript > user-data\n
"},{"location":"kvm/cloud-init/#\u90e8\u7f72","title":"\u90e8\u7f72","text":""},{"location":"kvm/cloud-init/#\u90e8\u7f72\u6587\u4ef6\u5f62\u5f0f","title":"\u90e8\u7f72\u200b\u6587\u4ef6\u200b\u5f62\u5f0f","text":"\u200b\u5728\u200b\u865a\u62df\u673a\u200b /etc/cloud/cloud.cfg.d/
\u200b\u4e0b\u200b\u6709\u200b\u591a\u4e2a\u200b .cfg
\u200b\u7ed3\u5c3e\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u8fd9\u4e9b\u200b ci \u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5c06\u200b\u6309\u7167\u200b\u5b57\u6bcd\u200b\u987a\u5e8f\u200b\u6267\u884c\u200b\uff0c\u200b\u540e\u9762\u200b\u7684\u200b cfg \u200b\u6587\u4ef6\u200b\u4f1a\u200b\u8986\u76d6\u200b\u524d\u9762\u200b\u7684\u200b cfg \u200b\u6587\u4ef6\u200b\u4e2d\u200b\u76f8\u540c\u200b\u7684\u200b\u914d\u7f6e\u200b\u3002
\u200b\u901a\u8fc7\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b cfg \u200b\u6587\u4ef6\u200b\uff0c\u200b\u4f7f\u7528\u200b\u6a21\u5757\u200b bootcmd\uff0c\u200b\u5728\u200b\u6b64\u200b\u6a21\u5757\u200b\u4e0b\u200b\u7f16\u5199\u200b\u7684\u200b\u811a\u672c\u200b\u7a0b\u5e8f\u200b\u5c06\u4f1a\u200b\u88ab\u200b\u6267\u884c\u200b\uff0c\u200b\u4f8b\u5982\u200b\u65b0\u5efa\u200b\u6587\u4ef6\u200b /etc/cloud/cloud.cfg.d/test.cfg
\uff0c\u200b\u5199\u5165\u200b\u5185\u5bb9\u200b
bootcmd:\n - [ sh, -xc, \"echo 'hello world' >> testfile\" ]\n
\u200b\u5c31\u200b\u5c06\u200b\u4f1a\u200b\u5728\u200b\u5f53\u524d\u200b .cfg \u200b\u6587\u4ef6\u76ee\u5f55\u200b\u4e0b\u200b\u5efa\u7acb\u200b\u4e00\u4e2a\u200b\u5185\u5bb9\u200b\u4e3a\u200b \"hello world\" \u200b\u7684\u200b\u540d\u4e3a\u200b testfile \u200b\u7684\u200b\u6587\u4ef6\u200b\u3002 \u200b\u865a\u62df\u673a\u200b\u6bcf\u6b21\u200b\u542f\u52a8\u200b\u90fd\u200b\u4f1a\u200b\u6267\u884c\u200b bootcmd \u200b\u5176\u540e\u200b\u7684\u200b\u547d\u4ee4\u200b\uff0c\u200b\u901a\u8fc7\u200b\u5c06\u200b\u914d\u7f6e\u200b\u8fc7\u7a0b\u200b\u5199\u6210\u200b\u811a\u672c\u200b\u7684\u200b\u5f62\u5f0f\u200b\u518d\u200b\u4f5c\u4e3a\u200b bootcmd \u200b\u7684\u200b\u53c2\u6570\u200b\u5199\u5165\u200b .cfg \u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e2d\u200b\uff0c\u200b\u865a\u62df\u673a\u200b\u4fbf\u200b\u80fd\u591f\u200b\u5b8c\u6210\u200b\u914d\u7f6e\u200b\u4efb\u52a1\u200b\u3002
\u200b\u6b64\u5916\u200b\uff0cbootcmd \u200b\u662f\u200b\u6bcf\u6b21\u200b\u865a\u62df\u673a\u200b\u542f\u52a8\u200b\u90fd\u200b\u4f1a\u200b\u6267\u884c\u200b\uff0c\u200b\u5982\u679c\u200b\u9700\u8981\u200b\u865a\u62df\u673a\u200b\u53ea\u200b\u6267\u884c\u200b\u4e00\u6b21\u200b\u547d\u4ee4\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b runcmd \u200b\u9009\u9879\u200b\u3002
\u200b\u6b64\u5916\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5c06\u200b\u914d\u7f6e\u200b\u8fc7\u7a0b\u200b\u4ee5\u200b\u811a\u672c\u200b\u7684\u200b\u5f62\u5f0f\u200b\u5448\u73b0\u200b\uff0c\u200b\u5c06\u200b\u5176\u200b\u5b58\u50a8\u200b\u5728\u200b /var/lib/cloud/scripts/
\u200b\u4e0b\u200b\uff0c\u200b\u865a\u62df\u673a\u200b\u6bcf\u6b21\u200b\u542f\u52a8\u200b\u90fd\u200b\u4f1a\u200b\u6267\u884c\u200b\u6b64\u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u547d\u4ee4\u200b\u3002
\u200b\u865a\u62df\u673a\u200b\u672c\u5730\u200b
\u200b\u5c06\u200b .cfg
\u200b\u548c\u200b script
\u200b\u6587\u4ef6\u200b\u5b58\u50a8\u200b\u5728\u200b\u76f8\u5e94\u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u7531\u200b\u865a\u62df\u673a\u200b\u5728\u200b\u542f\u52a8\u200b\u7684\u200b\u65f6\u5019\u200b\u8bfb\u53d6\u200b\u5e76\u200b\u6267\u884c\u200b\u914d\u7f6e\u200b\u8fc7\u7a0b\u200b
qm \u200b\u547d\u4ee4\u200b\u4ece\u200b\u6570\u636e\u4e2d\u5fc3\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\uff08\u200b\u672a\u200b\u5b9e\u73b0\u200b\uff09
\u200b\u4ece\u200b\u6570\u636e\u4e2d\u5fc3\u200b\u7684\u200b\u7ec8\u7aef\u200b\u4e0a\u200b\u6267\u884c\u547d\u4ee4\u200b\u8fdb\u884c\u200b\u90e8\u7f72\u200b
# \u200b\u683c\u5f0f\u200b\nqm set <vmid> --cicustom \"user=<volume>\"\n\n# \u200b\u793a\u4f8b\u200b\nqm set 101 --cicustom \"user=local:snippets/userconfig.yaml\"\n
\u200b\u4fee\u590d\u200b\u62a5\u9519\u200b:
\u200b\u9519\u8bef\u200b\u8868\u73b0\u200b\u5982\u4e0b\u200b
perl: warning: Setting locale failed.\nperl: warning: Please check that your locale settings:\n LANGUAGE = (unset),\n LC_ALL = (unset),\n LC_ADDRESS = \"zh_CN.UTF-8\",\n .....\n are supported and installed on your system.\nperl: warning: Falling back to a fallback locale (\"en_US.UTF-8\").\n
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u8bbe\u7f6e\u200b\u73af\u5883\u53d8\u91cf\u200b LC_ALL=C
\u200b\u6216\u200b LC_ALL=C.UTF-8
\u200b\u4e0e\u200b\u672c\u4ee3\u200b Vlab \u200b\u96c6\u7fa4\u200b\u76f8\u5173\u200b\u7684\u200b\u7f51\u7edc\u200b\u6709\u200b\u4e09\u4e2a\u200b\uff0c\u200b\u4e0b\u9762\u200b\u5206\u522b\u200b\u4ecb\u7ecd\u200b\u3002
"},{"location":"networking/#ustcnet","title":"\u6821\u56ed\u7f51","text":"\u200b\u6240\u6709\u200b\u673a\u5668\u200b\u90fd\u200b\u5728\u200b\u7535\u4e09\u697c\u200b 524 \u200b\u673a\u623f\u200b\uff0c\u200b\u901a\u8fc7\u200b\u94dc\u7ebf\u200b\u76f4\u63a5\u200b\u63a5\u5165\u200b\u7535\u4e09\u697c\u200b\u7684\u200b VLAN\uff0c\u200b\u8be5\u200b VLAN \u200b\u6709\u200b\u4e09\u4e2a\u200b\u516c\u7f51\u200b IP \u200b\u5730\u5740\u200b\u6bb5\u200b 202.38.75.254/24, 202.38.79.254/24, 202.38.86.254/24\uff0c\u200b\u53e6\u6709\u200b\u4e00\u4e2a\u200b\u4ec5\u200b\u6821\u56ed\u7f51\u200b\u7684\u200b\u5730\u5740\u200b\u6bb5\u200b 10.38.79.254/24\uff0c\u200b\u76ee\u524d\u200b\u90e8\u7f72\u200b\u4e86\u200b\u6240\u6709\u200b\u4e3b\u673a\u200b\u7684\u200b IPMI \u200b\u754c\u9762\u200b\u3002
\u200b\u9664\u200b pv8 \u200b\u5916\u200b\u6240\u6709\u200b\u673a\u5668\u200b\u7684\u200b\u56db\u4e2a\u200b\u7f51\u53e3\u200b\u505a\u200b\u4e00\u4e2a\u200b bond\uff0c\u200b\u7136\u540e\u200b\u5c06\u200b\u8fd9\u4e2a\u200b bond \u200b\u6865\u63a5\u200b\uff0c\u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u663e\u793a\u200b\u7684\u200b\u754c\u9762\u200b\u540d\u79f0\u200b\u4e3a\u200b vmbr0
\u3002\u200b\u65b9\u4fbf\u200b\u8d77\u200b\u89c1\u200b\u6240\u6709\u200b\u4e3b\u673a\u200b\u7684\u200b\u6821\u56ed\u7f51\u200b IP \u200b\u90fd\u200b\u4ece\u200b 202.38.75.0/24 \u200b\u7f51\u6bb5\u200b\u4e2d\u53d6\u200b\uff0c\u200b\u8bb0\u5f55\u200b\u5728\u200b\u57df\u540d\u200b pv#.vlab.ibugone.net
\u200b\u4e2d\u200b\u3002
pv8 \u200b\u7684\u200b eno4 \u200b\u63a5\u5728\u5149\u200b\u4ea4\u6362\u673a\u200b\u7684\u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b\u4e0a\u200b\uff0c\u200b\u56e0\u6b64\u200b pv8 \u200b\u53ea\u6709\u200b\u4e09\u4e2a\u200b\u7f51\u53e3\u200b\u505a\u200b bond\u3002
"},{"location":"networking/#fibre-intranet","title":"\u5149\u7ea4\u200b\u5185\u200b\u7f51","text":"\u200b\u5149\u7ea4\u200b\u754c\u9762\u200b\u4e3a\u200b ens1f0
\u200b\u548c\u200b ens1f1
\uff08\u200b\u4e24\u53f0\u200b GPU \u200b\u670d\u52a1\u5668\u200b\u4e3a\u200b ens4f0
\u200b\u548c\u200b ens4f1
\uff09\uff0c\u200b\u901a\u8fc7\u200b\u4e00\u4e2a\u200b\u534e\u4e3a\u200b\u5149\u200b\u4ea4\u6362\u673a\u200b\u4e92\u8054\u200b\uff0c\u200b\u56e0\u6b64\u200b\u53ea\u6709\u200b\u670d\u52a1\u5668\u200b\u96c6\u7fa4\u200b\u5185\u90e8\u200b\u8fde\u901a\u200b\uff0c\u200b\u7531\u4e8e\u200b\u6bcf\u53f0\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5404\u81ea\u200b\u63a5\u5165\u200b\u6821\u56ed\u7f51\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5149\u7ea4\u200b\u5185\u7f51\u200b\u53ea\u200b\u7528\u4e8e\u200b\u4e92\u8054\u200b\uff08\u200b\u5305\u62ec\u200b\u8fde\u63a5\u200b iSCSI\uff09\uff0c\u200b\u4e0d\u200b\u7528\u4e8e\u200b\u8f6c\u53d1\u200b\u3002
IP \u200b\u5206\u914d\u60c5\u51b5\u200b\u89c1\u200b IP \u200b\u5730\u5740\u200b\u5217\u8868\u200b\u3002
\u200b\u8fd0\u884c\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u7f51\u7edc\u200b\u4e0a\u200b\u7684\u200b\u8bbe\u65bd\u200b\u6709\u200b iSCSI \u200b\u548c\u200b NFS\uff08\u200b\u7528\u4e8e\u200b\u5171\u4eab\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\uff0cLVM \u200b\u5e26\u9501\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u591a\u673a\u200b\u540c\u65f6\u200b\u6302\u8f7d\u200b\uff09\u3002
"},{"location":"networking/#overlay-intranet","title":"\u5bb9\u5668\u200b\u5185\u200b\u7f51","text":"\u200b\u5bb9\u5668\u200b\u4e4b\u95f4\u200b\u7684\u200b\u8fde\u63a5\u200b\u57fa\u4e8e\u200b\u8fd0\u884c\u200b\u5728\u200b\u5149\u7ea4\u200b\u4e4b\u4e0a\u200b\u7684\u200b overlay \u200b\u7f51\u7edc\u200b\uff0coverlay \u200b\u5b9e\u73b0\u200b\u91c7\u7528\u200b VXLAN\uff0c\u200b\u66f4\u200b\u591a\u200b\u4fe1\u606f\u200b\u53c2\u89c1\u200b \u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b \u200b\u4e00\u9875\u200b\u3002
"},{"location":"networking/#vm-network","title":"\u5b66\u751f\u200b\u673a\u200b\u7f51\u7edc","text":"CT100 \u200b\u4e3a\u200b\u7f51\u5173\u200b\uff0c\u200b\u5c06\u200b\u6240\u6709\u200b\u5b66\u751f\u200b\u673a\u200b\u7684\u200b\u4e0a\u884c\u200b\u6d41\u91cf\u200b NAT \u200b\u540e\u200b\u8fde\u63a5\u200b\u5230\u200b\u6821\u56ed\u7f51\u200b\uff0c\u200b\u8be6\u89c1\u200b CT100 \u200b\u5bb9\u5668\u200b\u7684\u200b\u6587\u6863\u200b\u3002
CT101 \u200b\u4e3a\u200b web \u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u63d0\u4f9b\u200b web \u200b\u754c\u9762\u200b\uff08Nginx, Django\uff09\u200b\u548c\u200b VNC \u200b\u7edf\u4e00\u200b\u63a5\u5165\u200b\uff08\u200b\u7a0b\u5e8f\u200b\u5728\u200b pdlan \u200b\u7684\u200b\u4e00\u4e2a\u200b\u79c1\u6709\u200b\u4ed3\u5e93\u200b\u4e2d\u200b\uff0c\u200b\u7531\u4e8e\u200b\u6f5c\u5728\u200b\u7684\u200b\u7248\u6743\u200b\u95ee\u9898\u200b\u4e0d\u80fd\u200b\u516c\u5f00\u200b\uff09\u3002\u200b\u5177\u4f53\u5185\u5bb9\u200b\u8be6\u89c1\u200b CT101 \u200b\u5bb9\u5668\u200b\u7684\u200b\u6587\u6863\u200b\u3002
"},{"location":"networking/#structure","title":"\u7f51\u7edc\u200b\u67b6\u6784","text":""},{"location":"networking/firewall/","title":"\u670d\u52a1\u5668\u200b\u9632\u706b\u5899\u200b\u914d\u7f6e","text":"\u200b\u6211\u4eec\u200b\u91c7\u7528\u200b\u6bd4\u624b\u200b\u6413\u200b iptables \u200b\u66f4\u52a0\u200b\u9760\u200b\u8c31\u200b\u5408\u7406\u200b\u7684\u200b\u65b9\u6848\u200b\uff1a\u200b\u4f7f\u7528\u200b PVE Firewall\u3002
\u200b\u5173\u4e8e\u200b\u5168\u9762\u200b\u5207\u6362\u200b\u5230\u200b PVE Firewall \u200b\u7684\u200b\u8c03\u7814\u200b
\u200b\u4f18\u70b9\u200b\uff1a
\u200b\u7f3a\u70b9\u200b\uff1a
iptables-persistent
Datacenter \u200b\u7ea7\u522b\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b /etc/pve/firewall/cluster.fw
\uff0cHost \u200b\u7ea7\u522b\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b /etc/pve/nodes/{hostname}/host.fw
\uff0cVM \u200b\u7ea7\u522b\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b /etc/pve/firewall/<id>.fw
\u3002\u200b\u5982\u679c\u200b\u8fd9\u4e9b\u200b\u6587\u4ef6\u200b\u5728\u200b\u78c1\u76d8\u200b\u4e0a\u200b\u88ab\u200b\u4fee\u6539\u200b\u4e86\u200b\uff0cPVE \u200b\u4f1a\u200b\u81ea\u52a8\u200b\u5c06\u200b\u4fee\u6539\u200b\u540c\u6b65\u200b\u5230\u200b iptables \u200b\u89c4\u5219\u200b\u91cc\u200b\uff0c\u200b\u6d4b\u8bd5\u8868\u660e\u200b PVE \u200b\u7684\u200b\u626b\u63cf\u200b\u95f4\u9694\u200b\u5927\u7ea6\u200b\u4e3a\u200b 10s\u3002
PVE \u200b\u4f1a\u200b\u81ea\u52a8\u200b\u653e\u901a\u200b\u96c6\u7fa4\u200b\u901a\u4fe1\u200b\u6240\u200b\u9700\u200b\u7684\u200b\u7aef\u53e3\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ea\u200b\u9700\u8981\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u540d\u4e3a\u200b management
\u200b\u7684\u200b IPset\uff0c\u200b\u5c06\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u767b\u5f55\u200b PVE \u200b\u7684\u200b IP \u200b\u52a0\u5165\u200b\u5c31\u884c\u4e86\u200b\uff0cPVE \u200b\u4f1a\u5e2e\u200b\u6211\u4eec\u200b\u81ea\u52a8\u200b\u653e\u901a\u200b\u8fd9\u4e2a\u200b IPset \u200b\u91cc\u200b\u7684\u200b IP\u3002\u200b\u76ee\u524d\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u51e0\u4e2a\u200b\u5e38\u7528\u200b\u7684\u200b IP \u200b\u5730\u5740\u200b\uff0c\u200b\u5305\u62ec\u200b iBug \u200b\u7684\u200b\u5de5\u4f5c\u7ad9\u200b\u548c\u200b LUG VPN \u200b\u7684\u200b\u51fa\u53e3\u200b IP\u3002
\u200b\u53e6\u6709\u200b\u4e00\u4e2a\u200b\u7279\u6b8a\u200b IPset \u200b\u53eb\u505a\u200b blacklist
\uff0c\u200b\u4e0d\u8fc7\u200b\u6211\u4eec\u200b\u6682\u65f6\u200b\u7528\u4e0d\u4e0a\u200b\u3002
\u200b\u5176\u4ed6\u200b\u9700\u8981\u200b\u7684\u200b\u89c4\u5219\u200b\u7528\u200b Security Group\uff08\u200b\u5b89\u5168\u200b\u7ec4\u200b\uff09\u200b\u5b9e\u73b0\u200b\u3002\u200b\u6211\u4eec\u200b\u5728\u200b\u96c6\u7fa4\u200b\u5c42\u9762\u200b\u5efa\u597d\u200b\u4e86\u200b vlab-host
\u200b\u548c\u200b pbs
\u200b\u7b49\u200b SG\uff0c\u200b\u7136\u540e\u200b\u7ed9\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u90fd\u200b\u6309\u200b\u9700\u914d\u200b\u4e0a\u200b\u8fd9\u4e9b\u200b SG \u200b\u5c31\u884c\u4e86\u200b\u3002
\u200b\u53c2\u89c1\u200b\uff1aFirewall - Proxmox VE
"},{"location":"networking/firewall/#config-vm","title":"\u865a\u62df\u673a\u200b\u8bbe\u7f6e","text":"\u200b\u6211\u4eec\u200b\u5728\u200b datacenter \u200b\u4e0a\u5efa\u200b\u4e00\u4e2a\u200b Security Group \u200b\u53eb\u200b vlab-vm
\u200b\u7528\u6765\u200b\u914d\u7f6e\u200b\u9700\u8981\u200b\u5bf9\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u751f\u6548\u200b\u7684\u200b\u89c4\u5219\u200b\uff0c\u200b\u6bd4\u5982\u200b\u9488\u5bf9\u200b code-server \u200b\u548c\u200b VNC \u200b\u7684\u200b\u9632\u706b\u5899\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u8fd9\u79cd\u200b\u65b9\u5f0f\u200b\u90e8\u7f72\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u5916\u9762\u200b\u3002
\u200b\u5982\u679c\u200b\u8bbe\u7f6e\u200b\u91cc\u200b\u5f00\u542f\u200b\u4e86\u200b IP Filter\uff0c\u200b\u5bf9\u4e8e\u200b LXC \u200b\u5bb9\u5668\u200b\uff0cPVE \u200b\u4f1a\u200b\u81ea\u52a8\u200b\u628a\u200b\u5df2\u200b\u914d\u7f6e\u200b\u597d\u200b\u7684\u200b IP \u200b\u5730\u5740\u200b\u52a0\u5165\u200b\u8fd9\u4e2a\u200b\u767d\u540d\u5355\u200b\uff0c\u200b\u4f46\u662f\u200b\u6211\u4eec\u200b\u4ecd\u7136\u200b\u9700\u8981\u200b\u624b\u52a8\u200b\u5904\u7406\u200b\u53e6\u5916\u200b\u4e24\u4e2a\u200b\u95ee\u9898\u200b\uff1a
\u200b\u76ee\u524d\u200b\u505a\u6cd5\u200b\u662f\u200b\u4ea4\u7ed9\u200b vlab-pve-agent \u200b\u6765\u200b\u8bfb\u53d6\u200b VM \u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5e76\u200b\u751f\u6210\u200b\u9632\u706b\u5899\u200b\u914d\u7f6e\u200b\u3002\u200b\u5bf9\u4e8e\u200b IPv6 SLAAC \u200b\u5730\u5740\u200b\uff0c\u200b\u6211\u4eec\u200b\u9009\u62e9\u200b\u5077\u4e2a\u200b\u61d2\u200b\uff0c\u200b\u76f4\u63a5\u200b\u628a\u200b\u6574\u6bb5\u200b /64 \u200b\u52a0\u5165\u200b\u767d\u540d\u5355\u200b\u3002
[OPTIONS]\n\npolicy_in: ACCEPT\nipfilter: 1\nmacfilter: 1\nenable: 1\n\n[IPSET ipfilter-net0]\n\n!2001:da8:d800:4bfc::/112\n2001:da8:d800:4bfc::/64\n\n[RULES]\n\nGROUP vlab-vm\n
\u200b\u521d\u59cb\u5316\u200b\u914d\u7f6e\u200b\u8fc7\u7a0b\u200b\u89c1\u200b 2023 \u200b\u5e74\u200b 10 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u8bb0\u5f55\u200b
"},{"location":"networking/firewall/#previous","title":"\u65e7\u200b\u7684\u200b\u624b\u5de5\u200b\u914d\u7f6e","text":"Warning
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u5df2\u7ecf\u200b\u8fc7\u65f6\u200b\uff0c\u200b\u4ec5\u4f9b\u53c2\u8003\u200b\u3002
\u200b\u9632\u706b\u5899\u200b\u4f7f\u7528\u200b Linux \u200b\u81ea\u5e26\u200b\u7684\u200b iptables \u200b\u7ba1\u7406\u200b\uff0c\u200b\u9ed8\u8ba4\u200b\u7b56\u7565\u200b\u4e3a\u200b INPUT DROP
, FORWARD ACCEPT
, OUTPUT ACCEPT
\u3002\u200b\u65b9\u4fbf\u200b\u8d77\u200b\u89c1\u200b\u4f7f\u7528\u200b iptables-persistent
\u200b\u8ba9\u200b\u9632\u706b\u5899\u200b\u89c4\u5219\u200b\u5f00\u673a\u200b\u81ea\u52a8\u200b\u52a0\u8f7d\u200b\u3002
\u200b\u4ee5\u4e0b\u200b\u4e3a\u200b pv1 \u200b\u4e0a\u200b\u7684\u200b\u9632\u706b\u5899\u200b\u914d\u7f6e\u200b\uff08/etc/iptables/rules.v4
\u200b\u548c\u200b rules.v6
\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u4e00\u6837\u200b\uff09\uff1a
pv1 \u200b\u7684\u200b\u989d\u5916\u200b\u914d\u7f6e\u200b
pv1 \u200b\u9700\u8981\u200b\u4fee\u6539\u200b\u4ee5\u4e0b\u200b\u914d\u7f6e\u200b\uff0c\u200b\u989d\u5916\u200b\u653e\u884c\u200b 8090 \u200b\u7aef\u53e3\u200b\uff0c\u200b\u4ee5\u200b\u7528\u4e8e\u200b\u865a\u62df\u673a\u200b\u521b\u5efa\u200b\u65f6\u200b\u7684\u200b\u989d\u5916\u200b\u521d\u59cb\u5316\u200b\uff08post-creation-agent\uff09\u3002
\u200b\u53e6\u5916\u200b\uff0c\u200b\u7531\u4e8e\u200b pv1 \u200b\u4e0d\u200b\u8fd0\u884c\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\uff0c\u200b\u6545\u200b\u5c4f\u853d\u200b\u4e86\u200b iptables-legacy \u200b\u7684\u200b\u76f8\u5173\u200b\u6a21\u5757\u200b\uff0c\u200b\u4ee5\u200b\u51cf\u5c11\u200b\u6f5c\u5728\u200b\u7684\u200b\u6545\u969c\u200b\u53ef\u80fd\u200b\u5c55\u793a\u200b\u95f2\u7740\u6ca1\u4e8b\u200b\u5e72\u200b\u7684\u200b\u7cbe\u795e\u200b\u3002
/etc/modprobe.d/iptables-legacy.confinstall iptable_filter /bin/true\ninstall iptable_nat /bin/true\ninstall iptable_mangle /bin/true\ninstall iptable_raw /bin/true\ninstall iptable_security /bin/true\ninstall ip6table_filter /bin/true\ninstall ip6table_nat /bin/true\ninstall ip6table_mangle /bin/true\ninstall ip6table_raw /bin/true\ninstall ip6table_security /bin/true\n
*filter\n:INPUT ACCEPT [0:0]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [0:0]\n:VLAB - [0:0]\n-A INPUT -i lo -j ACCEPT\n-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n-A INPUT -p icmp -j ACCEPT\n-A INPUT -i vmbr2 -j ACCEPT\n-A INPUT -i vmbr+ -j VLAB\n-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n-A FORWARD -i vmbr+ -j DROP\n-A VLAB -p tcp -m state --state NEW -m tcp --sport 1024:65535 -m multiport --dports 22,80,443,8006 -j ACCEPT\n-A VLAB -j DROP\nCOMMIT\n\n\n*nat\n:PREROUTING ACCEPT [0:0]\n:INPUT ACCEPT [0:0]\n:OUTPUT ACCEPT [0:0]\n:POSTROUTING ACCEPT [0:0]\n-A PREROUTING -m addrtype --dst-type LOCAL -p tcp --dport 443 -j REDIRECT --to-ports 8006\nCOMMIT\n
"},{"location":"networking/firewall/#ebtables","title":"\u4ee5\u592a\u7f51\u200b\u6865\u200b\u9632\u706b\u5899","text":"\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\u4e86\u200b ebtables \u200b\u6765\u200b\u9632\u6b62\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u901a\u8fc7\u200b ARP \u200b\u6b3a\u9a97\u200b\u4f2a\u88c5\u6210\u200b CT 100/101\uff0c\u200b\u56e0\u4e3a\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u865a\u62df\u673a\u200b\u5bf9\u200b\u7ef4\u6301\u200b\u6b63\u5e38\u200b\u670d\u52a1\u200b\u81f3\u5173\u91cd\u8981\u200b\uff0c\u200b\u4f46\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u914d\u7f6e\u200b MAC \u200b\u5730\u5740\u200b\u8fc7\u6ee4\u200b\u53c8\u200b\u8fc7\u4e8e\u200b\u7e41\u7410\u200b\u3001\u200b\u4e0d\u200b\u73b0\u5b9e\u200b\u3002
\u200b\u6211\u4eec\u200b\u7684\u200b ebtables \u200b\u89c4\u5219\u200b\u7b80\u5355\u200b\u8fc7\u6ee4\u200b\u4e86\u200b\u4ece\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u53d1\u51fa\u200b\u7684\u200b\uff0c\u200b\u53d7\u200b\u4fdd\u62a4\u200b\u7684\u200b\u6e90\u200b MAC \u200b\u5730\u5740\u200b\u7684\u200b\u4ee5\u592a\u7f51\u200b\u5e27\u200b\u548c\u200b\u54cd\u5e94\u200b\u53d7\u200b\u4fdd\u62a4\u200b\u7684\u200b\u6e90\u200b IP \u200b\u5730\u5740\u200b\u7684\u200b ARP \u200b\u5305\u200b\uff1a
ebtables -N VLAB_SECURE\nebtables -A VLAB_SECURE -i vxlan1 -j ACCEPT\nebtables -A VLAB_SECURE -i veth100i+ -j ACCEPT\nebtables -A VLAB_SECURE -i veth101i+ -j ACCEPT\nebtables -A VLAB_SECURE -j DROP\nebtables -A FORWARD -p arp --arp-ip-src 172.31.0.0/30 -j VLAB_SECURE\nebtables -A FORWARD -s 00:00:ac:1f:00:00/ff:ff:ff:ff:ff:fc -j VLAB_SECURE\n
\u200b\u7531\u4e8e\u200b ebtables \u200b\u4e0d\u200b\u81ea\u5e26\u200b persistent \u200b\u7684\u200b\u670d\u52a1\u200b\uff0c\u200b\u6211\u4eec\u200b\u624b\u5199\u200b\u4e86\u200b\u4e00\u4e2a\u200b systemd \u200b\u670d\u52a1\u200b\u7528\u4e8e\u200b\u6301\u4e45\u200b\u5316\u200b ebtables \u200b\u89c4\u5219\u200b\u3002
[Unit]\nDescription=Ethernet Bridge Firewall\nAfter=network.target network-online.target\n\n[Service]\nType=oneshot\nRemainAfterExit=true\n\nExecStartPre=-/usr/sbin/ebtables -F\nExecStartPre=-/usr/sbin/ebtables -X\nExecStartPre=-/usr/sbin/ebtables -Z\n\nExecStart=/usr/sbin/ebtables -N VLAB_SECURE\nExecStart=/usr/sbin/ebtables -A VLAB_SECURE -i vxlan1 -j ACCEPT\nExecStart=/usr/sbin/ebtables -A VLAB_SECURE -i veth100i+ -j ACCEPT\nExecStart=/usr/sbin/ebtables -A VLAB_SECURE -i veth101i+ -j ACCEPT\nExecStart=/usr/sbin/ebtables -A VLAB_SECURE -j DROP\nExecStart=/usr/sbin/ebtables -A FORWARD -p arp --arp-ip-src 172.31.0.0/30 -j VLAB_SECURE\nExecStart=/usr/sbin/ebtables -A FORWARD -s 00:00:ac:1f:00:00/ff:ff:ff:ff:ff:fc -j VLAB_SECURE\n\n[Install]\nWantedBy=network.target\n
"},{"location":"networking/host/","title":"\u4e3b\u673a\u200b\u7f51\u5361","text":"Proxmox VE \u200b\u4e0d\u200b\u652f\u6301\u200b ifupdown \u200b\u4ee5\u5916\u200b\u7684\u200b\u7f51\u7edc\u200b\u7ba1\u7406\u7cfb\u7edf\u200b\uff08PVE 7 \u200b\u5f00\u59cb\u200b\u9ed8\u8ba4\u200b\u4f7f\u7528\u200b ifupdown2\uff09\uff0c\u200b\u5982\u200b NetworkManager \u200b\u548c\u200b systemd-networkd \u200b\u7b49\u200b\uff0c\u200b\u56e0\u6b64\u200b\u7f51\u7edc\u200b\u914d\u7f6e\u200b\u53ea\u80fd\u200b\u4f7f\u7528\u200b /etc/network/interfaces
\u200b\u6587\u4ef6\u200b\u3002
\u200b\u4ee5\u4e0b\u200b\u662f\u200b pv2 \u200b\u7684\u200b\u914d\u7f6e\u200b\u4f9b\u53c2\u8003\u200b\uff0c\u200b\u6279\u91cf\u200b\u4fee\u6539\u200b\u8bf7\u200b\u89c1\u200b\u8fd9\u4e2a\u200b Gist\u3002\u200b\u5173\u4e8e\u200b ifupdown \u200b\u548c\u200b ifupdown2 \u200b\u7684\u200b\u533a\u522b\u200b\u89c1\u200b\u8fd9\u4e2a\u200b\u9875\u9762\u200b\uff0c\u200b\u4ee5\u53ca\u200b ifupdown2 \u200b\u7684\u200b\u6587\u6863\u200b\u5728\u200b\u8fd9\u200b\u3002
ifupdown2ifupdownauto lo\niface lo inet loopback\n\nauto eno1\niface eno1\nauto eno2\niface eno2\nauto eno3\niface eno3\nauto eno4\niface eno4\n\nauto ens1f0\niface ens1f0\n mtu 1550\nauto ens1f1\niface ens1f1\n mtu 1550\n\nauto bond0\niface bond0\n bond-slaves eno1 eno2 eno3 eno4\n bond-mode balance-alb\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n\nauto bond1\niface bond1\n address 10.0.0.12/24\n bond-slaves ens1f0 ens1f1\n bond-mode 802.3ad\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n\nauto vmbr0\niface vmbr0\n address 202.38.75.97/24\n gateway 202.38.75.254\n dns-nameservers 202.38.64.1\n bridge-ports bond0\n bridge-stp off\n bridge-fd 0\niface vmbr0 inet6 static\n address 2001:da8:d800:75::a2/64\n gateway 2001:da8:d800:75::1\n\n# Overlay network for VMs\nauto vxlan1\niface vxlan1\n pre-up ip link add $IFACE type vxlan id 1 group 239.1.1.1 dev bond1 || true\n post-down ip link delete $IFACE || true\n mtu 1500\nauto vmbr1\niface vmbr1\n bridge-ports vxlan1\n bridge-stp off\n bridge-fd 0\n\n# Overlay network for management\nauto vxlan2\niface vxlan2\n pre-up ip link add $IFACE type vxlan id 2 group 239.1.1.1 dev bond1 || true\n post-down ip link delete $IFACE || true\n mtu 1500\nauto vmbr2\niface vmbr2\n address 172.30.0.102/24\n bridge-ports vxlan1\n bridge-stp off\n bridge-fd 0\n
:fontawesome-solid-exclamation-triangle:{: .orangered } \u200b\u4ee5\u4e0b\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e3a\u200b\u8fc1\u79fb\u200b\u81f3\u200b ifupdown2 \u200b\u524d\u200b\u7684\u200b\u6700\u540e\u200b\u914d\u7f6e\u200b\uff0c\u200b\u5b9e\u9645\u200b\u60c5\u51b5\u200b\u5df2\u200b\u53d1\u751f\u53d8\u5316\u200b\uff0c\u200b\u5185\u5bb9\u200b\u4ec5\u4f9b\u53c2\u8003\u200b
auto lo\niface lo inet loopback\n\nauto eno1\niface eno1 inet manual\n bond-master bond0\nauto eno2\niface eno2 inet manual\n bond-master bond0\nauto eno3\niface eno3 inet manual\n bond-master bond0\nauto eno4\niface eno4 inet manual\n bond-master bond0\n\nauto ens1f0\niface ens1f0 inet manual\n bond-master bond1\n mtu 1550\nauto ens1f1\niface ens1f1 inet manual\n bond-master bond1\n mtu 1550\n\nauto bond0\niface bond0 inet manual\n bond-mode balance-alb\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n\nauto bond1\niface bond1 inet static\n address 10.0.0.12/24\n bond-mode 802.3ad\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n\nauto vmbr0\niface vmbr0 inet static\n address 202.38.75.97/24\n gateway 202.38.75.254\n dns-nameservers 202.38.64.1\n bridge_ports bond0\n bridge_stp off\n bridge_fd 0\niface vmbr0 inet6 static\n address 2001:da8:d800:75::a2/64\n gateway 2001:da8:d800:75::1\n\n# Overlay network for VMs\nauto vxlan0\niface vxlan0 inet manual\n pre-up ip link add vxlan0 type vxlan id 10 group 239.1.1.1 dev bond1 || true\n up ip link set vxlan0 up\n down ip link set vxlan0 down\n post-down ip link delete vxlan0 || true\n mtu 1500\nauto vmbr1\niface vmbr1 inet static\n address 172.30.0.102/24\n bridge_ports vxlan0\n bridge_stp off\n bridge_fd 0\n
\u200b\u5176\u4e2d\u200b ens1f1 \u200b\u7684\u200b mtu 1550
\u200b\u548c\u200b vxlan0 \u200b\u7684\u200b mtu 1500
\u200b\u8bbe\u7f6e\u200b\u89c1\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b\u4e2d\u200b\u7684\u200b\u89e3\u91ca\u200b\u3002
\u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b\u4f7f\u7528\u200b VXLAN \u200b\u5b9e\u73b0\u200b\uff0c\u200b\u5728\u200b\u6240\u6709\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u4e0a\u5747\u200b\u4f7f\u7528\u200b bond1 \u200b\u754c\u9762\u200b\u8fde\u63a5\u200b\uff0c\u200b\u521b\u5efa\u200b\u547d\u4ee4\u200b\u4e3a\u200b
ip link add vxlan0 type vxlan id 1 group 239.1.1.1 dev bond1\n
RFC 7348 \u200b\u6307\u51fa\u200b VXLAN \u200b\u63a5\u6536\u200b\u7aef\u53e3\u200b\u4e3a\u200b UDP 4789\uff0c\u200b\u4f46\u200b\u7531\u4e8e\u200b\u5386\u53f2\u200b\u539f\u56e0\u200b\u5305\u62ec\u200b Linux \u200b\u5728\u5185\u200b\u7684\u200b\u4e00\u4f17\u200b\u5382\u5546\u200b\u90fd\u200b\u5728\u200b\u4f7f\u7528\u200b UDP 8472\uff0c\u200b\u56e0\u6b64\u200b\u8be5\u200b\u7aef\u53e3\u200b\u5fc5\u987b\u200b\u5728\u200b bond1 \u200b\u4e0a\u200b\u5f00\u653e\u200b\u3002\u200b\u5b9e\u9645\u4e0a\u200b\u7531\u4e8e\u200b\u5149\u7ea4\u200b\u754c\u9762\u200b\u6ca1\u6709\u200b\u5916\u90e8\u200b\u63a5\u5165\u200b\uff0c\u200b\u6545\u200b\u4e0d\u8bbe\u9632\u200b\u3002
"},{"location":"networking/intranet/#ip-\u5730\u5740\u5206\u914d","title":"IP \u200b\u5730\u5740\u200b\u5206\u914d","text":"\u200b\u5185\u5bb9\u200b\u5df2\u200b\u79fb\u81f3\u200b IP \u200b\u5730\u5740\u200b\u5206\u914d\u200b\u3002
"},{"location":"networking/ips/","title":"IP \u200b\u5730\u5740\u200b\u5217\u8868","text":""},{"location":"networking/ips/#\u6821\u56ed\u7f51-ipv4","title":"\u6821\u56ed\u7f51\u200b IPv4","text":"IP \u200b\u5730\u5740\u200b \u200b\u4e3b\u673a\u200b\u6216\u200b\u7528\u9014\u200b 10.38.79.97 \u200b\u66d9\u5149\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b 10.38.79.9810.38.79.99 HPE \u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b 10.38.79.100 pv0 IPMI 10.38.79.101 pv1 IPMI 10.38.79.102 pv2 IPMI 10.38.79.103 pv3 IPMI 10.38.79.104 pv4 IPMI 10.38.79.105 pv5 IPMI 10.38.79.106 pv6 IPMI 10.38.79.107 pv7 IPMI 10.38.79.108 pv8 IPMI 10.38.79.109 pv9 IPMI 10.38.79.110 pv10 IPMI 10.38.79.111 pv11 IPMI 10.38.79.112 pv12 IPMI 10.38.79.113 pv13 IPMI 10.38.79.114 pv14 IPMI 10.38.79.181 pvg1 IPMI 10.38.79.182 pvg2 IPMI 202.38.75.4 web0\uff08\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b CT 101\uff09 202.38.75.24 gateway0\uff08\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b CT 100\uff09 202.38.75.85 pv0 202.38.75.86 pv1 202.38.75.97 pv2 202.38.75.98 pv3 202.38.75.99 pv4 202.38.75.100 pv5 202.38.75.102 pv6 202.38.75.103 pv7 202.38.75.104 pv8 202.38.75.109 pv9 202.38.75.111 pv10 202.38.75.112 pv11 202.38.75.113 pv12 202.38.75.114 pv13 202.38.75.115 pv14 202.38.75.105 pvg1 202.38.75.108 pvg2 202.38.75.226 CT 101\uff08Web \u200b\u670d\u52a1\u5668\u200b\uff09 202.38.75.25210.38.79.252 CT 100\uff08\u200b\u5185\u200b\u7f51\u200b\u7f51\u5173\u200b\u51fa\u53e3\u200b\uff09Info
10.38.79.252 \u200b\u6302\u200b\u5728\u200b CT 100 \u200b\u4e0a\u200b\uff0c\u200b\u4e3b\u8981\u200b\u7528\u6765\u200b\u901a\u8fc7\u200b NAT \u200b\u4f9b\u7535\u200b\u4e09\u697c\u200b 420 \u200b\u623f\u95f4\u200b\u4e0a\u7f51\u200b\u3002
"},{"location":"networking/ips/#\u6821\u56ed\u7f51-ipv6","title":"\u6821\u56ed\u7f51\u200b IPv6","text":"IP \u200b\u5730\u5740\u200b \u200b\u4e3b\u673a\u200b\u6216\u200b\u7528\u9014\u200b 2001:da8:d800:75::4 web0\uff08\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b CT 101\uff09 2001:da8:d800:75::226 CT 101\uff08Web \u200b\u670d\u52a1\u5668\u200b\uff09 2001:da8:d800:75::aaaa CT 100\uff08\u200b\u5185\u200b\u7f51\u200b\u7f51\u5173\u200b\u51fa\u53e3\u200b\uff09 2001:da8:d800:75::bbbb gateway0\uff08\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b CT 100\uff09"},{"location":"networking/ips/#\u5185\u7f51-ipv4","title":"\u5185\u200b\u7f51\u200b IPv4","text":"IP \u200b\u5730\u5740\u200b\u6bb5\u200b \u200b\u7528\u9014\u200b 10.0.0.0/24 \u200b\u4e3b\u673a\u200b\u95f4\u200b\u5149\u7ea4\u901a\u4fe1\u200b\uff08\u200b\u5305\u62ec\u200b\u5b58\u50a8\u200b\u8bbe\u65bd\u200b\u7684\u200b iSCSI\uff09 172.31.0.0/16 \u200b\u7528\u6237\u200b\u7f51\u7edc\u200b\uff08vmbr1\uff09 172.31.0.0 - 172.31.3.255 \u200b\u4fdd\u7559\u200b\u81ea\u7528\u200b\uff0c\u200b\u5982\u200b\u7f51\u5173\u200b\u548c\u200b\u6258\u7ba1\u200b\u7684\u200b\u670d\u52a1\u200b\u7b49\u200b 172.31.4.0 - 172.31.255.254 \u200b\u5206\u914d\u200b\u7ed9\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b 172.30.0.0/24 \u200b\u5185\u90e8\u200b\u8bbe\u65bd\u200b\u95f4\u200b\u7684\u200b\u901a\u4fe1\u200b\uff0c\u200b\u5305\u62ec\u200b\u865a\u62df\u673a\u200b\u548c\u200b\u4e3b\u673a\u200b\uff08\u200b\u4e0d\u200b\u5305\u542b\u200b iSCSI\uff0c\u200b\u5b89\u5168\u200b\u8d77\u200b\u89c1\u200b\u9700\u8981\u200b\u9694\u79bb\u200b\uff09\uff08vmbr2\uff09 192.168.252.0/24 WireGuard \u200b\u5916\u90e8\u200b\u63a5\u5165\u200b\uff08\u200b\u901a\u8fc7\u200b CT 100 \u200b\u7f51\u5173\u200b\uff09 IP \u200b\u5730\u5740\u200b \u200b\u4e3b\u673a\u200b 10.0.0.110.0.0.11 pv1 10.0.0.12 pv2 10.0.0.13 pv3 10.0.0.14 pv4 10.0.0.15 pv5 10.0.0.16 pv6 10.0.0.17 pv7 10.0.0.18 pv8 10.0.0.19 pv9 10.0.0.20 pv10 10.0.0.21 pv11 10.0.0.22 pv12 10.0.0.23 pv13 10.0.0.24 pv14 10.0.0.81 pvg1 10.0.0.82 pvg2 172.30.0.1172.31.0.1 CT 100 \u200b\u7f51\u5173\u200b 172.30.0.2172.31.0.2 CT 101 \u200b\u670d\u52a1\u5668\u200b 172.30.0.3 CT 102 (monitor, InfluxDB) 172.30.0.101 pv1 172.30.0.102 pv2 172.30.0.103 pv3 172.30.0.104 pv4 172.30.0.105 pv5 172.30.0.106 pv6 172.30.0.107 pv7 172.30.0.108 pv8 172.30.0.109 pv9 172.30.0.110 pv10 172.30.0.111 pv11 172.30.0.112 pv12 172.30.0.113 pv13 172.30.0.114 pv14 172.30.0.181 pvg1 172.30.0.182 pvg2 172.31.1.x \u200b\u89c1\u200b\u4e0b"},{"location":"networking/ips/#\u5206\u914d\u89c4\u5219","title":"\u5206\u914d\u200b\u89c4\u5219","text":"\u200b\u6211\u4eec\u200b\u6ca1\u6709\u200b\u5185\u200b\u7f51\u200b\u670d\u52a1\u200b\u8fd0\u884c\u200b\u5728\u200b IPv6 \u200b\u4e0a\u200b\u3002
IP \u200b\u5730\u5740\u200b\u6bb5\u200b \u200b\u5206\u914d\u200b\u7528\u9014\u200b 2001:da8:d800:4bfc::/64 \u200b\u901a\u8fc7\u200b SLAAC \u200b\u4f9b\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u8bbf\u95ee\u200b IPv6 2001:da8:d800:4b18::/64 \u200b\u540c\u200b\u4e0a\u200b\uff0c\u200b\u4f46\u662f\u200b\u662f\u200b\u6d4b\u8bd5\u73af\u5883"},{"location":"records/2020-03-31/","title":"2020 \u200b\u5e74\u200b 3 \u200b\u6708\u200b 31 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":""},{"location":"records/2020-03-31/#\u5df2\u5b8c\u6210","title":"\u5df2\u200b\u5b8c\u6210","text":"VXLAN \u200b\u7684\u200b MTU \u200b\u4e3a\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u7edc\u200b\u7684\u200b\u51cf\u53bb\u200b 50 \u200b\u5b57\u8282\u200b\uff0c\u200b\u8003\u8651\u200b\u5230\u200b 1450 \u200b\u5b57\u8282\u200b\u8fd9\u79cd\u200b\u975e\u6807\u51c6\u200b\u7684\u200b\u8bbe\u5b9a\u200b\u65e9\u665a\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u66f4\u200b\u591a\u200b\u7684\u200b\u9ebb\u70e6\u200b\uff08\u200b\u4f8b\u5982\u200b KVM \u200b\u865a\u62df\u673a\u200b\u9700\u8981\u200b\u5355\u72ec\u200b\u8bbe\u7f6e\u200b\u7b49\u200b\uff09\uff0c\u200b\u51b3\u5b9a\u200b\u627e\u200b\u673a\u4f1a\u200b\u8fdb\u884c\u200b\u7cfb\u7edf\u7ef4\u62a4\u200b\uff0c\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u8bbe\u7f6e\u200b\u6539\u6389\u200b\uff0c\u200b\u628a\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u5361\u200b\u7684\u200b MTU \u200b\u589e\u52a0\u200b 50 \u200b\u5b57\u8282\u200b\u4ee5\u4f9b\u200b VXLAN \u200b\u586b\u8865\u200b\u3002
\u200b\u5177\u4f53\u200b\u7684\u200b\u8c03\u6574\u200b\u65b9\u6cd5\u200b\u5c31\u662f\u200b\u5728\u200b /etc/network/interfaces
\u200b\u4e2d\u200b\u7684\u200b iface ens1f1 inet static
\u200b\u540e\u9762\u200b\u52a0\u5165\u200b\u4e00\u884c\u200b mtu 1550
\uff0c\u200b\u540c\u6837\u200b\uff08\u200b\u4fdd\u9669\u200b\u8d77\u200b\u89c1\u200b\uff09\u200b\u5728\u200b iface vxlan0
\u200b\u540e\u9762\u200b\u52a0\u5165\u200b\u4e00\u884c\u200b mtu 1500
\u3002
\u200b\u6539\u8fc7\u200b\u4e4b\u540e\u200b\u7684\u200b interfaces \u200b\u6587\u4ef6\u200b\u7c7b\u4f3c\u200b\u8fd9\u6837\u200b\uff1a
auto ens1f1\niface ens1f1 inet static\n address 10.0.0.1\n netmask 255.255.255.0\n mtu 1550\n\nauto vxlan0\niface vxlan0 inet manual\n pre-up ip link add vxlan0 type vxlan id 10 group 239.1.1.1 dstport 0 dev ens1f1 || true\n up ip link set vxlan0 up\n down ip link set vxlan0 down\n post-down ip link delete vxlan0 || true\n mtu 1500\n
\u200b\u5bf9\u4e8e\u200b\u8fd0\u884c\u200b\u4e86\u200b\u5bb9\u5668\u200b\u7684\u200b\u4e3b\u673a\u200b\uff0c\u200b\u76f4\u63a5\u200b\u91cd\u542f\u200b\u66f4\u52a0\u200b\u65b9\u4fbf\u200b\uff08\u200b\u5f53\u7136\u200b iSCSI \u200b\u7684\u200b\u81ea\u52a8\u200b\u6302\u8f7d\u200b\u53c8\u200b\u51fa\u200b\u95ee\u9898\u200b\u4e86\u200b\uff0c\u200b\u89c1\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b\u7684\u200b LVM \u200b\u4e00\u8282\u200b\uff09\u3002\u200b\u5bf9\u4e8e\u200b\u6ca1\u6709\u200b\u8fd0\u884c\u200b\u5bb9\u5668\u200b\u7684\u200b\u4e3b\u673a\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u628a\u200b\u4f9d\u8d56\u200b\u7684\u200b\u7f51\u5361\u200b\u4e00\u4e2a\u4e2a\u200b down \u200b\u6389\u200b\u518d\u200b up \u200b\u56de\u6765\u200b\uff1a
ifdown vmbr1 vxlan0 ens1f1\nifup ens1f1 vxlan0 vmbr1\n
\u200b\u63a5\u4e0b\u6765\u200b\u7531\u4e8e\u200b\u73b0\u6709\u200b\u5bb9\u5668\u200b\u5df2\u7ecf\u200b\u8bbe\u7f6e\u200b\u4e86\u200b MTU = 1450\uff0c\u200b\u8981\u200b\u628a\u200b\u8bbe\u7f6e\u200b\u5220\u6389\u200b\uff0c\u200b\u505a\u6cd5\u200b\u7b80\u5355\u200b\u7c97\u66b4\u200b\uff1a
cd /etc/pve/nodes\ngrep -lwirF mtu=1450 | xargs sed -Ei 's/,mtu=1450//'\n
Proxmox \u200b\u4f1a\u200b\u81ea\u52a8\u200b\u5c06\u200b\u4fee\u6539\u200b\u8fc7\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u540c\u6b65\u200b\u81f3\u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u7684\u200b\u5176\u4ed6\u200b\u4e3b\u673a\u200b\uff08\u200b\u6ce8\u610f\u200b\u9700\u8981\u200b\u5168\u90e8\u200b\u4fdd\u6301\u200b\u5728\u7ebf\u200b\uff0c\u200b\u5426\u5219\u200b\u540c\u6b65\u200b\u4f1a\u200b\u6302\u200b\uff0c\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b\u6709\u200b\u5199\u200b\uff09\u3002
\u200b\u6700\u540e\u200b\u628a\u200b Django \u200b\u524d\u7aef\u200b\u7684\u200b config.py
\u200b\u6539\u200b\u4e00\u4e0b\u200b\uff0c\u200b\u8ba9\u200b\u65b0\u521b\u5efa\u200b\u7684\u200b\u5bb9\u5668\u200b\u4f7f\u7528\u200b\u9ed8\u8ba4\u200b\u7684\u200b MTU \u200b\u5c31\u884c\u4e86\u200b\u3002
\u200b\u4e00\u200b\u5f00\u59cb\u200b\u7684\u200b\u8868\u73b0\u200b\u662f\u200b pv8 \u200b\u7684\u200b\u4e24\u4e2a\u200b\u5149\u7ea4\u200b\u5185\u200b\u7f51\u200b IP \u200b\u90fd\u200b\u80fd\u200b\u8fde\u901a\u200b\uff0c\u200b\u4f46\u662f\u200b VXLAN \u200b\u6b7b\u6d3b\u200b\u8fde\u4e0d\u4e0a\u200b\u3002
\u200b\u9996\u5148\u200b\u8fd9\u91cc\u200b\u6709\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u5751\u200b\uff0c\u200b\u89e3\u51b3\u200b\u4e4b\u540e\u200b\u91cd\u65b0\u200b\u68c0\u67e5\u200b\uff0c\u200b\u786e\u5b9a\u200b\u5b9e\u9645\u200b\u95ee\u9898\u200b\u662f\u200b ens1f1 \u200b\u754c\u9762\u200b\u4e0d\u200b\u8fde\u901a\u200b\uff0c\u200b\u8054\u7cfb\u200b\u5362\u5efa\u826f\u200b\u8001\u5e08\u200b\u524d\u5f80\u200b\u673a\u623f\u200b\u5b9e\u5730\u200b\u6392\u67e5\u200b\uff0c\u200b\u6700\u7ec8\u200b\u786e\u8ba4\u200b\u6545\u969c\u200b\u90e8\u4ef6\u200b\u662f\u200b\u8be5\u200b\u7f51\u8def\u200b\u5728\u200b\u4ea4\u6362\u673a\u200b\u4e00\u7aef\u200b\u7684\u200b\u5149\u200b\u6a21\u5757\u200b\u6709\u200b\u95ee\u9898\u200b\uff0c\u200b\u66ff\u6362\u6210\u200b\u65c1\u8fb9\u200b\u4e00\u4e2a\u200b\u95f2\u7f6e\u200b\u7684\u200b\u5149\u200b\u6a21\u5757\u200b\u540e\u200b\u7f51\u7edc\u200b\u8fde\u901a\u6027\u200b\u6062\u590d\u200b\u3002
\u200b\u63a5\u4e0b\u6765\u200b\u7684\u200b\u5f85\u529e\u200b\u4e8b\u9879\u200b\u5c31\u662f\u200b\u8bf7\u4eba\u200b\u68c0\u67e5\u200b\u8fd9\u4e2a\u200b\u5149\u200b\u6a21\u5757\u200b\u6709\u200b\u4ec0\u4e48\u200b\u95ee\u9898\u200b\u4e86\u200b\uff08\u200b\u8fd9\u4e2a\u200b\u5c31\u200b\u4ea4\u7ed9\u200b\u8001\u5e08\u200b\u5904\u7406\u200b\u4e86\u200b\uff09\u3002
"},{"location":"records/2020-08-01/#\u5f85\u529e\u4e8b\u9879","title":"\u5f85\u529e\u200b\u4e8b\u9879","text":"\u200b\u89c1\u200b\u4e0a\u200b
"},{"location":"records/2021-03-18/","title":"2021 \u200b\u5e74\u200b 3 \u200b\u6708\u200b 18 \u200b\u65e5\u200b\u8ba8\u8bba\u200b\u603b\u7ed3","text":""},{"location":"records/2021-03-18/#\u5de5\u4f5c\u6c47\u62a5","title":"\u5de5\u4f5c\u6c47\u62a5","text":""},{"location":"records/2021-03-18/#page-2---\u5df2\u5b8c\u6210\u7684\u5185\u5bb9","title":"Page 2 - \u200b\u5df2\u200b\u5b8c\u6210\u200b\u7684\u200b\u5185\u5bb9","text":"https://vlab.ustc.edu.cn/grafana/d/2
"},{"location":"records/2021-03-18/#page-4---ssh-\u7edf\u4e00\u767b\u5f55","title":"Page 4 - SSH \u200b\u7edf\u4e00\u200b\u767b\u5f55","text":"https://vlab.ibugone.com/
"},{"location":"records/2021-03-18/#page-8---\u540e\u7eed\u5de5\u4f5c\u8ba1\u5212","title":"Page 8 - \u200b\u540e\u7eed\u200b\u5de5\u4f5c\u200b\u8ba1\u5212","text":"!important
\uff09status-bydesign
\uff09<iframe>
?\uff09!?!?
\uff09\u200b\u540c\u65f6\u200b\u6539\u200b\u6570\u636e\u5e93\u200b\u548c\u200b Django \u200b\u4ee3\u7801\u200b\uff0c\u200b\u6e05\u7406\u200b\u6389\u200b VMID_INCR
\u200b\u8fd9\u4e2a\u200b\u5386\u53f2\u200b\u5305\u88b1\u200b\u3002
-- Drop foreign key\n-- https://stackoverflow.com/posts/comments/32882353\nALTER TABLE vm_sshkey DROP CONSTRAINT `vm_sshkey_ct_id_8bfb3d03_fk_vm_pvect_id`;\n\n-- Remove auto increment and PK\n-- https://stackoverflow.com/a/6741189/5958455\nALTER TABLE vm_pvect MODIFY COLUMN id INT(11);\nALTER TABLE vm_pvect DROP PRIMARY KEY;\n\n-- Work data\nUPDATE vm_pvect SET id = id + 1000;\nUPDATE vm_sshkey SET ct_id = ct_id + 1000;\n\n-- Add back AI and PK\nALTER TABLE vm_pvect ADD PRIMARY KEY (`id`);\nALTER TABLE vm_pvect MODIFY COLUMN id INT(11) AUTO_INCREMENT;\n\n-- Add back FK\nALTER TABLE vm_sshkey ADD CONSTRAINT `vm_sshkey_ct_id_8bfb3d03_fk_vm_pvect_id` FOREIGN KEY (`ct_id`) REFERENCES `vm_pvect` (`id`);\n
\u200b\u4ee3\u7801\u200b\u90e8\u5206\u200b\u89c1\u200b Pull Request #1
"},{"location":"records/2021-06-13/#\u5176\u4ed6","title":"\u5176\u4ed6","text":"\u200b\u5c06\u200b /mnt/container-template
\u200b\u91cd\u547d\u540d\u200b\u4e3a\u4e86\u200b\u66f4\u200b\u7b80\u6d01\u200b\u7684\u200b /mnt/vz
\u3002\u200b\u7531\u4e8e\u200b PVE \u200b\u7684\u200b\u4e00\u4e9b\u200b\u8bbe\u5b9a\u200b\uff0c\u200b\u64cd\u4f5c\u200b\u987a\u5e8f\u200b\u5982\u4e0b\u200b\uff1a
mkdir /mnt/vz
\uff0c\u200b\u66f4\u65b0\u200b /etc/fstab
\u200b\u7136\u540e\u200b\u6302\u8f7d\u200b\u65b0\u200b\u8def\u5f84\u200b/etc/pve/storage.cfg
\u200b\u4f7f\u7528\u200b\u65b0\u200b\u8def\u5f84\u200bumount /mnt/container-template
\u200b\u5378\u8f7d\u200b\u65e7\u200b\u8def\u5f84\u200b\u5e76\u200b rmdir -p
\u200b\u5728\u200b pv1-pv8 \u200b\u4ee5\u53ca\u200b web \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u8fdb\u884c\u200b\u4e86\u200b\u7cfb\u7edf\u200b\u66f4\u65b0\u200b\uff08\u200b\u4e0a\u6e38\u200b\u5747\u200b\u66f4\u6362\u200b\u4e3a\u4e86\u200b\u79d1\u5927\u200b\u6e90\u200b\uff09\uff0c\u200b\u5e76\u200b\u5728\u200b pv1, pv7, pv8 \u200b\u4e0a\u200b\u5b89\u88c5\u200b\u4e86\u200b apt-listbugs
\uff08\u200b\u5b89\u88c5\u200b\u65f6\u200b\u4f7f\u7528\u200b --no-install-recommends
\u200b\u51cf\u5c11\u200b\u9644\u5e26\u200b\u7684\u200b\u5783\u573e\u200b\uff09
lvm.conf
\u200b\u91cc\u200b\u7684\u200b\u6392\u9664\u200b\u89c4\u5219\u200b global_filters
\uff0c\u200b\u4f7f\u7528\u200b /dev/disk/by-id/usb.*
\u200b\u6765\u200b\u6392\u9664\u200b\u90a3\u4e2a\u200b\u6c38\u8fdc\u200b No medium found \u200b\u7684\u200b\u8bbe\u5907\u200b\uff0c\u200b\u4ee5\u200b\u907f\u514d\u200b\u6f5c\u5728\u200b\u7684\u200b\u91cd\u542f\u200b\u540e\u200b sda/sdb \u200b\u4ea4\u6362\u200b\u5bfc\u81f4\u200b\u7684\u200b\u95ee\u9898\u200b\uff08\u200b\u89c1\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b\uff09\u200b\u91cd\u542f\u200b\u524d\u5148\u88c5\u200b mdadm
\u3002
\u200b\u53ef\u4ee5\u200b\u5728\u200b IPMI KVM \u200b\u4e2d\u200b\u64cd\u4f5c\u200b\u3002\u200b\u91cd\u542f\u200b\u540e\u200b\u51fa\u73b0\u200b\u63d0\u793a\u200b\u754c\u9762\u200b\u65f6\u200b\u6309\u200b F9 \u200b\u8fdb\u5165\u200b HPE UEFI \u200b\u8bbe\u7f6e\u200b\u9875\u9762\u200b\u3002\u200b\u8bbe\u7f6e\u200b\u9875\u9762\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u9f20\u6807\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u9009\u62e9\u200b RAID 1\uff0c\u200b\u5728\u200b\u63a7\u5236\u5668\u200b\u8bbe\u7f6e\u200b\u7684\u200b manage arrays \u200b\u4e2d\u200b\u627e\u5230\u200b delete array \u200b\u89e3\u9664\u200b\u9635\u5217\u200b\u3002
\u200b\u89e3\u9664\u200b\u540e\u200b\uff0c\u200b\u9700\u8981\u200b\u6302\u8f7d\u200b iso\uff08HPE IPMI \u200b\u4e0d\u200b\u652f\u6301\u200b DNS\uff0c\u200b\u6240\u4ee5\u200b\u76ee\u524d\u200b\u4f7f\u7528\u200b iBug \u200b\u7684\u200b\u5185\u7f51\u200b\u5c0f\u200b\u673a\u5668\u200b\uff0c\u200b\u5730\u5740\u200b\u4e3a\u200b https://10.38.79.2/iso/\uff0c\u200b\u5728\u200b\u5176\u4e2d\u200b\u9009\u62e9\u200b\u9002\u7528\u200b\u7684\u200b Debian \u200b\u7248\u672c\u200b\u6302\u8f7d\u200b\uff09\u3002
"},{"location":"records/2021-08-21/#\u7f29\u5c0f\u4e3b\u673a\u7684-rootfs-\u5e76\u6dfb\u52a0-lvm-mirror","title":"\u7f29\u5c0f\u200b\u4e3b\u673a\u200b\u7684\u200b rootfs \u200b\u5e76\u200b\u6dfb\u52a0\u200b LVM mirror","text":"\u200b\u53c2\u8003\u200b iBug \u200b\u7684\u200b\u535a\u5ba2\u200b\u3002
\u200b\u4e3b\u8981\u200b\u51e0\u6b65\u200b\uff08\u200b\u5047\u8bbe\u200b\u62c6\u5b8c\u200b\u4e4b\u540e\u200b\u662f\u200b /dev/sda
\u200b\u548c\u200b /dev/sdb
\uff09\uff1a
/dev/sda
\u200b\u5206\u533a\u8868\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5199\u5165\u200b\u6b63\u786e\u200b\u7684\u200b\u5206\u533a\u8868\u200b\u5230\u200b\u78c1\u76d8\u200b\u4e2d\u200b\u3002vgscan
\u200b\u52a0\u8f7d\u200b LVM \u200b\u4fe1\u606f\u200b\u3002\u200b\u5047\u8bbe\u200b rootfs
\u200b\u662f\u200b /dev/pve/root
e2fsck -f /dev/pve/root
\u200b\u68c0\u67e5\u200b\u4e00\u81f4\u6027\u200b\uff0c\u200b\u8fd0\u884c\u200b resize2fs -M -p /dev/pve/root
\u200b\u5c06\u200b rootfs \u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u7f29\u5c0f\u200b\u5230\u200b\u6700\u5c0f\u200b\uff0c\u200b\u786e\u4fdd\u200b\u7f29\u5c0f\u200b\u5f97\u5230\u200b\u7684\u200b\u5927\u5c0f\u200b\u5c0f\u4e8e\u200b 16GB\uff0c\u200b\u5426\u5219\u200b\u63a5\u4e0b\u6765\u200b\u7684\u200b\u64cd\u4f5c\u200b\u4f1a\u200b\u7834\u574f\u200b rootfs!\u3002lvresize -L 16G pve/root
\u200b\u5c06\u200b LVM rootfs \u200b\u903b\u8f91\u200b\u5206\u533a\u200b\u7f29\u5c0f\u200b\u5230\u200b 16GB\uff0c\u200b\u7136\u540e\u200b\u8fd0\u884c\u200b resize2fs -p /dev/pve/root
\u200b\u5c06\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u6269\u5927\u200b\u5230\u200b 16GB\u3002/dev/sdb
\u200b\u5206\u533a\u8868\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5199\u5165\u200b\u6b63\u786e\u200b\u7684\u200b\u5206\u533a\u8868\u200b\u5230\u200b\u78c1\u76d8\u200b\u4e2d\u200b\u3002fdisk -l /dev/sdb
\u200b\u786e\u8ba4\u200b\u539f\u6765\u200b LVM \u200b\u5728\u200b /dev/sdb
\u200b\u4e0a\u200b\u7684\u200b\u5206\u533a\u200b\u540d\u200b\uff0c\u200b\u5047\u8bbe\u200b\u662f\u200b /dev/sdb2
\uff0c\u200b\u8fd0\u884c\u200b dd if=/dev/zero of=/dev/sdb2 bs=1M count=1
\u200b\u64e6\u9664\u200b LVM metadata\uff0c\u200b\u7136\u540e\u200b pvcreate /dev/sdb2
, vgextend pve /dev/sdb2
\u200b\u52a0\u5165\u200b\u5230\u200b\u73b0\u5728\u200b\u7684\u200b LVM \u200b\u5377\u200b\u7ec4\u4e2d\u200b\u3002lvconvert -m1 pve/root
\uff0c\u200b\u8bbe\u7f6e\u200b rootfs \u200b\u4e3a\u200b RAID 1.chroot
\u200b\u8fdb\u5165\u200b rootfs\u3002\u200b\u5b89\u88c5\u200b grub-efi
\u200b\u540e\u200b\u8fd0\u884c\u200b grub-install
\u3002\u200b\u8bf7\u200b\u786e\u4fdd\u200b LiveCD Debian \u200b\u548c\u200b\u7cfb\u7edf\u200b Debian \u200b\u7248\u672c\u200b\u5c3d\u53ef\u80fd\u200b\u4e00\u81f4\u200b\uff0c\u200b\u5426\u5219\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u65e0\u6cd5\u200b\u5f15\u5bfc\u200b\u3002\uff08\u200b\u4f8b\u5982\u200b\uff0c\u200b\u4f7f\u7528\u200b Debian 11 ISO \u200b\u8dd1\u200b Debian 10 grub-install \u200b\u4f1a\u200b\u51fa\u73b0\u200b\u5173\u4e8e\u200b efi variables \u200b\u7684\u200b\u9519\u8bef\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u5b89\u88c5\u200b\u5931\u8d25\u200b\uff09\u3002\u200b\u5982\u679c\u200b\u8fd8\u662f\u200b\u65e0\u6cd5\u200b\u5f15\u5bfc\u200b\uff0c/dev/sda1
\u200b\u548c\u200b /dev/sdb1
\u200b\u90fd\u200b\u5206\u522b\u200b\u6302\u5230\u200b /boot/efi
\uff0c\u200b\u7136\u540e\u200b\u8dd1\u200b grub-install
\u200b\u8bd5\u8bd5\u200b\u3002PVE \u200b\u505a\u200b\u5f97\u200b\u5f88\u200b\u597d\u200b\uff0c\u200b\u5347\u7ea7\u200b\u8fc7\u7a0b\u200b\u8ddf\u200b Debian \u200b\u4f53\u9a8c\u200b\u5b8c\u5168\u4e00\u81f4\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b Debian 10 \u200b\u5347\u7ea7\u200b\u5230\u200b 11 \u200b\u7684\u200b\u6587\u6863\u200b\u6a21\u4eff\u200b\u64cd\u4f5c\u200b\u3002
\u200b\u66f4\u65b0\u8fc7\u7a0b\u200b\u4e2d\u200b\u9700\u8981\u200b\u6ce8\u610f\u200b\u4e00\u4e9b\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff1a
/etc/issue
\uff1a\u200b\u6b64\u200b\u6587\u4ef6\u200b\u6bcf\u6b21\u200b\u5f00\u673a\u200b\u65f6\u200b Proxmox \u200b\u4f1a\u200b\u8986\u76d6\u200b\uff0c\u200b\u6240\u4ee5\u200b\u9009\u200b Y \u200b\u548c\u200b N \u200b\u6ca1\u6709\u200b\u533a\u522b\u200b/etc/ssh/sshd_config
\uff1aDebian 11 \u200b\u7684\u200b sshd_config
\u200b\u6587\u4ef6\u200b\u5305\u542b\u200b\u4e86\u200b\u4e00\u6761\u200b Include /etc/ssh/sshd_config.d/*.conf
\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u7684\u200b\u81ea\u5b9a\u4e49\u200b\u8bbe\u7f6e\u200b\u4e5f\u200b\u79fb\u5230\u200b\u4e86\u200b sshd_config.d/vlab.conf
\uff0c\u200b\u4e3a\u4e86\u200b\u4ee5\u540e\u200b\u66f4\u65b0\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u8986\u76d6\u200b\uff08\u200b\u6ce8\u610f\u200b reload ssh \u200b\u524d\u200b\u628a\u200b vlab.conf
\u200b\u51c6\u5907\u200b\u597d\u200b\uff09
vlab.conf
\u200b\u6587\u4ef6\u200b HostKey /etc/ssh/ssh_host_rsa_key\nHostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub\nTrustedUserCAKeys /etc/ssh/ssh_user_ca\n\nPermitRootLogin prohibit-password\nPasswordAuthentication no\nAuthorizedKeysFile /dev/null\n
/etc/lvm/lvm.conf
\uff1a\u200b\u540c\u6837\u200b\u4e3a\u4e86\u200b\u4ee5\u540e\u200b\u66f4\u65b0\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u9009\u62e9\u200b\u8986\u76d6\u200b\u3002\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u6dfb\u52a0\u200b\u7684\u200b\u3001\u200b\u6709\u7528\u200b\u7684\u200b\u8bbe\u7f6e\u200b\u662f\u200b\u8fd9\u200b\u4e24\u6761\u200b\uff0c\u200b\u8986\u76d6\u200b\u540e\u200b\u52a0\u56de\u53bb\u200b\u5373\u53ef\u200b\uff08\u200b\u6ce8\u610f\u200b\u6dfb\u52a0\u200b\u5230\u200b\u5408\u9002\u200b\u7684\u200b\u4f4d\u7f6e\u200b\uff0clvm.conf
\u200b\u662f\u200b\u5206\u200b section \u200b\u7684\u200b\uff09
global_filter = [ \"r|/dev/disk/by-id/usb.*|\", \"r|/dev/zd.*|\", \"r|/dev/mapper/pve-.*|\" \"r|/dev/mapper/.*-(vm|base)--[0-9]+--disk--[0-9]+|\"]\n\nauto_activation_volume_list = [ \"pve\", \"data\" ]\n
\u200b\u4fee\u6539\u200b\u5b8c\u200b lvm.conf
\u200b\u540e\u200b\u8bb0\u5f97\u200b\u8fd0\u884c\u200b update-initramfs
\u3002
\u200b\u5176\u4ed6\u200b\u53ef\u4ee5\u200b\u8986\u76d6\u200b\uff0c\u200b\u80fd\u200b\u62c6\u5206\u200b\u51fa\u6765\u200b\u3001\u200b\u4e0d\u200b\u4fee\u6539\u200b\u5305\u200b\u7ba1\u7406\u5668\u200b\u63d0\u4f9b\u200b\u7684\u200b\u6587\u4ef6\u200b\u7684\u200b\u5c31\u200b\u5c3d\u91cf\u200b\u62c6\u51fa\u6765\u200b\uff0c\u200b\u4f8b\u5982\u200b\u628a\u200b sysctl \u200b\u8bbe\u7f6e\u200b\u653e\u8fdb\u200b /etc/sysctl.d
\u200b\u91cc\u200b\u800c\u200b\u4e0d\u662f\u200b\u76f4\u63a5\u200b\u4fee\u6539\u200b sysctl.conf
\uff0c\u200b\u8bf8\u5982\u6b64\u7c7b\u200b\u3002
\u200b\u66f4\u6362\u200b APT \u200b\u6e90\u200b\u6bd4\u8f83\u7b80\u5355\u200b\uff0c\u200b\u6302\u8f7d\u200b\u78c1\u76d8\u200b\u7136\u540e\u200b\u8dd1\u200b\u4e00\u4e0b\u200b sed
\u200b\u5373\u53ef\u200b\u3002
\u200b\u540c\u65f6\u200b\u7531\u4e8e\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b /opt/vlab \u200b\u6765\u200b\u63d0\u4f9b\u200b\u5404\u79cd\u200b\u5bb9\u91cf\u200b\u8f83\u5927\u200b\u7684\u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\uff0c\u200b\u65b0\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u78c1\u76d8\u200b\u4f7f\u7528\u91cf\u200b\u53ea\u6709\u200b\u4e0d\u5230\u200b 3.5 GB\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u518d\u6b21\u200b\u5c06\u200b\u65b0\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u78c1\u76d8\u200b\u5bb9\u91cf\u200b\u4e0b\u8c03\u200b\u5230\u200b 16 GB\u3002\u200b\u7531\u4e8e\u200b LVM \u200b\u7684\u200b\u7a7a\u95f4\u200b\u6bd4\u8f83\u200b\u7d27\u5f20\u200b\u4e86\u200b\uff08\u200b\u4f7f\u7528\u91cf\u200b > 70%\uff09\uff0c\u200b\u6211\u4eec\u200b\u8fd8\u200b retroactively \u200b\u5c06\u200b\u73b0\u6709\u200b\u5bb9\u5668\u200b\u7684\u200b\u78c1\u76d8\u200b\u7edf\u4e00\u200b\u7f29\u51cf\u200b\u3002\u200b\u7f29\u51cf\u200b\u65b9\u6848\u200b\u662f\u200b\u5b9e\u9645\u200b\u5360\u200b\u7528\u91cf\u200b\u5c0f\u4e8e\u200b 12 GB\uff0812288 MB\uff09\u200b\u7684\u200b\u7f29\u51cf\u200b\u4e3a\u200b 16 GB\uff0c\u200b\u5b9e\u9645\u200b\u5360\u200b\u7528\u91cf\u200b\u5c0f\u4e8e\u200b 24 GB \u200b\u7684\u200b\u7f29\u51cf\u200b\u4e3a\u200b 32 GB\uff0c\u200b\u5927\u4e8e\u200b 24 GB \u200b\u7684\u200b\u4e0d\u52a8\u200b\u3002
\u200b\u7f29\u51cf\u200b\u78c1\u76d8\u7a7a\u95f4\u200b\u64cd\u4f5c\u200b\u6bd4\u8f83\u590d\u6742\u200b\uff0c\u200b\u5927\u81f4\u200b\u8fc7\u7a0b\u200b\u4e0e\u200b\u5904\u7406\u200b\u4e3b\u673a\u200b\u7684\u200b rootfs \u200b\u4e00\u6837\u200b\uff0c\u200b\u5148\u200b resize2fs \u200b\u5c0f\u200b\u4e00\u70b9\u200b\uff0c\u200b\u7136\u540e\u200b lvresize \u200b\u6539\u200b\u5206\u533a\u200b\uff0c\u200b\u518d\u200b resize2fs \u200b\u6269\u5145\u200b\u56de\u6765\u200b\u3002\u200b\u4f46\u662f\u200b\u51fa\u4e8e\u200b\u672a\u77e5\u200b\u539f\u56e0\u200b e2fsck \u200b\u4f1a\u200b\u62a5\u200b\u4e0b\u9762\u200b\u8fd9\u4e2a\u200b\u9519\u8bef\u200b\uff0c\u200b\u56e0\u6b64\u200b\u64cd\u4f5c\u524d\u200b\u9700\u8981\u200b\u989d\u5916\u200b\u52a0\u200b\u4e00\u4e2a\u200b tune2fs\uff0c\u200b\u5177\u4f53\u200b\u8fc7\u7a0b\u200b\u89c1\u200b\u4e0b\u200b\u9644\u200b\u7684\u200b\u6279\u5904\u7406\u200b\u811a\u672c\u200b\u3002
e2fsck: MMP: e2fsck being run while checking MMP block
\u200b\u4f7f\u7528\u200b\u7684\u200bchange-repo.sh
\u200b\u811a\u672c\u200b #!/bin/bash\n\n[ -n \"$BASH_VERSION\" ] || exit 1\n\nwork() {\n local id=\"$1\"\n local param=\"$2\"\n local lv=user-data/vm-\"$id\"-disk-0\n local conf=\"$(find /etc/pve/nodes -name \"$id.conf\")\"\n local mnt=/tmp/mnt-\"$id\"\n mkdir -p \"$mnt\"\n local list=\"$mnt\"/etc/apt/sources.list\n echo \"******************** WORKING ON VM ID $id ($param remaining) ********************\"\n lvchange -y -ay \"$lv\"\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n #e2fsck -y -f /dev/\"$lv\" || true\n mount /dev/\"$lv\" \"$mnt\"\n if [ -f \"$list\" ]; then\n sed -i 's/mirrors\\.tuna\\.tsinghua\\.edu\\.cn/mirrors.ustc.edu.cn/g' \"$list\" &&\n echo \"Run sed on CT $id\"\n else\n echo \"CT $id does not contain /etc/apt/sources.list\"\n fi\n local size=\"$(df -BM --output=size \"$mnt\" | awk 'NR==2{print $1+0}')\"\n local used=\"$(df -BM --output=used \"$mnt\" | awk 'NR==2{print $1+0}')\"\n echo \"Size of VM $id: ${used}M / ${size}M\"\n umount \"$mnt\"\n if [ $used -gt 0 -a $used -lt 12288 ]; then\n echo \"Shrinking VM $id to 16G\"\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n e2fsck -y -f /dev/\"$lv\"\n resize2fs -p /dev/\"$lv\" 15G\n lvresize -y -f -L 16G \"$lv\" || true\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n resize2fs -p /dev/\"$lv\"\n test -n \"$conf\" && sed -i '/^rootfs:/s/size=[0-9]\\+G/size=16G/' \"$conf\"\n elif [ $used -ge 12288 -a $used -lt 24576 -a $size -gt 32768 ]; then\n echo \"Shrinking VM $id to 32G\"\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n e2fsck -y -f /dev/\"$lv\"\n resize2fs -p /dev/\"$lv\" 31G\n lvresize -y -f -L 32G \"$lv\" || true\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n resize2fs -p /dev/\"$lv\"\n test -n \"$conf\" && sed -i '/^rootfs:/s/size=[0-9]\\+G/size=32G/' \"$conf\"\n fi\n lvchange -y -an \"$lv\"\n}\n\ntotal=$(<${1:-disks.txt} wc -l)\nfor id in $(<\"${1:-disks.txt}\"); do\n work \"$id\" \"$((total-=1))\"\ndone\n
\u200b\u5176\u4e2d\u200b\u751f\u6210\u200b disks.txt \u200b\u7684\u200b\u4ee3\u7801\u200b\u5229\u7528\u200b\u4e86\u200b /etc/pve/.vmlist
\u200b\u8fd9\u4e2a\u200b\u53ea\u8bfb\u200b\u7684\u200b JSON \u200b\u63a5\u53e3\u200b\uff1a
jq -r '.ids | with_entries(select((.key | tonumber >= 1000) and (.value.type == \"lxc\"))) | keys | map(tonumber) | sort | .[]' /etc/pve/.vmlist > disks.txt\n
"},{"location":"records/2021-08-21/#\u5176\u4ed6","title":"\u5176\u4ed6","text":"\u200b\u672c\u200b\u5468\u672b\u200b\u7684\u200b\u5de5\u4f5c\u200b\u662f\u200b\u89e3\u51b3\u200b vzdump
\u200b\u5907\u4efd\u200b\u7684\u200b\u76f8\u5173\u200b\u95ee\u9898\u200b\u3002\u200b\u5728\u200b 8 \u200b\u6708\u200b 21 \u200b\u65e5\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u53d1\u73b0\u200b\u6bcf\u5468\u200b\u5907\u4efd\u200b\u5f00\u59cb\u200b\u51fa\u73b0\u200b\u95ee\u9898\u200b\u3002
\u200b\u51fa\u73b0\u200b\u7684\u200b\u9519\u8bef\u200b\u7c7b\u4f3c\u200b\u4e8e\u200b command 'rsync ...' failed: exit code 11
\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1avzdump
\u200b\u4f1a\u5148\u200b rsync \u200b\u5bb9\u5668\u200b\u7684\u200b rootfs \u200b\u5230\u200b /var/tmp
\uff0c\u200b\u800c\u200b\u5728\u200b\u7f29\u51cf\u200b\u4e3b\u673a\u200b rootfs \u200b\u7684\u200b\u5927\u5c0f\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5269\u4f59\u200b\u7a7a\u95f4\u200b\u4e0d\u8db3\u4ee5\u200b\u627f\u8f7d\u200b\u5bb9\u5668\u200b\u7684\u200b rootfs\u3002\u200b\u6240\u4ee5\u200b\u65b0\u5f00\u200b\u4e00\u4e2a\u200b LVM \u200b\u5377\u200b\u6302\u8f7d\u200b\u5230\u200b /var/tmp
\u3002
tmpfs \u200b\u65e0\u6cd5\u200b\u89e3\u51b3\u95ee\u9898\u200b
\u200b\u5bb9\u5668\u200b\u91cc\u200b Docker overlay \u200b\u9700\u8981\u200b userxattr\uff0ctmpfs \u200b\u4e0d\u200b\u652f\u6301\u200b\u8fd9\u4e2a\u200b\u7279\u6027\u200b\uff0c\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u5907\u4efd\u200b\u5931\u8d25\u200b\u3002
"},{"location":"records/2021-08-28/#kvm-\u865a\u62df\u673a\u5907\u4efd\u9519\u8bef","title":"KVM \u200b\u865a\u62df\u673a\u200b\u5907\u4efd\u200b\u9519\u8bef","text":"\u200b\u51fa\u73b0\u200b\u7684\u200b\u9519\u8bef\u200b\u7c7b\u4f3c\u200b\u4e8e\u200b job failed with err -5 - Input/output error
\u3002\u200b\u9605\u8bfb\u200b\u4e3b\u673a\u200b dmesg\uff0c\u200b\u4f1a\u200b\u53d1\u73b0\u200b\u5927\u91cf\u200b connection1:0: detected conn error (1020)
\uff0c\u200b\u4ee5\u53ca\u200b\u6807\u7ea2\u200b\u7684\u200b ext4/\u200b\u5757\u200b\u8bbe\u5907\u200b I/O error \u200b\u95ee\u9898\u200b\u3002\u200b\u6d4b\u8bd5\u200b\u53d1\u73b0\u200b\u5907\u4efd\u200b\u4f1a\u200b\u5bfc\u81f4\u200b iSCSI \u200b\u95f4\u63a5\u6027\u200b\u65ad\u200b\u8fde\u200b\uff0c\u200b\u8bf1\u53d1\u200b I/O error\uff0cI/O error \u200b\u6709\u5927\u200b\u6982\u7387\u200b\u5bfc\u81f4\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u5bb9\u5668\u200b/KVM \u200b\u865a\u62df\u673a\u200b\u78c1\u76d8\u200b\u8fdb\u5165\u200b readonly \u200b\u72b6\u6001\u200b\u3002
\u200b\u5468\u672b\u200b\u4e24\u5929\u200b\u57fa\u672c\u4e0a\u200b\u90fd\u200b\u5728\u200b\u6392\u67e5\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u76ee\u524d\u200b\uff082021/8/30 \u200b\u51cc\u6668\u200b\uff09\uff0c\u200b\u6211\u4eec\u200b\u5f97\u5230\u200b\u7684\u200b\u7ed3\u8bba\u200b\u5982\u4e0b\u200b\uff1a
open-iscsi
\u200b\u65e0\u6548\u200b\u3002pve-qemu-kvm
\u200b\u4ece\u200b 6.0.0-3
\u200b\u964d\u7ea7\u200b\u5230\u200b 5.2.0-6
\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5907\u4efd\u200b\u4efb\u52a1\u200b\u6267\u884c\u200b\u65f6\u200b\u4e0d\u518d\u200b\u51fa\u73b0\u200b I/O error\uff0c\u200b\u4f46\u662f\u200b\u4ecd\u7136\u200b\u6709\u200b\u53ef\u80fd\u200b\u51fa\u73b0\u200b conn error
\u3002aio=io_uring
, aio=native
\u200b\u6216\u200b aio=threads
\u200b\u5747\u200b\u65e0\u6548\u200b\u3002vzdump
\u200b\u7684\u200b\u5e26\u5bbd\u200b\u6709\u200b\u53ef\u80fd\u200b\u80fd\u200b\u51cf\u5c11\u200b conn error
\u200b\u51fa\u73b0\u200b\u7684\u200b\u6b21\u6570\u200b\uff0c\u200b\u4f46\u662f\u200b\u5728\u200b pv1 \u200b\u548c\u200b pv8 \u200b\u4e0a\u200b\u6d4b\u8bd5\u200b\u7684\u200b\u7ed3\u679c\u200b\u4e0d\u592a\u200b\u4e00\u6837\u200b\u3002\u200b\u76ee\u524d\u200b\u7684\u200b\u4e34\u65f6\u200b\u89e3\u51b3\u65b9\u6848\u200b\uff1a
pve-qemu-kvm
\u200b\u964d\u7ea7\u200b\u5230\u200b\u4e86\u200b 5.2.0-6
\u3002\u200b\u5176\u4ed6\u8f6f\u4ef6\u200b\uff08\u200b\u5305\u62ec\u200b\u5185\u6838\u200b\uff09\u200b\u7248\u672c\u200b\u4e0d\u53d8\u200b\u3002\u200b\u8d77\u56e0\u200b\uff1a\u200b\u901a\u8fc7\u200b PVE \u200b\u7684\u200b Web \u200b\u754c\u9762\u200b\u67e5\u770b\u200b\u96c6\u7fa4\u200b\u72b6\u6001\u200b\uff0c\u200b\u53d1\u73b0\u200b pv4 \u200b\u7684\u200b\u72b6\u6001\u200b\u4e3a\u200b\u95ee\u53f7\u200b\uff0c\u200b\u7cfb\u7edf\u200b\u8fd0\u884c\u200b\u6307\u6807\u200b\uff08CPU\u3001\u200b\u5185\u5b58\u200b\u7b49\u200b\uff09\u200b\u6298\u7ebf\u56fe\u200b\u65e0\u6cd5\u200b\u663e\u793a\u200b\uff0c\u200b\u5404\u79cd\u200b\u865a\u62df\u673a\u200b\u64cd\u4f5c\u200b\u5927\u91cf\u200b\u8d85\u65f6\u200b\u3002
SSH \u200b\u767b\u5f55\u200b pv4 \u200b\u540e\u5148\u200b\u5c1d\u8bd5\u200b\u8fd0\u884c\u200b apt upgrade
\uff0c\u200b\u5728\u200b\u66f4\u65b0\u200b\u5185\u6838\u200b\u65f6\u5361\u200b\u5728\u200b /etc/kernel/postinst.d/zz-update-grub
\u200b\u4e00\u884c\u200b\uff0c\u200b\u8fdb\u4e00\u6b65\u200b\u6392\u67e5\u200b\u53d1\u73b0\u200b grub-probe
\u200b\u5361\u4f4f\u200b\uff0clvs user-data
\u200b\u51fa\u73b0\u200b giving up waiting for lock
\uff0c\u200b\u6700\u7ec8\u200b\u67e5\u200b\u5230\u200b iSCSI \u200b\u5b58\u50a8\u200b\u6389\u7ebf\u200b\uff08\u200b\u4f46\u662f\u200b\u8fc7\u200b\u4e86\u200b\u4e00\u4f1a\u200b\u5b83\u200b\u53c8\u200b\u81ea\u5df1\u200b\u6062\u590d\u200b\u4e86\u200b\uff09\u3002
\u200b\u8003\u8651\u200b\u5230\u200b\u4e0d\u5230\u200b\u4e00\u4e2a\u6708\u200b\u524d\u624d\u200b\u51fa\u73b0\u200b\u8fc7\u200b\u7531\u200b\u865a\u62df\u673a\u200b\u5907\u4efd\u200b\u89e6\u53d1\u200b\u7684\u200b iSCSI \u200b\u9519\u8bef\u200b\uff0c\u200b\u6211\u4eec\u200b\u7ee7\u7eed\u200b\u68c0\u67e5\u200b\u4e86\u200b iSCSI \u200b\u4e0e\u200b\u7f51\u7edc\u200b\u95ee\u9898\u200b\u3002
\u200b\u6211\u4eec\u200b\u5728\u200b user-data \u200b\u4e2d\u200b\u521b\u5efa\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u65b0\u5377\u200b\u7528\u4e8e\u200b\u6d4b\u8bd5\u4e3b\u673a\u200b\u5230\u200b iSCSI \u200b\u7684\u200b\u8fde\u63a5\u200b\u5e26\u5bbd\u200b\u4e0e\u200b\u7a33\u5b9a\u6027\u200b\uff0c\u200b\u53d1\u73b0\u200b\u4ece\u200b\u5b58\u50a8\u200b\u8bfb\u53d6\u200b\u65f6\u200b\u901f\u5ea6\u200b\u5f88\u200b\u6162\u4e14\u200b\u4e0d\u200b\u7a33\u5b9a\u200b\uff0c\u200b\u4f46\u662f\u200b\u5199\u5165\u200b\u5b58\u50a8\u200b\u7684\u200b\u8fde\u63a5\u200b\u5f88\u200b\u6b63\u5e38\u200b\u3002\u200b\u8c03\u8bd5\u200b\u540e\u200b\u53d1\u73b0\u200b\u5c06\u200b\u4e3b\u673a\u200b\u7684\u200b\u5149\u7ea4\u7f51\u200b\u53e3\u200b\u7684\u200b MTU \u200b\u4ece\u200b 1550 \u200b\u8c03\u6574\u200b\u81f3\u200b 9000 \u200b\u5e76\u200b\u91cd\u542f\u200b\u540e\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6062\u590d\u6b63\u5e38\u200b\u3002\u200b\u4e4b\u540e\u200b\u5c06\u200b\u7ec4\u7ec7\u200b\u65f6\u95f4\u200b\u4fee\u6539\u200b\u6240\u6709\u200b\u4e3b\u673a\u200b\u7684\u200b MTU \u200b\u8bbe\u7f6e\u200b\u3002
"},{"location":"records/2021-10-31/","title":"2021 \u200b\u5e74\u200b 10 \u200b\u6708\u200b 31 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u65e5\u200b\u53d1\u73b0\u200b pv4 \u200b\u4e0e\u200b pv5 \u200b\u5185\u5b58\u200b\u5360\u7528\u200b\u8f83\u200b\u591a\u200b\uff0c\u200b\u68c0\u67e5\u200b\u8fdb\u7a0b\u200b\u540e\u200b\u53d1\u73b0\u200b blueman \u200b\u76f8\u5173\u200b\u8fdb\u7a0b\u200b\u5360\u7528\u200b\u989d\u5916\u200b\u5185\u5b58\u200b\u8f83\u200b\u591a\u200b\uff0c\u200b\u53ef\u80fd\u200b\u662f\u200b\u5728\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u6253\u5305\u200b\u65f6\u672a\u200b\u5220\u9664\u200b\u3002\u200b\u6211\u4eec\u200b\u5728\u200b\u8fd9\u4e24\u53f0\u200b\u673a\u5668\u200b\u4e0a\u200b\u5bf9\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u5bb9\u5668\u200b\u6267\u884c\u200b\u4e86\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u547d\u4ee4\u200b\uff1a
pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- dpkg -P blueman\n
\u200b\u5220\u9664\u200b\u4e86\u200b blueman\uff0c\u200b\u5e76\u4e14\u200b\u6267\u884c\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b\u7ed3\u675f\u200b\u76f8\u5173\u200b\u8fdb\u7a0b\u200b\uff1a
killall blueman-tray\nkillall blueman-applet\n
\u200b\u4e4b\u540e\u200b\u9700\u8981\u200b\u627e\u200b\u65f6\u95f4\u200b\u68c0\u67e5\u200b\u76f8\u5173\u200b\u955c\u50cf\u200b\u3002
"},{"location":"records/2021-12-20/","title":"2021 \u200b\u5e74\u200b 12 \u200b\u6708\u200b 20 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u6628\u65e5\u200b\u4e0b\u5348\u200b\u6709\u200b\u540c\u5b66\u200b\u53cd\u9988\u200b\u81ea\u5df1\u200b\u7684\u200b Vivado \u200b\u9879\u76ee\u200b\u5728\u200b Vlab \u200b\u4e0a\u200b\u751f\u6210\u200b\u6bd4\u7279\u6d41\u200b\u65f6\u200b\u603b\u662f\u200b\u5931\u8d25\u200b\u3002\u200b\u6628\u65e5\u200b\u665a\u200b\u4e0e\u200b\u4eca\u65e5\u200b\u51cc\u6668\u200b\u5bf9\u200b\u8be5\u200b\u95ee\u9898\u200b\u8fdb\u884c\u200b\u4e86\u200b\u6392\u67e5\u200b\u3002
\u200b\u9996\u5148\u200b\u53d1\u73b0\u200b\u8be5\u200b\u95ee\u9898\u200b\u786e\u5b9e\u200b\u5b58\u5728\u200b\uff0cVivado \u200b\u8f93\u51fa\u200b\u7684\u200b\u5d29\u6e83\u200b\u65f6\u200b\u9519\u8bef\u200b\u6808\u200b\u5f00\u5934\u200b\u4e00\u90e8\u5206\u200b\u5982\u4e0b\u200b\uff1a
Stack:\n/lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f3cc17f8210]\n/lib/x86_64-linux-gnu/libc.so.6(malloc_usable_size+0x48) [0x7f3cc1851378]\n/lib/x86_64-linux-gnu/libudev.so.1(+0x10319) [0x7f3c77539319]\n/lib/x86_64-linux-gnu/libudev.so.1(+0x167c4) [0x7f3c7753f7c4]\n/lib/x86_64-linux-gnu/libudev.so.1(+0x1b255) [0x7f3c77544255]\n/lib/x86_64-linux-gnu/libudev.so.1(+0x1b4bb) [0x7f3c775444bb]\n/lib/x86_64-linux-gnu/libudev.so.1(udev_enumerate_scan_devices+0x277) [0x7f3c77546d67]\n
\u200b\u5c1d\u8bd5\u200b\u4f7f\u7528\u200b Ubuntu 18.04 Docker \u200b\u8fd0\u884c\u200b Vivado\uff0c\u200b\u751f\u6210\u200b\u6b63\u5e38\u200b\u3002\u200b\u5728\u200b\u68c0\u7d22\u200b\u76f8\u5173\u200b\u8d44\u6599\u200b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u8ba4\u4e3a\u200b\u8be5\u200b\u95ee\u9898\u200b\u53ef\u80fd\u200b\u662f\u200b Ubuntu 20.04 \u200b\u7684\u200b libudev.so \u200b\u4e0e\u200b Vivado 2019.1 \u200b\u4e0d\u200b\u517c\u5bb9\u200b\u5bfc\u81f4\u200b\u7684\u200b\uff0c\u200b\u6216\u200b\u4e3a\u200b libudev \u200b\u5728\u200b LXC \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u89e6\u53d1\u200b\u4e86\u200b\u67d0\u4e9b\u200b corner case\u3002\u200b\u5c06\u200b Ubuntu 18.04 \u200b\u7684\u200b libudev.so \u200b\u63d0\u53d6\u200b\u540e\u200b\uff0c\u200b\u52a0\u5165\u200b LD_PRELOAD
\u200b\u4e2d\u200b\uff0c\u200b\u518d\u6b21\u200b\u8fd0\u884c\u200b Vivado\uff0c\u200b\u751f\u6210\u200b\u6b63\u5e38\u200b\u3002
\u200b\u76f8\u5173\u200b\u4fee\u6539\u200b\u5df2\u7ecf\u200b\u90e8\u7f72\u200b\u5230\u200b Vlab Software \u200b\u4e2d\u200b\u3002
"},{"location":"records/2022-01-26/","title":"2022 \u200b\u5e74\u200b 1 \u200b\u6708\u200b 26 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u65e5\u200b\u8fdb\u884c\u200b\u4e86\u200b\u505c\u673a\u200b\u7ef4\u62a4\u200b\uff0c\u200b\u64cd\u4f5c\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
apt update
\u200b\u64cd\u4f5c\u200b\u8fc7\u200b\u6162\u200b\uff0c\u200b\u4e2d\u9014\u200b\u653e\u5f03\u200b\u4e86\u200b\u672c\u200b\u9879\u76ee\u200b\u3002\u200b\u64cd\u4f5c\u200b\u811a\u672c\u200b\u5982\u4e0b\u200b\uff1a
#!/bin/bash\n\n[ -n \"$BASH_VERSION\" ] || exit 1\n\ngen_sh() {\n cat << EOFX\necho 'ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAH3ZHisQY0iMpUNDQNaxcnRSqDbauE8ih6/MrEENJZa7FHKINOPi+bunK1wEXPqlKfu8INEBWCf95+t86z+jXVxmQE176xenS92wiLvR4MZyCBfD5DXAB0mK5iV1eQug5P/cD8Pohr/3wywFbKgKzsix9unky9sJGr86RunSwJbAkMGlw==' > /etc/ssh/ssh_user_ca\nmkdir -p /etc/ssh/sshd_config.d/\ncat > /etc/ssh/sshd_config.d/vlab_ca.conf << EOF\nTrustedUserCAKeys /etc/ssh/ssh_user_ca\nAuthorizedPrincipalsCommand /usr/bin/printf 'root\\n%u\\n'\nAuthorizedPrincipalsCommandUser nobody\nEOF\nchown 0.0 /etc/ssh/ssh_user_ca /etc/ssh/sshd_config.d/vlab_ca.conf\nmv /etc/apparmor.d/usr.sbin.tcpdump /etc/apparmor.d/disable/\n\nif [ -d /etc/apt/sources.list.d ]; then\n echo \"deb [trusted=yes] https://vlab.ustc.edu.cn/repo/ ./\" > /etc/apt/sources.list.d/vlab.list\nfi\n\ndpkg -P blueman brltty brltty-x11 sbsigntool secureboot-db speech-dispatcher speech-dispatcher-espeak-ng orca libespeak-ng1 espeak-ng-data gir1.2-gstreamer-1.0 gir1.2-nm-1.0 libao-common libao4 libatk-adaptor libbluetooth3 libbrlapi0.7 libdotconf0 libnm0 libpcaudio0 libpcre2-32-0 libsonic0 libspeechd2 python3-brlapi python3-louis python3-pyatspi python3-speechd sound-icons speech-dispatcher-audio-plugins xbrlapi\n#apt update\n#apt-get install -y --only-upgrade policykit-1 sudo\n\nsystemctl disable cups-browsed.service\nEOFX\n}\n\nwork() {\n local id=\"$1\"\n local param=\"$2\"\n local lv=user-data/vm-\"$id\"-disk-0\n local mnt=/tmp/mnt-\"$id\"\n mkdir -p \"$mnt\"\n echo \"******************** WORKING ON VM ID $id ($param remaining) ********************\"\n lvchange -y -ay \"$lv\"\n mount /dev/\"$lv\" \"$mnt\"\n\n gen_sh > \"$mnt\"/tmp/work.sh\n # generate /dev/null for \"$mnt\"\n rm -f \"$mnt\"/dev/null\n mknod \"$mnt\"/dev/null c 1 3\n chmod 666 \"$mnt\"/dev/null\n lxc-usernsexec -- chroot \"$mnt\" bash /tmp/work.sh\n rm \"$mnt\"/tmp/work.sh\n umount \"$mnt\"\n lvchange -y -an \"$lv\"\n}\n\ntotal=$(<\"${1:-disks.txt}\" wc -l)\nfor id in $(<\"${1:-disks.txt}\"); do\n work \"$id\" \"$((total-=1))\"\ndone\n
\u200b\u811a\u672c\u200b\u5185\u5bb9\u200b\u4e0e\u200b\u5148\u524d\u200b change-repo.sh
\u200b\u7c7b\u4f3c\u200b\u3002\u200b\u6709\u200b\u4e00\u4e9b\u200b\u4e0d\u540c\u200b\u7684\u200b\u5730\u65b9\u200b\uff1a
chroot
\u200b\u540e\u200b apt update
\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u5361\u6b7b\u200b\u5728\u200b Waiting for header
\u200b\u63d0\u793a\u200b\u4e2d\u200b\u3002\u200b\u8c03\u8bd5\u200b\u7ea6\u200b\u4e00\u4e2a\u534a\u200b\u5c0f\u65f6\u200b\u540e\u200b\u53d1\u73b0\u200b\u5176\u200b\u4f9d\u8d56\u200b /dev/null
\u3002\u200b\u4e8e\u662f\u200b\u811a\u672c\u200b\u4f7f\u7528\u200b chroot
\u200b\u64cd\u4f5c\u200b\u524d\u540e\u200b\u6dfb\u52a0\u200b\u4e86\u200b /dev/null
\u200b\u7684\u200b\u76f8\u5173\u200b\u64cd\u4f5c\u200b\uff1blxc-usernsexec
\u200b\u7528\u4e8e\u200b\u786e\u4fdd\u200b UID \u200b\u7684\u200b\u6620\u5c04\u200b\u6b63\u786e\u200b\uff08\u200b\u5b9e\u9645\u200b\u4ee5\u200b\u5bb9\u5668\u200b\u91cc\u200b\u7684\u200b root \u200b\u7684\u200b\u8eab\u4efd\u200b\u6267\u884c\u200b\u7ef4\u62a4\u200b\u811a\u672c\u200b\uff09\uff1a\u200b\u5bb9\u5668\u200b\u91cc\u200b\u7684\u200b root \u200b\u4e8b\u5b9e\u4e0a\u200b\u662f\u200b 100000 \u200b\u53f7\u200b\u7528\u6237\u200b\uff0c\u200b\u76f4\u63a5\u200b\u4ee5\u200b host \u200b\u7684\u200b root \u200b\u8eab\u4efd\u200b\u5199\u5165\u200b\u4f1a\u200b\u51fa\u73b0\u200b\u6743\u9650\u200b\u95ee\u9898\u200b\u3002\u200b\u524d\u671f\u5de5\u4f5c\u200b\uff1a2021 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 21 \u200b\u65e5\u200b
"},{"location":"records/2022-06-16/","title":"2022 \u200b\u5e74\u200b 6 \u200b\u6708\u200b 16 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u6211\u4eec\u200b\u7d27\u6025\u200b\u5904\u7406\u200b\u4e86\u200b LVM metadata \u200b\u5df2\u6ee1\u200b\u5bfc\u81f4\u200b\u65e0\u6cd5\u200b\u65b0\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
LVM \u200b\u7684\u200b metadata \u200b\u9ed8\u8ba4\u200b\u5b58\u50a8\u200b\u5728\u200b\u6bcf\u4e2a\u200b PV \u200b\u7684\u200b\u5f00\u5934\u200b\u4e0e\u200b\u7ed3\u5c3e\u5904\u200b\uff08\u200b\u4e24\u4efd\u200b\uff09\uff0c\u200b\u5e76\u4e14\u200b metadata \u200b\u7684\u200b\u683c\u5f0f\u200b\u662f\u200b ASCII\u3002\u200b\u5f53\u200b metadata area\uff08MDA\uff09\u200b\u4e0d\u8db3\u4ee5\u200b\u52a0\u5165\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u200b\u65f6\u200b\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u51fa\u73b0\u200b\u65e0\u6cd5\u200b\u65b0\u5efa\u200b LV \u200b\u7b49\u200b\u60c5\u51b5\u200b\u3002
\u200b\u5728\u200b pvcreate
\u200b\u65f6\u200b\uff0cMDA \u200b\u7684\u200b\u5927\u5c0f\u200b\u9ed8\u8ba4\u200b\u4e3a\u200b 1 MB\uff0c\u200b\u6ce8\u610f\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5b58\u200b\u4e24\u4efd\u200b\uff0c\u200b\u56e0\u6b64\u200b\u5b9e\u9645\u200b\u53ef\u7528\u200b\u7684\u200b\u7a7a\u95f4\u200b\u662f\u200b 510K\u3002\u200b\u8fd9\u200b\u5bf9\u4e8e\u200b\u9700\u8981\u200b\u4e0a\u200b\u5343\u4e2a\u200b LV \u200b\u7684\u200b\u573a\u5408\u200b\u800c\u8a00\u200b\u662f\u200b\u4e0d\u8db3\u200b\u7684\u200b\u3002\u200b\u7531\u4e8e\u200b LVM \u200b\u8fd9\u79cd\u200b\u56fa\u5b9a\u200b\u5206\u914d\u200b\u7684\u200b\u8bbe\u8ba1\u200b\uff0c\u200b\u6211\u4eec\u200b\u65e0\u6cd5\u200b\u4fee\u6539\u200b PV MDA \u200b\u7684\u200b\u5927\u5c0f\u200b\uff0c\u200b\u56e0\u6b64\u200b\u4e3a\u4e86\u200b\u5904\u7406\u200b\u6b64\u200b\u95ee\u9898\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u200b\u80fd\u591f\u200b\u91c7\u53d6\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u63aa\u65bd\u200b\uff1a
iscsiadm -m session --rescan
\uff0c\u200b\u65e0\u987b\u200b\u505c\u673a\u200b\u6216\u200b\u4e2d\u65ad\u200b\u4efb\u4f55\u200b\u670d\u52a1\u200b\u3002pvcreate --metadatasize 64m /dev/XXX
vgextend
\uff09\u3002metadataignore
\u200b\u4e3a\u200b y
\uff0c\u200b\u4f7f\u5f97\u200b metadata \u200b\u4ec5\u200b\u5b58\u50a8\u200b\u4e8e\u200b\u65b0\u200b\u7684\u200b MDA \u200b\u8db3\u591f\u200b\u5927\u200b\u7684\u200b\u5c0f\u76d8\u200b\u4e0a\u200b\u3002\u200b\u6545\u969c\u200b\u4e8e\u200b\u5f53\u65e5\u200b 15:30 \u200b\u88ab\u200b\u53cd\u9988\u200b\uff0c\u200b\u5e76\u4e8e\u200b\u7ea6\u200b 22:30 \u200b\u4fee\u590d\u200b\u5b8c\u6210\u200b\u3002
\u200b\u5728\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\u521b\u5efa\u200b\u65b0\u200b LUN \u200b\u7684\u200b\u6ce8\u610f\u4e8b\u9879\u200b
\u200b\u6240\u6709\u200b Virtual Disk \u200b\u7684\u200b LUN \u200b\u7f16\u53f7\u200b\u5fc5\u987b\u200b\u552f\u4e00\u200b\uff0c\u200b\u5426\u5219\u200b\u65b0\u5efa\u200b\u7684\u200b LUN \u200b\u65e0\u6cd5\u200b\u88ab\u200b\u670d\u52a1\u5668\u200b\u68c0\u6d4b\u200b\u5230\u200b\uff0c\u200b\u751a\u81f3\u200b\u53ef\u80fd\u200b\u5728\u200b\u670d\u52a1\u5668\u200b\u91cd\u542f\u200b\u65f6\u200b\u4ea7\u751f\u200b\u9519\u4e71\u200b\u3002
"},{"location":"records/2022-09-20/","title":"2022 \u200b\u5e74\u200b 9 \u200b\u6708\u200b 20 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u8fd1\u65e5\u200b\u4e3b\u8981\u200b\u5b8c\u6210\u200b\uff1a
\u200b\u5173\u4e8e\u200b\u540e\u8005\u200b\uff1a
lxc.cgroup2.devices.allow: c 10:200 rwm
File descriptor in bad state
\uff0c\u200b\u5219\u200b\u53ef\u4ee5\u200b\u8ba4\u4e3a\u200b\u8bbe\u7f6e\u200b\u6210\u529f\u200bnameserver
\u200b\u9879\u200b\u3002\u200b\u8d77\u56e0\u200b\uff1a\u200b\u6709\u200b\u5b66\u751f\u200b\u53cd\u9988\u200b\u5bb9\u5668\u200b\u542f\u52a8\u200b\u7a0b\u5e8f\u200b\u8f83\u6162\u200b\uff0c\u200b\u7ef4\u62a4\u200b\u4eba\u5458\u200b\u53d1\u73b0\u200b iowait
\u200b\u8f83\u200b\u9ad8\u200b\uff0c\u200b\u968f\u540e\u200b\u53d1\u73b0\u200b\u5b58\u50a8\u9635\u5217\u200b\u7ba1\u7406\u200b\u754c\u9762\u200b\u65e0\u6cd5\u200b\u767b\u5f55\u200b\u3002
\u200b\u4eca\u65e5\u200b\u8fdb\u884c\u200b\u4e86\u200b\u505c\u673a\u200b\u7ef4\u62a4\u200b\uff0c\u200b\u64cd\u4f5c\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
iscsiadm -m node -T <target-name> -U all
\u200b\u767b\u51fa\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\uff1biscsiadm -m session -P 3
\u200b\u786e\u8ba4\u200b\u4f1a\u8bdd\u200b\u6210\u529f\u200b\u767b\u51fa\u200b\u3002\u200b\u6ce8\u200b\uff1a\u200b\u505c\u6b62\u200b iscsid.service
\u200b\u5e76\u200b\u4e0d\u4f1a\u200b\u767b\u51fa\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\u3002
\u200b\u4fee\u6539\u200b /etc/sub{u,g}id
\uff0c\u200b\u5c06\u200b\u7b2c\u4e09\u4e2a\u200b\u6570\u5b57\u200b\u7531\u200b 65536
\u200b\u6539\u4e3a\u200b 165536
\uff0c\u200b\u589e\u5927\u200b\u5bb9\u5668\u200b\u5141\u8bb8\u200b\u4f7f\u7528\u200b\u7684\u200b ID \u200b\u8303\u56f4\u200b\u3002
\u200b\u5b58\u50a8\u9635\u5217\u200b\u65e0\u6cd5\u200b\u767b\u5f55\u200b\u539f\u56e0\u200b\u4e0d\u660e\u200b\uff0c\u200b\u4f7f\u7528\u200b\u4e32\u53e3\u200b\u91cd\u7f6e\u200b\u51ed\u636e\u200b\u5e76\u200b\u91cd\u65b0\u200b\u8bbe\u7f6e\u200b\u8ba4\u8bc1\u200b\u540e\u200b\u53ef\u4ee5\u200b\u6b63\u5e38\u200b\u767b\u5f55\u200b\u3002
\u200b\u67e5\u770b\u200b\u9635\u5217\u200b\u65e5\u5fd7\u200b\uff0c\u200b\u4ec5\u200b\u53d1\u73b0\u200b 2022/11/15 \u200b\u51fa\u73b0\u200b\u8fc7\u200b\u4e00\u4e2a\u200b memory allocation failed
\u200b\u4e8b\u4ef6\u200b\uff0c\u200b\u65e0\u6cd5\u200b\u786e\u8ba4\u200b\u662f\u5426\u200b\u4e0e\u200b\u672c\u6b21\u200b\u65e0\u6cd5\u200b\u767b\u5f55\u200b\u76f8\u5173\u200b\u3002
\u200b\u67e5\u9605\u200b HPE \u200b\u8bbe\u5907\u200b\u56fa\u4ef6\u200b\u53d1\u884c\u200b\u6ce8\u8bb0\u200b\uff0c\u200b\u6ca1\u6709\u200b\u53d1\u73b0\u200b\u4e0e\u200b\u672c\u6b21\u200b\u6545\u969c\u200b\u76f8\u5173\u200b\u7684\u200b\u5185\u5bb9\u200b\u3002
\u200b\u53ef\u80fd\u200b\u9700\u8981\u200b\u5411\u200b\u4e0a\u6e38\u200b\u53cd\u9988\u200b\u672c\u6b21\u200b\u6545\u969c\u200b\u3002
"},{"location":"records/2023-01-28/","title":"2023 \u200b\u5e74\u200b 1 \u200b\u6708\u200b 28 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u6211\u4eec\u200b\u8fdb\u884c\u200b\u4e86\u200b Ubuntu 22.04 \u200b\u955c\u50cf\u200b\u7684\u200b\u6709\u5173\u200b\u6d4b\u8bd5\u200b\u3002
"},{"location":"records/2023-01-28/#firefox-\u7684\u517c\u5bb9\u6027\u95ee\u9898","title":"Firefox \u200b\u7684\u200b\u517c\u5bb9\u6027\u95ee\u9898","text":"\u200b\u7531\u4e8e\u200b Ubuntu 22.04 \u200b\u4f7f\u7528\u200b snap \u200b\u7248\u672c\u200b firefox \u200b\u66ff\u6362\u200b\u7cfb\u7edf\u200b\u81ea\u5e26\u200b\u7684\u200b firefox \u200b\u5305\u200b\uff0c\u200b\u6211\u4eec\u200b\u6dfb\u52a0\u200b\u4e86\u200b firefox-vlab
\u200b\u5305\u200b\u7528\u4e8e\u200b\u8c03\u7528\u200b Vlab Software \u200b\u5957\u4ef6\u200b\u4e2d\u200b\u7684\u200b firefox \u200b\u4e8c\u8fdb\u5236\u200b\u7a0b\u5e8f\u200b\u3002\u200b\u4e3b\u8981\u200b\u95ee\u9898\u200b\u51fa\u73b0\u200b\u5728\u200b\u83dc\u5355\u200b\u4e2d\u200b\uff1a
firefox-vlab
\u200b\u5305\u4e2d\u200b\u4fee\u590d\u200b\uff08divert \u200b\u66f4\u6539\u200b\u5bf9\u5e94\u200b desktop \u200b\u6587\u4ef6\u540d\u79f0\u200b\uff09\uff1b\u200b\u7ecf\u8fc7\u200b\u7b80\u5355\u200b\u6d4b\u8bd5\u200b\uff0cVivado 2016 \u200b\u80fd\u591f\u200b\u8fdb\u884c\u200b\u7efc\u5408\u200b\u3001\u200b\u5b9e\u73b0\u200b\u4e0e\u200b\u751f\u6210\u200b\u6bd4\u7279\u6d41\u200b\uff1bVivado 2019 \u200b\u5728\u200b\u7efc\u5408\u200b\u4e00\u6b65\u200b\u5d29\u6e83\u200b\uff0cbacktrace \u200b\u7c7b\u4f3c\u200b\u5982\u4e0b\u200b\uff1a
#\n# An unexpected error has occurred (11)\n#\nStack:\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/tps/lnx64/jre9.0.4/lib//server/libjvm.so(+0xb6aadb) [0x7f71a4f6aadb]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/tps/lnx64/jre9.0.4/lib//server/libjvm.so(JVM_handle_linux_signal+0xbb) [0x7f71a4f6fe1b]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/tps/lnx64/jre9.0.4/lib//server/libjvm.so(+0xb647b8) [0x7f71a4f647b8]\n/lib/x86_64-linux-gnu/libc.so.6(+0x42520) [0x7f71f2e1a520]\n/lib/x86_64-linux-gnu/libc.so.6(+0xa2d27) [0x7f71f2e7ad27]\n/lib/x86_64-linux-gnu/libc.so.6(free+0x73) [0x7f71f2e7d4d3]\n/lib/x86_64-linux-gnu/libselinux.so.1(selinuxfs_exists+0xd0) [0x7f71f22dfdb0]\n/lib/x86_64-linux-gnu/libselinux.so.1(+0x721c) [0x7f71f22d921c]\n/lib64/ld-linux-x86-64.so.2(+0x647e) [0x7f71f594447e]\n/lib64/ld-linux-x86-64.so.2(+0x6568) [0x7f71f5944568]\n/lib/x86_64-linux-gnu/libc.so.6(_dl_catch_exception+0xe5) [0x7f71f2f4cc85]\n/lib64/ld-linux-x86-64.so.2(+0xdff6) [0x7f71f594bff6]\n/lib/x86_64-linux-gnu/libc.so.6(_dl_catch_exception+0x88) [0x7f71f2f4cc28]\n/lib64/ld-linux-x86-64.so.2(+0xe34e) [0x7f71f594c34e]\n/lib/x86_64-linux-gnu/libc.so.6(+0x906bc) [0x7f71f2e686bc]\n/lib/x86_64-linux-gnu/libc.so.6(_dl_catch_exception+0x88) [0x7f71f2f4cc28]\n/lib/x86_64-linux-gnu/libc.so.6(_dl_catch_error+0x33) [0x7f71f2f4ccf3]\n/lib/x86_64-linux-gnu/libc.so.6(+0x901ae) [0x7f71f2e681ae]\n/lib/x86_64-linux-gnu/libc.so.6(dlopen+0x48) [0x7f71f2e68748]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd840d01ca6dc9+0x3c) [0x7f71ea14c90c]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd846009c98322+0xa8) [0x7f71ea14cbf8]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(+0x146e08) [0x7f71ea146e08]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd847e20e6acca+0x9) [0x7f71ea1473c9]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(+0xfe457) [0x7f71ea0fe457]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd853912de43c2+0xc8) [0x7f71ea0fe248]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(+0xeb552) [0x7f71ea0eb552]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd995765656b48+0x2a) [0x7f71ea0f578a]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd700d1bd3c616+0x73) [0x7f71ea0f5873]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetHostInfo[abi:cxx11](XilReg::Utils::HostInfoType, bool) const+0x208) [0x7f71edab58f8]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetHostInfoFormatted[abi:cxx11](XilReg::Utils::HostInfoType, bool) const+0x52) [0x7f71edab84b2]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetHostInfo[abi:cxx11]() const+0x183) [0x7f71edab8773]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetRegInfo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool)+0xc6) [0x7f71edac26b6]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetRegInfoWebTalk(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x60) [0x7f71edac2940]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_project.so(HAPRWebtalkHelper::getRegistrationId[abi:cxx11]() const+0x3a) [0x7f71bd006c2a]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_project.so(HAPRWebtalkHelper::HAPRWebtalkHelper(HAPRProject*, HAPRDesign*, HWEWebtalkMgr*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xb0) [0x7f71bd0070a0]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_tcltasks.so(+0x1675a16) [0x7f71e4875a16]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_tcltasks.so(+0x16803a8) [0x7f71e48803a8]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_common.so(+0x8068e2) [0x7f71f44068e2]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(+0x334af) [0x7f71ece334af]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(+0x76875) [0x7f71ece76875]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(+0x7e029) [0x7f71ece7e029]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(TclEvalObjEx+0x76) [0x7f71ece35156]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_common.so(+0x804df1) [0x7f71f4404df1]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(Tcl_ServiceEvent+0x7f) [0x7f71ecea7b0f]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(Tcl_DoOneEvent+0x154) [0x7f71ecea7e44]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commontasks.so(+0x231625) [0x7f71e6e31625]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commontasks.so(+0x23b163) [0x7f71e6e3b163]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commontasks.so(+0x23c1fe) [0x7f71e6e3c1fe]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_common.so(+0x8068e2) [0x7f71f44068e2]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(+0x334af) [0x7f71ece334af]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(Tcl_EvalObjv+0x32) [0x7f71ece335e2]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(TclEvalObjEx+0x322) [0x7f71ece35402]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonmain.so(+0x7424) [0x7f71f3807424]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(Tcl_Main+0x1d0) [0x7f71ecea0210]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_common.so(+0x84ac9b) [0x7f71f444ac9b]\n/lib/x86_64-linux-gnu/libc.so.6(+0x94b43) [0x7f71f2e6cb43]\n/lib/x86_64-linux-gnu/libc.so.6(+0x126a00) [0x7f71f2efea00]\n
\u200b\u53ef\u4ee5\u200b\u53d1\u73b0\u200b\u95ee\u9898\u200b\u5728\u200b dlopen()
\u200b\u67d0\u4e2a\u200b\u5e93\u65f6\u200b\u51fa\u9519\u200b\u3002\u200b\u6211\u4eec\u200b\u7f16\u5199\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u7b80\u5355\u200b\u7684\u200b\u7a0b\u5e8f\u200b\u68c0\u67e5\u200b dlopen()
\u200b\u7684\u200b\u60c5\u51b5\u200b\uff1a
#include <dlfcn.h>\n#include <stdio.h>\n\n#if defined(RTLD_NEXT)\n#define REAL_LIBC RTLD_NEXT\n#else\n#define REAL_LIBC ((void *) -1L)\n#endif\n\nvoid* dlopen(const char *file, int mode)\n{\n static void* (*o_dlopen) ( const char *file, int mode )=0;\n fprintf(stderr, \"dlopen was called %s %d\\n\", file, mode );\n o_dlopen = (void*(*)(const char *file, int mode)) dlsym(REAL_LIBC, \"dlopen\");\n void *res = (*o_dlopen)( file, mode );\n fprintf(stderr, \"dlopen(%s, %d) gets %p\\n\", file, mode, res);\n return res;\n}\n
gcc -Wall -fPIC -shared -o dlopen.so dlopen.c -ldl
\u200b\u540e\u200b LD_PRELOAD
\u200b\u6267\u884c\u200b Vivado 2019 \u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u53d1\u73b0\u200b\u5728\u200b\u52a0\u8f7d\u200b libdbus-glib-1.so.2
\u200b\u65f6\u200b\u7a0b\u5e8f\u200b\u5d29\u6e83\u200b\u3002\u200b\u5c06\u200b Ubuntu 18.04 \u200b\u7684\u200b\u5bf9\u5e94\u200b\u5e93\u200b\u4e0b\u8f7d\u200b\u5e76\u200b LD_PRELOAD
\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u53d1\u73b0\u200b\u5de5\u4f5c\u200b\u6b63\u5e38\u200b\u3002
\u200b\u6839\u636e\u200b\u4ee5\u5f80\u200b\u7684\u200b\u7cfb\u7edf\u8d44\u6e90\u200b\u8bb0\u5f55\u200b\uff0c\u200b\u6211\u4eec\u200b\u53d1\u73b0\u200b\u66f4\u65b0\u200b man-db \u200b\u4e0e\u200b\u7cfb\u7edf\u200b\u66f4\u65b0\u200b\u64cd\u4f5c\u200b\u53ef\u80fd\u200b\u5bfc\u81f4\u200b I/O \u200b\u62e5\u5835\u200b\u3002\u200b\u76ee\u524d\u200b\u5904\u7406\u200b\u4e86\u200b\u6240\u6709\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u5bb9\u5668\u200b\uff1a
# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- systemctl disable man-db.timer\n# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- systemctl disable apt-daily-upgrade.timer\n
\u200b\u540c\u65f6\u200b\u4e3a\u200b logrotate.timer
\u200b\u6dfb\u52a0\u200b\u4e86\u200b 3 \u200b\u5c0f\u65f6\u200b\u7684\u200b\u968f\u673a\u200b\u5ef6\u8fdf\u200b\uff1a
pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- bash -c 'mkdir -p /etc/systemd/system/logrotate.timer.d && echo -e \"[Timer]\\nRandomizedDelaySec=3h\" > /etc/systemd/syst\nem/logrotate.timer.d/vlab.conf && systemctl daemon-reload'\n
\u200b\u4ee5\u53ca\u200b\u65b0\u200b\u7684\u200b 22.04 \u200b\u5bb9\u5668\u200b\u4e5f\u200b\u9884\u671f\u200b\u4e0d\u200b\u5305\u542b\u200b\u8fd9\u4e9b\u200b\u5b9a\u65f6\u200b\u4efb\u52a1\u200b\u3002
"},{"location":"records/2023-01-28/#\u5173\u95ed-swap-\u5206\u914d","title":"\u5173\u95ed\u200b swap \u200b\u5206\u914d","text":"\u200b\u9ed8\u8ba4\u200b PVE \u200b\u7ed9\u200b\u6bcf\u4e2a\u200b\u5bb9\u5668\u200b\u5206\u914d\u200b\u4e86\u200b 512M \u200b\u7684\u200b swap\uff0c\u200b\u4f46\u662f\u200b\u4e3b\u673a\u200b swap \u200b\u4ec5\u200b\u6709\u200b 8G\uff0c\u200b\u56e0\u6b64\u200b\u6279\u91cf\u200b\u5173\u95ed\u200b\u4e86\u200b\u6240\u6709\u200b\u5bb9\u5668\u200b\u7684\u200b swap\uff0c\u200b\u5e76\u4e14\u200b\u4fee\u6539\u200b\u4e86\u200b\u7ba1\u7406\u200b\u5e73\u53f0\u200b\u76f8\u5173\u200b\u4ee3\u7801\u200b\u3002
# # inside /etc/pve/lxc\n# for i in *; do echo ${i/.conf/} && pct set ${i/.conf/} --swap 0; done\n
"},{"location":"records/2023-01-28/#\u540e\u7eed\u4f7f\u7528-github-actions-\u6784\u5efa\u955c\u50cf","title":"\u540e\u7eed\u200b\uff1a\u200b\u4f7f\u7528\u200b GitHub Actions \u200b\u6784\u5efa\u200b\u955c\u50cf","text":"2023 \u200b\u5e74\u200b 2 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u66f4\u65b0\u200b\uff1a
\u200b\u6211\u4eec\u200b\u5728\u200b labstrap \u200b\u4ed3\u5e93\u200b\u914d\u7f6e\u200b\u4e86\u200b GitHub Actions \u200b\u7684\u200b\u6784\u5efa\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u76ee\u524d\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b\u4ec5\u9650\u200b\u624b\u52a8\u200b\u89e6\u53d1\u200b\u3002\u200b\u7ba1\u7406\u5458\u200b\uff08\u200b\u6709\u200b\u4ed3\u5e93\u200b\u6743\u9650\u200b\u7684\u200b\u4eba\u200b\uff09\u200b\u53ef\u4ee5\u200b\u5728\u200b Image Build CI \u200b\u9875\u9762\u200b\u70b9\u51fb\u200b Run workflow \u200b\u542f\u52a8\u200b\u4e00\u6b21\u200b\u6784\u5efa\u200b\uff0c\u200b\u6784\u5efa\u200b\u5b8c\u6210\u200b\u540e\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u4e0a\u200b\u4f20\u5230\u200b Auto builds \u200b\u8fd9\u4e2a\u200b release\u3002
"},{"location":"records/2023-02-17/","title":"2023 \u200b\u5e74\u200b 2 \u200b\u6708\u200b 17 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u5bf9\u200b\u6240\u6709\u200b\u8282\u70b9\u200b\u8fdb\u884c\u200b\u4e86\u200b\u8f6f\u4ef6\u200b\u5347\u7ea7\u200b\uff0c\u200b\u5e76\u4e14\u200b\u66f4\u65b0\u200b\u4e86\u200b Django web \u200b\u4e0e\u200b filestash\u3002
"},{"location":"records/2023-02-17/#django-web-\u5347\u7ea7","title":"Django web \u200b\u5347\u7ea7","text":"\u200b\u66f4\u65b0\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
\u200b\u66f4\u65b0\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
\u200b\u4eca\u5929\u200b\u6839\u636e\u200b\u4e4b\u524d\u200b\u53d1\u5e03\u200b\u7684\u200b\u901a\u77e5\u200b\u6e05\u7406\u200b\u4e86\u200b\u957f\u671f\u200b\u4e0d\u200b\u4f7f\u7528\u200b\u53ca\u200b\u5df2\u200b\u6bd5\u4e1a\u200b\u534a\u5e74\u200b\u7684\u200b\u7528\u6237\u200b\u3002
\u200b\u8003\u8651\u200b\u5230\u200b\u767b\u5f55\u200b\u9875\u9762\u200b\u7684\u200b\u201c\u200b\u7528\u6237\u540d\u200b\u5bc6\u7801\u200b\u201d\u200b\u767b\u5f55\u200b\u65b9\u5f0f\u200b\u8fc7\u4e8e\u200b\u663e\u773c\u200b\uff0c\u200b\u4ee5\u81f3\u4e8e\u200b\u90e8\u5206\u200b\u7528\u6237\u200b\u6ca1\u6709\u200b\u4f7f\u7528\u200b CAS \u200b\u767b\u5f55\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u6211\u4eec\u200b\u65e0\u6cd5\u200b\u53ca\u65f6\u200b\u83b7\u53d6\u200b\u7528\u6237\u200b\u6700\u65b0\u200b\u7684\u200b\u5728\u6821\u200b\u72b6\u6001\u200b\u4fe1\u606f\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u5728\u200b\u7a0b\u5e8f\u200b\u5217\u51fa\u200b\u7684\u200b\u201c\u200b\u6e05\u9000\u200b\u7528\u6237\u200b\u5217\u8868\u200b\u201d\u200b\u4e2d\u200b\u6839\u636e\u200b\u5b66\u200b\u53f7\u200b\u624b\u52a8\u200b\u6392\u9664\u200b\u4e86\u200b\u53ef\u80fd\u200b\u8fd8\u200b\u5728\u6821\u200b\u7684\u200b\u540c\u5b66\u200b\u3002\u200b\u5177\u4f53\u200b\u89c4\u5219\u200b\u5982\u4e0b\u200b\uff1a
\u200b\u5bf9\u4e8e\u200b\u540c\u65f6\u200b\u7b26\u5408\u200b\u4ee5\u4e0a\u200b\u89c4\u5219\u200b\u7684\u200b\u7528\u6237\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c06\u200b\u5176\u200b\u4ece\u200b\u6e05\u9000\u200b\u5217\u8868\u200b\u4e2d\u200b\u79fb\u9664\u200b\uff0c\u200b\u7136\u540e\u200b\u5220\u9664\u200b\u4e86\u200b\u5217\u8868\u200b\u4e2d\u200b\u5269\u4f59\u200b\u7684\u200b\u7528\u6237\u200b\u53ca\u5176\u200b\u865a\u62df\u673a\u200b\u3002
\u200b\u6839\u636e\u200b Proxmox VE \u200b\u754c\u9762\u200b\u63d0\u4f9b\u200b\u7684\u200b\u4fe1\u606f\u200b\uff0c\u200b\u6b64\u6b21\u200b\u6e05\u9000\u200b\u540e\u200b\u201c\u200b\u7528\u6237\u200b\u6570\u636e\u200b\u201d\u200b\u5206\u533a\u200b\u7684\u200b\u4f7f\u7528\u91cf\u200b\u4ece\u200b 37.59 TB \u200b\u4e0b\u964d\u200b\u5230\u200b\u4e86\u200b 23.53 TB\uff08-37%\uff09\uff0c\u200b\u865a\u62df\u673a\u200b\u6570\u91cf\u200b\u4ece\u200b 1803 \u200b\u964d\u200b\u81f3\u200b 1067\uff08-42%\uff09\u3002
"},{"location":"records/2023-03-05/#django-web-\u66f4\u65b0","title":"Django web \u200b\u66f4\u65b0","text":"vm.can_cas_login
\u200b\u4f5c\u4e3a\u200b\u201c\u200b\u6e05\u9000\u200b\u767d\u540d\u5355\u200b\u201d\uff0c\u200b\u6743\u9650\u200b\u7ec4\u4e2d\u200b\u7684\u200b\u7528\u6237\u200b\u4e0d\u4f1a\u200b\u5728\u200b\u201c\u200b\u6e05\u9000\u200b\u5217\u8868\u200b\u201d\u200b\u4e2d\u200b\u5217\u51fa\u200b\u3002\u200b\u4eca\u65e5\u200b\u51cc\u6668\u200b\u5b8c\u6210\u200b\u4e86\u200b\u5347\u7ea7\u200b\u4e0e\u200b\u6e05\u9000\u200b\u64cd\u4f5c\u200b\u3002
"},{"location":"records/2023-08-06/#\u5347\u7ea7","title":"\u5347\u7ea7","text":"\u200b\u6240\u6709\u200b\u7684\u200b pv \u200b\u5747\u200b\u4ece\u200b PVE 7 (Debian Bullseye) \u200b\u5347\u7ea7\u200b\u81f3\u200b PVE 8 (Debian Bookworm)\uff0c\u200b\u5e76\u4e14\u200b\u4f4d\u4e8e\u200b pv1 \u200b\u7684\u200b PBS \u200b\u4e5f\u200b\u4ece\u200b 2 \u200b\u5347\u7ea7\u200b\u5230\u200b\u4e86\u200b 3 (Bookworm)\u3002
\u200b\u5347\u7ea7\u200b\u6ce8\u610f\u4e8b\u9879\u200b\u53c2\u89c1\u200b\uff1ahttps://pve.proxmox.com/wiki/Upgrade_from_7_to_8
\u200b\u5728\u200b\u5347\u7ea7\u200b pv1 \u200b\u524d\u200b\uff0c\u200b\u5c06\u200b pv1 \u200b\u4e0a\u200b\u6240\u6709\u200b VM \u200b\u8fc1\u79fb\u200b\u81f3\u200b\u5df2\u7ecf\u200b\u5347\u7ea7\u200b\u7684\u200b pv2 \u200b\u4ee5\u200b\u51cf\u7f13\u200b\u670d\u52a1\u200b\u4e2d\u65ad\u200b\u7684\u200b\u5f71\u54cd\u200b\u3002\u200b\u56e0\u4e3a\u200b CPU \u200b\u578b\u53f7\u200b\u4e00\u6837\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e0d\u4f1a\u200b\u51fa\u73b0\u200b\u95ee\u9898\u200b\u3002\u200b\u6b64\u5916\u200b\uff0c\u200b\u5728\u200b pv[2-7] \u200b\u4e0a\u200b\u5173\u95ed\u200b\u5168\u90e8\u200b\u5bb9\u5668\u200b\u7684\u200b\u64cd\u4f5c\u200b\u975e\u5e38\u200b\u7f13\u6162\u200b\uff08\u200b\u5e94\u8be5\u200b\u662f\u56e0\u4e3a\u200b\u6709\u200b\u5927\u91cf\u200b\u7684\u200b\u7ade\u4e89\u200b\u5bfc\u81f4\u200b\u7684\u200b\uff09\uff0c\u200b\u4e14\u200b\u5982\u679c\u200b\u5728\u200b\u5173\u95ed\u200b\u5bb9\u5668\u200b\u65f6\u200b\u5347\u7ea7\u200b\uff0c\u200b\u53ef\u80fd\u200b\u5bfc\u81f4\u200b\u6b7b\u9501\u200b\u3002\u200b\u672a\u6765\u200b\u9700\u8981\u200b\u8003\u8651\u200b\u4ee5\u200b\u5c0f\u6279\u91cf\u200b\u65b9\u5f0f\u200b\u5173\u95ed\u200b\u5bb9\u5668\u200b\u6765\u200b\u52a0\u5feb\u901f\u5ea6\u200b\u3002
PVE 8 \u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u9700\u8981\u200b SDN.Use \u200b\u6743\u9650\u200b\uff0c\u200b\u8fd9\u200b\u4e00\u70b9\u200b\u5728\u200b\u5347\u7ea7\u200b\u540e\u200b\u7528\u6237\u200b\u65e0\u6cd5\u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u65f6\u200b\u53d1\u73b0\u200b\u5e76\u200b\u89e3\u51b3\u200b\u3002
\u200b\u5173\u4e8e\u200b Django \u200b\u524d\u7aef\u200b\uff0c\u200b\u5176\u200b\u6dfb\u52a0\u200b\u4e86\u200b KVM \u200b\u652f\u6301\u200b\uff0c\u200b\u90e8\u7f72\u200b\u65b0\u200b\u7248\u672c\u200b\u6ca1\u6709\u200b\u53d1\u751f\u610f\u5916\u200b\u3002\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u5e93\u200b\u7ed3\u6784\u200b\u53c2\u8003\u200b https://github.com/USTC-vlab/cslab/blob/master/docs/django.md#proxy-model-%E7%BB%A7%E6%89%BF%E6%A8%A1%E5%9E%8B%E4%B8%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8D%95%E8%A1%A8%E7%BB%93%E6%9E%84\u3002
"},{"location":"records/2023-08-06/#\u6e05\u9000","title":"\u6e05\u9000","text":"Django \u200b\u4fa7\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u6e05\u9000\u200b\u7684\u200b management command\uff0c\u200b\u5177\u4f53\u5185\u5bb9\u200b\u53c2\u89c1\u200b https://github.com/USTC-vlab/cslab/blob/master/docs/operations.md#%E6%B8%85%E9%80%80%E7%94%A8%E6%88%B7\u3002
"},{"location":"records/2023-10-01/","title":"2023 \u200b\u5e74\u200b 10 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u665a\u4e0a\u200b\u6309\u7167\u200b\u5df2\u7ecf\u200b\u89c4\u5212\u200b\u4e86\u200b\u4e00\u4e2a\u591a\u6708\u200b\u7684\u200b\u65b9\u6848\u200b\uff0c\u200b\u5168\u9762\u200b\u629b\u5f03\u200b\u624b\u200b\u6413\u200b\u7684\u200b iptables \u200b\u9632\u706b\u5899\u200b\u89c4\u5219\u200b\uff0c\u200b\u5e76\u200b\u542f\u7528\u200b\u4e86\u200b PVE Firewall\u3002
"},{"location":"records/2023-10-01/#host-firewall","title":"\u66f4\u65b0\u200b\u4e3b\u673a\u200b\u9632\u706b\u5899","text":"\u200b\u5728\u200b PVE Web \u200b\u754c\u9762\u200b\u4e0a\u200b\u64cd\u4f5c\u200b\u5efa\u597d\u200b\u4e86\u200b management
\u3001blacklist
\u200b\u7b49\u200b IPSet\uff0c\u200b\u5e76\u4e14\u200b\u5efa\u597d\u200b\u4e86\u200b vlab-host
\u3001vlab-vm
\u200b\u548c\u200b pbs
\u200b\u4e09\u4e2a\u200b Security Group\u3002
\u200b\u5728\u200b pv1 \u200b\u4e0a\u914d\u200b\u597d\u200b\u4e86\u200b\u9632\u706b\u5899\u200b\uff0c\u200b\u68c0\u67e5\u200b\u914d\u7f6e\u6587\u4ef6\u200b /etc/pve/nodes/pv1/host.fw
\uff0c\u200b\u5e76\u200b\uff08\u200b\u53bb\u6389\u200b pbs \u200b\u4e4b\u540e\u200b\uff09\u200b\u590d\u5236\u5230\u200b\u5176\u4ed6\u200b\u8282\u70b9\u200b\u4e0a\u200b\u3002
\u200b\u6700\u540e\u200b\u5728\u200b pv1 \u200b\u4e0a\u200b\u5220\u9664\u200b\u4e86\u200b /etc/modprobe.d/iptables-legacy.conf
\u200b\u8fd9\u4e2a\u200b\u6beb\u65e0\u200b\u5fc5\u8981\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u6e05\u9664\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u66fe\u7ecf\u200b\u7ed9\u200b\u81ea\u5df1\u200b\u57cb\u4e0b\u200b\u7684\u200b\u5751\u200b\uff08\u200b\u4f46\u662f\u200b\u5e78\u4e8f\u200b\u8bb0\u4f4f\u200b\u4e86\u200b\uff09\u3002
\u200b\u9996\u5148\u200b\u5728\u200b PVE Web \u200b\u4e0a\u9762\u200b\u627e\u200b\u4e00\u4e2a\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u8c03\u200b\u597d\u200b\u9632\u706b\u5899\u200b\u9009\u9879\u200b\uff0c\u200b\u5f97\u5230\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff1a
/etc/pve/firewall/1095.fw[OPTIONS]\n\npolicy_in: ACCEPT\nipfilter: 1\nmacfilter: 1\nenable: 1\n\n[IPSET ipfilter-net0]\n\n!2001:da8:d800:4bfc::/112\n2001:da8:d800:4bfc::/64\n\n[RULES]\n\nGROUP vlab-vm\n
\u200b\u7136\u540e\u200b ssh \u200b\u8fdb\u200b PVE \u200b\u628a\u200b\u8fd9\u4efd\u200b\u6587\u4ef6\u200b\u590d\u5236\u200b\u7ed9\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\uff1a
cd /etc/pve/firewall\nfor id in $(jq -r '.ids | keys | .[]' /etc/pve/.vmlist); do\n [ $id -gt 1000 -a $id -lt 10000 -a $id -ne 1095 ] || continue\n cp 1095.fw $id.fw\ndone\n
"},{"location":"records/2023-10-01/#iface-firewall","title":"\u7f51\u5361\u200b\u5c42\u9762\u200b\u7684\u200b\u9632\u706b\u5899","text":"\u200b\u4e3a\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u7f51\u5361\u200b\uff08net0\uff09\u200b\u52a0\u4e0a\u200b firewall=1
\u3002\u200b\u7ecf\u8fc7\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u76f4\u63a5\u200b\u5bf9\u200b\u7740\u200b /etc/pve/nodes/{node}/lxc/{vmid}.conf
\u200b\u8dd1\u200b sed \u200b\u662f\u200b\u4e0d\u4f1a\u200b\u4e3a\u200b\u5df2\u7ecf\u200b\u5f00\u673a\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u771f\u6b63\u200b\u542f\u7528\u200b\u9632\u706b\u5899\u200b\u7684\u200b\uff0c\u200b\u9700\u8981\u200b\u901a\u8fc7\u200b API\uff08HTTP \u200b\u6216\u200b pvesh
\u200b\u5747\u200b\u53ef\u200b\uff09\u200b\u6765\u200b\u4fee\u6539\u200b\u3002\u200b\u7ecf\u8fc7\u200b\u8fdb\u4e00\u6b65\u200b\u7684\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u76f4\u63a5\u200b sed \u200b\u4e00\u628a\u200b\u68ad\u200b\u662f\u200b\u53ef\u4ee5\u200b\u7684\u200b\uff0c\u200b\u53ea\u662f\u200b\u9632\u706b\u5899\u200b\u89c4\u5219\u200b\u4ece\u6587\u4ef6\u200b\u540c\u6b65\u200b\u5230\u200b iptables \u200b\u91cc\u200b\u6709\u200b\u5927\u7ea6\u200b 10 \u200b\u79d2\u949f\u200b\u7684\u200b\u5ef6\u8fdf\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e00\u200b\u5f00\u59cb\u200b\u8bef\u4ee5\u4e3a\u200b\u4e0d\u4f1a\u200b\u540c\u6b65\u200b\uff08\u200b\u4f46\u662f\u200b\u4e0b\u9762\u200b\u7684\u200b\u811a\u672c\u200b\u5df2\u7ecf\u200b\u8dd1\u200b\u5b8c\u200b\u4e86\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5c31\u200b\u4e0d\u200b\u6539\u200b\u4e86\u200b\uff0c\u200b\u7559\u200b\u4f5c\u200b\u8bb0\u5f55\u200b\uff09\u3002
for id in $(jq -r '.ids | keys | .[]' /etc/pve/.vmlist); do\n [ $id -gt 1000 -a $id -lt 10000 ] || continue\n node=$(jq -r \".ids.\\\"$id\\\".node\" /etc/pve/.vmlist)\n f=\"/etc/pve/nodes/$node/lxc/$id.conf\"\n conf=\"$(awk '$1==\"net0:\"{print $2}' \"$f\")\"\n [[ \"$conf\" == *firewall=1* ]] && continue\n pvesh set /nodes/$node/lxc/$id/config -net0 \"$conf,firewall=1\"\ndone\n
\u200b\u7531\u4e8e\u200b\u865a\u62df\u673a\u200b\u6570\u91cf\u200b\u4f17\u591a\u200b\uff0c\u200b\u8fd9\u7ec4\u200b\u547d\u4ee4\u200b\u8dd1\u200b\u4e86\u200b\u4e00\u4e2a\u591a\u200b\u5c0f\u65f6\u200b\u624d\u200b\u8dd1\u200b\u5b8c\u200b\u3002
Django \u200b\u5df2\u7ecf\u200b\u63d0\u524d\u200b\u4fee\u6539\u200b\u8fc7\u200b\u4e86\u200b\uff0cbuild_container_network_str
\u200b\u73b0\u5728\u200b\u4e5f\u200b\u5305\u542b\u200b firewall=1
\u200b\u4e86\u200b\uff0c\u200b\u5e76\u200b\u56e0\u6b64\u200b\u8e29\u200b\u4e86\u200b\u4e2a\u200b\u5751\u200b\uff08\u200b\u4e0b\u9762\u200b ebtables \u200b\u90a3\u6761\u200b\uff09\u3002
\u200b\u7531\u4e8e\u200b\u6211\u4eec\u200b\u5728\u200b PVE \u200b\u4e0a\u200b\u4e3a\u200b\u865a\u62df\u673a\u200b\u90e8\u7f72\u200b\u4e86\u200b\u9632\u706b\u5899\u200b\uff0c\u200b\u8bbe\u7f6e\u200b\u4e86\u200b\u4fdd\u7559\u200b\u7aef\u53e3\u200b\u53ea\u200b\u5141\u8bb8\u200b web \u200b\u5bb9\u5668\u200b\u8bbf\u95ee\u200b\uff0c\u200b\u56e0\u6b64\u200b vlab-software \u200b\u91cc\u200b\u7684\u200b vscode
\u200b\u547d\u4ee4\u200b\u4e5f\u200b\u4e0d\u518d\u200b\u9700\u8981\u200b\u64cd\u4f5c\u200b\u4fee\u6539\u200b\u865a\u62df\u673a\u200b\u5185\u200b\u7684\u200b iptables \u200b\u4e86\u200b\uff0c\u200b\u5220\u6389\u200b\u4e86\u200b\u76f8\u5173\u200b\u4ee3\u7801\u200b\u3002
\u200b\u540c\u6837\u200b vlab-vnc
\u200b\u4e5f\u200b\u4e0d\u518d\u200b\u9700\u8981\u200b\u5904\u7406\u200b iptables\uff0c\u200b\u56e0\u6b64\u200b\u66f4\u65b0\u200b\u4e86\u200b Debian control \u200b\u548c\u200b postinst\uff0c\u200b\u5220\u6389\u200b\u4e86\u200b iptables-persistent \u200b\u7684\u200b\u4f9d\u8d56\u200b\u53ca\u200b\u64cd\u4f5c\u200b iptables \u200b\u7684\u200b\u4ee3\u7801\u200b\u3002
\u200b\u6700\u540e\u200b\u66f4\u65b0\u200b\u4e86\u200b vlab-pve-agent\uff0c\u200b\u8ba9\u200b\u5b83\u200b\u4e3a\u200b\u65b0\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u81ea\u52a8\u200b\u751f\u6210\u200b <id>.fw
\u200b\u9632\u706b\u5899\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u3002
\uff08\u200b\u4eca\u5929\u200b\u5565\u200b\u90fd\u200b\u6ca1\u5e72\u200b\uff0c\u200b\u5b9e\u9645\u200b\u5de5\u4f5c\u200b\u5df2\u7ecf\u200b\u5728\u200b 11 \u200b\u6708\u200b 16 \u200b\u65e5\u200b\u5b8c\u6210\u200b\u4e86\u200b\u3002\uff09
"},{"location":"records/2023-11-18/#cve-2023-23583","title":"CVE-2023-23583","text":"11 \u200b\u6708\u200b 16 \u200b\u65e5\u6709\u200b\u540c\u5b66\u200b\u5728\u200b vlab \u200b\u4e0a\u200b\u6d4b\u8bd5\u200b CVE-2023-23583 \u200b\u5bfc\u81f4\u200b pv11, pv13, pv14 \u200b\u4e09\u53f0\u200b host \u200b\u6545\u969c\u200b\u5e76\u200b\u81ea\u52a8\u200b\u91cd\u542f\u200b\uff0c\u200b\u7136\u540e\u200b\u79c1\u804a\u200b\u6211\u4eec\u200b\u53cd\u9988\u200b\u4e86\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u3002\u200b\u8c03\u67e5\u200b\u53d1\u73b0\u200b Intel \u200b\u5df2\u7ecf\u200b\u53d1\u5e03\u200b\u4e86\u200b\u4fee\u590d\u200b\u540e\u200b\u7684\u200b\u5fae\u7801\u200b\uff0c\u200b\u4f46\u662f\u200b Debian \u200b\u8fd8\u200b\u6ca1\u6709\u200b\u6253\u5305\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u624b\u52a8\u200b\u4e0b\u8f7d\u200b\u4e86\u200b\u7531\u200b Ubuntu \u200b\u6253\u5305\u200b\u7684\u200b\u5fae\u7801\u200b\uff08intel-microcode_3.20231114.0ubuntu0.22.04.1_amd64.deb
\uff09\u200b\u5e76\u200b dpkg -i
\u3002
\u200b\u6211\u4eec\u200b\u5bf9\u200b\u8fd9\u200b\u4e00\u6279\u200b\u673a\u5668\u200b\uff08pv9 \u200b\u5230\u200b pv14\uff09\u200b\u90fd\u200b\u8fdb\u884c\u200b\u4e86\u200b\u76f8\u540c\u200b\u7684\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u7136\u540e\u200b\u5c06\u200b pv9 \u200b\u5148\u884c\u200b\u91cd\u542f\u200b\uff0c\u200b\u786e\u8ba4\u200b\u6545\u969c\u200b\u5df2\u7ecf\u200b\u4fee\u590d\u200b\u540e\u200b\uff0c\u200b\u53d1\u5e03\u516c\u544a\u200b\u8ba1\u5212\u200b\u5728\u200b 18 \u200b\u65e5\u200b\u51cc\u6668\u200b 0 \u200b\u70b9\u200b\u91cd\u542f\u200b\u8fd0\u884c\u200b\u7740\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u7684\u200b 5 \u200b\u53f0\u200b\u673a\u5668\u200b\u3002
\u200b\u8fd9\u56de\u200b\u5077\u200b\u4e86\u200b\u4e2a\u200b\u61d2\u200b\uff0c\u200b\u5728\u200b\u81ea\u5df1\u200b\u7684\u200b\u673a\u5668\u200b\u4e0a\u7528\u200b at(8) \u200b\u5b9a\u65f6\u200b\u4efb\u52a1\u200b ssh \u200b\u5230\u200b 5 \u200b\u53f0\u200b\u8282\u70b9\u200b\u4e0a\u200b\u8fd0\u884c\u200b reboot
\uff0c\u200b\u8282\u7701\u200b\u4e86\u200b\u4eba\u5de5\u200b\u64cd\u4f5c\u200b\u7684\u200b\u65f6\u95f4\u200b\u3002
\u200b\u540c\u65f6\u200b\u4e5f\u200b\u66f4\u65b0\u200b\u4e86\u200b Django\uff0c\u200b\u5728\u200b\u865a\u62df\u673a\u200b ID \u200b\u540e\u9762\u200b\u663e\u793a\u200b\u8282\u70b9\u200b\u540d\u79f0\u200b\u3002
"},{"location":"records/2023-12-13/","title":"2023 \u200b\u5e74\u200b 12 \u200b\u6708\u200b 13 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u66ff\u6362\u200b\u4e86\u200b\u9635\u5217\u200b\u7684\u200b\u574f\u76d8\u200b\u3002
\u200b\u7531\u4e8e\u200b\u7b49\u5f85\u200b\u5907\u4ef6\u200b\u5bc4\u8fbe\u200b\uff0c\u200b\u6700\u7ec8\u200b\u82b1\u200b\u4e86\u200b\u8fd1\u200b\u4e24\u5468\u200b\u7684\u200b\u65f6\u95f4\u200b\u624d\u200b\u5b9e\u9645\u200b\u66f4\u6362\u200b\u3002\u200b\u73b0\u573a\u200b\u66f4\u6362\u200b\u4e00\u4e9b\u200b\u5907\u6ce8\u200b\uff1a
\u200b\u66ff\u6362\u200b\u540e\u200b\u9635\u5217\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u91cd\u5efa\u200b\uff0c\u200b\u5efa\u8bae\u200b\u6682\u505c\u200b\u865a\u62df\u673a\u200b\u521b\u5efa\u200b\uff1a\u200b\u4fee\u6539\u200b config.py\uff0c\u200b\u5c06\u200b TOTAL_CT_LIMIT
\u200b\u62c9\u4f4e\u200b\uff0c\u200b\u5e76\u4e14\u200b\u53d6\u6d88\u200b\u6ce8\u91ca\u200b GLOBAL_NOTIFICATION
\u200b\u7684\u200b\u503c\u200b\u5e76\u200b\u4fee\u6539\u200b\u4e3a\u200b\u901a\u77e5\u200b\u5185\u5bb9\u200b\uff0c\u200b\u4e4b\u540e\u200b\u6b63\u5e38\u200b\u5411\u200b\u7528\u6237\u200b\u53d1\u9001\u200b\u901a\u77e5\u200b\u5373\u53ef\u200b\u3002
[Desktop Entry]\nName=Vivado 2019.1\nExec=/opt/vlab/bin/vivado\nIcon=/opt/vlab/vivado/Xilinx/Vivado/2019.1/doc/images/vivado_logo.png\nTerminal=false\nType=Application\nX-Desktop-File-Install-Version=0.23\n
"},{"location":"references/pve-ids/","title":"Proxmox \u200b\u865a\u62df\u673a\u200b ID \u200b\u5206\u914d","text":"ID \u200b\u6216\u200b ID \u200b\u6bb5\u200b \u200b\u5206\u914d\u60c5\u51b5\u200b 100-199 vlab \u200b\u670d\u52a1\u200b\u5982\u200b gateway, web \u200b\u7b49\u200b 200-799 \u200b\u672a\u200b\u5206\u914d\u200b 800-899 \u200b\u6258\u7ba1\u200b\u5728\u200b vlab \u200b\u4e0a\u200b\u7684\u200b\u5176\u4ed6\u200b\u670d\u52a1\u200b\u5982\u200b USTC OJ, Verilog OJ \u200b\u7b49\u200b 900-999 vlab \u200b\u7ef4\u62a4\u200b\u5c0f\u7ec4\u200b\u81ea\u5df1\u200b\u4f7f\u7528\u200b\u7684\u200b\u865a\u62df\u673a\u200b 1000-? \u200b\u7528\u6237\u200b\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a"},{"location":"references/ustccas/","title":"\u7edf\u4e00\u200b\u8eab\u4efd\u200b\u8ba4\u8bc1\u200b\u8d44\u6599","text":""},{"location":"references/ustccas/#\u54cd\u5e94\u6837\u4f8b","title":"\u54cd\u5e94\u200b\u6837\u4f8b","text":"\u200b\u6ce8\u200b\uff1a\u200b\u975e\u200b\u539f\u59cb\u200b\u54cd\u5e94\u200b\uff0c\u200b\u5df2\u200b\u89e3\u6790\u200b\u4e3a\u200b Python dict
\uff1a
{\n 'xbm': '1',\n 'logintime': '2020-02-30 12:34:56',\n 'gid': '2201234567',\n 'ryzxztdm': '10',\n 'ryfldm': '201030000',\n 'loginip': '192.0.2.0',\n 'name': '\u200b\u5f20\u4e09\u200b',\n 'login': 'PB17000001',\n 'zjhm': 'PB17000001',\n 'glzjh': 'SA21011000\\tPB17000001',\n 'deptCode': '011',\n 'email': 'noreply@mail.ustc.edu.cn'\n}\n
\u200b\u539f\u59cb\u200b\u54cd\u5e94\u200b\u5185\u5bb9\u200b\uff08XML example\uff09 <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>\n<cas:authenticationSuccess>\n<cas:user>SA21011000</cas:user>\n<attributes>\n<cas:xbm>1</cas:xbm>\n<cas:logintime>2020-02-30 12:34:56</cas:logintime>\n<cas:gid>2201234567</cas:gid>\n<cas:ryzxztdm>10</cas:ryzxztdm>\n<cas:ryfldm>201030000</cas:ryfldm>\n<cas:loginip>192.0.2.0</cas:loginip>\n<cas:name>\u200b\u5f20\u4e09\u200b</cas:name>\n<cas:login>SA21011000</cas:login>\n<cas:zjhm>SA21011000</cas:zjhm>\n<cas:glzjh>SA21011000 PB17000001</cas:glzjh>\n<cas:deptCode>011</cas:deptCode>\n<cas:email>noreply@mail.ustc.edu.cn</cas:email>\n</attributes>\n</cas:authenticationSuccess>\n</cas:serviceResponse>\n
glzjh
\u200b\u7684\u200b\u503c\u200b\u4e0d\u200b\u5b8c\u5168\u200b\u53ef\u9760\u200b
\u200b\u6839\u636e\u200b USTCCAS \u200b\u7684\u200b\u6587\u6863\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u5c5e\u6027\u200b\u4e2d\u200b\u5305\u542b\u200b\u4e86\u200b\u7528\u6237\u200b\u6240\u6709\u200b\u7684\u200b\u5386\u53f2\u200b\u8bc1\u4ef6\u200b\u53f7\u200b\uff08\u200b\u5b66\u200b\u53f7\u200b/\u200b\u5de5\u53f7\u200b\uff09\uff0c\u200b\u4ee5\u200b \\t
\u200b\u5206\u5272\u200b\u3002
\u200b\u4f46\u662f\u200b\u5728\u200b\u5b9e\u9645\u64cd\u4f5c\u200b\u4e2d\u200b\u53d1\u73b0\u200b\u8fd9\u4e2a\u200b\u5c5e\u6027\u200b\u95ee\u9898\u200b\u6bd4\u8f83\u200b\u591a\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff08\u200b\u4ee5\u4e0b\u200b\u4f8b\u5b50\u200b\u7ecf\u8fc7\u200b\u533f\u540d\u200b\u5316\u200b\u5904\u7406\u200b\uff09\uff1a
\"BA01000000\\t00000\\tSA97000000\"
\uff0c\u200b\u7b2c\u4e00\u4e2a\u200b\u503c\u200b\u662f\u200b\u4e8c\u5341\u591a\u5e74\u200b\u524d\u200b\u7684\u200b\u535a\u58eb\u200b ID\uff0c\u200b\u800c\u200b\u6700\u65b0\u200b\u7684\u200b\u6559\u5e08\u200b\u8bc1\u4ef6\u200b\u53f7\u200b\u662f\u200b\u4e2d\u95f4\u200b\u7684\u200b\u503c\u200b\"U0000000\"
\"null\"
id,sfztm,sfzt\n1,10,\u200b\u5728\u6821\u200b\n2,20,\u200b\u79bb\u6821\u200b\uff08\u200b\u542b\u200b\u6821\u5185\u200b\u8eab\u4efd\u200b\u7ed3\u675f\u200b\uff09\n3,30,\u200b\u6821\u5185\u200b\u8eab\u4efd\u200b\u8f6c\u6362\u200b\n5,40,\u200b\u79bb\u9000\u4f11\u200b\n6,50,\"\u200b\u6682\u65f6\u200b\u79bb\u6821\u200b(\u200b\u4f11\u5b66\u200b/\u200b\u51fa\u56fd\u200b\u7b49\u200b)\"\n7,99,\u200b\u5176\u4ed6\u200b\n8,91,\u200b\u8bc1\u4ef6\u200b\u505c\u7528\u200b\u6216\u200b\u6ce8\u9500\u200b\n
"},{"location":"references/ustccas/#\u4eba\u5458\u5206\u7c7b\u7801","title":"\u4eba\u5458\u200b\u5206\u7c7b\u200b\u7801","text":"id,ryflm,ryfl\n1,101010000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u6559\u5b66\u200b\u5c97\u200b\n2,101020000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u79d1\u7814\u200b\u5c97\u200b\n3,101030000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u7ba1\u7406\u200b\u5c97\u200b\n4,101040000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u652f\u6491\u200b\u5c97\u200b\n5,101ZZ0000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u5176\u4ed6\u200b\u5c97\u200b\u6216\u200b\u672a\u660e\u200b\u5c97\u200b\n6,201010000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u79d1\u5b66\u200b\u5b66\u4f4d\u200b\u535a\u58eb\u200b\n7,201020000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u79d1\u5b66\u200b\u5b66\u4f4d\u200b\u7855\u58eb\u200b\n8,201030000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u672c\u79d1\u200b\n9,201040000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u5b66\u751f\u200b\u4e13\u79d1\u200b\n10,201ZZ0000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u5b66\u751f\u200b\u5176\u4ed6\u200b\u6216\u200b\u672a\u77e5\u200b\u5c42\u6b21\u200b\n11,202010000,\u200b\u5b66\u751f\u200b-\u200b\u4e13\u4e1a\u5b66\u4f4d\u200b\u535a\u58eb\u200b\n12,202020000,\u200b\u5b66\u751f\u200b-\u200b\u4e13\u4e1a\u5b66\u4f4d\u200b\u7855\u58eb\u200b\n13,202ZZ0000,\u200b\u5b66\u751f\u200b-\u200b\u4e13\u4e1a\u5b66\u4f4d\u200b\u5176\u4ed6\u200b\u6216\u200b\u672a\u77e5\u200b\u5c42\u6b21\u200b\n14,240030000,\u200b\u5b66\u751f\u200b-\u200b\u591c\u5927\u200b\u51fd\u6388\u200b\u57f9\u8bad\u73ed\u200b\u672c\u79d1\u200b\n15,240040000,\u200b\u5b66\u751f\u200b-\u200b\u591c\u5927\u200b\u51fd\u6570\u200b\u57f9\u8bad\u73ed\u200b\u4e13\u79d1\u200b\n16,240ZZ0000,\u200b\u5b66\u751f\u200b-\u200b\u591c\u5927\u200b\u51fd\u6570\u200b\u57f9\u8bad\u73ed\u200b\u5176\u4ed6\u200b\u6216\u200b\u672a\u77e5\u200b\u5c42\u6b21\u200b\n17,290ZZ0000,\u200b\u77ed\u671f\u57f9\u8bad\u200b\u5b66\u751f\u200b\n18,2ZZZZ0000,\u200b\u5b66\u751f\u200b-\u200b\u5176\u4ed6\u200b\u7c7b\u578b\u200b\u5b66\u751f\u200b\n19,300000000,\u200b\u535a\u58eb\u540e\u200b\n20,901000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u4e0a\u7ea7\u90e8\u95e8\u200b\u5404\u79cd\u7c7b\u578b\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b\n21,902000000,\u200b\u4ea4\u6d41\u200b\u8bbf\u95ee\u200b\u8fdb\u4fee\u200b\u4eba\u5458\u200b\n22,903000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u9080\u8bf7\u200b\u6765\u200b\u7684\u200b\u8bb2\u5ea7\u200b\u3001\u200b\u6f14\u51fa\u200b\u3001\u200b\u4ea4\u6d41\u200b\u4eba\u5458\u200b\n23,904000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u53c2\u52a0\u200b\u4f1a\u8bae\u200b\u4eba\u5458\u200b\n24,905000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u6765\u6821\u200b\u53c2\u89c2\u200b\u4eba\u5458\u200b\n25,906000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u5b66\u751f\u5bb6\u957f\u200b\n26,9ZZ000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u5176\u4ed6\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b\n27,Z01000000,\u200b\u6559\u5de5\u200b\u5bb6\u5c5e\u200b\n28,Z02000000,\u200b\u9644\u4e2d\u200b\u5b66\u751f\u200b\n29,ZZZ000000,\u200b\u5176\u4ed6\u200b\u4eba\u5458\u200b\n30,103ZZ0000,\u200b\u6559\u5de5\u200b-\u200b\u6821\u200b\u8058\u7528\u200b\u4eba\u5458\u200b\u5176\u4ed6\u200b\u5c97\u200b\u6216\u200b\u672a\u660e\u200b\u5c97\u200b\n31,180ZZ0000,\u200b\u5404\u200b\u5355\u4f4d\u200b\u81ea\u8058\u200b\u4eba\u5458\u200b\n33,190ZZ0000,\u200b\u5404\u200b\u5355\u4f4d\u200b\u4e34\u65f6\u200b\u8058\u7528\u200b\u4eba\u5458\u200b\n34,301000000,\u200b\u6821\u5185\u200b\u535a\u58eb\u540e\u200b\n35,309000000,\u200b\u4f01\u4e1a\u200b\u535a\u58eb\u540e\u200b\n
"},{"location":"servers/ct100/","title":"\u7f51\u200b\u5173\u673a\u200b (CT 100)","text":"\u200b\u7f51\u200b\u5173\u673a\u200b\u987e\u540d\u601d\u4e49\u200b\u5c31\u662f\u200b\uff08\u200b\u5bb9\u5668\u200b\u5185\u7f51\u200b\u7684\u200b\uff09\u200b\u7f51\u5173\u200b\uff0c\u200b\u540c\u65f6\u200b\u63a5\u5165\u200b\u4e86\u200b\u7ba1\u7406\u200b\u5185\u200b\u7f51\u200b\uff08vmbr2
/ eth2
/ 172.30.0.1/24
\uff09\u3001\u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b\uff08vmbr1
/ eth1
/ 172.31.0.1/16
\uff09\u200b\u548c\u200b\u6821\u56ed\u7f51\u200b\uff08vmbr0
/ eth0
/ 202.38.75.252/24
\uff09\uff0c\u200b\u901a\u8fc7\u200b NAT \u200b\u63d0\u4f9b\u200b\u5185\u200b\u7f51\u200b\u673a\u5668\u200b\u7684\u200b\u5bf9\u5916\u200b\u8bbf\u95ee\u200b\u4ee5\u53ca\u200b\u7279\u6b8a\u200b\u9700\u6c42\u200b\u7684\u200b\u7aef\u53e3\u200b\u8f6c\u53d1\u200b\u3002
\u200b\u8be5\u200b\u5bb9\u5668\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u56db\u6838\u200b 8G\uff0c\u200b\u4ec5\u200b\u8fd0\u884c\u200b\u4e86\u200b\u57fa\u672c\u200b\u7cfb\u7edf\u200b\u7ec4\u4ef6\u200b\uff08\u200b\u4e3b\u8981\u200b\u662f\u200b iptables\u3001radvd \u200b\u548c\u200b WireGuard\uff09\u3002
"},{"location":"servers/ct100/#\u5185\u7f51\u4e0a\u7f51\u8f6c\u53d1","title":"\u5185\u200b\u7f51\u4e0a\u7f51\u200b\u8f6c\u53d1","text":"\u200b\u5185\u200b\u7f51\u200b\u865a\u62df\u673a\u200b\uff08172.31.0.0/16\uff0c172.30.0.0/24\uff09\u200b\u7684\u200b\u6240\u6709\u200b\u5230\u200b\u5916\u7f51\u200b\u6d41\u91cf\u200b\u90fd\u200b\u901a\u8fc7\u200b\u672c\u200b\u673a\u200b\u8f6c\u53d1\u200b\uff0c\u200b\u8f6c\u53d1\u200b\u901a\u8fc7\u200b iptables \u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7531\u200b\u5185\u6838\u200b\u5b8c\u6210\u200b\uff0c\u200b\u56e0\u6b64\u200b\u672c\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7684\u200b iptables \u200b\u89c4\u5219\u200b\u5341\u5206\u200b\u91cd\u8981\u200b\u3002\u200b\u4e0b\u9762\u200b\u89e3\u91ca\u200b\u8bbe\u7f6e\u200b\u6587\u4ef6\u200b iptables.sh
\u3002
Tip
iptables.sh
\u200b\u66fe\u7ecf\u200b\u4f4d\u4e8e\u200b /root
\u200b\u4e0b\u200b\uff0c\u200b\u5728\u200b 2020 \u200b\u5e74\u200b 11 \u200b\u6708\u200b rootfs \u200b\u635f\u574f\u200b\u540e\u200b\u4e22\u5931\u200b\u3002
\u200b\u73b0\u5728\u200b\u7684\u200b\u505a\u6cd5\u200b\u662f\u200b\u76f4\u63a5\u200b\u5728\u200b /root/iptables/
\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u624b\u52a8\u200b\u7ef4\u62a4\u200b rules.v4
/ rules.v6
\u200b\u7b49\u200b\u6587\u4ef6\u200b\uff0c\u200b\u7136\u540e\u200b\u4f7f\u7528\u200b apply.sh
\u200b\u66f4\u65b0\u200b\u89c4\u5219\u200b\u3002
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u53ef\u80fd\u200b\u8fc7\u65f6\u200b\uff0c\u200b\u8bf7\u4ee5\u200b\u7cfb\u7edf\u200b\u5185\u200b\u7684\u200b\u6587\u4ef6\u200b\u4e3a\u51c6\u200b
"},{"location":"servers/ct100/#\u9632\u706b\u5899\u90e8\u5206","title":"\u9632\u706b\u5899\u200b\u90e8\u5206","text":"### IPv4 ###\niptables -P INPUT ACCEPT\niptables -P FORWARD ACCEPT\niptables -P OUTPUT ACCEPT\niptables -F\niptables -X\niptables -N VLAB\n\niptables -A VLAB -i lo -j ACCEPT\niptables -A VLAB -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\niptables -A VLAB -p tcp --dport 22 -j ACCEPT\niptables -A VLAB -p tcp --dport 1024 ! -s 202.38.75.226 -j DROP\niptables -A INPUT -i vmbr+ -j VLAB\n
\u200b\u5f00\u5934\u200b\u7684\u200b\u90e8\u5206\u200b 1-6 \u200b\u884c\u200b\u521d\u59cb\u5316\u200b iptables \u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5230\u200b\u8f6c\u53d1\u200b\u7684\u200b\u6d41\u91cf\u200b\u8d70\u200b\u7684\u200b\u662f\u200b FORWARD \u200b\u94fe\u200b\u800c\u200b\u4e0d\u662f\u200b INPUT \u200b\u94fe\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6709\u200b -P FORWARD ACCEPT
\u3002\u200b\u7b2c\u200b 7 \u200b\u884c\u200b\u521b\u5efa\u200b VLAB \u200b\u94fe\u653e\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u7684\u200b rules\u3002
9-13 \u200b\u884c\u200b\u8fd9\u90e8\u5206\u200b\u540c\u200b\u9632\u706b\u5899\u200b\u3002\u200b\u4e0b\u9762\u200b\u7684\u200b 15 \u200b\u884c\u200b\u4e5f\u200b\u76f8\u540c\u200b\u3002
"},{"location":"servers/ct100/#\u8f6c\u53d1\u9632\u706b\u5899\u90e8\u5206","title":"\u8f6c\u53d1\u200b\u9632\u706b\u5899\u200b\u90e8\u5206","text":"#iptables -A FORWARD -p udp -m state --ctstate NEW -j NFLOG --nflog-prefix '[vlab]'\niptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\niptables -A FORWARD -p tcp --dport 25 -j DROP # Block SMTP\niptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 -m state --state NEW -j NFLOG --nflog-prefix '[vlab]'\niptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 --tcp-flag FIN FIN -j NFLOG --nflog-prefix '[vlab]'\niptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 --tcp-flag RST RST -j NFLOG --nflog-prefix '[vlab]'\niptables -A FORWARD -i eth0 -o eth1 -j ACCEPT\niptables -A FORWARD -d 10.0.0.0/8 -j DROP\niptables -A FORWARD -d 172.16.0.0/12 -j DROP\niptables -A FORWARD -d 192.168.0.0/16 -j DROP\niptables -A FORWARD -d 202.38.64.58/31 -j DROP\niptables -A FORWARD -d 202.38.96.193 -j DROP\niptables -A FORWARD -d 210.45.224.65 -j DROP\niptables -Z\n
16 \u200b\u884c\u200b\u5c4f\u853d\u200b\u8fde\u63a5\u200b\u8fdc\u7aef\u200b 25\uff08SMTP\uff09\u200b\u7aef\u53e3\u200b\uff0c\u200b\u9632\u6b62\u200b\u6709\u4eba\u200b\u53d1\u200b\u5783\u573e\u90ae\u4ef6\u200b\uff0c\u200b\u8fd9\u200b\u548c\u200b LUG VPN \u200b\u4e00\u6837\u200b\u3002\u200b\u73b0\u5728\u200b\u7684\u200b\u4e92\u8054\u7f51\u200b\u5bf9\u200b\u5783\u573e\u90ae\u4ef6\u200b\u5f88\u200b\u654f\u611f\u200b\uff0c\u200b\u5f88\u200b\u5bb9\u6613\u200b\u56e0\u6b64\u200b\u7ed9\u200b IP \u200b\u5730\u5740\u200b\u751a\u81f3\u200b\u6821\u56ed\u7f51\u200b AS \u200b\u5e26\u6765\u200b\u4e0d\u597d\u200b\u7684\u200b\u58f0\u8a89\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5c4f\u853d\u6389\u200b\u3002
17-19 \u200b\u884c\u200b\u5c1d\u8bd5\u200b\u8bb0\u5f55\u200b\u6bcf\u4e2a\u200b TCP \u200b\u8fde\u63a5\u200b\uff0c\u200b\u7531\u4e8e\u200b LXC \u200b\u91cc\u200b\u7684\u200b iptables \u200b\u65e0\u6cd5\u8bbf\u95ee\u200b rsyslog1\uff0c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b ulogd2 \u200b\u7684\u200b\u529e\u6cd5\u200b2\u3002\u200b\u4e0d\u8fc7\u200b\u60c5\u51b5\u200b\u662f\u200b\uff0c\u200b\u7531\u4e8e\u200b\u6570\u636e\u91cf\u200b\u592a\u200b\u5927\u200b\uff0culogd2.service
\u200b\u73b0\u5728\u200b\u88ab\u200b\u5173\u6389\u200b\u4e86\u200b\uff08LOL...\uff09
21-23 \u200b\u884c\u200b\u5c4f\u853d\u200b\u5185\u200b\u7f51\u200b\u8bbf\u95ee\u200b\uff0c\u200b\u867d\u7136\u200b\u8fd9\u4e9b\u200b IP \u200b\u6bb5\u200b\u4e5f\u200b\u6709\u200b\u4e00\u4e9b\u200b\u6821\u56ed\u7f51\u200b\u8def\u7531\u200b\uff0c\u200b\u4e0d\u8fc7\u200b\u8fd9\u200b\u4e0d\u662f\u200b vlab \u200b\u7684\u200b\u670d\u52a1\u200b\u76ee\u7684\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e00\u8d77\u200b\u5c4f\u853d\u6389\u200b\u4e5f\u200b\u65e0\u6240\u8c13\u200b\u3002
24-26 \u200b\u884c\u200b\u5c4f\u853d\u200b\u7f51\u7edc\u200b\u901a\u200b\uff0c\u200b\u907f\u514d\u200b\u6211\u4eec\u200b\u7684\u200b\u51fa\u53e3\u200b IP \u200b\u8bbe\u7f6e\u200b\u88ab\u200b\u6539\u200b\uff08\u200b\u8fd9\u4e2a\u200b\u53c8\u200b\u548c\u200b LUG VPN \u200b\u4e00\u6837\u200b\uff09\u3002\u200b\u7f51\u7edc\u200b\u901a\u200b\u4e00\u5171\u200b\u6709\u200b 4 \u200b\u4e2a\u200b IP\uff0c\u200b\u5176\u4e2d\u200b 202.38.64.{58,59}
\u200b\u662f\u200b\u76f8\u90bb\u200b\u7684\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5408\u5e76\u200b\u8d77\u6765\u200b\u7528\u200b\u4e00\u4e2a\u200b /31
\u200b\u7684\u200b\u7f51\u6bb5\u200b\u505a\u200b\u89c4\u5219\u200b\u3002
iptables -t nat -F PREROUTING\niptables -t nat -F POSTROUTING\n#iptables -t nat -X\niptables -t nat -N VLAB_STUDENT >/dev/null 2>&1\niptables -t nat -A PREROUTING -i eth1 -d 202.38.64.58/31 -j DNAT --to-destination 202.38.75.226\niptables -t nat -A PREROUTING -i eth1 -d 202.38.96.193/32 -j DNAT --to-destination 202.38.75.226\niptables -t nat -A PREROUTING -i eth1 -d 210.45.224.65/32 -j DNAT --to-destination 202.38.75.226\niptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 10001:29999 -j VLAB_STUDENT\niptables -t nat -A POSTROUTING -s 172.30.0.0/15 -j MASQUERADE\niptables -t nat -A POSTROUTING -s 10.38.79.0/24 -j MASQUERADE\n#iptables -t nat -Z\niptables-save -f /etc/iptables/rules.v4\n
NAT \u200b\u90e8\u5206\u200b\u6211\u4eec\u200b\u53ea\u7528\u200b\u5230\u200b\u4e86\u200b PREROUTING \u200b\u548c\u200b POSTROUTING \u200b\u4e24\u4e2a\u200b\u94fe\u200b\uff08\u200b\u8fd9\u662f\u200b\u5178\u578b\u200b\u6a21\u5f0f\u200b\uff09\u3002
32 \u200b\u884c\u200b\u521b\u5efa\u200b VLAB_STUDENT
\u200b\u94fe\u200b\u7ed9\u200b pfserver \u200b\u7a0b\u5e8f\u200b\u7528\u200b\u3002
33-35 \u200b\u884c\u200b\u628a\u200b\u5c1d\u8bd5\u200b\u8bbf\u95ee\u200b\u7f51\u7edc\u200b\u901a\u200b\u7684\u200b\u6d41\u91cf\u200b\u90fd\u200b\u52ab\u6301\u200b\u5230\u200b web \u200b\u5bb9\u5668\u200b\u4e2d\u200b\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u80fd\u200b\u663e\u793a\u200b\u201c\u200b\u7f51\u7edc\u200b\u901a\u200b\u88ab\u200b\u5c4f\u853d\u200b\u201d\u200b\u7684\u200b\u6d88\u606f\u200b\u4e86\u200b\u3002
36 \u200b\u884c\u200b\u63d0\u4f9b\u200b VLAB_STUDENT
\u200b\u94fe\u200b\u7684\u200b\u5165\u53e3\u200b\uff0c\u200b\u8be5\u200b\u5165\u53e3\u200b\u9650\u5236\u200b\u4e86\u200b\u53ea\u6709\u200b 10001:29999 \u200b\u4e4b\u95f4\u200b\uff08inclusive\uff09\u200b\u7684\u200b\u7aef\u53e3\u200b\u80fd\u591f\u200b\u88ab\u200b\u8f6c\u53d1\u200b\u3002
37 \u200b\u662f\u200b\u51fa\u53e3\u200b NAT\uff0c\u200b\u5bf9\u4e8e\u200b\u8f6c\u53d1\u200b\u51fa\u53bb\u200b\u7684\u200b\u6d41\u91cf\u200b\uff0c\u200b\u6839\u636e\u200b\u6e90\u5730\u5740\u200b\u8fdb\u884c\u200b NAT\u3002\uff08POSTROUTING \u200b\u94fe\u4e2d\u200b\u6ca1\u6709\u200b -i
\u200b\u53ef\u7528\u200b\uff09\uff0c38 \u200b\u884c\u200b\u7c7b\u4f3c\u200b\uff08\u200b\u6b64\u5904\u200b\u5ffd\u7565\u200b\uff09
ip link set dev eth0 mtu 1500
\uff08\u200b\u51fa\u4e8e\u200b\u672a\u77e5\u200b\u539f\u56e0\u200b\uff0c\u200b\u65b0\u5efa\u200b\u65f6\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u662f\u200b 1450\uff0c\u200b\u914d\u7f6e\u200b\u9519\u8bef\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u5b66\u751f\u200b\u5bb9\u5668\u200b\u770b\u8d77\u6765\u200b\u7f51\u7edc\u200b\u6b63\u5e38\u200b\uff0c\u200b\u4f46\u662f\u200b\u7f51\u7edc\u200b\u4f1a\u200b\u5e38\u5e38\u200b\u5361\u4f4f\u200b\uff09
\u200b\u76ee\u524d\u200b\u6b64\u200b\u670d\u52a1\u5668\u200b\u6240\u6709\u200b\u7aef\u53e3\u200b\u7684\u200b MTU \u200b\u90fd\u200b\u5e94\u8be5\u200b\u4e3a\u200b 1500\u3002
"},{"location":"servers/ct100/#radvd","title":"radvd","text":"radvd \u200b\u662f\u200b IPv6 \u200b\u7684\u200b Router Advertisement Daemon\uff0c\u200b\u7528\u4e8e\u200b\u5411\u200b\u865a\u62df\u673a\u200b\u63d0\u4f9b\u200b IPv6 RA \u200b\u4f7f\u5f97\u200b\u865a\u62df\u673a\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b SLAAC \u200b\u81ea\u52a8\u200b\u914d\u7f6e\u200b IPv6 \u200b\u7f51\u7edc\u200b\u3002
/etc/radvd.conf
\u200b\u914d\u7f6e\u200b\u5982\u4e0b\u200b\uff1a
interface eth1\n{\n AdvSendAdvert on;\n MinRtrAdvInterval 3;\n MaxRtrAdvInterval 10;\n\n AdvDefaultPreference medium;\n AdvHomeAgentFlag off;\n\n prefix 2001:da8:d800:4bfc::/64\n {\n AdvOnLink on;\n AdvAutonomous on;\n AdvRouterAddr on;\n };\n};\n
"},{"location":"servers/ct100/#adguardhome","title":"AdGuardHome","text":"\u200b\u7f51\u5173\u200b\u4e0a\u200b\u8fd0\u884c\u200b AdGuardHome \u200b\u66ff\u4ee3\u200b\u66fe\u7ecf\u200b\u7684\u200b bind9\uff0c\u200b\u56e0\u4e3a\u200b bind9 \u200b\u5185\u5b58\u200b\u5360\u7528\u200b\u592a\u9ad8\u4e14\u200b\u7ef4\u62a4\u200b\u4e0d\u6613\u200b\uff0c\u200b\u800c\u200b AGH \u200b\u5c0f\u5de7\u200b\u8f7b\u4fbf\u200b\uff0c\u200b\u4f5c\u4e3a\u200b\u5c40\u57df\u7f51\u200b\u7684\u200b\u9012\u5f52\u200b DNS \u200b\u6bd4\u200b bind9 \u200b\u66f4\u200b\u5408\u9002\u200b\u3002
\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b GitHub \u200b\u4e0a\u200b\u7684\u200b \u200b\u5f00\u200b \u200b\u6e90\u200b \u200b\u9879\u200b \u200b\u76ee\u200b \u200b\u5728\u200b AGH \u200b\u4e0a\u200b\u5b9e\u73b0\u200b\u4e00\u4e9b\u200b\u9ad8\u7ea7\u200b\u7684\u200b\u89e3\u6790\u200b\u529f\u80fd\u200b\u3002
"},{"location":"servers/ct100/#\u8fc7\u65f6\u5185\u5bb9bind9","title":"\u8fc7\u65f6\u200b\u5185\u5bb9\u200b\uff1aBind9","text":"\u200b\u7f51\u5173\u200b\u7684\u200b bind9 \u200b\u8d1f\u8d23\u200b\u5904\u7406\u200b\u5b66\u751f\u200b\u673a\u200b\u7684\u200b DNS \u200b\u8bf7\u6c42\u200b\uff0c\u200b\u8f6c\u53d1\u7ed9\u200b\u5b66\u6821\u200b DNS\uff08\u200b\u6709\u200b 20 QPS/IP \u200b\u7684\u200b\u9650\u5236\u200b\uff09\uff0c\u200b\u5e76\u200b\u7f13\u5b58\u200b\u76f8\u5173\u200b\u7ed3\u679c\u200b\u3002
\u200b\u7279\u522b\u200b\u5730\u200b\uff0c\u200b\u5173\u95ed\u200b\u4e86\u200b DNSSEC \u200b\u9a8c\u8bc1\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u67d0\u4e9b\u200b\u57df\u540d\u200b\u628a\u200b CNAME \u200b\u914d\u7f6e\u200b\u5728\u200b\u4e86\u200b\u6839\u200b\u57df\u540d\u200b\u4e0a\u200b\uff08\u200b\u6bd4\u5982\u8bf4\u200b gitee.com
\uff09\u200b\u4f1a\u200b\u5bfc\u81f4\u200b bind9 \u200b\u51fa\u9519\u200b\u3002\u200b\u76f8\u5173\u200b\u53c2\u6570\u200b\u53ef\u4ee5\u200b\u5728\u200b named.conf.options
\u200b\u4e2d\u200b\u8bbe\u7f6e\u200b\u3002
\u200b\u4e3b\u200b\u6761\u76ee\u200b\uff1aVlab Dev VPN
"},{"location":"servers/ct100/#\u6545\u969c","title":"\u6545\u969c","text":"2020 \u200b\u5e74\u200b 11 \u200b\u6708\u200b 16 \u200b\u65e5\u200b\u53d1\u73b0\u200b\u8be5\u200b\u5bb9\u5668\u200b\u65e0\u6cd5\u200b\u767b\u5f55\u200b\uff0c\u200b\u8fdb\u4e00\u6b65\u200b\u68c0\u67e5\u200b\u53d1\u73b0\u200b\u5176\u200b rootfs \u200b\u5df2\u200b\u5b8c\u5168\u200b\u635f\u574f\u200b\u65e0\u6cd5\u200b\u6062\u590d\u200b\u3002\u200b\u7531\u4e8e\u200b iptables \u200b\u89c4\u5219\u200b\u662f\u200b\u8fd0\u884c\u200b\u5728\u200b\u5185\u6838\u200b\u4e2d\u200b\u7684\u200b\uff0c\u200b\u5176\u200b\u671f\u671b\u200b\u529f\u80fd\u200b\uff08\u200b\u4f5c\u4e3a\u200b\u7f51\u5173\u200b\uff09\u200b\u6ca1\u6709\u200b\u53d7\u5230\u200b\u5f71\u54cd\u200b\u3002\u200b\u8003\u8651\u200b\u5230\u200b\u5931\u63a7\u200b\u7684\u200b\u5371\u5bb3\u200b\uff08\u200b\u8be5\u200b\u5bb9\u5668\u200b\u4e0d\u80fd\u200b\u91cd\u542f\u200b\uff0c\u200b\u5426\u5219\u200b\u5c31\u200b\u518d\u4e5f\u200b\u5f00\u200b\u4e0d\u200b\u8d77\u6765\u200b\u4e86\u200b\uff09\uff0c\u200b\u5df2\u200b\u4ece\u200b\u8fd8\u200b\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b namespace \u200b\u4e2d\u200b\u63d0\u53d6\u200b\u51fa\u200b iptables \u200b\u89c4\u5219\u200b\uff0c\u200b\u5e76\u200b\u91cd\u5efa\u200b\u4f5c\u4e3a\u200b\u66ff\u4ee3\u200b\u3002\u200b\u65b0\u200b\u7684\u200b CT 100 \u200b\u5c06\u200b rootfs \u200b\u7f29\u5c0f\u200b\u5230\u200b\u4e86\u200b 4 GB\uff0c\u200b\u914d\u7f6e\u200b\u597d\u200b\u4e86\u200b iptables-persistent \u200b\u548c\u200b radvd\u3002
\u200b\u4e8b\u540e\u200b\u67e5\u660e\u200b\u6545\u969c\u200b\u539f\u56e0\u200b\u4e3a\u200b\uff0cPVE \u200b\u6d4b\u8bd5\u200b\u8282\u70b9\u200b\u672a\u200b\u52a0\u5165\u200b\u96c6\u7fa4\u200b\uff0c\u200b\u4f46\u662f\u200b\u4f7f\u7528\u200b\u4e86\u200b\u76f8\u540c\u200b\u7684\u200b LVM \u200b\u5b58\u50a8\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u5728\u200b\u521b\u5efa\u200b/\u200b\u5220\u9664\u200b LVM \u200b\u5377\u65f6\u200b\uff0cLVM \u200b\u6ca1\u6709\u200b\u6b63\u786e\u200b\u88ab\u200b\u9501\u5b9a\u200b\u3002\u200b\u5728\u200b\u6d4b\u8bd5\u200b\u8282\u70b9\u200b\u5220\u9664\u200b\u5176\u4e0a\u200b\u7684\u200b CT 100 \u200b\u65f6\u200b\uff0c\u200b\u51fa\u73b0\u200b\u6df7\u4e71\u200b\u3002
Logging from iptables to rsyslog inside container fails. - Linux Continers Mailing Lists\u00a0\u21a9
iptables logging inside LXC containers - Proxmox Support Forum\u00a0\u21a9
\u200b\u8fd9\u4e2a\u200b\u5bb9\u5668\u200b\u662f\u200b vlab \u200b\u5bf9\u5916\u200b\u670d\u52a1\u200b\u7684\u200b\u4e3b\u8981\u200b\u573a\u6240\u200b\uff0c\u200b\u4e0a\u9762\u200b\u8fd0\u884c\u200b\u4e86\u200b\u6211\u4eec\u200b\u7684\u200b\u5404\u79cd\u200b\u7a0b\u5e8f\u200b\u3002
\u200b\u8be5\u200b\u5bb9\u5668\u200b\u63a5\u5165\u200b\u6821\u56ed\u7f51\u200b\uff08vmbr0
/ eth0
/ 202.38.75.226/24
\uff0c\u200b\u4e14\u200b\u8be5\u200b IP \u200b\u662f\u200b vlab.ustc.edu.cn
\u200b\u57df\u540d\u200b\u6307\u5411\u200b\u7684\u200b\uff09\u3001\u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b\uff08vmbr1
/ eth1
/ 172.31.0.2/16
\uff09\u200b\u548c\u200b\u7ba1\u7406\u200b\u5185\u200b\u7f51\u200b\uff08vmbr2
/ eth2
/ 172.30.0.2/24
\uff09\uff0c\u200b\u901a\u8fc7\u200b\u6821\u56ed\u7f51\u200b\u5bf9\u5916\u200b\u63d0\u4f9b\u200b Web \u200b\u670d\u52a1\u200b\u3001VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u670d\u52a1\u200b\u548c\u200b SSH \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u670d\u52a1\u200b\uff0c\u200b\u901a\u8fc7\u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b\u8fde\u63a5\u200b\u5176\u4ed6\u200b\u865a\u62df\u673a\u200b\u3002\u200b\u5c3d\u7ba1\u200b\u672c\u200b\u5bb9\u5668\u200b\u63a5\u5165\u200b\u4e86\u200b\u4e09\u4e2a\u200b\u7f51\u7edc\u200b\uff0c\u200b\u4f46\u662f\u200b\u4e0d\u200b\u7528\u4f5c\u200b\u8f6c\u53d1\u200b\u3002
\u200b\u7531\u4e8e\u200b\u8fd9\u4e2a\u200b\u5bb9\u5668\u200b\u7684\u200b 22 \u200b\u7aef\u53e3\u200b\u7528\u4f5c\u200b SSH \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u4e86\u200b\uff0c\u200b\u56e0\u6b64\u200b\u5b83\u200b\u81ea\u5df1\u200b\u7684\u200b sshd \u200b\u5f00\u200b\u5728\u200b 179 \u200b\u7aef\u53e3\u200b\u4e0a\u200b\u3002
"},{"location":"servers/ct101/#ssl","title":"SSL \u200b\u8bc1\u4e66","text":"\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b acme.sh \u200b\u7533\u8bf7\u200b\u53ca\u200b\u66f4\u65b0\u200b SSL \u200b\u8bc1\u4e66\u200b\u3002
acme.sh \u200b\u5b89\u88c5\u200b\u5728\u200b /etc/acme.sh
\uff0c\u200b\u5b89\u88c5\u200b\u6b65\u9aa4\u200b\u5982\u4e0b\u200b\uff1a
git clone https://github.com/acmesh-official/acme.sh.git\ncd acme.sh\n./acme.sh --install --home /etc/acme.sh --accountemail vlab@ustc.edu.cn\n
\u200b\u7533\u8bf7\u200b\u8bc1\u4e66\u200b\u7684\u200b\u547d\u4ee4\u200b\u5982\u4e0b\u200b\uff1a
cd /etc/acme.sh\n./acme.sh --issue \\\n -d vlab.ustc.edu.cn \\\n -d file.vlab.ustc.edu.cn \\\n -d bbs.vlab.ustc.edu.cn \\\n -w /var/www\n
\u200b\u5176\u4e2d\u200b /var/www/.well-known
\u200b\u76ee\u5f55\u200b\u63d0\u524d\u200b\u5efa\u200b\u597d\u200b\uff0c\u200b\u5e76\u4e14\u200b\u9700\u8981\u200b\u7533\u8bf7\u200b\u8bc1\u4e66\u200b\u7684\u200b\u57df\u540d\u200b\u5bf9\u5e94\u200b\u7684\u200b Nginx server
\u200b\u5757\u200b\u5305\u542b\u200b\u4e00\u884c\u200b include /etc/nginx/snippets/well-known
\u3002\u200b\u4f5c\u4e3a\u200b\u53c2\u8003\u200b\uff0c\u200b\u8be5\u200b\u6587\u4ef6\u200b\u7684\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
location /.well-known {\n access_log off;\n root /var/www;\n}\n
"},{"location":"servers/ct101/#\u66f4\u65b0\u4e0e\u90e8\u7f72","title":"\u66f4\u65b0\u200b\u4e0e\u200b\u90e8\u7f72","text":"\u200b\u9700\u8981\u200b\u4f7f\u7528\u200b SSL \u200b\u8bc1\u4e66\u200b\u7684\u200b\u670d\u52a1\u200b\u4e3b\u8981\u200b\u662f\u200b Nginx \u200b\u548c\u200b vnc-multiplexer\u3002\u200b\u7531\u4e8e\u200b acme.sh \u200b\u4e0d\u200b\u63a8\u8350\u200b\u76f4\u63a5\u200b\u4ece\u200b /etc/acme.sh
\u200b\u76ee\u5f55\u200b\u4e2d\u200b\u4f7f\u7528\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u7528\u200b acme.sh --install-cert
\u200b\u547d\u4ee4\u200b\u5c06\u200b\u8bc1\u4e66\u200b\u5b89\u88c5\u200b\u5230\u200b /etc/ssl/private
\u200b\u76ee\u5f55\u200b\u4e2d\u200b\uff0c\u200b\u5e76\u200b\u6307\u5b9a\u200b --reloadcmd
\u200b\u6765\u200b reload \u200b\u76f8\u5173\u200b\u670d\u52a1\u200b\uff1a
# Main cert is used by both services\n/etc/acme.sh/acme.sh --install-cert \\\n -d vlab.ustc.edu.cn \\\n --key-file /etc/ssl/private/vlab.ustc.edu.cn.key\\\n --fullchain-file /etc/ssl/private/vlab.ustc.edu.cn.fullchain.cer \\\n --reloadcmd \"systemctl reload nginx vnc-multiplexer\"\n\n# Auxilary certs are used by Nginx only\n/etc/acme.sh/acme.sh --install-cert \\\n -d soc.ustc.edu.cn \\\n --key-file /etc/ssl/private/soc.ustc.edu.cn.key \\\n --fullchain-file /etc/ssl/private/soc.ustc.edu.cn.fullchain.cer \\\n --reloadcmd \"systemctl reload nginx\"\n/etc/acme.sh/acme.sh --install-cert \\\n -d verilogoj.ustc.edu.cn \\\n --key-file /etc/ssl/private/verilogoj.ustc.edu.cn.key \\\n --fullchain-file /etc/ssl/private/verilogoj.ustc.edu.cn.fullchain.cer \\\n --reloadcmd \"systemctl reload nginx\"\n\n# For PVE hosts to pick up with cron\n/etc/acme.sh/acme.sh --install-cert \\\n -d ibuglab.com \\\n --key-file /etc/ssl/private/ibuglab.com/ibuglab.com.key \\\n --fullchain-file /etc/ssl/private/ibuglab.com/fullchain.cer\n
"},{"location":"servers/ct101/#web","title":"Django web \u200b\u5e94\u7528\u200b\u4e0e\u200b Nginx","text":"\u200b\u6587\u6863\u200b\u8bb0\u5f55\u200b\u5728\u200b Django \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\uff0c\u200b\u89c1\u200b https://github.com/USTC-vlab/cslab/tree/master/docs\u3002
Nginx \u200b\u90e8\u5206\u200b\u672a\u5b8c\u5f85\u7eed\u200b\u3002
"},{"location":"servers/ct101/#vnc-unified-login","title":"VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55","text":"\u200b\u672a\u5b8c\u5f85\u7eed\u200b
"},{"location":"servers/ct101/#ssh-unified-login","title":"SSH \u200b\u7edf\u4e00\u200b\u767b\u5f55","text":"\u200b\u672a\u5b8c\u5f85\u7eed\u200b
"},{"location":"servers/ct101/#code-server","title":"\u7f51\u9875\u200b\u7248\u200b VS Code","text":"\u200b\u7f51\u9875\u200b\u7248\u200b VS Code \u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u5728\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\u5185\u200b\u8fd0\u884c\u200b\u7684\u200b cdr/code-server\uff0c\u200b\u5e76\u200b\u5728\u200b\u524d\u7aef\u200b\u901a\u8fc7\u200b Nginx \u200b\u53cd\u4ee3\u200b\u5728\u200b /vscode/
\u200b\u4e0b\u200b\u3002\u200b\u7531\u4e8e\u200b\u6240\u6709\u200b\u7528\u6237\u200b\u8bbf\u95ee\u200b\u7684\u200b\u90fd\u200b\u662f\u200b /vscode/
\u200b\u8fd9\u200b\u4e00\u4e2a\u200b\u8def\u5f84\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u9760\u200b Cookie \u200b\u6765\u200b\u9274\u6743\u200b\u53ca\u200b\u533a\u5206\u200b\u7528\u6237\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u3002
\u200b\u7531\u4e8e\u200b\u6211\u4eec\u200b\u6ca1\u6709\u200b\u4f7f\u7528\u200b\u5b8c\u6574\u200b\u7684\u200b OpenResty \u200b\u5957\u88c5\u200b\uff0c\u200b\u5728\u200b Lua \u200b\u811a\u672c\u200b\u91cc\u200b\u8fdb\u884c\u200b HTTP \u200b\u8bf7\u6c42\u200b\u4e0d\u592a\u200b\u73b0\u5b9e\u200b\uff0c\u200b\u800c\u4e14\u200b\u8fd9\u6837\u200b\u505a\u200b\u6027\u80fd\u200b\u4e5f\u200b\u5341\u5206\u200b\u7cdf\u7cd5\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u5c06\u200b\u7528\u6237\u200b\u7684\u200b\u865a\u62df\u673a\u200b IP \u200b\u548c\u200b\u8fc7\u671f\u200b\u65f6\u95f4\u200b\u6233\u200b\u4e00\u8d77\u200b\u5b58\u5728\u200b Cookie \u200b\u91cc\u200b\uff0c\u200b\u5e76\u200b\u5bf9\u200b Cookie \u200b\u7b7e\u540d\u200b\u3002\u200b\u5f53\u200b\u7528\u6237\u200b\u8bbf\u95ee\u200b Django \u200b\u540e\u200b\u7aef\u7684\u200b\u201c\u200b\u4f7f\u7528\u200b VS Code\u201d\u200b\u8fd9\u4e2a\u200b\u63a5\u53e3\u200b\u65f6\u200b\uff0c\u200b\u63a5\u53e3\u200b\u4f1a\u4e3a\u200b\u7528\u6237\u200b\u8bbe\u7f6e\u200b\u4e0a\u200b\u8fd9\u6837\u200b\u7684\u200b\u4e00\u4e2a\u200b Cookie \u200b\u5e76\u200b\u8df3\u8f6c\u200b\u5230\u200b /vscode/
\uff1a
ngt=172.31.0.1/1612345678+0123456789abcdef0123456789abcdef\n
\u200b\u8be5\u200b Cookie \u200b\u53d6\u540d\u200b ngt\uff08NGinx Target\uff0c\u200b\u5176\u5b9e\u200b\u5e76\u200b\u4e0d\u662f\u200b\u4e00\u4e2a\u200b\u5f88\u200b\u597d\u200b\u7684\u200b\u547d\u540d\u200b\uff09\uff0c\u200b\u683c\u5f0f\u200b\u662f\u200b IP/timestamp+signature
\uff0c\u200b\u5176\u4e2d\u200b\u7b7e\u540d\u200b\u503c\u200b\u662f\u200b IP/timestamp
\u200b\u90e8\u5206\u200b\u7684\u200b HMAC-SHA1 \u200b\u503c\u200b\uff0c\u200b\u5bf9\u5e94\u200b\u7684\u200b secret \u200b\u5206\u522b\u200b\u4f4d\u4e8e\u200b Django \u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e2d\u200b\u548c\u200b Nginx \u200b\u7684\u200b Lua \u200b\u811a\u672c\u200b\u4e2d\u200b\u3002
\u200b\u8d1f\u8d23\u200b\u9274\u6743\u200b\u53ca\u200b\u8fd4\u56de\u200b Nginx \u200b\u53c2\u6570\u200b\u7684\u200b Lua \u200b\u4ee3\u7801\u200b\u5982\u4e0b\u200b\uff1a
-- vim:filetype=lua:\n\nlocal key = ngx.var.cookie_ngt -- NGinx Target\n\nif key == nil then\n return \"missing\"\nend\n\nlocal m = ngx.re.match(key, \"^\\\"?([0-9.]*)/([0-9]*)\\\\+([0-9a-f]*)\\\"?$\", \"io\")\nif m == nil then\n return \"invalid\"\nend\nlocal payload = m[1] .. \"/\" .. m[2]\nlocal signature = m[3]\n\n--local str = require \"resty.string\"\nfunction to_hex(str)\n return str:gsub(\".\", function(c) return string.format(\"%02x\", c:byte(1)) end)\nend\n\nlocal hmac = to_hex(ngx.hmac_sha1('secret key here', payload))\n\nif hmac ~= signature then\n --return \"+\" .. payload .. \"+\" .. hmac .. \"+\" .. signature\n return \"failed\"\nend\n\nlocal valid_until = tonumber(m[2])\nif valid_until < ngx.time() then\n return \"expired\"\nend\n\nreturn m[1]\n
\u200b\u4e0e\u200b\u4e4b\u200b\u5bf9\u5e94\u200b\u7684\u200b\u8fd9\u90e8\u5206\u200b Nginx \u200b\u914d\u7f6e\u200b\u5219\u200b\u662f\u200b\uff1a
###########################################################################\n## Code-server reverse proxy\n###########################################################################\nlocation /vscode/ {\n error_page 502 /_internal/502-vscode.html;\n\n set_by_lua_file $user_host /etc/nginx/lua/user_host.lua;\n if ($user_host = \"missing\") { return 302 /vm/; }\n if ($user_host = \"invalid\") { return 400; }\n if ($user_host = \"failed\") { return 400; }\n if ($user_host = \"expired\") { return 302 /vm/; }\n\n rewrite ^/vscode/(.*)$ /$1 break;\n proxy_pass http://$user_host:1024;\n proxy_http_version 1.1;\n proxy_set_header Host vlab.ustc.edu.cn;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection upgrade;\n proxy_set_header Accept-Encoding gzip;\n}\n
\u200b\u7528\u6237\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u5185\u200b\u4f7f\u7528\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u7f16\u5199\u200b\u7684\u200b vscode
\u200b\u547d\u4ee4\u200b\u6765\u200b\u7ba1\u7406\u200b code-server \u200b\u5bf9\u5e94\u200b\u7684\u200b\u7cfb\u7edf\u200b\u670d\u52a1\u200b\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\uff08\u200b\u7c97\u5236\u6ee5\u9020\u200b\u7684\u200b\uff09Bash \u200b\u811a\u672c\u200b\uff0c\u200b\u89c1\u200b vscode\u3002
\u200b\u5bb9\u5668\u200b\u91cc\u200b\u6709\u200b\u4e00\u4e2a\u200b webhook \u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u4ece\u200b GitHub \u200b\u63a5\u6536\u200b\u7528\u6237\u6587\u6863\u200b\u4ed3\u5e93\u200b USTC-vlab/docs \u200b\u7684\u200b\u66f4\u65b0\u200b\u901a\u77e5\u200b\u5e76\u62c9\u53d6\u200b\u66f4\u65b0\u200b\u3002
\u200b\u4ee3\u7801\u200b\u66fe\u7ecf\u200b\u662f\u200b\u7528\u200b Ruby Sinatra \u200b\u5199\u200b\u7684\u200b\uff0c\u200b\u540e\u6765\u200b\u6362\u6210\u200b\u4e86\u200b Go\uff0c\u200b\u53c2\u89c1\u200b ustclug-dev/webhook-go \u200b\u548c\u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\u7684\u200b /etc/webhook-go.yml
\u3002
\u200b\u6ce8\u610f\u200b
\u200b\u8fd9\u4e2a\u200b webhook \u200b\u524d\u9762\u200b\u8fd8\u662f\u200b\u5957\u200b\u4e86\u200b\u4e00\u5c42\u200b Nginx \u200b\u7684\u200b\uff0c\u200b\u4e0d\u662f\u200b\u76f4\u8fde\u200b\u7684\u200b\u3002
"},{"location":"servers/ct101/#grafana","title":"Grafana \u200b\u4e0e\u200b\u76d1\u63a7\u200b\u3001\u200b\u7edf\u8ba1","text":""},{"location":"servers/ct101/#grafana-security","title":"\u5b89\u5168\u200b\u7ef4\u62a4","text":"\u200b\u6839\u636e\u200b\u76f8\u5173\u200b\u8981\u6c42\u200b\uff0cGrafana \u200b\u9650\u5236\u200b\u4ec5\u200b\u5141\u8bb8\u200b\u6821\u56ed\u7f51\u200b\u8bbf\u95ee\u200b\uff0c\u200b\u4f46\u200b\u6211\u4eec\u200b\u4ecd\u7136\u200b\u9700\u8981\u200b\u4fdd\u8bc1\u200b Grafana \u200b\u59cb\u7ec8\u200b\u5904\u5728\u200b\u5b89\u5168\u200b\u7684\u200b\u6700\u65b0\u200b\u7248\u672c\u200b\u3002\u200b\u5efa\u8bae\u200b\u7ef4\u62a4\u8005\u200b\u4f7f\u7528\u200b RSS \u200b\u8ba2\u9605\u200b https://grafana.com/tags/security/index.xml\uff0c\u200b\u5728\u200b\u6709\u200b\u5b89\u5168\u200b\u901a\u77e5\u200b\u53d1\u5e03\u200b\u540e\u200b\u68c0\u67e5\u200b\u7248\u672c\u200b\u5e76\u200b\u53ca\u65f6\u200b\u5347\u7ea7\u200b\u3002
\u200b\u5347\u7ea7\u200b\u6b65\u9aa4\u200b\uff1a
docker pull grafana/grafana:latest
~/docker/grafana.sh
\u200b\u5176\u4ed6\u200b\u914d\u7f6e\u200b\u672a\u5b8c\u5f85\u7eed\u200b\u3002
"},{"location":"servers/ct101/#external-access","title":"\u9650\u5236\u200b\u6821\u5916\u200b\u8bbf\u95ee","text":"\u200b\u91c7\u7528\u200b\u4e0e\u200b VS Code \u200b\u53cd\u4ee3\u200b\u76f8\u540c\u200b\u7684\u200b\u65b9\u6848\u200b\uff0c\u200b\u8fd9\u6b21\u200b\u662f\u200b\u5c06\u200b CAS \u200b\u7528\u6237\u540d\u200b\u548c\u200b\u8fc7\u671f\u200b\u65f6\u95f4\u200b\u653e\u5728\u200b\u4e00\u8d77\u200b HMAC-SHA1 \u200b\u7b7e\u540d\u200b\uff0c\u200b\u683c\u5f0f\u200b\u4e3a\u200b username/timestamp+signature
\u3002
\u200b\u6821\u5916\u200b\u7528\u6237\u200b\u8bbf\u95ee\u200b Grafana \u200b\u65f6\u200b\uff0c\u200b\u4f1a\u200b\u5c55\u793a\u200b\u4e00\u4e2a\u200b 403 \u200b\u9875\u9762\u200b\u5e76\u200b\u63d0\u793a\u200b\u767b\u5f55\u200b\u3002Nginx \u200b\u4f1a\u200b\u5c06\u200b /ibug-auth
\u200b\u8f6c\u53d1\u7ed9\u200b\u540e\u200b\u7aef\u200b Go \u200b\u7a0b\u5e8f\u200b\uff0c\u200b\u540e\u200b\u7aef\u200b\u7a0b\u5e8f\u200b\u4f1a\u200b\u8bf7\u6c42\u200b https://passport.ustc.edu.cn/serviceValidate
\u200b\u9a8c\u8bc1\u200b ticket\uff0c\u200b\u751f\u6210\u200b\u7b7e\u540d\u200b\u8fc7\u200b\u7684\u200b cookie \u200b\u5e76\u200b\u91cd\u5b9a\u5411\u200b\u56de\u6765\u200b\u3002
Go \u200b\u540e\u200b\u7aef\u200b\u7a0b\u5e8f\u200b\u4f4d\u4e8e\u200b USTC-vlab/nginx-pass-cas\u3002
\u200b\u5bf9\u200b\u67d0\u4e2a\u200b location \u200b\u542f\u7528\u200b\u6821\u5916\u200b CAS \u200b\u8ba4\u8bc1\u200b\uff0c\u200b\u53ea\u200b\u9700\u8981\u200b\u5728\u200b\u5f53\u524d\u200b location \u200b\u5185\u200b include snippets/nginx-pass-location
\uff0c\u200b\u5e76\u200b\u5728\u200b\u5916\u5c42\u200b\u7684\u200b server \u200b\u5757\u200b\u4e2d\u200b include snippets/nginx-pass
\u200b\u5373\u53ef\u200b\u3002
location = /403-nginx-pass.html {\n root /srv/www/html;\n sub_filter \"${dollar}host\" \"$http_host\";\n sub_filter_last_modified on;\n sub_filter_once off;\n}\n\nlocation = /ibug-auth {\n proxy_pass http://127.0.0.1:8002;\n include snippets/proxy-common;\n}\n
/etc/nginx/snippets/nginx-pass-locationerror_page 403 /403-nginx-pass.html;\nset_by_lua_file $nginx_pass /etc/nginx/lua/nginx_pass.lua;\nset $nginx_pass_status \"$ustcnet:$nginx_pass\";\nif ($nginx_pass_status = \"0:missing\") { return 403; }\nif ($nginx_pass_status = \"0:invalid\") { return 403; }\nif ($nginx_pass_status = \"0:failed\") { return 403; }\nif ($nginx_pass_status = \"0:expired\") { return 403; }\n
"},{"location":"servers/pve/","title":"Proxmox VE \u200b\u4e3b\u673a","text":"\u200b\u6211\u4eec\u200b\u5c3d\u91cf\u200b\u4fdd\u8bc1\u200b PVE \u200b\u4e3b\u673a\u200b\u5e72\u51c0\u200b\u6574\u6d01\u200b\uff0c\u200b\u53ea\u200b\u5b89\u88c5\u200b\u914d\u7f6e\u200b\u5fc5\u987b\u200b\u8fd0\u884c\u200b\u5728\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u670d\u52a1\u200b\uff0c\u200b\u51cf\u8f7b\u200b\u7ef4\u62a4\u200b\u538b\u529b\u200b\u3002
"},{"location":"servers/pve/#pv1","title":"pv1","text":""},{"location":"servers/pve/#ssl","title":"\u66f4\u65b0\u200b SSL \u200b\u8bc1\u4e66","text":"\u200b\u7531\u4e8e\u200b Proxmox VE \u200b\u4e3b\u673a\u200b\u6ca1\u6709\u200b\u51fa\u200b\u6821\u200b\u6743\u9650\u200b\uff0c\u200b\u56e0\u6b64\u200b\u4e3b\u673a\u200b\u4f7f\u7528\u200b\u7684\u200b SSL \u200b\u8bc1\u4e66\u200b\uff08*.ibuglab.com
\uff09\u200b\u9700\u8981\u200b\u901a\u8fc7\u200b web \u200b\u5bb9\u5668\u200b\uff08CT 101\uff09\u200b\u66f4\u65b0\u200b\uff0c\u200b\u518d\u200b\u4ece\u200b web \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u53d6\u56de\u200b\u3002\u200b\u6211\u4eec\u200b\u914d\u7f6e\u200b\u4e86\u200b\u5982\u4e0b\u200b\u811a\u672c\u200b\uff0c\u200b\u4f7f\u7528\u200b cron \u200b\u6bcf\u5929\u200b\u4ece\u200b web \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u540c\u6b65\u200b\u8bc1\u4e66\u200b\uff1a
#!/bin/bash -e\n\nSRC=\"/etc/pve/nodes/pv1\"\nDSTROOT=\"/etc/pve/nodes\"\n\nscp web:/etc/ssl/private/ibuglab.com/ibuglab.com.key \"$SRC/pveproxy-ssl.key\"\nscp web:/etc/ssl/private/ibuglab.com/fullchain.cer \"$SRC/pveproxy-ssl.pem\"\nsystemctl reload pveproxy.service vlab-pve-agent.service\n\nfor DST in \"$DSTROOT\"/*; do\n [ \"$DST\" = \"$SRC\" ] && continue\n node=\"$(basename \"$DST\")\"\n cp \"$SRC/pveproxy-ssl.key\" \"$SRC/pveproxy-ssl.pem\" \"$DST/\"\n ssh \"$node\" 'systemctl reload pveproxy.service' &\n scp /etc/hosts \"$node\":/etc/hosts &\ndone\nwait\n\n# Proxmox Backup Server on pv1\nDST=\"/etc/proxmox-backup\"\ncp \"$SRC/pveproxy-ssl.key\" \"$DST/proxy.key\"\ncp \"$SRC/pveproxy-ssl.pem\" \"$DST/proxy.pem\"\nsystemctl reload proxmox-backup-proxy.service\n\n\n#FP=\"$(openssl x509 -noout -fingerprint -sha256 -inform pem -in \"$SRC/pveproxy-ssl.pem\")\"\n#FP=\"${FP##*=}\"\n#pvesm set pbs --fingerprint \"$FP\"\n
"},{"location":"servers/pve/#pve-agent","title":"PVE Agent","text":"\u200b\u7531\u4e8e\u200b LXC \u200b\u5bb9\u5668\u200b\u7684\u200b\u4e00\u4e9b\u200b\u8bbe\u7f6e\u200b\uff08\u200b\u5982\u200b bind mount\uff09\u200b\u5fc5\u987b\u200b\u901a\u8fc7\u200b root@pam \u200b\u7528\u6237\u200b\u767b\u5f55\u200b\u65f6\u200b\u624d\u80fd\u200b\u4fee\u6539\u200b\uff0c\u200b\u800c\u200b\u6211\u4eec\u200b\u5e76\u200b\u4e0d\u60f3\u200b\u5728\u200b django \u200b\u4e2d\u200b\u5b58\u50a8\u200b\u4e3b\u673a\u200b\u7684\u200b root \u200b\u7528\u6237\u200b\u5bc6\u7801\u200b\uff0c\u200b\u56e0\u6b64\u200b\u5199\u200b\u4e86\u200b\u8fd9\u4e2a\u200b agent \u200b\u653e\u5728\u200b\u4e3b\u673a\u200b\u4e0a\u200b\uff0c\u200b\u901a\u8fc7\u200b HTTP API \u200b\u63d0\u4f9b\u200b\u8fd9\u4e9b\u200b\u529f\u80fd\u200b\uff0c\u200b\u540e\u200b\u7aef\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b pvesh
\u200b\u547d\u4ee4\u200b\u3002pvesh \u200b\u547d\u4ee4\u200b\u5728\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u6267\u884c\u200b\u65f6\u4f1a\u200b\u81ea\u52a8\u200b\u4ee5\u200b\u6267\u884c\u200b\u8be5\u200b\u547d\u4ee4\u200b\u7684\u200b Linux \u200b\u7528\u6237\u200b\u8ba4\u8bc1\u200b\uff0c\u200b\u56e0\u6b64\u200b\u53ea\u8981\u200b\u8be5\u200b agent \u200b\u4ee5\u200b root \u200b\u8fd0\u884c\u200b\uff0c\u200b\u5c31\u200b\u80fd\u200b\u901a\u8fc7\u200b pvesh
\u200b\u8c03\u7528\u200b\u8fd9\u4e9b\u200b\u9700\u8981\u200b root@pam \u200b\u7528\u6237\u200b\u7684\u200b PVE API\u3002
\u200b\u4ee3\u7801\u200b\u5728\u200b vlab-pve-agent \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\uff0c\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e3a\u200b /etc/vlab-pve-agent.json
\uff0c\u200b\u5bf9\u5e94\u200b\u7684\u200b systemd service \u200b\u4e3a\u200b vlab-pve-agent.service
\u3002
PVE \u200b\u4e3b\u673a\u200b\u4e0a\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b pct enter
\u200b\u548c\u200b pct console
\u200b\u547d\u4ee4\u200b\u83b7\u53d6\u200b LXC \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u200b shell \u200b\u6216\u8005\u200b\u63a5\u5165\u200b /dev/tty0\uff0c\u200b\u4f46\u200b\u8be5\u200b\u201c\u200b\u63a5\u53e3\u200b\u201d\u200b\u4e0d\u200b\u5728\u200b PVE API \u200b\u4e2d\u200b\u63d0\u4f9b\u200b\u3002\u200b\u8003\u8651\u200b\u5230\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u63a5\u53e3\u200b\u7684\u200b\u4e3b\u8981\u200b\u8fde\u63a5\u200b\u65b9\u5f0f\u200b\u662f\u200b SSH\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u5199\u200b\u4e86\u200b\u8fd9\u4e2a\u200b recovery SSHd \u200b\u653e\u5728\u200b pv1 \u200b\u4e0a\u200b\u8fd0\u884c\u200b\uff0c\u200b\u4f9b\u200b sshpiper \u200b\u8c03\u7528\u200b\u3002
\u200b\u4ee3\u7801\u200b\u5728\u200b recovery-sshd \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\uff0c\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e3a\u200b /etc/recovery-sshd.json
\uff0c\u200b\u5bf9\u5e94\u200b\u7684\u200b systemd service \u200b\u4e3a\u200b recovery-sshd.service
\u3002
Success
\u200b\u6211\u4eec\u200b\u5df2\u200b\u5c06\u200b\u6b64\u200b\u4efb\u52a1\u200b\u90e8\u5206\u200b\u81ea\u52a8\u5316\u200b\uff0c\u200b\u4f7f\u7528\u200b labstrap \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u7684\u200b pvestrap
\u200b\u811a\u672c\u200b\u3002
\u200b\u811a\u672c\u200b\u7684\u200b\u53c2\u8003\u200b\u8fd0\u884c\u200b\u65b9\u5f0f\u200b\uff08\u200b\u4ee5\u200b pv1 \u200b\u4e3a\u4f8b\u200b\uff09\uff1a
cd /etc/pve/nodes\nfor i in *; do ssh -T \"$i\" < ~/pvestrap & done; wait\n
"},{"location":"servers/pve/#subuid-\u548c-subgid","title":"Subuid \u200b\u548c\u200b Subgid","text":"\u200b\u4fee\u6539\u200b subuid \u200b\u548c\u200b subgid\uff0c\u200b\u5c06\u200b\u7b2c\u4e09\u5217\u200b\u7684\u200b\u503c\u200b\u4ece\u200b 65536 \u200b\u6539\u4e3a\u200b 165536\uff1a
/etc/subuid \u200b\u548c\u200b /etc/subgidroot:100000:165536\n
"},{"location":"servers/pve/#lxc-\u7279\u6b8a\u8bbe\u7f6e","title":"LXC \u200b\u7279\u6b8a\u200b\u8bbe\u7f6e","text":"LXC \u200b\u7684\u200b\u5168\u5c40\u200b\u8bbe\u7f6e\u200b\u4f4d\u4e8e\u200b /usr/share/lxc/config/common.conf.d/
\uff0c\u200b\u5176\u4e2d\u200b\u9664\u4e86\u200b 00-lxcfs.conf
\uff08lxcfs \u200b\u6302\u8f7d\u200b\u76f8\u5173\u200b\u5185\u5bb9\u200b\uff09\u200b\u548c\u200b 01-pve.conf
\uff08\u200b\u542f\u52a8\u200b\u524d\u200b\u3001\u200b\u7ed3\u675f\u200b\u540e\u200b\u3001\u200b\u8bbe\u5907\u200b\u6302\u8f7d\u200b\u76f8\u5173\u200b hook\uff09\u200b\u4ee5\u5916\u200b\uff0c\u200b\u6211\u4eec\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u81ea\u5df1\u200b\u7684\u200b\u914d\u7f6e\u200b\u3002
\u200b\u8bbe\u7f6e\u200b 32768 PID \u200b\u4e0a\u9650\u200b\uff0c\u200b\u907f\u514d\u200b\u5bb9\u5668\u200b\u5185\u200b\u8fd0\u884c\u200b fork bomb \u200b\u7b49\u200b\u7a0b\u5e8f\u200b\u5f71\u54cd\u200b\u4e3b\u673a\u200b\u6216\u200b\u4e92\u76f8\u200b\u5f71\u54cd\u200b
/usr/share/lxc/config/common.conf.d/10-vlab.conflxc.cgroup2.pids.max = 32768\n
Info
\u200b\u4ece\u200b PVE 7 \u200b\u5f00\u59cb\u200b\u6b64\u5904\u200b\u8bbe\u7f6e\u200b\u9700\u8981\u200b\u7528\u200b lxc.cgroup2
\uff0ccgroup1 \u200b\u7684\u200b\u914d\u7f6e\u200b\u4ec5\u200b\u5bf9\u200b PVE 6 \u200b\u6709\u6548\u200b\u3002
\u200b\u7279\u522b\u200b\u5730\u200b\uff0cpv1 \u200b\u4e3b\u673a\u200b\u4e0a\u200b\u8fd9\u4e2a\u200b\u914d\u7f6e\u200b\u662f\u200b 8192\uff08\u200b\u6ca1\u6709\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\uff09\u3002
\u200b\u8bbe\u7f6e\u200b 16 MiB \u200b\u7684\u200b\u53ef\u200b\u9501\u5b9a\u200b\u5185\u5b58\u200b\uff0c\u200b\u4e3a\u200b\u5bb9\u5668\u200b\u5185\u200b\u4f7f\u7528\u200b earlyoom \u200b\u505a\u200b\u51c6\u5907\u200b\u3002\u200b\u8ba8\u8bba\u200b\u89c1\u200b discussions#19
/usr/share/lxc/config/common.conf.d/10-vlab.conflxc.prlimit.memlock = 16777216\n
"},{"location":"testing/","title":"\u6d4b\u8bd5\u73af\u5883","text":"\u200b\u6211\u4eec\u200b\u7684\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u8fd0\u884c\u200b\u5728\u200b\u5355\u673a\u200b pv0 \u200b\u4e0a\u200b\uff0c\u200b\u6ca1\u6709\u200b\u4f7f\u7528\u200b\u96c6\u7fa4\u200b\u914d\u7f6e\u200b\u3002
"},{"location":"testing/#\u4e0e\u751f\u4ea7\u73af\u5883\u7684\u6bd4\u8f83","title":"\u4e0e\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u7684\u200b\u6bd4\u8f83","text":"\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u4e3b\u8981\u200b\u7528\u4e8e\u200b\u5f00\u53d1\u200b\u548c\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u5404\u200b\u65b9\u9762\u200b\u914d\u7f6e\u200b\u90fd\u200b\u4e0e\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u63a5\u8fd1\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a
\u200b\u540c\u65f6\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u4e5f\u200b\u7528\u4e8e\u200b\u8e29\u200b\u5751\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5728\u200b\u65b0\u200b\u8f6f\u4ef6\u200b\u6216\u200b\u65b0\u7248\u200b\u64cd\u4f5c\u7cfb\u7edf\u200b\u53d1\u5e03\u200b\u65f6\u200b\u751a\u81f3\u200b\u53d1\u5e03\u200b\u524d\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u4f1a\u200b\u66f4\u200b\u79ef\u6781\u200b\u5730\u200b\u5347\u7ea7\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a
\u200b\u4e3a\u4e86\u200b\u65b9\u4fbf\u200b\u590d\u5236\u200b\u548c\u200b\u4f20\u8f93\u6570\u636e\u200b\uff0c\u200b\u90e8\u5206\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u7684\u200b\u4e3b\u673a\u200b\u548c\u200b\u865a\u62df\u673a\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b SSH \u200b\u767b\u5f55\u200b\u90e8\u5206\u200b\u6d4b\u8bd5\u73af\u5883\u200b\uff08\u200b\u5f53\u7136\u200b\u4e5f\u200b\u5c31\u200b\u53ef\u4ee5\u200b rsync \u200b\u4e86\u200b\uff09\uff1a
\u200b\u4ee5\u4e0a\u200b\u4e24\u4e2a\u200b\u8bbf\u95ee\u200b\u90fd\u200b\u662f\u200b\u76f4\u63a5\u200b\u6dfb\u52a0\u200b\u7684\u200b ~/.ssh/authorized_keys
\u3002
Warning
\u200b\u51fa\u4e8e\u200b\u5b89\u5168\u200b\u8003\u8651\u200b\uff0c\u200b\u4e0d\u8981\u200b\u5728\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u4e2d\u200b\u914d\u7f6e\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u7684\u200b\u767b\u5f55\u200b\u6743\u9650\u200b\uff08\u200b\u6dfb\u52a0\u200b\u516c\u94a5\u200b\u7b49\u200b\uff09\u3002
"},{"location":"testing/#\u914d\u7f6e","title":"\u914d\u7f6e","text":"\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u548c\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u5171\u7528\u200b\u540c\u200b\u4e00\u5957\u200b Nginx \u200b\u914d\u7f6e\u6587\u4ef6\u200b\u65b9\u4fbf\u200b\u8c03\u8bd5\u200b\uff0c\u200b\u4f46\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b /etc/nginx \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u7684\u200b deploy key \u200b\u6ca1\u6709\u200b\u5199\u5165\u200b\u6743\u9650\u200b\uff0c\u200b\u8bf7\u200b\u81ea\u884c\u200b git pull
\u200b\u540e\u200b\u518d\u200b git push
\u3002
\u200b\u5176\u4ed6\u200b\u914d\u7f6e\u200b\u6682\u65f6\u200b\u6ca1\u6709\u200b\u5171\u4eab\u200b\u3002
"},{"location":"testing/devvpn/","title":"VPN for Vlab devs","text":"\u200b\u4e3a\u4e86\u200b\u65b9\u4fbf\u200b\u53c2\u4e0e\u200b\u5f00\u53d1\u200b\u7684\u200b\u540c\u5b66\u200b\u8fde\u63a5\u200b\u6821\u56ed\u7f51\u200b\uff0c\u200b\u6211\u4eec\u200b\u5f00\u8bbe\u200b\u4e86\u200b\u4e00\u4e2a\u200b OpenVPN Server \u200b\u8fd0\u884c\u200b\u5728\u200b gateway\uff08CT 100\uff09\u200b\u4e0a\u200b\u3002
"},{"location":"testing/devvpn/#\u4f7f\u7528\u65b9\u5f0f","title":"\u4f7f\u7528\u200b\u65b9\u5f0f","text":"\u200b\u767b\u5f55\u200b\u8fdb\u200b gateway\uff0c\u200b\u5207\u6362\u200b\u76ee\u5f55\u200b\u81f3\u200b /etc/openvpn/ca
\uff0c\u200b\u8fd0\u884c\u200b ./genconf.sh '<Common Name>'
\uff0c\u200b\u5176\u4e2d\u200b <Common Name>
\u200b\u4e3a\u200b\u6807\u8bc6\u200b\u5ba2\u6237\u7aef\u200b\u7684\u200b\u540d\u79f0\u200b\uff08X.509 \u200b\u8bc1\u4e66\u200b\u7684\u200b Common Name \u200b\u5b57\u200b\u6bb5\u200b\uff0c\u200b\u5efa\u8bae\u200b\u4f7f\u7528\u200b\u59d3\u540d\u200b\u6216\u200b\u6635\u79f0\u200b\u7b49\u200b\u80fd\u591f\u200b\u8fa8\u8ba4\u200b\u7684\u200b\u540d\u79f0\u200b\uff09\u3002\u200b\u5982\u679c\u200b\u4e00\u5207\u6b63\u5e38\u200b\uff0c\u200b\u5c31\u200b\u80fd\u200b\u5728\u200b clients
\u200b\u76ee\u5f55\u200b\u4e2d\u200b\u751f\u6210\u200b\u4e00\u4e2a\u200b <Common Name>.ovpn
\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5c06\u200b\u8be5\u200b\u6587\u4ef6\u200b\u5206\u200b\u53d1\u7ed9\u200b\u7528\u6237\u200b\uff0c\u200b\u4f7f\u7528\u200b OpenVPN \u200b\u5ba2\u6237\u7aef\u200b\u5bfc\u5165\u200b\u5e76\u200b\u8fde\u63a5\u200b\u5373\u53ef\u200b\u3002
\u200b\u670d\u52a1\u7aef\u200b\u53ea\u200b\u9700\u200b\u914d\u7f6e\u200b\u4e00\u6b21\u200b\uff0c\u200b\u4ee5\u4e0b\u200b\u8bb0\u5f55\u200b\u4f5c\u4e3a\u200b\u53c2\u8003\u200b
\u200b\u5b89\u88c5\u200b\u8f6f\u4ef6\u5305\u200b\uff1a
apt install --no-install-recommends openvpn easy-rsa\n
"},{"location":"testing/devvpn/#openvpn-pki","title":"\u8bc1\u4e66\u200b\u7cfb\u7edf","text":"cd /etc/openvpn\nmake-cadir ca\ncd ca\n./easyrsa init-pki\n./easyrsa build-ca nopass\n
\u200b\u81f3\u6b64\u200b\u5728\u200b /etc/openvpn/ca/pki
\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u5c31\u200b\u6709\u200b\u4e00\u5806\u200b\u51c6\u5907\u200b\u597d\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5f00\u59cb\u200b\u7b7e\u8bc1\u200b\u4e66\u200b\u4e86\u200b\u3002
\u200b\u9996\u5148\u200b\u7ed9\u200b\u670d\u52a1\u7aef\u200b\u7b7e\u200b\u4e00\u4e2a\u200b\u8bc1\u4e66\u200b\uff1a
./easyrsa build-server-full 'Vlab VPN Server' nopass\n
\u200b\u7136\u540e\u200b\u628a\u200b pki/issued/Vlab VPN Server.crt
\u200b\u548c\u200b pki/issued/Vlab VPN Server.key
\u200b\u590d\u5236\u5230\u200b /etc/openvpn/server
\u200b\u4e0b\u200b\uff0c\u200b\u5206\u522b\u200b\u547d\u540d\u200b\u4e3a\u200b server.crt
\u200b\u548c\u200b server.key
\u3002
\u200b\u63a5\u4e0b\u6765\u200b\u6bcf\u4e2a\u200b\u5ba2\u6237\u7aef\u200b\u90fd\u200b\u7528\u200b\u8fd9\u6837\u200b\u7684\u200b\u547d\u4ee4\u200b\u7b7e\u200b\u4e00\u4e2a\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u6ce8\u610f\u200b Common Name \u200b\u4e0d\u8981\u200b\u91cd\u590d\u200b\u3002
./easyrsa build-client-full '<Client Name>' nopass\n
\u200b\u73b0\u5728\u200b pki/issued
\u200b\u4e0b\u200b\u548c\u200b pki/private
\u200b\u4e0b\u200b\u5c31\u200b\u6709\u200b\u4e86\u200b\u4e00\u5957\u200b\u8bc1\u4e66\u200b\u548c\u200b\u5bc6\u94a5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7528\u200b\u5b83\u4eec\u200b\u6765\u200b\u5236\u4f5c\u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e86\u200b\uff08\u200b\u89c1\u200b\u4e0b\u200b\uff09\u3002
\u200b\u590d\u5236\u200b\u4e00\u4efd\u200b\u6837\u4f8b\u200b server.conf
\uff1a
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/\ngunzip /etc/openvpn/server/server.conf.gz\n
\u200b\u7f16\u8f91\u200b server.conf
:
;proto tcp\n-proto udp\n+proto udp6\n
Note
\u200b\u4f7f\u7528\u200b proto udp6
\u200b\u53ef\u4ee5\u200b\u8ba9\u200b OpenVPN server \u200b\u4f7f\u7528\u200b v4+v6 \u200b\u53cc\u6808\u200b\u7684\u200b socket\uff0c\u200b\u89c1\u200b https://serverfault.com/a/651869/450575\u3002
;dev tap\n-dev tun\n+dev ovpn\n+dev-type tun\n
-;topology subnet\n+topology subnet\n
-server 10.8.0.0 255.255.255.0\n+server 192.168.254.0 255.255.255.0\n
-tls-auth ta.key 0 # This file is secret\n+;tls-auth ta.key 0 # This file is secret\n
-;push \"route 192.168.10.0 255.255.255.0\"\n-;push \"route 192.168.20.0 255.255.255.0\"\n+push \"route 172.31.0.0 255.255.0.0\"\n+push \"route 202.38.75.85 255.255.255.255\"\n+push \"route 202.38.75.4 255.255.255.255\"\n+push \"route 202.38.75.24 255.255.255.255\"\n
-cipher AES-256-CBC\n+cipher AES-256-GCM\n
-;user nobody\n-;group nogroup\n+user nobody\n+group nogroup\n
\u200b\u751f\u6210\u200b DH \u200b\u53c2\u6570\u200b\u6587\u4ef6\u200b\uff1a
openssl dhparam -out /etc/openvpn/server/dh2048.pem 2048\n
"},{"location":"testing/devvpn/#openvpn-client-conf","title":"\u7f16\u5199\u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6","text":"\u200b\u4e0e\u200b OpenVPN server \u200b\u7c7b\u4f3c\u200b\uff0c\u200b\u4e00\u4e2a\u200b\u57fa\u672c\u200b\u7684\u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5982\u4e0b\u200b\uff1a
OpenVPN \u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u6837\u4f8b\u200bclient\n\nproto udp\n\ndev vlabvpn\ndev-type tun\n\npersist-key\npersist-tun\n\nnobind\nremote <!-- \u200b\u670d\u52a1\u5668\u200b\u5730\u5740\u200b -->\ncipher AES-256-GCM\n\n<ca>\n<!-- CA \u200b\u8bc1\u4e66\u200b -->\n</ca>\n<cert>\n<!-- \u200b\u6b64\u200b\u5ba2\u6237\u7aef\u200b\u7684\u200b\u8bc1\u4e66\u200b -->\n</cert>\n<key>\n<!-- \u200b\u6b64\u200b\u5ba2\u6237\u7aef\u200b\u7684\u200b\u79c1\u94a5\u200b -->\n</key>\n
\u200b\u5176\u4e2d\u200b <ca>
\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u586b\u5165\u200b ca.crt \u200b\u6587\u4ef6\u200b\u7684\u200b\u5185\u5bb9\u200b\uff0c\u200b\u800c\u200b <cert>
\u200b\u548c\u200b <key>
\u200b\u9700\u8981\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u5ba2\u6237\u7aef\u200b\u7b7e\u53d1\u200b\u4e00\u4e2a\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u7f16\u5199\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u811a\u672c\u200b\uff0c\u200b\u8c03\u7528\u200b easyrsa
\u200b\u7b7e\u53d1\u200b\u5ba2\u6237\u7aef\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u5e76\u200b\u5229\u7528\u200b\u6a21\u677f\u200b\u5728\u200b clients/
\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u751f\u6210\u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff1a
#!/bin/bash\n\n[ -n \"$BASH_VERSION\" ] || exit 1\ncd \"$(dirname \"$0\")\"\nPKI=\"$(dirname \"$0\")\"/pki\nOUTDIR=\"$(dirname \"$0\")\"/clients\n\ngen_conf() {\n local cafile=\"$1\"\n local certfile=\"$2\"\n local keyfile=\"$3\"\n cat << EOF\n#!/usr/bin/openvpn\nclient\n\nproto udp\n\ndev vlabvpn\ndev-type tun\n\npersist-key\npersist-tun\n\nnobind\nremote vpn.ibuglab.com\ncipher AES-256-GCM\n\n<ca>\n$(<\"$cafile\")\n</ca>\n<cert>\n$(<\"$certfile\")\n</cert>\n<key>\n$(<\"$keyfile\")\n</key>\nEOF\n}\n\nif [ $# -eq 0 ]; then\n echo \"Need an argument!\" >&2\n exit 1\nelif [ $# -gt 1 ]; then\n echo \"Too many arguments!\" >&2\n exit 1\nfi\nCN=\"$1\"\nOUTFILE=\"$OUTDIR\"/\"$CN\".ovpn\nif [ -f \"$OUTFILE\" ]; then\n echo \"Error: Output file $OUTFILE already exists. Remove it if you want to proceed.\" >&2\n exit 1\nfi\n\nrm -f \"$PKI\"/reqs/\"$CN\".req \"$PKI\"/issued/\"$CN\".crt \"$PKI\"/private/\"$CN\".key\n./easyrsa build-client-full \"$CN\" nopass\ngen_conf \"$PKI\"/ca.crt \"$PKI\"/issued/\"$CN\".crt \"$PKI\"/private/\"$CN\".key > \"$OUTFILE\"\nrm -f \"$PKI\"/reqs/\"$CN\".req \"$PKI\"/issued/\"$CN\".crt \"$PKI\"/private/\"$CN\".key\n
\u200b\u8be5\u200b\u811a\u672c\u200b\u7684\u200b\u4f7f\u7528\u200b\u65b9\u5f0f\u200b\u89c1\u200b\u672c\u6587\u200b\u6700\u200b\u4e0a\u65b9\u200b\u3002
"},{"location":"ui/rdpproxy/","title":"RDP Proxy \u200b\u914d\u7f6e","text":"\u200b\u53c2\u8003\u200b .rdp
\u200b\u6587\u4ef6\u200b\uff1a
connection type:i:7\ndisable wallpaper:i:0\nallow font smoothing:i:1\nallow desktop composition:i:1\ndisable full window drag:i:0\ndisable menu anims:i:0\nfull address:s:vlab.ustc.edu.cn\nloadbalanceinfo:s:Cookie: msts=example_token\n
"},{"location":"ui/vncmux/","title":"\u8fdc\u7a0b\u684c\u9762\u200b\u914d\u7f6e\u200b\u4e0e\u200b\u7ba1\u7406","text":"vnc-multiplexer (\u200b\u4ee5\u4e0b\u200b\u7b80\u79f0\u200b vncmux) \u200b\u7528\u4e8e\u200b\u5b9e\u73b0\u200b VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u3002vncmux \u200b\u7528\u6237\u200b\u5728\u200b\u767b\u5f55\u200b\u4e2d\u200b\u8f93\u5165\u200b\u7684\u200b\u7528\u6237\u540d\u200b\u3001\u200b\u5bc6\u7801\u200b\uff0c\u200b\u5c06\u200b\u88ab\u200b\u7a0b\u5e8f\u200b\u901a\u8fc7\u200b API \u200b\u53d1\u9001\u7ed9\u200b Django \u200b\u540e\u200b\u7aef\u200b\uff0c\u200b\u5e76\u200b\u5f97\u5230\u200b\u5185\u200b\u7f51\u200b\u5ba2\u6237\u673a\u200b\u7684\u200b VNC \u200b\u670d\u52a1\u5668\u200b\u8fde\u63a5\u200b\u4fe1\u606f\u200b\uff0c\u200b\u4ee5\u6b64\u200b\u5b9e\u73b0\u200b\u8f6c\u53d1\u200b\u3002\u200b\u9664\u4e86\u200b\u7b80\u5355\u200b\u7684\u200b\u8f6c\u53d1\u200b\u6570\u636e\u200b\uff0cvncmux \u200b\u8fd8\u4f1a\u200b\u5bf9\u200b VNC \u200b\u534f\u8bae\u200b\u7684\u200b\u6d88\u606f\u200b\u8fdb\u884c\u200b\u89e3\u6790\u200b\u3001\u200b\u4fee\u6539\u200b\uff0c\u200b\u4ee5\u6b64\u200b\u5b9e\u73b0\u200b\u901a\u77e5\u200b\u529f\u80fd\u200b\u3002\u200b\u4ee5\u4e0b\u200b\u7b80\u4ecb\u200b vncmux \u200b\u7684\u200b\u914d\u7f6e\u200b\u548c\u200b\u7ba1\u7406\u200b\u65b9\u6cd5\u200b\u3002
"},{"location":"ui/vncmux/#\u914d\u7f6e\u6587\u4ef6","title":"\u914d\u7f6e\u6587\u4ef6","text":"vncmux \u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5b58\u50a8\u200b\u5728\u200b /etc/vnc_multiplexer/config.json
\uff0c\u200b\u76ee\u524d\u200b\u5982\u4e0b\u200b\uff1a
{\n \"port\": 5900,\n \"api\": \"http://127.0.0.1:8000/vm/vnc/\",\n \"cert_chain_file\": \"/etc/letsencrypt/live/vlab.ustc.edu.cn/fullchain.pem\",\n \"private_key_file\": \"/etc/letsencrypt/live/vlab.ustc.edu.cn/privkey.pem\",\n \"dhparam_file\": \"/etc/vnc_multiplexer/dhparam.pem\",\n \"ra2_private_key_file\": \"/etc/vnc_multiplexer/ra2.pem\",\n \"enabled_protocol\": [\"RA2r_256\", \"RA2r\", \"RA2_256\", \"RA2\", \"VeNCrypt\"],\n \"enable_log\": true,\n \"logger_ip\": \"127.0.0.1\",\n \"logger_port\": 5555,\n \"enable_notification\": true,\n \"notification_file\": \"/etc/vnc_multiplexer/notification.png\",\n \"enable_admin\": true,\n \"admin_path\": \"\",\n \"enable_websocket\": true,\n \"websocket_port\": 5801,\n \"enable_tight_translation\": true,\n \"tight_jpeg_level\": 7,\n \"threads\": 8\n}\n
\u200b\u5176\u4e2d\u200b\u5404\u9879\u200b\u610f\u4e49\u200b\u5982\u4e0b\u200b\uff1a
api
\uff1a Django \u200b\u540e\u200b\u7aef\u200b API \u200b\u7684\u200b URL \uff0c\u200b\u8bf7\u200b\u6ce8\u610f\u200b\u4e0d\u5f97\u200b\u4f7f\u7528\u200b HTTPS\u3002
cert_chain_file
\uff1a TLS \u200b\u8bc1\u4e66\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e0d\u7528\u200b\u66f4\u6539\u200b\u3002
private_key_file
\uff1a TLS \u200b\u79c1\u94a5\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e0d\u7528\u200b\u66f4\u6539\u200b\u3002
dhparam_file
\uff1a DH \u200b\u5bf9\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e0d\u7528\u200b\u66f4\u6539\u200b\u3002
ra2_private_key_file
\uff1a RealVNC \u200b\u534f\u8bae\u200b\u79c1\u94a5\u200b\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u8bc1\u660e\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u8eab\u4efd\u200b\u3002\u200b\u5fc5\u987b\u200b\u4e3a\u200b PKCS#8 RSA 2048 \u200b\u79c1\u94a5\u200b\u6587\u4ef6\u200b\u3002
enabled_protocol
\uff1a \u200b\u5141\u8bb8\u200b\u7684\u200b\u534f\u8bae\u200b\u3002VeNCrypt
\u200b\u4e3a\u200b TigerVNC \u200b\u4f7f\u7528\u200b\u7684\u200b\u534f\u8bae\u200b\u3002 RA2
, RA2r
, RA2_256
, RA2r_256
\u200b\u5747\u200b\u4e3a\u200b RealVNC \u200b\u7684\u200b\u52a0\u5bc6\u534f\u8bae\u200b, RA2ne
, RA2ne_256
\u200b\u4e3a\u200b RealVNC \u200b\u4f7f\u7528\u200b\u7684\u200b\u975e\u200b\u52a0\u5bc6\u534f\u8bae\u200b\uff0c\u200b\u5efa\u8bae\u200b\u5173\u95ed\u200b\u3002
enable_log
\uff1a \u200b\u662f\u5426\u200b\u5f00\u542f\u200b\u65e5\u5fd7\u200b\u3002\u200b\u65e5\u5fd7\u200b\u5c06\u200b\u5728\u200b\u6bcf\u4e2a\u200b\u8fde\u63a5\u200b\u5173\u95ed\u200b\u540e\u200b\u901a\u8fc7\u200b UDP \u200b\u62a5\u6587\u200b\u53d1\u9001\u7ed9\u200b\u65e5\u5fd7\u200b\u670d\u52a1\u5668\u200b\u3002
logger_ip
\uff1a \u200b\u65e5\u5fd7\u200b\u670d\u52a1\u5668\u200b IP
logger_port
\uff1a \u200b\u65e5\u5fd7\u200b\u670d\u52a1\u5668\u7aef\u200b\u53e3\u200b
enable_notification
\uff1a \u200b\u662f\u5426\u200b\u5f00\u542f\u200b\u901a\u77e5\u200b\u529f\u80fd\u200b\u3002\u200b\u82e5\u200b\u5f00\u542f\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u7528\u6237\u200b\u8fde\u63a5\u200b\u540e\u200b vncmux \u200b\u90fd\u200b\u5c06\u200b\u5728\u200b\u753b\u9762\u200b\u4e0a\u200b\u6ce8\u5165\u200b\u4e00\u4e2a\u200b\u53ef\u200b\u5173\u95ed\u200b\u7684\u200b\u5bf9\u8bdd\u6846\u200b\u7528\u4ee5\u200b\u663e\u793a\u200b\u901a\u77e5\u200b\u3002
notification_file
\uff1a \u200b\u901a\u77e5\u200b\u56fe\u7247\u200b\u6587\u4ef6\u200b\u3002\u200b\u5fc5\u987b\u200b\u4e3a\u200b PNG \u200b\u683c\u5f0f\u200b\u3002
enable_admin
\uff1a \u200b\u662f\u5426\u200b\u5f00\u542f\u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b\u3002\u200b\u82e5\u200b\u5f00\u542f\u200b\uff0c vncmux \u200b\u5c06\u200b\u5728\u200b\u4e00\u4e2a\u200b Unix domain socket \u200b\u4e0a\u200b\u63a5\u6536\u200b\u7ba1\u7406\u200b\u547d\u4ee4\u200b\uff0c\u200b\u4ee5\u6b64\u200b\u4e0e\u200b vncmux-cli \u200b\u5de5\u5177\u200b\u8fde\u63a5\u200b\u3002
admin_path
\uff1a \u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b\u7684\u200b\u8def\u5f84\u200b\uff0c\u200b\u7559\u7a7a\u200b\u5219\u200b\u4e3a\u200b\u9ed8\u8ba4\u503c\u200b /var/run/vncmux.sock
enable_websocket
\uff1a \u200b\u662f\u5426\u200b\u5f00\u542f\u200b WebSocket \u200b\u529f\u80fd\u200b\u3002noVNC \u200b\u5fc5\u987b\u200b\u4f7f\u7528\u200b\u6b64\u200b\u529f\u80fd\u200b\uff0c\u200b\u56e0\u6b64\u200b\u603b\u662f\u200b\u5e94\u8be5\u200b\u5f00\u542f\u200b\u3002\u200b\u8fd9\u91cc\u200b\u7684\u200b WebSocket \u200b\u8fde\u63a5\u200b\u662f\u200b\u672a\u200b\u52a0\u5bc6\u200b\u7684\u200b\uff0c\u200b\u9700\u8981\u200b\u4f7f\u7528\u200b Nginx \u200b\u53cd\u4ee3\u200b\u3002
websocket_port
\uff1a WebSocket \u200b\u670d\u52a1\u200b\u7aef\u53e3\u200b
enable_tight_translation
\uff1a \u200b\u662f\u5426\u200b\u7ed9\u200b RealVNC \u200b\u5f00\u542f\u200b\u6709\u635f\u538b\u7f29\u200b\u3002\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b RealVNC \u200b\u8fde\u63a5\u200b TigerVNC \u200b\u670d\u52a1\u7aef\u200b\u53ea\u200b\u652f\u6301\u200b\u65e0\u635f\u538b\u7f29\u200b\u3002\u200b\u6b64\u200b\u529f\u80fd\u200b\u5c06\u200b TigerVNC \u200b\u53d1\u51fa\u200b\u7684\u200b Tight \u200b\u7f16\u7801\u6570\u636e\u200b\u8f6c\u6362\u6210\u200b RealVNC \u200b\u53ef\u8bfb\u200b\u7684\u200b\u683c\u5f0f\u200b\uff0c\u200b\u4ee5\u6b64\u200b\u5b9e\u73b0\u200b\u4f7f\u7528\u200b JPEG \u200b\u538b\u7f29\u200b\u3002\u200b\u5f00\u542f\u200b\u540e\u200b\u53ef\u4ee5\u200b\u8ba9\u200b RealVNC \u200b\u6d41\u7545\u200b\u5f88\u591a\u200b\uff0c\u200b\u4f46\u662f\u200b\u53ef\u80fd\u200b\u964d\u4f4e\u200b\u753b\u8d28\u200b\u3002
tight_jpeg_level
\uff1a RealVNC \u200b\u6709\u635f\u538b\u7f29\u200b\u7684\u200b\u8d28\u91cf\u200b\u7b49\u7ea7\u200b\u3002\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u662f\u200b 0 \u200b\u5230\u200b 9\u3002\u200b\u5982\u679c\u200b\u4e3a\u200b 8 \u200b\u63a5\u8fd1\u200b\u65e0\u635f\u200b\u3002
threads
\uff1a \u200b\u5de5\u4f5c\u200b\u7ebf\u7a0b\u200b\u6570\u200b
vncmux-cli \u200b\u5de5\u5177\u200b\u7528\u4e8e\u200b\u7ba1\u7406\u200b\u8fd0\u884c\u200b\u4e2d\u200b\u7684\u200b vncmux \u200b\u670d\u52a1\u5668\u200b\u3002\u200b\u8fde\u63a5\u200b\u5230\u200b vncmux \u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u65b9\u6cd5\u200b\u5982\u4e0b\u200b\uff1a
vncmux-cli [path]\n
\u200b\u8fde\u63a5\u200b\u540e\u200b\u8f93\u5165\u200b exit
\u200b\u53ef\u4ee5\u200b\u9000\u51fa\u200b\uff0c\u200b\u8f93\u5165\u200b help
\u200b\u53ef\u4ee5\u200b\u663e\u793a\u200b\u5e2e\u52a9\u200b\uff0c\u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u8fdb\u884c\u200b\u4ee5\u4e0b\u200b\u64cd\u4f5c\u200b\uff1a
\u200b\u8f93\u5165\u200b list
\u200b\u5373\u53ef\u200b\u5217\u51fa\u200b\u5728\u7ebf\u200b\u7528\u6237\u200b\u7684\u200b\u4fe1\u606f\u200b\uff0c\u200b\u5305\u62ec\u200b\u8fde\u63a5\u200b ID \u3001\u200b\u8fde\u63a5\u65f6\u95f4\u200b\u3001\u200b\u7528\u6237\u540d\u200b\u3001\u200b\u4e3b\u673a\u200b IP \u3001\u200b\u7528\u6237\u200b IP \u3001\u200b\u5ba2\u6237\u7aef\u200b\u7c7b\u578b\u200b\u3002
\u200b\u8f93\u5165\u200b disconnect <id>
\u200b\u53ef\u4ee5\u200b\u628a\u200b ID \u200b\u5bf9\u5e94\u200b\u7684\u200b\u8fde\u63a5\u200b\u65ad\u5f00\u200b\u3002
\u200b\u8f93\u5165\u200b load-notification <image file>
\u200b\u53ef\u4ee5\u200b\u66f4\u6362\u200b\u901a\u77e5\u200b\u6587\u4ef6\u200b\uff0c\u200b\u901a\u77e5\u200b\u6587\u4ef6\u200b\u6700\u597d\u200b\u662f\u200b\u7edd\u5bf9\u8def\u5f84\u200b\u3002\u200b\u5f53\u524d\u200b\u5df2\u200b\u5728\u7ebf\u200b\u7684\u200b\u7528\u6237\u200b\u5c06\u200b\u4e0d\u4f1a\u200b\u770b\u5230\u200b\u65b0\u200b\u7684\u200b\u901a\u77e5\u200b\u3002
\u200b\u53ef\u4ee5\u200b\u53d1\u9001\u200b PNG \u200b\u683c\u5f0f\u200b\u7684\u200b\u56fe\u7247\u200b\u7ed9\u200b\u4e00\u4e2a\u200b\u6216\u200b\u591a\u4e2a\u200b\u7528\u6237\u200b\u3002\u200b\u547d\u4ee4\u200b\u683c\u5f0f\u200b\u4e3a\u200b send-image <image file> <id> [id] ...
\uff0c\u200b\u5176\u4e2d\u200b id \u200b\u53ef\u4ee5\u200b\u4ece\u200b list
\u200b\u7684\u200b\u8f93\u51fa\u200b\u5f97\u77e5\u200b\u3002
\u200b\u547d\u4ee4\u200b\u5206\u522b\u200b\u4e3a\u200b enable-notification
\u200b\u548c\u200b disable-notification
\u200b\u547d\u4ee4\u200b\u5206\u522b\u200b\u4e3a\u200b enable-realvnc-lossy
\u200b\u548c\u200b disable-realvnc-lossy
\u200b\u547d\u4ee4\u200b\u4e3a\u200b set-realvnc-jpeg-level <0-9>
Vlab Software \u200b\u662f\u200b\u5b58\u653e\u200b\u4e8e\u200b\u5404\u4e2a\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b /opt/vlab
\u200b\u7684\u200b\u8f6f\u4ef6\u200b\u7ec4\u5408\u200b\uff0c\u200b\u901a\u8fc7\u200b bind mount \u200b\u6302\u8f7d\u200b\u8fdb\u200b\u865a\u62df\u673a\u200b\u7684\u200b /opt/vlab
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u4e3a\u200b\u7528\u6237\u200b\u63d0\u4f9b\u200b\u9884\u88c5\u200b\u7684\u200b\u8f6f\u4ef6\u200b\u3002\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u4e5f\u200b\u7ecf\u5e38\u200b\u79f0\u4e3a\u200b /opt/vlab\u3002
\u200b\u4e3a\u4e86\u200b\u4fdd\u8bc1\u200b\u5404\u200b\u7528\u6237\u200b\u80fd\u591f\u200b\u53ca\u65f6\u200b\u7528\u200b\u4e0a\u200b\u7edf\u4e00\u200b\u7248\u672c\u200b\u7684\u200b Vlab Software\uff0c\u200b\u6211\u4eec\u200b\u5728\u200b pv1 \u200b\u4e0a\u200b\u4f7f\u7528\u200b crontab \u200b\u6bcf\u5929\u200b\u51cc\u6668\u200b\u5c06\u200b /opt/vlab
\u200b\u540c\u6b65\u200b\u81f3\u200b\u5176\u4ed6\u200b\u4e3b\u673a\u200b\u4e0a\u200b\uff08pv9 \u200b\u9664\u5916\u200b\uff09\uff0c\u200b\u5176\u4e2d\u200b crontab \u200b\u6761\u76ee\u200b\u5982\u4e0b\u200b\uff1a
47 4 * * * /root/sync-software.sh\n
\u200b\u5bf9\u5e94\u200b\u7684\u200b shell \u200b\u811a\u672c\u200b\u5982\u4e0b\u200b\uff1a
/root/sync-software.sh#!/bin/bash\n\nexec >/dev/null 2>/dev/null\n\nfor node in pv{2..8} pvg{1,2} pv{10..14}; do\n rsync -avz --delete /opt/vlab/ \"$node\":/opt/vlab/ &\ndone\nwait\n
\u200b\u5982\u679c\u200b\u6709\u200b\u5bf9\u200b /opt/vlab
\u200b\u4fee\u6539\u200b\u540e\u200b\u9700\u8981\u200b\u7acb\u523b\u200b\u540c\u6b65\u200b\u7684\u200b\uff08\u200b\u4e00\u822c\u200b\u4e0d\u200b\u9700\u8981\u200b\uff09\uff0c\u200b\u624b\u52a8\u200b\u6267\u884c\u200b /root/sync-software.sh
\u200b\u5373\u53ef\u200b\u3002
\u200b\u5728\u200b /etc/skel/.config/menus/
\u200b\u4e0b\u200b\u65b0\u5efa\u200b mate-applications.menu
\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
<?xml version=\"1.0\" ?>\n<!DOCTYPE Menu\n PUBLIC '-//freedesktop//DTD Menu 1.0//EN'\n 'http://standards.freedesktop.org/menu-spec/menu-1.0.dtd'>\n<Menu>\n <Name>Applications</Name>\n <MergeFile type=\"parent\">/etc/xdg/menus/mate-applications.menu</MergeFile>\n\n <!-- Vlab -->\n <Menu>\n <Name>Vlab</Name>\n <Directory>Vlab.directory</Directory>\n <AppDir>/opt/vlab/applications</AppDir>\n <Include><And><Category>Vlab</Category></And></Include>\n </Menu>\n</Menu>\n
\uff08\u200b\u5176\u4ed6\u200b\u684c\u9762\u73af\u5883\u200b\u4e0b\u200b\u6587\u4ef6\u540d\u200b\u9700\u8981\u200b\u505a\u200b\u7c7b\u4f3c\u200b\u4fee\u6539\u200b\uff09
\u200b\u65e7\u200b\u7684\u200b\u76f4\u63a5\u200b\u4fee\u6539\u200b\u7cfb\u7edf\u6587\u4ef6\u200b\u7684\u200b\u65b9\u6cd5\u200b\u200b\u53d6\u51b3\u4e8e\u200b\u6240\u200b\u5b89\u88c5\u200b\u7684\u200b\u684c\u9762\u73af\u5883\u200b\uff0c\u200b\u5728\u200b /etc/xdg/menus
\u200b\u4e0b\u200b\u7684\u200b\u67d0\u4e2a\u200b .menu
\u200b\u6587\u4ef6\u200b\u6700\u540e\u200b\u7684\u200b\u5173\u95ed\u200b\u6807\u7b7e\u200b\u524d\u200b\u63d2\u5165\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5728\u200b\u6700\u200b\u5916\u5c42\u200b\u7684\u200b <Menu>
\u200b\u4e0b\u200b\u6dfb\u52a0\u200b\u4e00\u4e2a\u200b\u5b50\u952e\u200b\u3002
<!-- Vlab -->\n<Menu>\n <Name>Vlab</Name>\n <Directory>Vlab.directory</Directory>\n <AppDir>/opt/vlab/applications</AppDir>\n <Include><And><Category>Vlab</Category></And></Include>\n</Menu>\n
\u200b\u4f8b\u5982\u200b\uff0c\u200b\u5bf9\u4e8e\u200b MATE \u200b\u684c\u9762\u73af\u5883\u200b\uff0c\u200b\u6587\u4ef6\u200b\u662f\u200b /etc/xdg/menus/mate-applications.menu
\uff1b\u200b\u5bf9\u4e8e\u200b Xfce \u200b\u6587\u4ef6\u540d\u200b\u662f\u200b xfce-applications.menu
\u3002
\u200b\u540c\u65f6\u200b\u4e3a\u4e86\u200b\u4f7f\u200b\u547d\u4ee4\u884c\u200b\u73af\u5883\u200b\u80fd\u591f\u200b\u6b63\u786e\u200b\u52a0\u8f7d\u200b PATH\uff0c\u200b\u9700\u8981\u200b\u5728\u200b /etc/profile.d
\u200b\u4e0b\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u6587\u4ef6\u200b vlab.sh
\uff1a
if [ -e /opt/vlab/path.sh ]; then\n source /opt/vlab/path.sh\nfi\n
\u200b\u5982\u679c\u200b\u6ca1\u6709\u200b /etc/profile.d
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u5c31\u200b\u5c06\u200b\u8fd9\u200b\u51e0\u884c\u200b\u4ee3\u7801\u200b\u52a0\u200b\u5728\u200b /etc/profile
\u200b\u7684\u200b\u672b\u5c3e\u200b\u3002
\u200b\u6700\u540e\u200b\uff0c\u200b\u8bb0\u5f97\u200b\u66ff\u6362\u200b\u4e0a\u200b Vlab \u200b\u7684\u200b\u4e13\u5c5e\u200b\u684c\u9762\u200b\uff1ahttps://vlab.ustc.edu.cn/downloads/background.jpg\uff08wget \u200b\u4e0b\u6765\u200b\u653e\u5728\u200b\u5408\u9002\u200b\u7684\u200b\u4f4d\u7f6e\u200b\u914d\u7f6e\u200b\u597d\u200b\u684c\u9762\u200b\u8bbe\u7f6e\u200b\uff09
"},{"location":"vlab-software/installation/","title":"\u5404\u200b\u8f6f\u4ef6\u200b\u7684\u200b\u5b89\u88c5\u200b\u65b9\u5f0f","text":""},{"location":"vlab-software/installation/#code-server","title":"Code Server","text":"\u200b\u4ed3\u5e93\u200b\uff1a coder/code-server
\u200b\u66f4\u65b0\u200b\u811a\u672c\u200b\uff1a
pv1:/root/vlab-software/code-server.sh#!/bin/sh\n\nLOCALDIR=/opt/vlab/code-server\nLOCALVERSION=\"$(jq -r .version \"$LOCALDIR/package.json\")\"\n\nURL=\"https://github.com/coder/code-server/releases/latest\"\nVERSION=\"$(curl -sI \"$URL\" | perl -ne '/^location:/ && /v([\\d.]*)\\s*$/ && print $1')\"\n\nif [ \"$VERSION\" = \"$LOCALVERSION\" ]; then\n echo \"Already up-to-date.\"\n exit 0\nfi\n\nURL=\"https://github.com/coder/code-server/releases/download/v$VERSION/code-server-$VERSION-linux-amd64.tar.gz\"\nBASENAME=\"$(basename -s .tar.gz \"$URL\")\"\n\nset -e\ncd /tmp\nwget -O \"$BASENAME.tar.gz\" \"$URL\"\ntar zxf \"$BASENAME.tar.gz\"\nrsync -avAX \"$BASENAME\"/ \"$LOCALDIR\"/\nrm -rf \"$BASENAME\" \"$BASENAME.tar.gz\"\n
"},{"location":"vlab-software/misc/","title":"Vlab \u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\u5957\u88c5\u200b\u76f8\u5173\u200b\u8bb0\u5f55","text":""},{"location":"vlab-software/misc/#\u5728-lxc-\u4e2d\u4ee5-ubuntu-1804-docker-\u5bb9\u5668\u8fd0\u884c-vivado-20191","title":"\u5728\u200b LXC \u200b\u4e2d\u4ee5\u200b Ubuntu 18.04 Docker \u200b\u5bb9\u5668\u200b\u8fd0\u884c\u200b Vivado 2019.1","text":"\u200b\u8fd0\u884c\u200b Ubuntu 18.04 \u200b\u5bb9\u5668\u200b\uff1a
sudo docker run -it -e DISPLAY=$DISPLAY -e LANG=\"zh_CN.UTF-8\" -v /tmp/.X11-unix/:/tmp/.X11-unix -v /opt/vlab:/opt/vlab -v /home/ubuntu:/user --rm ustclug/ubuntu:18.04\n
\u200b\u5728\u200b\u542f\u52a8\u200b\u7684\u200b Docker \u200b\u5bb9\u5668\u200b\u4e2d\u200b:
connect(3, {sa_family=AF_UNIX, sun_path=@\"/tmp/.X11-unix/X0\"}, 20) = -1 ECONNREFUSED (Connection refused)
\uff09\uff1aapt update\napt install libx11-6 libxext6 libxrender1 libxtst6 libxi6 locales\nlocale-gen zh_CN.UTF-8\nadduser vlab # \u200b\u9700\u8981\u200b\u8ba9\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7528\u6237\u200b PID \u200b\u4e0e\u200b\u5916\u9762\u200b\u76f8\u540c\u200b\nsu vlab\n/opt/vlab/bin/vivado\n
"},{"location":"workflow/miscellaneous/","title":"\u6742\u9879","text":""},{"location":"workflow/miscellaneous/#list-all-vms","title":"\u5217\u51fa\u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u6240\u6709\u200b\u5bb9\u5668","text":"\u200b\u9996\u5148\u200b apt install jq
\uff08\u200b\u8fd9\u4e2a\u200b\u5de5\u5177\u200b\u5f88\u5c0f\u200b\uff0c\u200b\u4e0d\u7528\u200b\u62c5\u5fc3\u200b\u5f04\u4e71\u200b\u7cfb\u7edf\u200b\u73af\u5883\u200b\uff09\uff0c\u200b\u7136\u540e\u200b
jq -r '.ids | to_entries[] | select(.value.type == \"lxc\") | .key' /etc/pve/.vmlist\n
\u200b\u5982\u679c\u200b\u8981\u200b\u5217\u51fa\u200b\u865a\u62df\u673a\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5c06\u200b select type \u200b\u6362\u6210\u200b qemu \u200b\u5373\u53ef\u200b\uff1b\u200b\u5982\u679c\u200b\u4e24\u8005\u200b\u90fd\u200b\u8981\u200b\u5217\u51fa\u200b\u7684\u8bdd\u200b\uff0c\u200b\u76f4\u63a5\u200b\u53bb\u6389\u200b select \u200b\u8fd9\u4e2a\u200b filter\u3002
\u200b\u53c2\u8003\u8d44\u6599\u200b\uff1a
\u200b\u4f7f\u7528\u200b Vlab Container Tool \u200b\u5de5\u5177\u200b
\u200b\u6211\u4eec\u200b\u5df2\u200b\u5c06\u200b\u65b9\u6cd5\u200b 1 \u200b\u6574\u5408\u200b\u8fdb\u200b Vlab Container Tool \u200b\u5de5\u5177\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b vct findpid <pid>...
\u200b\u6765\u200b\u67e5\u627e\u200b PID \u200b\u6240\u5c5e\u200b\u7684\u200b\u5bb9\u5668\u200b\u3002
\u200b\u8fdb\u7a0b\u200b\u7684\u200b cgroup \u200b\u7ed3\u6784\u200b\u91cc\u200b\u5305\u542b\u200b\u4e86\u200b\u5bb9\u5668\u200b ID\uff0c\u200b\u4f8b\u5982\u200b\uff1a
# cat /proc/114514/cgroup\n0::/lxc/6666/ns/system.slice/lightdm.service\n
\u200b\u6240\u4ee5\u200b\u53ea\u200b\u9700\u8981\u200b\u5bf9\u200b\u7740\u200b\u8fd9\u4e2a\u200b cgroup \u200b\u6587\u4ef6\u200b grep \u200b\u51fa\u6765\u200b\u5373\u53ef\u200b\uff1a
grep -Po '/lxc/\\K\\d+' /proc/$PID/cgroup\n
"},{"location":"workflow/miscellaneous/#\u65b9\u6cd5-2","title":"\u65b9\u6cd5\u200b 2","text":"\u200b\u601d\u8def\u200b\uff1a\u200b\u4ece\u200b /proc
\u200b\u91cc\u200b\u4e0d\u65ad\u200b\u8bfb\u53d6\u200b\u5176\u7236\u200b PID \u200b\u76f4\u5230\u200b\u627e\u5230\u200b\u5bb9\u5668\u200b\u91cc\u200b\u7684\u200b PID 1\uff0c\u200b\u8fd9\u4e2a\u200b \"PID 1\" \u200b\u7684\u200b\u7236\u200b\u8fdb\u7a0b\u200b lxc-start
\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\u91cc\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u5bb9\u5668\u200b ID\u3002
\u200b\u53c2\u8003\u200b\u4ee3\u7801\u200b\uff1a
#!/bin/sh\n\nPID=\"$1\"\n\nwhile :; do\n procfile=\"/proc/$PID/status\"\n name=$(awk '$1==\"Name:\"{print $2}' \"$procfile\")\n ppid=$(awk '$1==\"PPid:\"{print $2}' \"$procfile\")\n if [ \"$name\" = \"lxc-start\" ]; then\n tr '\\0' ' ' < \"/proc/$PID/cmdline\" | cut -d' ' -f4\n break\n elif [ \"$ppid\" -eq 1 ]; then\n echo Failed\n exit 1\n else\n PID=\"$ppid\"\n fi\ndone\n
"},{"location":"workflow/miscellaneous/#\u8c03\u8bd5\u5bb9\u5668\u542f\u52a8\u5931\u8d25\u7684\u539f\u56e0","title":"\u8c03\u8bd5\u200b\u5bb9\u5668\u200b\u542f\u52a8\u200b\u5931\u8d25\u200b\u7684\u200b\u539f\u56e0","text":"PVE \u200b\u7684\u200b\u5bb9\u5668\u200b\u91c7\u7528\u200b systemd \u200b\u7ba1\u7406\u200b\uff0c\u200b\u6240\u4ee5\u200b\u9996\u5148\u200b\u53ef\u4ee5\u200b systemctl status pve-container@114514
\u200b\u67e5\u770b\u200b\u60c5\u51b5\u200b\u3002\u200b\u5982\u679c\u200b\u8fd9\u91cc\u200b\u6ca1\u6709\u200b\u8db3\u591f\u200b\u7684\u200b\u65e5\u5fd7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u628a\u200b ExecStart \u200b\u547d\u4ee4\u200b\u62f7\u200b\u4e0b\u6765\u200b\u624b\u52a8\u200b\u8fd0\u884c\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a
/usr/bin/lxc-start -F -n 114514\n
\u200b\u7136\u540e\u200b\u6309\u200b\u63d0\u793a\u200b\u52a0\u4e0a\u200b --logfile /dev/stdout --logpriority INFO
\uff08\u200b\u6216\u8005\u200b DEBUG\uff09\uff0c\u200b\u5e94\u8be5\u200b\u5c31\u200b\u6709\u200b\u8db3\u591f\u200b\u8be6\u7ec6\u200b\u7684\u200b\u65e5\u5fd7\u200b\u6765\u200b\u5224\u65ad\u200b\u95ee\u9898\u200b\u4e86\u200b\u3002
\u200b\u4f7f\u7528\u200b U \u200b\u76d8\u200b\u5b89\u88c5\u200b\u597d\u200b Proxmox VE\uff0c\u200b\u4e3b\u673a\u540d\u200b\u4e3a\u200b pv#.ibuglab.com
\uff08Proxmox \u200b\u5b89\u88c5\u7a0b\u5e8f\u200b\u8981\u6c42\u200b\uff0c\u200b\u88c5\u597d\u200b\u540e\u200b\u53ef\u4ee5\u200b\u6539\u200b\uff09\uff0c\u200b\u5176\u4e2d\u200b #
\u200b\u4e3a\u200b\u6570\u5b57\u200b\u6216\u200b\u5176\u4ed6\u200b\u6807\u8bb0\u200b\uff0c\u200b\u624b\u52a8\u200b\u9012\u589e\u200b\u3002
\u200b\u5148\u914d\u200b\u597d\u200b SSH \u200b\u8bbf\u95ee\u200b\uff0c\u200b\u5bf9\u200b SSH Host Key \u200b\u7b7e\u540d\u200b\uff0c\u200b\u5e76\u200b\u52a0\u5165\u200b TrustedUserCAKeys\u3002\u200b\u89c1\u200b SSH \u200b\u8bc1\u4e66\u200b\u8ba4\u8bc1\u200b \u200b\u4e00\u9875\u200b\u3002
\u200b\u5728\u200b\u52a0\u5165\u200b\u73b0\u6709\u200b\u7684\u200b Proxmox VE \u200b\u96c6\u7fa4\u200b\u540e\u200b\u5220\u9664\u200b root \u200b\u5bc6\u7801\u200b\uff08passwd -d root
\uff09\uff0c\u200b\u65b9\u4fbf\u200b\u4ee5\u540e\u200b\u7ef4\u62a4\u200b\u3002
\u200b\u4fee\u6539\u200b /etc/apt/sources.list
\uff0c\u200b\u5c06\u200b\u8f6f\u4ef6\u200b\u6e90\u200b\u66ff\u6362\u200b\u4e3a\u200b TUNA\uff1a
deb https://mirrors.ustc.edu.cn/debian bullseye main contrib\ndeb https://mirrors.ustc.edu.cn/debian bullseye-updates main contrib\ndeb https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib\n
\u200b\u5220\u9664\u200b /etc/apt/sources.list.d/pve-enterprise.list
\uff0c\u200b\u65b0\u5efa\u200b /etc/apt/sources.list.d/pve.list
\uff0c\u200b\u5199\u5165\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\uff1a
deb https://mirrors.ustc.edu.cn/proxmox/debian bullseye pve-no-subscription\n
\u200b\u5237\u65b0\u200b\u8f6f\u4ef6\u200b\u6e90\u200b\u5e76\u200b\u5b89\u88c5\u200b\u66f4\u65b0\u200b\u3002
"},{"location":"workflow/new-host/#\u5b89\u88c5\u8f6f\u4ef6\u53ef\u9009","title":"\u5b89\u88c5\u200b\u8f6f\u4ef6\u200b\uff08\u200b\u53ef\u200b\u9009\u200b\uff09","text":"\u200b\u4ece\u200b APT \u200b\u5b89\u88c5\u200b\u4e00\u4e9b\u200b\u8f6f\u4ef6\u200b\u4ee5\u4fbf\u200b\u7ba1\u7406\u200b\u548c\u200b\u8c03\u8bd5\u200b\u3002\u200b\u8bf7\u200b\u5c3d\u53ef\u80fd\u200b\u4fdd\u6301\u200b\u4e3b\u673a\u200b\u7cfb\u7edf\u200b\u7b80\u6d01\u200b\u3002
--no-install-recommends
\uff09\u200b\u53c2\u89c1\u200b\u4e3b\u673a\u200b\u7f51\u5361\u200b\u4e00\u9875\u200b\u3002
"},{"location":"workflow/new-host/#\u914d\u7f6e\u9632\u706b\u5899","title":"\u914d\u7f6e\u200b\u9632\u706b\u5899","text":"\u200b\u9700\u8981\u200b\u5b89\u88c5\u200b iptables-persistent
\u200b\u548c\u200b ipset-persistent
\u200b\u8f6f\u4ef6\u5305\u200b\uff0c\u200b\u4ece\u200b\u53e6\u4e00\u53f0\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u590d\u5236\u200b /etc/iptables
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u4fee\u6539\u200b\u76f8\u5173\u200b\u6587\u4ef6\u200b\u4e2d\u200b\u7684\u200b\u7f51\u5361\u200b\u540d\u79f0\u200b\uff08\u200b\u5982\u200b\u6709\u200b\u9700\u8981\u200b\uff09\u200b\u5e76\u200b\u91cd\u542f\u200b netfilter-persistent.service
\u3002
\u200b\u5728\u200b /etc/lvm/lvm.conf
\u200b\u672b\u5c3e\u200b\u8ffd\u52a0\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\uff0c\u200b\u66ff\u6362\u200b\u6389\u200b pve-manager \u200b\u751f\u6210\u200b\u7684\u200b devices section\uff1a
devices {\n # added by pve-manager to avoid scanning ZFS zvols\n global_filter = [\"r|/dev/disk/by-id/usb.*|\", \"r|/dev/zd.*|\", \"r|/dev/mapper/pve-.*|\" \"r|/dev/mapper/.*-(vm|base)--[0-9]+--disk--[0-9]+|\"]\n}\nactivation {\n auto_activation_volume_list = [\"pve\", \"data\"]\n}\n
"},{"location":"workflow/new-host/#\u6302\u8f7d\u5b58\u50a8\u670d\u52a1\u5668","title":"\u6302\u8f7d\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668","text":"\u200b\u4f7f\u7528\u200b iSCSI \u200b\u547d\u4ee4\u884c\u200b\u7ba1\u7406\u5de5\u5177\u200b
iscsiadm -m discovery -t sendtargets -p 10.0.0.200\niscsiadm -m node -T iqn.2015-11.com.hpe:storage.msa1050.1840436ed4 -p 10.0.0.200 --login\n
\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u4f7f\u7528\u200b\u5730\u5740\u200b\u4e3a\u200b 10.0.0.200 \u200b\u4e0e\u200b 10.0.0.201\uff0c\u200b\u5206\u522b\u200b\u5f52\u5c5e\u200b\u4e24\u4e2a\u200b\u63a7\u5236\u5668\u200b\uff0c\u200b\u5efa\u8bae\u200b\u5404\u53f0\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u4ea4\u66ff\u200b\u8fde\u63a5\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u5730\u5740\u200b\u4ee5\u200b\u300c\u200b\u8d1f\u8f7d\u200b\u5747\u8861\u200b\u300d\u3002
\u200b\u6302\u8f7d\u200b\u770b\u5230\u200b iSCSI \u200b\u7684\u200b\u5377\u200b\u4e4b\u540e\u200b\uff0c\u200b\u8fdb\u5165\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u7ba1\u7406\u200b\u9875\u9762\u200b\uff0c\u200b\u9009\u200b Hosts\uff0c\u200b\u4e3a\u200b\u521a\u624d\u200b\u65b0\u589e\u200b\u7684\u200b\u90a3\u4e2a\u200b\u4e3b\u673a\u200b\u8865\u200b\u4e0a\u200b\u540d\u79f0\u200b\u3002IQN \u200b\u53ef\u4ee5\u200b\u770b\u200b\u4e3b\u673a\u200b\u91cc\u200b\u7684\u200b /etc/iscsi/initiatorname.iscsi
\u200b\u6587\u4ef6\u200b\u6765\u200b\u786e\u8ba4\u200b\u3002
open-iscsi \u200b\u8f6f\u4ef6\u5305\u200b\u901a\u8fc7\u200b systemd \u200b\u670d\u52a1\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u5f00\u673a\u200b\u81ea\u52a8\u200b\u6302\u8f7d\u200b iSCSI \u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u4f46\u662f\u200b\u9ed8\u8ba4\u200b\u901a\u8fc7\u200b sendtargets \u200b\u65b9\u5f0f\u200b\u53d1\u73b0\u200b\u7684\u200b target \u200b\u4e0d\u4f1a\u200b\u81ea\u52a8\u200b\u767b\u5f55\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u6839\u636e\u200b\u9700\u8981\u200b\u81ea\u5df1\u200b\u8bbe\u7f6e\u200b\u6bcf\u53f0\u200b\u673a\u5668\u200b\u901a\u8fc7\u200b\u6307\u5b9a\u200b\u7684\u200b\u5730\u5740\u200b\u548c\u200b\u7aef\u53e3\u200b\u767b\u5f55\u200b\u6307\u5b9a\u200b\u7684\u200b target\u3002
\u200b\u53c2\u8003\u200b\u8fd9\u200b\u7bc7\u6587\u7ae0\u200b\uff0c\u200b\u9488\u5bf9\u200b\u60f3\u8981\u200b\u767b\u5f55\u200b\u7684\u200b target \u200b\u548c\u200b\u5730\u5740\u200b\uff0c\u200b\u4fee\u6539\u200b\u8bbe\u7f6e\u200b\uff1a
iscsiadm -m node -T iqn.2015-11.com.hpe:storage.msa1050.1840436ed4 -p 10.0.0.200 -o update -n node.startup -v automatic\niscsiadm -m node -T iqn.2015-11.com.hpe:storage.msa1050.1840436ed4 -p 10.0.0.200 -o update -n node.conn[0].startup -v automatic\n
\u200b\u6ce8\u610f\u200b\u6b63\u786e\u200b\u586b\u5199\u200b\u9009\u9879\u200b -T
\u200b\u548c\u200b -p
\u200b\u7684\u200b\u53c2\u6570\u200b\u3002
\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u7f16\u8f91\u200b\u914d\u7f6e\u6587\u4ef6\u200b
\u200b\u6216\u8005\u200b\uff0c\u200b\u4e00\u4e2a\u200b\u7b49\u4ef7\u200b\u7684\u200b\u505a\u6cd5\u200b\u662f\u200b\u7f16\u8f91\u200b /etc/iscsi/nodes/iqn.2015-11.com.hpe:storage.msa1050.1840436ed4/10.0.0.200,3260,1/default
\u200b\u6587\u4ef6\u200b\uff0c\u200b\u627e\u5230\u200b\u5982\u4e0b\u200b\u4e24\u884c\u200b\u5e76\u200b\u4fee\u6539\u200b\u4e3a\u200b automatic
\uff1a
node.startup = automatic\nnode.conn[0].startup = automatic\n
\u200b\u6ce8\u610f\u200b\u8def\u5f84\u200b\u4e2d\u200b\u7684\u200b 10.0.0.200,3260,1
\u200b\u76ee\u5f55\u540d\u200b\u5c31\u662f\u200b IP \u200b\u5730\u5740\u200b + \u200b\u7aef\u53e3\u53f7\u200b + \u200b\u63a7\u5236\u5668\u200b\u5e8f\u53f7\u200b\u3002\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u63a7\u5236\u5668\u200b\u4f4d\u4e8e\u200b 10.0.0.201,3260,2
\u3002
\u200b\u6302\u8f7d\u200b NFS \u200b\u5171\u4eab\u200b\u6240\u7528\u200b\u7684\u200b /etc/fstab
\u200b\u6761\u76ee\u200b\uff1a
10.0.0.1:/var/lib/vz /mnt/vz nfs rw,async,hard,intr,noexec 0 0\n
\u200b\u6ce8\u610f\u200b\u5148\u200b\u5728\u200b pv1 \u200b\u4e0a\u200b\u7f16\u8f91\u200b /etc/exports
\u200b\u5e76\u200b\u8fd0\u884c\u200b exportfs -a
\u200b\u5237\u65b0\u200b\u6302\u8f7d\u200b\u6743\u9650\u200b\u3002
\u200b\u53c2\u89c1\u200b PVE \u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u989d\u5916\u200b\u8bbe\u7f6e\u200b\u3002
"},{"location":"workflow/pack-ct-image/","title":"\u6253\u5305\u200b\u5bb9\u5668\u200b\u955c\u50cf","text":"Success
\u200b\u6211\u4eec\u200b\u5df2\u200b\u5c06\u200b\u6b64\u200b\u4efb\u52a1\u200b\u5b8c\u5168\u200b\u81ea\u52a8\u5316\u200b\uff0c\u200b\u811a\u672c\u200b\u548c\u200b\u76f8\u5173\u200b\u8d44\u6e90\u200b\u5728\u200b labstrap \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u3002
\u200b\u7ba1\u7406\u5458\u200b\uff08\u200b\u6709\u200b\u4ed3\u5e93\u200b\u6743\u9650\u200b\u7684\u200b\u4eba\u200b\uff09\u200b\u53ef\u4ee5\u200b\u5728\u200b Image Build CI \u200b\u9875\u9762\u200b\u70b9\u51fb\u200b Run workflow \u200b\u542f\u52a8\u200b\u4e00\u6b21\u200b\u6784\u5efa\u200b\uff0c\u200b\u6784\u5efa\u200b\u5b8c\u6210\u200b\u540e\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u4e0a\u200b\u4f20\u5230\u200b Auto builds \u200b\u8fd9\u4e2a\u200b release\u3002
Tip
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u662f\u200b\u6211\u4eec\u200b\u5728\u200b\u81ea\u52a8\u5316\u200b\u4e4b\u524d\u200b\u7684\u200b\u624b\u52a8\u200b\u6253\u5305\u200b\u6d41\u7a0b\u200b\uff0c\u200b\u7559\u200b\u4f5c\u200b\u53c2\u8003\u200b\u3002
Proxmox VE \u200b\u7684\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u548c\u200b LXC \u200b\u7565\u6709\u4e0d\u540c\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4ece\u200b LXC \u200b\u4e0b\u8f7d\u200b\u7684\u200b\u955c\u50cf\u200b\u4e0d\u5b9c\u200b\u76f4\u63a5\u200b\u7528\u4e8e\u200b Proxmox VE\u3002\u200b\u57fa\u51c6\u200b\u955c\u50cf\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b\u5df2\u6709\u200b\u7684\u200b vlab \u200b\u955c\u50cf\u200b\uff08\u200b\u63a8\u8350\u200b\uff09\uff0c\u200b\u6216\u8005\u200b\u4f7f\u7528\u200b pveam
\u200b\u547d\u4ee4\u200b\u4ece\u200b Proxmox \u200b\u5b98\u65b9\u200b\u4e0b\u8f7d\u200b\u3002
\u200b\u540c\u6837\u200b\u7531\u4e8e\u200b\u955c\u50cf\u200b\u5185\u5bb9\u200b\u7684\u200b\u4e0d\u200b\u4e00\u81f4\u200b\u4ee5\u53ca\u200b\u4e0b\u9762\u200b\u63d0\u5230\u200b\u7684\u200b\u4e00\u4e9b\u200b\u4e0e\u200b\u7f51\u7edc\u200b\u76f8\u5173\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u5c1d\u8bd5\u200b\u5728\u200b\u81ea\u5df1\u200b\u7684\u200b LXC / LXD \u200b\u73af\u5883\u200b\u4e2d\u200b\u8fdb\u884c\u200b\u955c\u50cf\u200b\u7684\u200b\u914d\u7f6e\u200b\u5de5\u4f5c\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u9047\u5230\u200b\u5404\u79cd\u5404\u6837\u200b\u7684\u200b\u56f0\u96be\u200b\uff0c\u200b\u4f8b\u5982\u200b\u6743\u9650\u200b\u95ee\u9898\u200b\u3001\u200b\u7f51\u7edc\u200b\u95ee\u9898\u200b\u7b49\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u76f4\u63a5\u200b\u5728\u200b\u73b0\u6709\u200b\u7684\u200b Proxmox \u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u64cd\u4f5c\u200b\u5c31\u884c\u4e86\u200b\u3002
\u200b\u6253\u5305\u200b\u7684\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u5e94\u5f53\u200b\u5728\u200b\u529f\u80fd\u200b\u5b8c\u6574\u200b\u3001\u200b\u8ffd\u6c42\u200b\u5f00\u7bb1\u200b\u5373\u7528\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u5c3d\u53ef\u80fd\u200b\u4fdd\u6301\u200b\u7cbe\u7b80\u200b\uff0c\u200b\u4f8b\u5982\u200b build-essential \u200b\u53ef\u4ee5\u200b\u5b89\u88c5\u200b\uff0c\u200b\u4f46\u662f\u200b Clang / LLVM \u200b\u6700\u597d\u200b\u4e0d\u8981\u200b\uff08
"},{"location":"workflow/pack-ct-image/#prepare-ct","title":"\u4e00\u200b\u3001\u200b\u51c6\u5907\u200b\u65b0\u200b\u7684\u200b\u5bb9\u5668\u200b\u73af\u5883","text":"\u200b\u767b\u5f55\u200b\u96c6\u7fa4\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u5bb9\u5668\u200b\uff0c\u200b\u6311\u200b\u4e00\u4e2a\u200b\u8d1f\u8f7d\u200b\u8f83\u200b\u4f4e\u200b\u7684\u200b\u8282\u70b9\u200b\uff08\u200b\u4f8b\u5982\u200b pv8\uff09\uff0c\u200b\u628a\u200b Unprivileged container \u200b\u53d6\u6d88\u200b\u52fe\u9009\u200b\uff08\u200b\u9ed8\u8ba4\u200b\u662f\u200b\u9009\u4e2d\u200b\u7684\u200b\uff0c\u200b\u4e0d\u200b\u53d6\u6d88\u200b\u7684\u8bdd\u200b\u540e\u9762\u200b\u6253\u5305\u200b\u65f6\u8981\u200b\u989d\u5916\u200b\u5904\u7406\u200b\u4e00\u4e0b\u200b\uff09\uff0c\u200b\u6a21\u677f\u200b\u9009\u200b\u4e00\u4e2a\u200b\u57fa\u7840\u200b\u955c\u50cf\u200b\uff0c\u200b\u786c\u76d8\u200b\u5927\u5c0f\u200b\u6839\u636e\u200b\u8981\u88c5\u200b\u7684\u200b\u4e1c\u897f\u200b\u4f30\u8ba1\u200b\uff0c\u200b\u5178\u578b\u200b\u7684\u200b Ubuntu 20.04 \u200b\u955c\u50cf\u200b\u53ea\u8981\u200b 4 GB \u200b\u5c31\u591f\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u5b58\u50a8\u200b\u4e3a\u200b local-lvm \u200b\u4ee5\u200b\u83b7\u5f97\u200b\u66f4\u597d\u200b\u7684\u200b\u786c\u76d8\u200b\u6027\u80fd\u200b\uff08\u200b\u4e3b\u673a\u200b\u7684\u200b SSD\uff09\u3002CPU \u200b\u548c\u200b\u5185\u5b58\u200b\u53ef\u4ee5\u200b\u968f\u610f\u200b\uff0c\u200b\u53cd\u6b63\u200b\u8fd9\u4e2a\u200b\u5bb9\u5668\u200b\u662f\u200b\u4e34\u65f6\u200b\u4f7f\u7528\u200b\u7684\u200b\u3002\u200b\u5bb9\u5668\u200b\u7f51\u7edc\u8fde\u63a5\u200b\u5230\u200b vmbr1\uff0c\u200b\u968f\u4fbf\u200b\u53d6\u200b\u4e00\u4e2a\u200b\u6ca1\u7528\u8fc7\u200b\u7684\u200b IPv4 \u200b\u5730\u5740\u200b\uff08\u200b\u5efa\u8bae\u200b 172.31.0.240 - 172.31.0.255 \u200b\u4e4b\u95f4\u200b\uff09\uff0c\u200b\u63a9\u7801\u200b\u662f\u200b /16\uff0c\u200b\u7f51\u5173\u200b\u4e3a\u200b 172.31.0.1\uff0c\u200b\u7136\u540e\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4e0b\u200b\u4e00\u6b65\u200b\u521b\u5efa\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-ct-image/#base-works","title":"\u4e8c\u200b\u3001\u200b\u57fa\u7840\u200b\u5de5\u4f5c","text":"\u200b\u672c\u200b\u8282\u200b\u5de5\u4f5c\u200b\u53ea\u200b\u9700\u8981\u200b\u5bf9\u200b\u4ece\u200b Proxmox \u200b\u76f4\u63a5\u200b\u4e0b\u8f7d\u200b\u7684\u200b\u201c\u200b\u6700\u200b\u539f\u59cb\u200b\u201d\u200b\u7684\u200b\u955c\u50cf\u200b\u5904\u7406\u200b\u3002
mirrors.ustc.edu.cn
\u200b\u52a0\u5165\u200b SSH CA \u200b\u516c\u94a5\u200b\uff1a\u200b\u8fd9\u91cc\u200b\u8bf7\u200b\u52a0\u5165\u200b Vlab User CA\uff08SSH \u200b\u8bc1\u4e66\u200b\u8ba4\u8bc1\u200b\u8fd9\u200b\u4e00\u9875\u200b\u4e0b\u9762\u200b\u90a3\u4e2a\u200b\uff09
\u200b\u5bf9\u4e8e\u200b Ubuntu 20.04 \u200b\u7cfb\u7edf\u200b\uff0c\u200b\u5176\u200b\u9ed8\u8ba4\u200b\u7684\u200b sshd_config
\u200b\u91cc\u200b\u6709\u200b\u4e00\u884c\u200b Include\uff0c\u200b\u6240\u4ee5\u200b\u53ef\u4ee5\u200b\u5f88\u200b\u65b9\u4fbf\u200b\u5730\u200b\u5728\u200b /etc/ssh/sshd_config.d
\u200b\u4e0b\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u6587\u4ef6\u200b\u7528\u6765\u200b\u5199\u200b TrustedUserCAKeys
\u3002\u200b\u5bf9\u4e8e\u200b\u5176\u4ed6\u200b\u7cfb\u7edf\u200b\uff0c\u200b\u8fd8\u662f\u200b\u5c06\u200b\u914d\u7f6e\u200b\u76f4\u63a5\u200b\u8ffd\u52a0\u200b\u81f3\u200b\u7cfb\u7edf\u200b\u7684\u200b sshd_config
\u3002
\u200b\u8bbe\u7f6e\u200b\u7cfb\u7edf\u200b\u8bed\u8a00\u200b\uff1a\u200b\u4f7f\u7528\u200b dpkg-reconfigure locales
\u200b\u751f\u6210\u200b en_US.UTF-8
\u200b\u548c\u200b zh_CN.UTF-8
\u200b\u7684\u200b\u8bed\u8a00\u200b\u5e76\u200b\u5c06\u200b\u4e2d\u6587\u200b\u8bbe\u200b\u4e3a\u200b\u9ed8\u8ba4\u200b\u3002\u200b\u4e0d\u8981\u200b\u5b89\u88c5\u200b locales-all
\u200b\u5305\u200b\uff0c\u200b\u5b83\u200b\u592a\u5927\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u7528\u4e0d\u4e0a\u200b
\u200b\u4e0b\u9762\u200b\u8fd9\u4e9b\u200b\u5de5\u4f5c\u200b\u53ef\u4ee5\u200b\u51ed\u200b\u81ea\u5df1\u200b\u559c\u597d\u200b\u9009\u505a\u200b\uff1a
build-essential
, Git, Vim \u200b\u7b49\u200b\u5e38\u7528\u200b\u8f6f\u4ef6\u5de5\u5177\u200b\u3002\u200b\u8bf7\u200b\u5c3d\u91cf\u200b\u4fdd\u6301\u200b\u7cbe\u7b80\u200b/etc/skel
\uff1a\u200b\u4f8b\u5982\u200b\uff0c\u200b\u5728\u200b .bashrc
\u200b\u91cc\u200b\u9ed8\u8ba4\u200b\u542f\u7528\u200b\u6709\u200b\u989c\u8272\u200b\u7684\u200b PS1\uff08\u200b\u9650\u200b Ubuntu / Debian\uff09\uff0c\u200b\u6216\u8005\u200b\u63d0\u4f9b\u200b\u9ed8\u8ba4\u200b\u7684\u200b rc \u200b\u7c7b\u200b\u914d\u7f6e\u6587\u4ef6\u200b/etc/motd
\uff1a\u200b\u4e5f\u200b\u5c31\u200b SSH \u200b\u767b\u5f55\u200b\u7684\u200b\u65f6\u5019\u200b\u663e\u793a\u200b\u4e00\u4e0b\u200b\uff0c\u200b\u6539\u4e0d\u6539\u200b\u6ca1\u200b\u5565\u200b\u533a\u522b\u200b\u200b\u5982\u679c\u200b\u6253\u5305\u200b\u7684\u200b\u76ee\u6807\u200b\u4e0d\u662f\u200b\u5e26\u200b\u684c\u9762\u73af\u5883\u200b\u7684\u200b\u955c\u50cf\u200b\u7684\u8bdd\u200b\uff0c\u200b\u7b2c\u4e09\u6b65\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8df3\u8fc7\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-ct-image/#install-desktop-environment","title":"\u4e09\u200b\u3001\u200b\u5b89\u88c5\u200b\u4e0e\u200b\u6d4b\u8bd5\u200b\u684c\u9762\u73af\u5883","text":"\u200b\u684c\u9762\u73af\u5883\u200b\u7684\u200b\u914d\u7f6e\u200b\u8f83\u4e3a\u200b\u590d\u6742\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u8981\u200b\u8fd0\u884c\u200b VNC server \u200b\u5e76\u200b\u5c06\u200b\u5176\u200b\u4f5c\u4e3a\u200b\u684c\u9762\u200b\u7ba1\u7406\u5668\u200b\u7684\u200b\u4e3b\u200b\u663e\u793a\u200b\u8f93\u51fa\u200b\u3002\u200b\u7ecf\u8fc7\u200b pdlan \u200b\u7684\u200b\u8c03\u8bd5\u200b\uff0c\u200b\u91c7\u7528\u200b LightDM + TigerVNC server \u200b\u7684\u200b\u7ec4\u5408\u200b\uff0c\u200b\u4f7f\u7528\u200b\u4e00\u4e2a\u200b\u81ea\u5df1\u200b\u7f16\u5199\u200b\u7684\u200b\u542f\u52a8\u200b\u811a\u672c\u200b\u53ef\u4ee5\u200b\u6b63\u5e38\u200b\u8fd0\u884c\u200b\u3002\u200b\u8fd9\u90e8\u5206\u200b\u914d\u7f6e\u200b\u5de5\u4f5c\u200b\u6211\u4eec\u200b\u5df2\u7ecf\u200b\u6253\u5305\u200b\u6210\u200b\u4e86\u200b\u4e00\u4e2a\u200b Debian package\uff0c\u200b\u653e\u5728\u200b https://vlab.ustc.edu.cn/repo/vlab-vnc.deb\uff0c\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5b89\u88c5\u200b\uff0c\u200b\u6ce8\u610f\u200b\u4f7f\u7528\u200b --no-install-recommends
\u3002
\u200b\u7531\u4e8e\u200b\u540e\u53f0\u200b VNC server \u200b\u91c7\u7528\u200b\u4e86\u200b\u65e0\u200b\u5bc6\u7801\u200b\u7684\u200b\u8ba4\u8bc1\u200b\u65b9\u5f0f\u200b\uff0c\u200b\u56e0\u6b64\u200b\u989d\u5916\u200b\u4f7f\u7528\u200b iptables \u200b\u9632\u706b\u5899\u200b\u6765\u200b\u9650\u5236\u200b\u53ea\u80fd\u200b\u4ece\u200b web \u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u5730\u5740\u200b\u8fde\u63a5\u200b VNC server\uff0c\u200b\u8be5\u200b\u90e8\u5206\u200b\u5904\u7406\u200b\u653e\u5728\u200b\u4e86\u200b deb \u200b\u7684\u200b postinst \u200b\u64cd\u4f5c\u200b\u4e2d\u200b\uff0c\u200b\u4f1a\u200b\u52a0\u4e0a\u200b\u4e00\u6761\u200b IPv4 \u200b\u89c4\u5219\u200b\u9650\u5236\u200b\u6765\u6e90\u200b\u548c\u200b\u4e00\u6761\u200b IPv6 \u200b\u89c4\u5219\u200b\u62d2\u7edd\u200b\u6240\u6709\u200b\u8fde\u63a5\u200b\u3002
\u200b\u684c\u9762\u73af\u5883\u200b\u6211\u4eec\u200b\u4e00\u822c\u200b\u9009\u7528\u200b\u8f7b\u91cf\u200b\u7684\u200b Xfce\uff08\u200b\u5b89\u88c5\u200b xfce4
\uff0c\u200b\u4e5f\u200b\u8981\u200b\u4f7f\u7528\u200b --no-install-recommends
\uff09\uff0c\u200b\u88c5\u200b\u597d\u200b\u4e4b\u540e\u200b\u542f\u52a8\u200b lightdm.service
\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u6d4b\u8bd5\u200b\u4e86\u200b\u3002
\u200b\u4e3a\u4e86\u200b\u505a\u5230\u200b\u201c\u200b\u5f00\u7bb1\u200b\u5373\u7528\u200b\u201d\uff0c\u200b\u4e00\u822c\u200b\u8fd8\u4f1a\u200b\u5b89\u88c5\u200b\u4e00\u4e9b\u200b\u5e38\u7528\u8f6f\u4ef6\u200b\uff0c\u200b\u5982\u200b\u6d4f\u89c8\u5668\u200b\u3001\u200b\u6587\u672c\u7f16\u8f91\u200b\u5668\u200b\u7b49\u200b\uff0c\u200b\u540c\u65f6\u200b\u5b89\u88c5\u200b\u5408\u9002\u200b\u7684\u200b\u5b57\u4f53\u200b\u548c\u200b\u8f93\u5165\u6cd5\u200b\u786e\u4fdd\u200b\u4e2d\u6587\u200b\u80fd\u591f\u200b\u6b63\u5e38\u200b\u4f7f\u7528\u200b\u3002\u200b\u5177\u4f53\u6765\u8bf4\u200b\uff0c\u200b\u6211\u4eec\u200b\u4f1a\u200b\u5b89\u88c5\u200b\uff1a
xfce-goodies
\uff0c\u200b\u8fd9\u4e2a\u200b\u5305\u4f1a\u200b\u5e26\u4e0a\u200b\u8bb0\u4e8b\u672c\u200b\u8ba1\u7b97\u5668\u200b\u7b49\u200b\u5c0f\u200b\u5de5\u5177\u200bibus-pinyin
\u200b\u6216\u200b fcitx-libpinyin
\u200b\u5e76\u200b\u914d\u7f6e\u200b\u597d\u200b\uff0c\u200b\u4f5c\u4e3a\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u4e2d\u6587\u200b\u62fc\u97f3\u8f93\u5165\u200b\u6cd5\u200bfonts-droid-fallback
\u200b\u6216\u200b fonts-wqy-microhei
\u200b\u4f5c\u4e3a\u200b\u4e2d\u6587\u5b57\u4f53\u200b\u3002\u200b\u4e0d\u8981\u200b\u5b89\u88c5\u200b fonts-noto-sans
\u200b\u7b49\u200b\u5b57\u4f53\u200b\uff0c\u200b\u5b83\u4eec\u200b\u592a\u5927\u200b\u4e86\u200b\u200b\u91cd\u8981\u200b\uff1alibncurses5
\uff0cVivado \u200b\u9700\u8981\u200b\u5b83\u200b
\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u529e\u6cd5\u200b\u662f\u200b\uff0c\u200b\u8fdb\u5165\u200b /lib/x86_64-linux-gnu/
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u5c06\u200b libncurses.so.5
\u200b\u8f6f\u200b\u94fe\u63a5\u200b\u5230\u200b libncurses.so.6
\uff0c\u200b\u540c\u6837\u200b\u4e5f\u200b\u94fe\u63a5\u200b\u4e00\u4e0b\u200b libtinfo.so.5
\u200b\u5373\u53ef\u200b\u3002
cd /lib/x86_64-linux-gnu/\nln -s libncurses.so.6 libncurses.so.5\nln -s libtinfo.so.6 libtinfo.so.5\n
\u200b\u7531\u4e8e\u200b\u684c\u9762\u73af\u5883\u200b\u7ecf\u5e38\u200b\u9644\u5e26\u200b\u4e00\u5806\u200b\u7528\u4e0d\u4e0a\u200b\u7684\u200b\u4e1c\u897f\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6253\u5305\u200b\u524d\u591a\u82b1\u70b9\u200b\u65f6\u95f4\u200b\u6e05\u7406\u200b\u3002
"},{"location":"workflow/pack-ct-image/#\u914d\u7f6e-vlab-software","title":"\u914d\u7f6e\u200b Vlab Software","text":"\u200b\u4e3b\u200b\u6587\u7ae0\u200b\uff1aVlab Software
\u200b\u53c2\u8003\u200b\u4e3b\u200b\u6587\u7ae0\u200b\u914d\u7f6e\u200b menu\u3002
\u200b\u521b\u5efa\u200b /etc/profile.d/vlab.sh
\uff0c\u200b\u586b\u5165\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff1a
if [ -e /opt/vlab/path.sh ]; then\n . /opt/vlab/path.sh\nfi\n
\u200b\u5982\u679c\u200b\u6ca1\u6709\u200b /etc/profile.d
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u5c31\u200b\u5c06\u200b\u8fd9\u200b\u51e0\u884c\u200b\u4ee3\u7801\u200b\u52a0\u200b\u5728\u200b /etc/profile
\u200b\u7684\u200b\u672b\u5c3e\u200b\u3002
\u200b\u975e\u200b Ubuntu \u200b\u865a\u62df\u673a\u200b\u7684\u200b lightdm \u200b\u53ef\u80fd\u200b\u4e0d\u4f1a\u200b\u52a0\u8f7d\u200b profile\uff0c\u200b\u6240\u4ee5\u200b\u9700\u8981\u200b\uff1a
ln -s /etc/profile.d/vlab.sh /etc/X11/Xsession.d/99vlab\n
\u200b\u8ba9\u200b lightdm \u200b\u542f\u52a8\u200b\u65f6\u200b\u66f4\u65b0\u200b vlab \u200b\u4fe1\u606f\u200b\u3002
\u200b\u6700\u540e\u200b\uff0c\u200b\u8bb0\u5f97\u200b\u66ff\u6362\u200b\u4e0a\u200b Vlab \u200b\u7684\u200b\u4e13\u5c5e\u200b\u684c\u9762\u200b\uff1ahttps://vlab.ustc.edu.cn/downloads/background.jpg
"},{"location":"workflow/pack-ct-image/#test-desktop-environment","title":"\u6d4b\u8bd5\u200b\u684c\u9762\u73af\u5883","text":"\u200b\u53ea\u200b\u63a5\u5165\u200b\u5185\u7f51\u200b\u7684\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u8f6c\u53d1\u200b\u4ec0\u4e48\u200b\u7684\u200b\u6bd4\u8f83\u200b\u9ebb\u70e6\u200b\uff08\u200b\u5982\u679c\u200b\u4f60\u4f1a\u7528\u200b SSH \u200b\u8f6c\u53d1\u200b ssh -L
\u200b\u7684\u8bdd\u200b\u5f53\u7136\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\uff09\uff0c\u200b\u8fd9\u91cc\u200b\u63d0\u4f9b\u200b\u4e00\u4e2a\u200b\u4f7f\u7528\u200b VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u7684\u200b\u529e\u6cd5\u200b\uff0c\u200b\u5c31\u662f\u200b\u81ea\u5df1\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u8bb0\u5f55\u200b\u4e0b\u200b IP \u200b\u4e4b\u540e\u200b\u5173\u673a\u200b\uff0c\u200b\u518d\u200b\u628a\u200b IP \u200b\u5207\u6362\u200b\u5230\u200b\u6b63\u5728\u200b\u5b89\u88c5\u200b\u914d\u7f6e\u200b\u7684\u200b\u8fd9\u4e2a\u200b\u5bb9\u5668\u200b\u4e0a\u200b\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u4e86\u200b\u3002
LightDM \u200b\u7684\u200b\u5173\u673a\u200b\u91cd\u542f\u200b\u529f\u80fd\u200b\u65e0\u6548\u200b\u662f\u200b\u6b63\u5e38\u200b\u73b0\u8c61\u200b\uff0c\u200b\u653e\u5fc3\u200b\u5ffd\u7565\u200b\uff0c\u200b\u53ea\u8981\u200b Logout \u200b\u80fd\u7528\u200b\u5c31\u200b\u57fa\u672c\u200b OK \u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-ct-image/#pre-packaging","title":"\u56db\u200b\u3001\u200b\u6253\u5305\u200b\u524d\u200b\u7684\u200b\u5de5\u4f5c","text":"\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u6e05\u7406\u200b\u5de5\u4f5c\u200b\uff0c\u200b\u907f\u514d\u200b\u628a\u200b\u4e0d\u5fc5\u8981\u200b\u7684\u200b\u5185\u5bb9\u200b\u6253\u5305\u200b\u8fdb\u200b\u955c\u50cf\u200b\u3002\u200b\u4e0b\u9762\u200b\u662f\u200b\u4e00\u4e9b\u200b\u9700\u8981\u200b\u6e05\u7406\u200b\u7684\u200b\u4e1c\u897f\u200b\uff1a\uff08\u200b\u5047\u8bbe\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u7684\u200b\u6302\u8f7d\u200b\u70b9\u4e3a\u200b/\u200b\u89e3\u538b\u200b\u5230\u200b\u4e86\u200b $MOUNT
\uff09
$MOUNT/etc/ssh
\uff1a\u200b\u5c06\u200b\u751f\u6210\u200b\u7684\u200b Host Key \u200b\u5168\u90e8\u200b\u5220\u6389\u200b\uff08\u200b\u5982\u679c\u200b\u6709\u200b\uff09\uff0c\u200b\u8fd9\u6837\u200b\u521b\u5efa\u200b\u65b0\u200b\u5bb9\u5668\u200b\u7684\u200b\u65f6\u5019\u200b\u53ef\u4ee5\u200b\u751f\u6210\u200b\u65b0\u200b\u7684\u200b\u4e3b\u673a\u200b\u5bc6\u94a5\u200b\u5bf9\u200b$MOUNT/run
, $MOUNT/tmp
, $MOUNT/var/{backups,cache,crash,log,tmp}
\uff1a\u200b\u5168\u90e8\u200b\u6e05\u7a7a\u200b\uff0c\u200b\u6ce8\u610f\u200b $MOUNT/tmp
, $MOUNT/var/crash
\u200b\u548c\u200b $MOUNT/var/tmp
\u200b\u8fd9\u200b\u4e09\u4e2a\u200b\u76ee\u5f55\u200b\u7684\u200b\u6743\u9650\u200b\u662f\u200b 1777 (rwxrwxrwt)\uff0c\u200b\u5176\u4ed6\u200b\u76ee\u5f55\u200b\u6743\u9650\u200b\u90fd\u200b\u662f\u200b 0755 (rwxr-xr-x)\u3002$MOUNT/root
\u200b\u548c\u200b $MOUNT/home/<user>
\uff1a\u200b\u628a\u200b .bash_history
\u200b\u4e4b\u7c7b\u200b\u7684\u200b\u6587\u4ef6\u200b\u90fd\u200b\u5220\u6389\u200b\uff0c\u200b\u53ea\u200b\u7559\u4e0b\u200b\u6700\u200b\u57fa\u672c\u200b\u7684\u200b\u5185\u5bb9\u200b\uff08\u200b\u5982\u679c\u200b\u914d\u7f6e\u200b\u4e86\u200b\u684c\u9762\u73af\u5883\u200b\uff0c\u200b\u8c28\u614e\u200b\u6e05\u7406\u200b .config
\uff09\u3002$MOUNT/var/spool/postfix/dev
\u200b\u548c\u200b $MOUNT/dev
\uff1a\u200b\u5426\u5219\u200b\u65b0\u5efa\u200b\u5bb9\u5668\u200b\u65f6\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u51fa\u9519\u200b\u3002\u200b\u6e05\u7406\u200b\u7684\u200b\u65f6\u5019\u200b\u5207\u6362\u200b\u76ee\u5f55\u200b\u65f6\u200b\u8bf7\u52ff\u200b\u4f7f\u7528\u200b\u7edd\u5bf9\u8def\u5f84\u200b\uff0c\u200b\u5e76\u4e14\u200b\u52a1\u5fc5\u200b\u770b\u6e05\u695a\u200b\uff0c\u200b\u4e0d\u8981\u200b\u628a\u200b host \u200b\u7684\u200b\u6587\u4ef6\u200b\u5220\u200b\u4e86\u200b\uff01
\u200b\u5bf9\u4e8e\u200b Ubuntu/Debian \u200b\u955c\u50cf\u200b\uff0c\u200b\u8fd8\u200b\uff08\u200b\u6700\u597d\u200b\uff09\u200b\u8981\u200b\u6e05\u9664\u200b apt \u200b\u7684\u200b\u7f13\u5b58\u200b\u3002\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b chroot \u200b\u8fdb\u5165\u200b\u955c\u50cf\u200b\u8fd0\u884c\u200b apt-get clean
\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u624b\u52a8\u200b\u6e05\u7a7a\u200b $MOUNT/var/lib/apt/lists
\u200b\u76ee\u5f55\u200b\u3002
\u200b\u5f53\u7136\u200b\u6e05\u7406\u200b\u4e4b\u524d\u200b\u8981\u200b\u628a\u200b\u5bb9\u5668\u200b\u5173\u673a\u200b\u4e86\u200b\uff0c\u200b\u4e0d\u7136\u200b tmp \u200b\u548c\u200b cache \u200b\u4e4b\u7c7b\u200b\u7684\u200b\u4e1c\u897f\u200b\u8fd8\u4f1a\u200b\u6e90\u6e90\u4e0d\u65ad\u200b\u5730\u200b\u5192\u51fa\u6765\u200b\u3002
"},{"location":"workflow/pack-ct-image/#packaging","title":"\u4e94\u200b\u3001\u200b\u6253\u5305","text":"\u200b\u6839\u636e\u200b\u7b2c\u4e00\u6b65\u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u65f6\u200b\u9009\u62e9\u200b\u7684\u200b\u5b58\u50a8\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u6d89\u53ca\u200b\u5230\u200b\u7684\u200b VG \u200b\u53ef\u80fd\u200b\u662f\u200b user-data
\u200b\u6216\u200b pve
\u3002
\u200b\u901a\u8fc7\u200b\u547d\u4ee4\u884c\u200b\u767b\u5f55\u200b\u4e3b\u673a\u200b\uff0c\u200b\u9996\u5148\u200b\u6fc0\u6d3b\u200b\u5bb9\u5668\u200b\u7684\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\uff1a
lvchange -a y {vg}/vm-{id}-disk-0\nmkdir tmp\nmount /dev/{vg}/vm-{id}-disk-0 tmp\n
\u200b\u7136\u540e\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8fdb\u5165\u200b tmp \u200b\u8fdb\u884c\u200b\u6e05\u7406\u200b\u5de5\u4f5c\u200b\u4e86\u200b\u3002
\u200b\u6700\u540e\u200b\u6253\u5305\u200b\u8981\u200b\u5728\u200b tmp \u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff08\u200b\u5373\u200b\u5bb9\u5668\u200b\u7684\u200b\u6839\u76ee\u5f55\u200b\uff09\u200b\u8fdb\u884c\u200b\uff0c\u200b\u56e0\u4e3a\u200b\uff08\u200b\u663e\u7136\u200b\uff09tar \u200b\u538b\u7f29\u5305\u200b\u4e2d\u200b\u7684\u200b\u8def\u5f84\u200b\u662f\u200b\u6709\u200b\u5f71\u54cd\u200b\u7684\u200b\u3002
tar zcvf /mnt/vz/template/cache/vlab99-example.tar.gz .\n
"},{"location":"workflow/pack-ct-image/#process-uid-for-unprivileged-containers","title":"Unprivileged container \u200b\u6253\u5305\u200b\u540e\u200b\u7684\u200b UID/GID \u200b\u5904\u7406","text":"\u200b\u5982\u679c\u200b\u5bb9\u5668\u200b\u521b\u5efa\u200b\u65f6\u200b\u8bbe\u7f6e\u200b\u4e3a\u4e86\u200b unprivileged\uff0c\u200b\u5219\u200b\u5176\u200b\u5b58\u5728\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u4e2d\u200b\u7684\u200b UID/GID \u200b\u7b49\u200b\u90fd\u200b\u88ab\u200b LXC \u200b\u6620\u5c04\u200b\u5230\u200b\u4e86\u200b +100000\uff0810 \u200b\u4e07\u200b\uff09\u200b\u7684\u200b\u6570\u503c\u200b\uff0c\u200b\u6253\u5305\u200b\u540e\u200b\u9700\u8981\u200b\u5c06\u200b\u8fd9\u200b\u589e\u52a0\u200b\u7684\u200b\u6570\u503c\u200b\u4fee\u6539\u200b\u56de\u6765\u200b\u3002\u200b\u53c2\u8003\u200b\u8fd9\u4e2a\u200b Stack Overflow \u200b\u4e3b\u9898\u200b\uff0c\u200b\u4f7f\u7528\u200b\u8fd9\u4e2a\u200b Go \u200b\u7a0b\u5e8f\u200b\u53ef\u4ee5\u200b\u6539\u5199\u200b tar \u200b\u4e2d\u200b\u7684\u200b\u6587\u4ef6\u200b\u4fe1\u606f\u200b\uff1a
Go \u200b\u4ee3\u7801\u200bpackage main\n\nimport (\n \"archive/tar\"\n \"io\"\n \"log\"\n \"os\"\n)\n\nfunc main() {\n tr := tar.NewReader(os.Stdin)\n tw := tar.NewWriter(os.Stdout)\n\n for {\n hdr, err := tr.Next()\n if err == io.EOF {\n break\n } else if err != nil {\n log.Fatal(err)\n }\n\n hdr.Uid -= 100000\n hdr.Gid -= 100000\n if err := tw.WriteHeader(hdr); err != nil {\n log.Fatal(err)\n }\n\n if hdr.Typeflag == tar.TypeReg {\n if _, err := io.Copy(tw, tr); err != nil {\n log.Fatal(err)\n }\n }\n }\n\n if err := tw.Close(); err != nil {\n log.Fatal(err)\n }\n}\n
\u200b\u4f7f\u7528\u200b Go \u200b\u7a0b\u5e8f\u200b\u6539\u5199\u200b tar \u200b\u5305\u200b
\u200b\u4e0a\u9762\u200b\u7684\u200b Go \u200b\u793a\u4f8b\u200b\u7a0b\u5e8f\u200b\u53ea\u80fd\u200b\u5904\u7406\u200b\u672a\u200b\u538b\u7f29\u200b\u7684\u200b tar \u200b\u5305\u200b\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u5728\u200b\u6253\u5305\u200b\u65f6\u200b\u52a0\u5165\u200b\u4e86\u200b z
\u200b\u6216\u200b\u5176\u4ed6\u200b\u538b\u7f29\u200b\u53c2\u6570\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u200b\u89e3\u538b\u200b\u518d\u200b\u8f93\u5165\u200b\u7a0b\u5e8f\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a
gunzip -c original.tar.gz | go run uidfix.go | gzip -c9 > processed.tar.gz\n
\u200b\u6253\u5305\u200b\u5b8c\u6210\u200b\u540e\u8981\u200b\u628a\u200b Django \u200b\u524d\u7aef\u200b reload \u200b\u4e00\u4e0b\u200b\u624d\u80fd\u200b\u5728\u200b\u201c\u200b\u65b0\u5efa\u200b\u865a\u62df\u673a\u200b\u201d\u200b\u7684\u200b\u9875\u9762\u200b\u770b\u5230\u200b\u65b0\u200b\u955c\u50cf\u200b\u3002
"},{"location":"workflow/pack-vm-image/","title":"\u6253\u5305\u200b\u865a\u62df\u673a\u200b\u955c\u50cf","text":"Success
\u200b\u6211\u4eec\u200b\u5df2\u200b\u5c06\u200b\u6b64\u200b\u4efb\u52a1\u200b\u90e8\u5206\u200b\u81ea\u52a8\u5316\u200b\uff0c\u200b\u811a\u672c\u200b\u548c\u200b\u76f8\u5173\u200b\u8d44\u6e90\u200b\u5728\u200b labstrap \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u3002\u200b\u76f8\u5173\u200b\u6587\u4ef6\u200b\u4e3a\u200b kvmstrap
\uff08shell \u200b\u811a\u672c\u200b\uff09\u200b\u548c\u200b\u5176\u200b\u5f15\u7528\u200b\u7684\u200b rootfs \u200b\u76f8\u5173\u200b\u5185\u5bb9\u200b\uff0c\u200b\u7279\u522b\u200b\u662f\u200b /etc/cloud/cloud.cfg
\u200b\u6587\u4ef6\u200b\u3002
\u200b\u7531\u4e8e\u200b Proxmox VE \u200b\u4e0a\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u4f7f\u7528\u200b cloud-init \u200b\u8fdb\u884c\u200b\u5b9a\u5236\u200b\uff0c\u200b\u6211\u4eec\u200b\u63a8\u8350\u200b\u4ee5\u200b\u53d1\u884c\u7248\u200b\u5b98\u65b9\u200b\u7684\u200b cloud image \u200b\u4e3a\u200b\u57fa\u7840\u200b\u8fdb\u884c\u200b\u989d\u5916\u200b\u914d\u7f6e\u200b\u3002
"},{"location":"workflow/pack-vm-image/#\u4f7f\u7528-kvmstrap-\u6784\u5efa\u955c\u50cf","title":"\u4f7f\u7528\u200b kvmstrap \u200b\u6784\u5efa\u200b\u955c\u50cf","text":"\u200b\u9996\u5148\u200b\u4ece\u200b ubuntu-cloud-images \u200b\u83b7\u53d6\u200b\u4e00\u4e2a\u200b cloud image \u200b\u955c\u50cf\u200b\uff0c\u200b\u4ee5\u200b Ubuntu 22.04 LTS \u200b\u4e3a\u4f8b\u200b\uff0c\u200b\u4ece\u200b\u79d1\u5927\u200b\u955c\u50cf\u200b\u7ad9\u200b\u4e0b\u8f7d\u200b\u6587\u4ef6\u200b\uff1a
\u200b\u867d\u7136\u200b\u8be5\u200b\u6587\u4ef6\u200b\u4ee5\u200b .img \u200b\u7ed3\u5c3e\u200b\uff0c\u200b\u4f46\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u4e00\u4e2a\u200b qcow2 \u200b\u683c\u5f0f\u200b\u7684\u200b\u955c\u50cf\u200b\u3002\u200b\u5728\u200b\u5f53\u524d\u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u51c6\u5907\u200b\u597d\u200b qemu-img
\uff08\u200b\u8f6f\u4ef6\u5305\u200b qemu-utils\uff09\u200b\u548c\u200b guestmount
\uff08\u200b\u8f6f\u4ef6\u5305\u200b libguestfs-tools\uff09\u200b\u4e4b\u540e\u200b\u5373\u53ef\u200b\u4f7f\u7528\u200b kvmstrap \u200b\u811a\u672c\u200b\u4fee\u6539\u200b\u955c\u50cf\u200b\uff1a
./kvmstrap jammy-server-cloudimg-amd64.img\n
\u200b\u4fee\u6539\u200b\u597d\u200b\u7684\u200b\u955c\u50cf\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4e0a\u200b\u4f20\u5230\u200b Proxmox VE \u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\uff0c\u200b\u7136\u540e\u200b\u5728\u200b web \u200b\u754c\u9762\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u5e76\u7528\u200b\u4e0a\u200b\u4f20\u4e0a\u53bb\u200b\u7684\u200b\u955c\u50cf\u200b\u66ff\u6362\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u78c1\u76d8\u200b\u5373\u53ef\u200b\u3002
Tip
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u662f\u200b\u6211\u4eec\u200b\u5728\u200b\u81ea\u52a8\u5316\u200b\u4e4b\u524d\u200b\u7684\u200b\u624b\u52a8\u200b\u6253\u5305\u200b\u6d41\u7a0b\u200b\uff0c\u200b\u7559\u200b\u4f5c\u200b\u53c2\u8003\u200b\u3002
"},{"location":"workflow/pack-vm-image/#\u4e00\u4ece-ubuntu-cloud-images-\u5f00\u59cb\u51c6\u5907\u865a\u62df\u673a","title":"\u4e00\u200b\u3001\u200b\u4ece\u200b Ubuntu cloud images \u200b\u5f00\u59cb\u200b\u51c6\u5907\u200b\u865a\u62df\u673a","text":"\u200b\u4ee5\u200b Ubuntu 20.04 LTS \u200b\u4e3a\u4f8b\u200b\uff0c\u200b\u9996\u5148\u200b\u4e0b\u8f7d\u200b https://mirrors.ustc.edu.cn/ubuntu-cloud-images/focal/current/focal-server-cloudimg-amd64.img \u200b\u5230\u200b\u672c\u5730\u200b\u3002
\u200b\u9996\u5148\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u4e34\u65f6\u200b\u865a\u62df\u673a\u200b\uff08\u200b\u6ce8\u610f\u200b\u5c06\u200b ID 910 \u200b\u6362\u6210\u200b\u4e00\u4e2a\u200b\u5408\u9002\u200b\u7684\u200b\u7a7a\u95f2\u200b ID\uff09
qm create 910 --memory 2048 --net0 virtio,bridge=vmbr1\n
\u200b\u5c06\u200b\u521a\u200b\u4e0b\u8f7d\u200b\u7684\u200b\u955c\u50cf\u200b\u5bfc\u5165\u200b\u65b0\u200b\u865a\u62df\u673a\u200b\uff08\u200b\u8fd9\u4e2a\u200b img \u200b\u955c\u50cf\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b qcow2 \u200b\u683c\u5f0f\u200b\uff09\u200b\u5e76\u200b\u6302\u8f7d\u200b\u4e3a\u200b SCSI \u200b\u786c\u76d8\u200b\uff0c\u200b\u5c06\u200b\u65b0\u200b\u786c\u76d8\u200b\u8bbe\u200b\u4e3a\u200b\u542f\u52a8\u76d8\u200b
qm importdisk 910 focal-server-cloudimg-amd64.img local-lvm\nqm set 910 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-910-disk-1\nqm set 910 --boot c --bootdisk scsi0\n
"},{"location":"workflow/pack-vm-image/#\u4e8c\u914d\u7f6e-cloud-init","title":"\u4e8c\u200b\u3001\u200b\u914d\u7f6e\u200b Cloud-init","text":"\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u53ef\u4ee5\u200b\u5b8c\u5168\u200b\u5728\u200b Proxmox VE web \u200b\u754c\u9762\u200b\u4e0a\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u4e0b\u9762\u200b\u8fd8\u662f\u200b\u7ed9\u51fa\u200b\u547d\u4ee4\u884c\u200b\u6307\u5bfc\u200b\u3002
\u200b\u6dfb\u52a0\u200b Cloud-init \u200b\u914d\u7f6e\u200b\u76d8\u200b\uff08\u200b\u5b98\u65b9\u200b\u6587\u6863\u200b\u91cc\u200b\u662f\u200b\u6dfb\u52a0\u200b\u4e3a\u200b IDE \u200b\u76d8\u200b\uff0c\u200b\u5b9e\u9645\u200b\u52a0\u6210\u200b SCSI \u200b\u7684\u200b\u4e5f\u200b\u6ca1\u200b\u95ee\u9898\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u8ddf\u968f\u200b\u5b98\u65b9\u200b\uff09
qm set 910 --ide2 local-lvm:cloudinit\n
\u200b\u4e3a\u200b\u865a\u62df\u673a\u200b\u63d0\u4f9b\u200b\u7f51\u7edc\u200b\u4fe1\u606f\u200b\uff08\u200b\u6ce8\u610f\u200b\u628a\u200b IP \u200b\u5730\u5740\u200b\u6539\u6389\u200b\uff09\uff1a
qm set 910 --ipconfig0 ip=172.31.0.256/16,gw=172.31.0.1,ip6=auto\n
\u200b\u53ef\u200b\u9009\u200b\u9879\u76ee\u200b\uff1a\u200b\u5c06\u200b console \u200b\u8bbe\u200b\u4e3a\u200b\u4e32\u53e3\u200b Proxmox VE \u200b\u5b98\u65b9\u200b\u6587\u6863\u200b\u91cc\u200b\u7684\u200b\u8bf4\u660e\u200b\uff1a
Many Cloud-Init images rely on this, as it is an requirement for OpenStack images.
qm set 910 --serial0 socket --vga serial0\n
\u200b\u53ef\u200b\u9009\u200b\u9879\u76ee\u200b\uff1a\u200b\u5f00\u673a\u200b
\u200b\u73b0\u5728\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b qm start 910
\u200b\u542f\u52a8\u200b\u865a\u62df\u673a\u200b\u8fdb\u884c\u200b\u9ad8\u7ea7\u200b\u914d\u7f6e\u200b\u4e86\u200b\u3002
\u200b\u770b\u200b\u5b8c\u200b\u7b2c\u4e09\u7ae0\u200b\u548c\u200b\u7b2c\u56db\u7ae0\u200b\u4e4b\u540e\u200b\u4f60\u200b\u5c31\u200b\u77e5\u9053\u200b\u4e3a\u4ec0\u4e48\u200b\u5c06\u200b\u865a\u62df\u673a\u200b\u5f00\u673a\u200b\u662f\u200b\u53ef\u9009\u200b\u7684\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-vm-image/#\u4e09\u955c\u50cf\u7684\u5904\u7406","title":"\u4e09\u200b\u3001\u200b\u955c\u50cf\u200b\u7684\u200b\u5904\u7406","text":"\u200b\u6211\u4eec\u200b\u8ba4\u4e3a\u200b KVM \u200b\u865a\u62df\u673a\u200b\u7684\u200b\u53d7\u4f17\u200b\u662f\u200b\u4e0d\u200b\u9700\u8981\u200b\u684c\u9762\u73af\u5883\u200b\u548c\u200b Vlab Software \u200b\u8fdb\u884c\u200b\u8f83\u4e3a\u200b\u201c\u200b\u901a\u7528\u200b\u201d\u200b\u7684\u200b\u5b9e\u9a8c\u200b\u548c\u200b\u8ba1\u7b97\u200b\u7684\u200b\u7528\u6237\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u5728\u200b KVM \u200b\u955c\u50cf\u200b\u4e2d\u200b\u4e0d\u200b\u63d0\u4f9b\u200b\u684c\u9762\u73af\u5883\u200b\u548c\u200b /opt/vlab
\uff08\u200b\u5176\u5b9e\u200b\u8981\u200b\u5f04\u200b\u8fd8\u200b\u6709\u70b9\u200b\u9ebb\u70e6\u200b\uff09\uff0c\u200b\u6240\u4ee5\u200b\u5bf9\u4e8e\u200b\u4e0b\u8f7d\u200b\u4e0b\u6765\u200b\u7684\u200b\u5b98\u65b9\u200b\u955c\u50cf\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u200b\u9700\u8981\u200b\u8fdb\u884c\u200b\u6700\u200b\u57fa\u672c\u200b\u7684\u200b\u4fee\u6539\u200b\u5373\u53ef\u200b\u3002
\u200b\u4e0e\u200b\u6253\u5305\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u524d\u200b\u7684\u200b\u6e05\u7406\u200b\u5de5\u4f5c\u200b\u4e00\u6837\u200b\u3002
"},{"location":"workflow/pack-vm-image/#\u6302\u8f7d\u865a\u62df\u673a\u78c1\u76d8","title":"\u6302\u8f7d\u200b\u865a\u62df\u673a\u200b\u78c1\u76d8","text":"\u200b\u6ce8\u610f\u200b KVM \u200b\u7684\u200b\u201c\u200b\u5377\u200b\u201d\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5b8c\u6574\u200b\u7684\u200b\u78c1\u76d8\u200b\uff0c\u200b\u800c\u200b\u5bb9\u5668\u200b\u7684\u200b\u201c\u200b\u5377\u200b\u201d\u200b\u53ea\u200b\u5305\u542b\u200b rootfs \u200b\u6240\u5728\u200b\u7684\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\uff0c\u200b\u56e0\u6b64\u200b\u8981\u200b\u6302\u8f7d\u200b KVM \u200b\u7684\u200b rootfs \u200b\u9700\u8981\u200b\u5148\u200b\u5904\u7406\u200b\u78c1\u76d8\u5206\u533a\u200b\u7684\u200b\u95ee\u9898\u200b\u3002\u200b\u6211\u4eec\u200b\u63a8\u8350\u200b\u4f7f\u7528\u200b kpartx \u200b\u5de5\u5177\u200b\u3002
kpartx -av /dev/pve/vm-910-disk-0\n
\u200b\u4f60\u200b\u4f1a\u200b\u770b\u5230\u200b\u7c7b\u4f3c\u200b\u8fd9\u6837\u200b\u7684\u200b\u8f93\u51fa\u200b\uff1a
add map pve-vm--910--disk--0p1 (253:19): 0 4384735 linear 253:14 227328\nadd map pve-vm--910--disk--0p14 (253:23): 0 8192 linear 253:14 2048\nadd map pve-vm--910--disk--0p15 (253:24): 0 217088 linear 253:14 10240\n
\u200b\u6839\u636e\u200b\u5bb9\u91cf\u200b\u5224\u65ad\u200b\uff0cp1 \u200b\u5c31\u662f\u200b\u865a\u62df\u673a\u200b\u7684\u200b rootfs\uff0c\u200b\u6b64\u65f6\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u6302\u8f7d\u200b /dev/mapper/pve-vm--910--disk--0p1
\u200b\u8fdb\u884c\u200b\u6e05\u7406\u200b\u5de5\u4f5c\u200b\u4e86\u200b\u3002
\u200b\u6e05\u7406\u200b\u5b8c\u6210\u200b\u5e76\u200b umount \u200b\u540e\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b kpartx -d /dev/pve/vm-910-disk-0
\u200b\u5220\u9664\u200b\u5206\u533a\u200b\u6620\u5c04\u200b\u3002
\u200b\u540c\u6837\u200b\u7684\u200b\uff0c\u200b\u53d6\u51b3\u4e8e\u200b\u865a\u62df\u200b\u78c1\u76d8\u200b\u7684\u200b\u4f4d\u7f6e\u200b\uff0cPVE \u200b\u6709\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u5728\u200b\u5173\u673a\u200b\u540e\u200b\u5c06\u200b\u865a\u62df\u200b\u78c1\u76d8\u200b\u7684\u200b LVM \u200b\u5377\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b inactive\uff0c\u200b\u9700\u8981\u200b\u4f7f\u7528\u200b lvchange
\u200b\u5148\u200b\u6fc0\u6d3b\u200b\uff0c\u200b\u53c2\u89c1\u200b\u6253\u5305\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u7684\u200b\u7ae0\u8282\u200b\u3002
\u200b\u5982\u679c\u200b\u6253\u5305\u200b\u597d\u200b\u7684\u200b\u955c\u50cf\u200b\u8981\u200b\u4f5c\u4e3a\u200b VM \u200b\u6a21\u677f\u200b\u4f7f\u7528\u200b\uff0c\u200b\u9700\u8981\u200b\u8fc1\u79fb\u200b\u81f3\u200b\u5404\u200b pve \u200b\u4e3b\u673a\u200b\u95f4\u200b\u7684\u200b\u5171\u4eab\u200b\u5b58\u50a8\u200b\u4e0a\u200b\uff0c\u200b\u5982\u200b user-data\u3002
"},{"location":"workflow/pack-vm-image/#references","title":"\u53c2\u8003\u8d44\u6599","text":"\u200b\u8b66\u544a\u200b
\u200b\u6253\u5305\u200b\u548c\u200b\u7ef4\u62a4\u200b Windows \u200b\u955c\u50cf\u200b\u975e\u5e38\u200b\u9ebb\u70e6\u200b\u5e76\u4e14\u200b\u5f88\u96be\u200b debug\uff0c\u200b\u5feb\u200b\u8dd1\u200b\uff01\uff01\uff01
You have been warned. Run!!!
\u200b\u7531\u4e8e\u200b Proxmox VE \u200b\u4e0a\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u4f7f\u7528\u200b cloud-init \u200b\u8fdb\u884c\u200b\u5b9a\u5236\u200b\uff0c\u200b\u5e76\u4e14\u200b Windows \u200b\u548c\u200b Unix \u200b\u4e00\u5957\u200b\u4f53\u7cfb\u200b\u5b8c\u5168\u200b\u4e0d\u200b\u5728\u200b\u4e00\u4e2a\u200b\u9891\u9053\u200b\u4e0a\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5236\u4f5c\u200b\u53ef\u4ee5\u200b\u7528\u200b cloud-init \u200b\u5373\u4f7f\u200b\u53ea\u662f\u200b\u7b80\u5355\u200b\u5b9a\u5236\u200b\u7684\u200b Windows \u200b\u955c\u50cf\u200b\u4e5f\u200b\u975e\u5e38\u200b\u6298\u817e\u200b\u3002\u200b\u4e0b\u9762\u200b\u8ba9\u200b\u6211\u4eec\u200b\u4e00\u200b\u8d77\u6765\u200b\u53d7\u7f6a\u200b\u5427\u200b\uff01
"},{"location":"workflow/pack-windows-image/#setup-vm","title":"\u4e00\u200b\u3001\u200b\u51c6\u5907\u200b\u865a\u62df\u673a","text":""},{"location":"workflow/pack-windows-image/#install-vm","title":"\u5b89\u88c5\u200b\u865a\u62df\u673a","text":"\u200b\u5b66\u6821\u200b\u4e70\u200b\u4e86\u200b\u6b63\u7248\u200b\u7684\u200b Windows 10\uff0c\u200b\u53ef\u4ee5\u200b\u5728\u200b\u8f6f\u4ef6\u200b\u6b63\u7248\u200b\u5316\u200b\u7f51\u7ad9\u200b\u4e0a\u200b\u4e0b\u8f7d\u200b\uff0c\u200b\u5efa\u8bae\u200b\u9009\u200b\u4e2d\u6587\u7248\u200b\uff08\u200b\u56e0\u4e3a\u200b\u662f\u200b\u9762\u5411\u7528\u6237\u200b\u7684\u200b\uff09\u3002\u200b\u65c1\u8fb9\u200b\u7684\u200b KMS \u200b\u6ce8\u518c\u200b\u6587\u4ef6\u200b\u4e0d\u7528\u200b\u4e0b\u8f7d\u200b\uff0c\u200b\u5b9e\u9645\u200b\u53ea\u200b\u9700\u8981\u200b\u4e00\u884c\u200b\u547d\u4ee4\u200b\u5c31\u200b\u80fd\u200b\u89e3\u51b3\u200b\uff0c\u200b\u540e\u9762\u200b\u4f1a\u200b\u63d0\u5230\u200b\u3002
\u200b\u540c\u65f6\u200b\u4e5f\u200b\u8981\u200b\u4e0b\u8f7d\u200b VirtIO Windows \u200b\u9a71\u52a8\u200b\uff0c\u200b\u9009\u200b Stable ISO\u3002
\u200b\u548c\u200b\u4e00\u822c\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u5b89\u88c5\u200b\u8fc7\u7a0b\u200b\u4e00\u6837\u200b\uff0c\u200b\u5c06\u200b ISO \u200b\u6dfb\u52a0\u200b\u4e3a\u200b CD/DVD Drive\uff0c\u200b\u8ddf\u7740\u200b\u5b89\u88c5\u7a0b\u5e8f\u200b\u8d70\u200b\u5b8c\u200b\u6d41\u7a0b\u200b\u5373\u53ef\u200b\uff0c\u200b\u7248\u672c\u200b\u8bf7\u200b\u9009\u62e9\u200b\u6559\u80b2\u200b\u7248\u200b\u3002
\u200b\u7b2c\u4e00\u6b21\u200b\u91cd\u542f\u200b\u540e\u200b\u8fdb\u5165\u200b Windows \u200b\u7684\u200b OOBE\uff0c\u200b\u73b0\u5728\u200b\u53ef\u4ee5\u200b\u5728\u200b\u540e\u53f0\u200b\u628a\u200b\u5149\u9a71\u200b\u6362\u6210\u200b VirtIO \u200b\u7684\u200b\u9a71\u52a8\u200b\u76d8\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-windows-image/#windows-oobe","title":"Windows OOBE","text":"OOBE \u200b\u9636\u6bb5\u200b\u53ef\u4ee5\u200b\u81ea\u884c\u200b\u914d\u7f6e\u200b\uff0c\u200b\u4e0d\u8fc7\u200b\u65e2\u7136\u200b\u662f\u200b\u8981\u200b\u7528\u4f5c\u200b\u9762\u5411\u7528\u6237\u200b\u7684\u200b\u6a21\u677f\u200b\uff0c\u200b\u9009\u62e9\u200b\u4e00\u4e9b\u200b\u8bbe\u7f6e\u200b\u65f6\u200b\u7a0d\u5fae\u200b\u8003\u8651\u4e00\u4e0b\u200b\u3002
\u200b\u5730\u533a\u200b\u8bed\u8a00\u200b\u5f53\u7136\u200b\u662f\u200b\u4e2d\u6587\u200b\u4e86\u200b\uff0c\u200b\u952e\u76d8\u200b\u5fae\u8f6f\u62fc\u97f3\u200b\uff08\u200b\u8fd9\u662f\u200b\u9ed8\u8ba4\u200b\uff0c\u200b\u4e0b\u200b\u4e00\u6b65\u200b\uff09\uff0c\u200b\u7136\u540e\u200b\u4e00\u8def\u200b\u5230\u200b\u521b\u5efa\u200b\u8d26\u6237\u200b\u8fd9\u91cc\u200b\u4f1a\u200b\u6709\u200b\u4e2a\u200b\u9519\u8bef\u200b\u63d0\u793a\u200b\u7801\u200b OOBEAADV10\uff0c\u200b\u5ffd\u7565\u200b\u6389\u200b\u5b83\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u672c\u5730\u200b\u8d26\u6237\u200b\uff0c\u200b\u547d\u540d\u200b\u4e3a\u200b Vlab\uff0c\u200b\u5bc6\u7801\u200b\u7559\u7a7a\u200b\uff08\u200b\u4e0d\u7136\u200b\u540e\u9762\u200b\u8981\u200b\u4f60\u200b\u586b\u200b\u4e09\u4e2a\u200b\u5b89\u5168\u200b\u95ee\u9898\u200b\uff0cWTF?\uff09\u3002
\u200b\u9519\u8bef\u7801\u200b OOBEAADV10\u200b\u8fd9\u662f\u200b Windows \u200b\u5728\u200b\u5c1d\u8bd5\u200b\u8fde\u63a5\u200b\u5230\u200b Azure Active Directory \u200b\u65f6\u62a5\u200b\u7684\u200b\u9519\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u8fd9\u4e2a\u200b\u65f6\u5019\u200b\u53ea\u6709\u200b IPv6 \u200b\u7f51\u7edc\u200b\u662f\u200b\u901a\u200b\u7684\u200b\uff08\u200b\u6709\u200b SLAAC\uff09\uff0c\u200b\u7528\u6237\u200b\u5185\u200b\u7f51\u200b\u6ca1\u6709\u200b DHCP\u3002
\u200b\u4f4d\u7f6e\u670d\u52a1\u200b\u3001\u200b\u5e7f\u544a\u200b\u6807\u8bc6\u7b26\u200b\u8fd9\u4e2a\u200b\u9875\u9762\u200b\u5168\u90e8\u200b\u5173\u6389\u200b\uff0cCortana \u200b\u4e5f\u200b\u522b\u5f00\u200b\uff0c\u200b\u90fd\u200b\u662f\u200b\u4e9b\u200b\u6d6a\u8d39\u65f6\u95f4\u200b\u548c\u200b\u8d44\u6e90\u200b\u7684\u200b\u4e1c\u897f\u200b\u3002
\u200b\u5230\u200b\u8fd9\u91cc\u200b\u5c31\u200b\u5dee\u4e0d\u591a\u200b\u8fdb\u5165\u200b\u684c\u9762\u200b\u4e86\u200b\uff0c\u200b\u76ee\u524d\u4e3a\u6b62\u200b\u6ca1\u6709\u200b\u592a\u591a\u5751\u200b\uff0c\u200b\u9664\u4e86\u200b\u5bc6\u7801\u200b\u5fc5\u987b\u200b\u7559\u7a7a\u200b\u4e4b\u5916\u200b\uff08\u200b\u55ef\u200b\uff0c\u200b\u8fd9\u79cd\u200b\u5730\u65b9\u200b\u8981\u6c42\u200b\u586b\u200b\u5b89\u5168\u200b\u95ee\u9898\u200b\u662f\u200b\u4e2a\u200b\u5947\u602a\u200b\u7684\u200b\u8bbe\u5b9a\u200b\uff09\u3002
"},{"location":"workflow/pack-windows-image/#configure-vm","title":"\u4e8c\u200b\u3001\u200b\u914d\u7f6e\u200b\u865a\u62df\u673a","text":""},{"location":"workflow/pack-windows-image/#pause-windows-update","title":"\u6682\u505c\u200b Windows \u200b\u66f4\u65b0","text":"\u200b\u4e0d\u7136\u200b\u7f51\u7edc\u200b\u901a\u7545\u200b\u540e\u200b\u5f00\u59cb\u200b\u81ea\u52a8\u66f4\u65b0\u200b\u4e86\u200b\uff0c\u200b\u540e\u9762\u200b\u4f60\u200b\u5c31\u200b\u9ebb\u70e6\u200b\u4e86\u200b
"},{"location":"workflow/pack-windows-image/#configure-networking","title":"\u8bbe\u7f6e\u200b\u7f51\u7edc","text":"\u200b\u53f3\u952e\u200b\u70b9\u51fb\u200b\u53f3\u4e0b\u89d2\u200b\u7684\u200b\u7f51\u7edc\u200b\u56fe\u6807\u200b\uff0c\u200b\u6253\u5f00\u200b\u201c\u200b\u7f51\u7edc\u200b\u548c\u200b Internet\u201d\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u5728\u200b\u4e0b\u9762\u200b\u9009\u62e9\u200b\u201c\u200b\u66f4\u6539\u200b\u9002\u914d\u5668\u200b\u9009\u9879\u200b\u201d\uff0c\u200b\u6253\u5f00\u200b\u201c\u200b\u4ee5\u592a\u7f51\u200b\u5b9e\u4f8b\u200b 0\u201d\u200b\u7684\u200b\u5c5e\u6027\u200b\uff0c\u200b\u518d\u200b\u9009\u4e2d\u200b Internet \u200b\u534f\u8bae\u200b\u7248\u672c\u200b 4\uff0c\u200b\u5728\u200b\u8fd9\u91cc\u200b\u6307\u5b9a\u200b\u4e00\u4e2a\u200b\u4e34\u65f6\u200b\u7684\u200b IPv4 \u200b\u5730\u5740\u200b\uff08\u200b\u53c2\u8003\u200b\u6253\u5305\u200b\u5bb9\u5668\u200b\u7684\u200b\u6d41\u7a0b\u200b\uff09\uff0c\u200b\u63a9\u7801\u200b\u662f\u200b 255.255.0.0
\uff0c\u200b\u7f51\u5173\u200b\u662f\u200b 172.31.0.1
\uff0cDNS \u200b\u670d\u52a1\u5668\u200b\u548c\u200b\u7f51\u5173\u200b\u4e00\u6837\u200b\uff0c\u200b\u786e\u5b9a\u200b\u5b8c\u6210\u200b\u540e\u200b\u5c31\u200b\u80fd\u200b\u4e0a\u7f51\u200b\u4e86\u200b\u3002
\u200b\u4e0d\u8981\u200b\u76f4\u63a5\u200b\u5728\u200b\u201c\u200b\u8bbe\u7f6e\u200b\u201d\u200b\u5e94\u7528\u200b\u91cc\u200b\u6539\u200b
\u201c\u200b\u8bbe\u7f6e\u200b\u201d\u200b\u91cc\u200b\u76f4\u63a5\u200b\u6539\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u6307\u5b9a\u200b\u9759\u6001\u200b IPv4 \u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u6ca1\u6709\u200b IPv6 \u200b\u81ea\u52a8\u200b\u914d\u7f6e\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-windows-image/#activate-windows","title":"\u6fc0\u6d3b\u200b Windows","text":"\u200b\u53f3\u952e\u200b\u70b9\u51fb\u200b\u5de6\u4e0b\u89d2\u200b\u7684\u200b Windows\uff0c\u200b\u6253\u5f00\u200b\u4e00\u4e2a\u200b\u6709\u200b\u7ba1\u7406\u5458\u200b\u6743\u9650\u200b\u7684\u200b PowerShell \u200b\u7a97\u53e3\u200b\uff0c\u200b\u914d\u7f6e\u200b\u5b66\u6821\u200b\u7684\u200b KMS \u200b\u6fc0\u6d3b\u200b\uff1a
slmgr.vbs /skms kms.ustc.edu.cn\n
\u200b\u73b0\u5728\u200b\u53ef\u4ee5\u200b\u8fdb\u200b\u8bbe\u7f6e\u200b\u5e94\u7528\u200b\u91cc\u200b\u67e5\u770b\u200b\u6fc0\u6d3b\u72b6\u6001\u200b\u4e86\u200b\u3002\u200b\u5982\u679c\u200b\u8fd8\u200b\u6ca1\u200b\u6fc0\u6d3b\u200b\u7684\u8bdd\u200b\uff0c\u200b\u70b9\u200b\u7591\u96be\u89e3\u7b54\u200b\uff0c\u200b\u7b49\u200b\u5b83\u200b\u8dd1\u200b\u5b8c\u200b\u5c31\u200b\u4f1a\u200b\u544a\u8bc9\u200b\u4f60\u200b\u5df2\u200b\u6fc0\u6d3b\u200b\u3002
"},{"location":"workflow/pack-windows-image/#install-virtio-drivers","title":"\u5b89\u88c5\u200b VirtIO \u200b\u9a71\u52a8","text":"\u200b\u6253\u5f00\u200b\u5149\u9a71\u200b\u8fd0\u884c\u200b virtio-win-guest-tools.exe
\uff0c\u200b\u4e00\u8def\u4e0b\u200b\u4e00\u6b65\u200b\u5b89\u88c5\u200b\u5373\u53ef\u200b\u3002
\u200b\u8fd9\u91cc\u200b\u552f\u4e00\u200b\u7684\u200b\u5751\u70b9\u200b\u662f\u200b\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u5728\u200b\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u65f6\u200b\u6ca1\u6709\u200b\u591a\u200b\u4e00\u6b65\u200b\u6dfb\u52a0\u200b\u4e00\u4e2a\u200b\u4e32\u53e3\u200b\u8bbe\u5907\u200b\u7684\u8bdd\u200b\uff0c\u200b\u90a3\u4e48\u200b VirtIO \u200b\u4e32\u53e3\u200b\u9a71\u52a8\u200b\u5c31\u200b\u4e0d\u4f1a\u200b\u5b89\u88c5\u200b\uff0c\u200b\u9700\u8981\u200b\u5173\u673a\u200b\u52a0\u200b\u597d\u200b\u8bbe\u5907\u200b\u540e\u200b\u518d\u200b\u91cd\u65b0\u5b89\u88c5\u200b\u3002
QEMU Guest Agent (Qemu GA) \u200b\u4ee5\u540e\u200b\u4f1a\u200b\u5f88\u200b\u6709\u7528\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u628a\u200b\u5b83\u200b\u88c5\u4e0a\u200b\u5427\u200b\u3002
"},{"location":"workflow/pack-windows-image/#enable-rdp","title":"\u8bbe\u7f6e\u200b RDP","text":"\u200b\u8bbe\u7f6e\u200b \u2192 \u200b\u7cfb\u7edf\u200b \u2192 \u200b\u8fdc\u7a0b\u684c\u9762\u200b\uff0c\u200b\u542f\u7528\u200b\u8fdc\u7a0b\u684c\u9762\u200b\u3002
\u200b\u914d\u7f6e\u200b Windows \u200b\u9632\u706b\u5899\u200b\u4ec5\u200b\u8fd0\u884c\u200b\u6765\u81ea\u200b web \u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u8fde\u63a5\u200b\uff1a
wf.msc
\uff09\u200b\u5165\u7ad9\u200b\u89c4\u5219\u200b\uff0c\u200b\u627e\u5230\u200b \u200b\u8fdc\u7a0b\u684c\u9762\u200b - \u200b\u7528\u6237\u200b\u6a21\u5f0f\u200b (TCP-In) \u200b\u542f\u7528\u200b\uff0c\u200b\u6253\u5f00\u200b\u5c5e\u6027\u200b\uff0c\u200b\u5207\u6362\u200b\u5230\u200b\u201c\u200b\u4f5c\u7528\u57df\u200b\u201d\u200b\u9009\u9879\u5361\u200b\uff0c\u200b\u8bbe\u7f6e\u200b\u8fdc\u7a0b\u200b IP \u200b\u4ec5\u9650\u200b 172.31.0.2
\uff0c\u200b\u5982\u56fe\u200b\uff1a
\uff08\u200b\u53ef\u200b\u9009\u200b\uff0c\u200b\u63a8\u8350\u200b\uff09\u200b\u5165\u7ad9\u200b\u89c4\u5219\u200b\u91cc\u200b\u201c\u200b\u6838\u5fc3\u200b\u7f51\u7edc\u200b\u8bca\u65ad\u200b - ICMP \u200b\u56de\u663e\u200b\u8bf7\u6c42\u200b\u201d\u200b\u56db\u4e2a\u200b\u90fd\u200b\u6253\u5f00\u200b\uff08Windows \u200b\u9ed8\u8ba4\u200b\u8fd1\u5e73\u7981\u200b ping\uff0c\u200b\u6253\u5f00\u200b\u4f1a\u200b\u65b9\u4fbf\u200b\u4ee5\u540e\u200b\u8c03\u8bd5\u200b\u7f51\u7edc\u200b\u548c\u200b\u76d1\u6d4b\u200b\u72b6\u6001\u200b\uff09
\u200b\u4efb\u52a1\u680f\u200b\u91cc\u200b\u90a3\u5757\u200b\u5de8\u5927\u200b\u7684\u200b\u80f6\u5e03\u200b\uff08\u200b\u641c\u7d22\u200b\u6846\u200b\uff09\u200b\u53ef\u4ee5\u200b\u9690\u85cf\u200b\u8d77\u6765\u200b\uff0cCortana \u200b\u56fe\u6807\u200b\u9690\u85cf\u200b\u8d77\u6765\u200b\uff0cTask View \u200b\u7684\u200b\u56fe\u6807\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u9690\u85cf\u200b\u8d77\u6765\u200b\uff0c\u200b\u8fd9\u200b\u51e0\u4e2a\u200b\u90fd\u200b\u662f\u200b\u53f3\u952e\u200b\u4efb\u52a1\u680f\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u52fe\u9009\u200b\u7684\u200b\u9009\u9879\u200b\u3002
\u200b\u4efb\u52a1\u680f\u200b\u8bbe\u7f6e\u200b\u91cc\u200b\u7684\u200b\u201c\u200b\u4f7f\u7528\u200b\u2018\u200b\u901f\u89c8\u200b\u2019\u200b\u9884\u89c8\u200b\u684c\u9762\u200b\u201d\u200b\u51fa\u4e8e\u200b\u6027\u80fd\u200b\u8003\u8651\u200b\u5efa\u8bae\u200b\u4e0d\u8981\u200b\u5f00\u200b\uff0c\u200b\u5176\u4ed6\u200b\u968f\u610f\u200b\uff0c\u200b\u4f8b\u5982\u200b\u201c\u200b\u5408\u5e76\u200b\u4efb\u52a1\u680f\u200b\u6309\u94ae\u200b\u201d\u200b\u53ef\u4ee5\u200b\u6539\u6210\u200b\u201c\u200b\u4efb\u52a1\u680f\u200b\u5df2\u6ee1\u65f6\u200b\u201d\u200b\u7b49\u7b49\u200b\uff0c\u200b\u5176\u4ed6\u200b\u7684\u200b\u684c\u9762\u80cc\u666f\u200b\u3001\u200b\u989c\u8272\u200b\u3001\u200b\u5f00\u59cb\u83dc\u5355\u200b\u7b49\u200b\u90fd\u200b\u968f\u610f\u200b\u3002
\u200b\u5f00\u59cb\u83dc\u5355\u200b\u91cc\u200b\u9884\u88c5\u200b\u7684\u200b UWP \u200b\u5e94\u7528\u200b\u73b0\u5728\u200b\u4e0d\u8981\u200b\u52a8\u200b\uff0c\u200b\u5426\u5219\u200b\u540e\u9762\u200b Sysprep \u200b\u7684\u200b\u65f6\u5019\u200b\u4f1a\u200b\u51fa\u9519\u200b\u3002\uff08\u200b\u5982\u679c\u200b\u4f60\u200b\u7279\u522b\u200b\u60f3\u200b\u5220\u6389\u200b\u5176\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u200b\u6216\u200b\u591a\u4e2a\u200b\u65f6\u200b\uff0c\u200b\u7b2c\u56db\u8282\u200b\u6e05\u7406\u200b\u6709\u200b\u8be6\u7ec6\u200b\u8bf4\u660e\u200b\u3002\uff09
Windows \u200b\u68c0\u6d4b\u200b\u7f51\u7edc\u8fde\u63a5\u200b\u7684\u200b\u529f\u80fd\u200b\u7ecf\u5e38\u200b\u574f\u200b\uff0c\u200b\u539f\u56e0\u200b\u662f\u200b msftconnecttest.com \u200b\u670d\u52a1\u5668\u200b\u5728\u200b\u56fd\u5916\u200b\uff0c\u200b\u5f88\u200b\u6162\u200b\u800c\u4e14\u200b\u4e0d\u200b\u7a33\u5b9a\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4fee\u6539\u200b\u6ce8\u518c\u8868\u200b\u5c06\u200b\u8fd9\u4e2a\u200b\u529f\u80fd\u200b\u66ff\u6362\u6210\u200b\u4f7f\u7528\u200b\u6821\u5185\u200b\u7684\u200b\u670d\u52a1\u200b\u3002
\u200b\u6ce8\u518c\u8868\u200b\u6587\u4ef6\u200b\u200b\u4e0b\u8f7d\u200b\u76f4\u94fe\u200b
Windows Registry Editor Version 5.00\n\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\NlaSvc\\Parameters\\Internet]\n\"ActiveDnsProbeContent\"=\"202.38.64.1\"\n\"ActiveDnsProbeContentV6\"=\"2001:da8:d800::1\"\n\"ActiveDnsProbeHost\"=\"ns.ustc.edu.cn\"\n\"ActiveDnsProbeHostV6\"=\"ns.ustc.edu.cn\"\n\"ActiveWebProbeContent\"=\"USTC Mirrors Connect Test\"\n\"ActiveWebProbeContentV6\"=\"USTC Mirrors Connect Test\"\n\"ActiveWebProbeHost\"=\"mirrors.ustc.edu.cn\"\n\"ActiveWebProbeHostV6\"=\"ipv6.mirrors.ustc.edu.cn\"\n\"ActiveWebProbePath\"=\"connecttest.txt\"\n\"ActiveWebProbePathV6\"=\"connecttest.txt\"\n\"EnableActiveProbing\"=dword:00000001\n
"},{"location":"workflow/pack-windows-image/#cloudbase-init","title":"\u4e09\u200b\u3001\u200b\u5b89\u88c5\u200b Cloudbase-init","text":"\u200b\u8b66\u544a\u200b\uff1a\u200b\u524d\u65b9\u200b\u96f7\u533a\u200b
\u200b\u4e0b\u8f7d\u200b\u5730\u5740\u200b https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi\uff0c\u200b\u53ef\u4ee5\u200b\u6d4f\u89c8\u5668\u200b\u4e0b\u8f7d\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b PowerShell \u200b\u547d\u4ee4\u884c\u200b\uff1a
Invoke-WebRequest -Uri https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi -OutFile C:\\cloudbase-init.msi\n
\u200b\u987a\u7740\u200b Cloudbase-init \u200b\u7684\u200b\u6d41\u7a0b\u200b\u5b89\u88c5\u200b\u5c31\u884c\u200b\uff0c\u200b\u5728\u200b\u9009\u62e9\u200b\u7528\u6237\u540d\u200b\u7684\u200b\u90a3\u4e2a\u200b\u754c\u9762\u200b\u586b\u200b Administrator\uff0c\u200b\u4e0b\u9762\u200b\u4e32\u53e3\u200b\u8bbe\u5907\u200b\u9009\u62e9\u200b COM1\uff0c\u200b\u7ee7\u7eed\u200b\u5b89\u88c5\u200b\u5b8c\u6210\u200b\u3002\u200b\u6700\u540e\u200b\u4e00\u4e2a\u200b\u754c\u9762\u200b\u4e0d\u8981\u200b\u9009\u200b Sysprep\uff0c\u200b\u76f4\u63a5\u200b\u5173\u95ed\u200b\u9000\u51fa\u200b\uff0c\u200b\u7b49\u200b\u6539\u5b8c\u200b\u8bbe\u7f6e\u200b\u540e\u200b\u624b\u52a8\u200b\u5904\u7406\u200b\u3002
\u200b\u5b89\u88c5\u200b\u5b8c\u6210\u200b\u540e\u200b\u6253\u5f00\u200b C:\\Program Files\\Cloudbase Solutions\\Cloudbase-init\\conf
\uff0c\u200b\u7f16\u8f91\u200b cloudbase-init-unattend.conf
\uff0c\u200b\u4fee\u6539\u200b\u4ee5\u4e0b\u200b\u51e0\u5904\u200b\uff1a
first_logon_behaviour=no
config_drive_raw_hhd
\u200b\u548c\u200b config_drive_vfat
\uff08\u200b\u6216\u8005\u200b\u6539\u6210\u200b false \u200b\u4e5f\u200b\u884c\u200b\uff09metadata_services
\u200b\u91cc\u200b\u5220\u6389\u200b\u5176\u4ed6\u200b\u914d\u7f6e\u200b\uff0c\u200b\u53ea\u200b\u4fdd\u7559\u200b\u4e00\u4e2a\u200b ConfigDriveService
\u3002\u200b\u6ce8\u610f\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u9017\u53f7\u200b\u5206\u9694\u200b\u7684\u200b\u5217\u8868\u200b\uff0c\u200b\u4e0d\u8981\u200b\u770b\u9519\u200b\u4e86\u200bcheck_latest_version
\u200b\u6539\u6210\u200b false[DEFAULT]\nusername=Administrator\ngroups=Administrators\ninject_user_password=true\nfirst_logon_behaviour=no\nconfig_drive_cdrom=true\nbsdtar_path=C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\bin\\bsdtar.exe\nmtools_path=C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\bin\\\nverbose=true\ndebug=true\nlogdir=C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\log\\\nlogfile=cloudbase-init-unattend.log\ndefault_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN\nlogging_serial_port_settings=COM1,115200,N,8\nmtu_use_dhcp_config=true\nntp_use_dhcp_config=true\nlocal_scripts_path=C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\LocalScripts\\\ncheck_latest_version=false\nmetadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService\nplugins=cloudbaseinit.plugins.common.mtu.MTUPlugin,cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin\nallow_reboot=false\nstop_service_on_exit=false\n
"},{"location":"workflow/pack-windows-image/#cleanup","title":"\u56db\u200b\u3001\u200b\u6253\u5305\u200b\u524d\u200b\u7684\u200b\u6e05\u7406\u200b\u5de5\u4f5c","text":"\u200b\u542f\u7528\u200b Windows Update
\u200b\u53ef\u4ee5\u200b\u653e\u5728\u200b\u6700\u540e\u200b\u4e00\u6b65\u200b\u5173\u673a\u200b\u524d\u200b\u518d\u200b\u542f\u7528\u200b\uff0c\u200b\u907f\u514d\u200b\u540e\u9762\u200b\u6e05\u7406\u200b\u65f6\u95f4\u200b\u592a\u200b\u957f\u200b\u5bfc\u81f4\u200b WU \u200b\u5f00\u59cb\u8fd0\u884c\u200b\uff0c\u200b\u6216\u8005\u200b\u76f4\u63a5\u200b\u65ad\u7f51\u200b\u4e5f\u200b\u884c\u200b\u3002
\u200b\u6e05\u7406\u200b Windows \u200b\u8d44\u6e90\u7ba1\u7406\u200b\u5668\u200b\u7684\u200b\u5386\u53f2\u8bb0\u5f55\u200b
\u200b\u6309\u200b Windows + E \u200b\u6253\u5f00\u200b Windows \u200b\u8d44\u6e90\u7ba1\u7406\u200b\u5668\u200b\uff0c\u200b\u5220\u6389\u200b\u6240\u6709\u200b\u201c\u200b\u6700\u8fd1\u200b\u6587\u4ef6\u200b\u201d\u3002\u200b\u6ce8\u610f\u200b\u4e0d\u662f\u200b\u5c06\u200b\u6587\u4ef6\u200b\u4ece\u200b\u78c1\u76d8\u200b\u4e0a\u200b\u5220\u9664\u200b\uff0c\u200b\u800c\u662f\u200b\u53f3\u952e\u200b\u201c\u200b\u4ece\u200b\u5feb\u901f\u8bbf\u95ee\u200b\u4e2d\u200b\u5220\u9664\u200b\u201d\u3002
\u200b\u6e05\u7406\u200b\u201c\u200b\u8fd0\u884c\u200b\u2026\u2026\u201d\u200b\u7684\u200b\u5386\u53f2\u8bb0\u5f55\u200b
\u200b\u6e05\u7a7a\u200b\uff08\u200b\u4e0d\u662f\u200b\u5220\u9664\u200b\uff09\u200b\u6ce8\u518c\u8868\u200b\u9879\u200b HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU
\u200b\u4e2d\u200b\u7684\u200b\u6240\u6709\u200b\u5185\u5bb9\u200b\u3002
\u200b\u6e05\u7406\u200b\u6d4f\u89c8\u5668\u200b\u8bb0\u5f55\u200b
\u200b\u5bf9\u4e8e\u200b Internet Explorer\uff1a\u200b\u8bf7\u200b\u53c2\u8003\u200b Microsoft Docs\uff08\u200b\u4e2d\u6587\u200b / English)
\u200b\u5bf9\u4e8e\u200b Microsoft Edge\uff1a\u200b\u5220\u9664\u200b\u76ee\u5f55\u200b C:\\Users\\Vlab\\AppData\\Local\\Microsoft\\Edge\\User Data
\u200b\u8fdb\u884c\u200b\u78c1\u76d8\u6e05\u7406\u200b
\u200b\u6253\u5f00\u200b\u201c\u200b\u6b64\u200b\u7535\u8111\u200b\u201d\uff0c\u200b\u53f3\u952e\u200b\u70b9\u51fb\u200b C \u200b\u76d8\u200b\u9009\u62e9\u200b\u201c\u200b\u5c5e\u6027\u200b\u201d\uff0c\u200b\u7136\u540e\u200b\u5728\u200b\u5bf9\u8bdd\u6846\u200b\u4e2d\u200b\u627e\u5230\u200b\u201c\u200b\u78c1\u76d8\u6e05\u7406\u200b\u201d\u200b\u9009\u9879\u200b\u3002\u200b\u5148\u200b\u70b9\u51fb\u200b\u5de6\u4e0b\u89d2\u200b\u201c\u200b\u6e05\u7406\u200b\u7cfb\u7edf\u6587\u4ef6\u200b\u201d\uff0c\u200b\u7136\u540e\u200b\u52fe\u9009\u200b\u5168\u90e8\u5185\u5bb9\u200b\u786e\u8ba4\u200b\u6e05\u7406\u200b\u3002
\u200b\u5173\u95ed\u200b\u4f11\u7720\u200b\u548c\u200b\u5feb\u901f\u200b\u542f\u52a8\u200b\uff08\u200b\u63a8\u8350\u200b\uff09
\u200b\u4ee5\u200b\u7ba1\u7406\u5458\u200b\u6253\u5f00\u200b PowerShell\uff0c\u200b\u8fd0\u884c\u200b powercfg /h off
\u3002
\uff08\u200b\u53ef\u200b\u9009\u200b\uff09\u200b\u5220\u9664\u200b\u9884\u88c5\u200b\u7684\u200b UWP \u200b\u5e94\u7528\u200b
\u200b\u8fd9\u662f\u200b\u9ad8\u7ea7\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u5efa\u8bae\u200b\u4ec5\u200b\u5f53\u200b\u4f60\u200b\u719f\u6089\u200b Windows 10 \u200b\u65f6\u200b\u8fdb\u884c\u200b\u200b\u4ee5\u200b\u7ba1\u7406\u5458\u200b\u6253\u5f00\u200b PowerShell\uff0c\u200b\u8fd0\u884c\u200b Get-AppxProvisionedPackage -Online
\u200b\u6765\u200b\u5217\u51fa\u200b\u5f53\u524d\u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u5df2\u200b\u9884\u88c5\u200b\u7684\u200b UWP \u200b\u5e94\u7528\u200b\u3002\u200b\u5bf9\u4e8e\u200b\u6bcf\u200b\u4e00\u4e2a\u200b\u60f3\u8981\u200b\u5220\u9664\u200b\u7684\u200b\u5e94\u7528\u200b\uff0c\u200b\u8bb0\u5f55\u200b\u4e0b\u200b PackageName\u3002
\u200b\u7ee7\u7eed\u200b\u5728\u200b PowerShell \u200b\u4e2d\u200b\uff0c\u200b\u8fd0\u884c\u200b Remove-AppxProvisionedPackage -Online -PackageName $PackageName
\uff0c\u200b\u5176\u4e2d\u200b $PackageName
\u200b\u66ff\u6362\u6210\u200b\u521a\u624d\u200b\u8bb0\u5f55\u4e0b\u6765\u200b\u7684\u200b PackageName\u3002\u200b\u5220\u9664\u200b\u9884\u88c5\u200b\u540e\u200b\uff0c\u200b\u4e5f\u200b\u8981\u200b\u540c\u65f6\u200b\u5220\u9664\u200b\u5f53\u524d\u200b\u7528\u6237\u200b\u5df2\u200b\u5b89\u88c5\u200b\u7684\u200b\u8fd9\u200b\u4e00\u4efd\u200b\u76f8\u540c\u200b\u5e94\u7528\u200b\u3002\u200b\u4f60\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b Remove-AppxPackage -PackageName $PackageName
\u200b\u547d\u4ee4\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5728\u200b\u5f00\u59cb\u83dc\u5355\u200b\u4e2d\u200b\u627e\u5230\u200b\u5b83\u200b\u9009\u62e9\u200b\u201c\u200b\u5378\u8f7d\u200b\u201d\uff08\u200b\u5982\u679c\u200b\u4f60\u200b\u627e\u200b\u5f97\u5230\u200b\u7684\u8bdd\u200b\uff09\u3002
\u200b\u4f5c\u4e3a\u200b\u7ec3\u4e60\u200b\uff0c\u200b\u4f60\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u5220\u9664\u200b Microsoft Solitaire Collection \u200b\u548c\u200b Skype \u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u5e94\u7528\u200b\uff0c\u200b\u6216\u8005\u200b\u9009\u62e9\u200b\u8df3\u8fc7\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u3002
\u200b\u5148\u200b\u5173\u673a\u200b\u6253\u200b\u4e00\u4e2a\u200b\u5feb\u7167\u200b
Sysprep \u200b\u540e\u200b\u7684\u200b\u955c\u50cf\u200b\u65e0\u6cd5\u200b\u6062\u590d\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u63a8\u8350\u200b\u5728\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u4e4b\u524d\u200b\u5c06\u200b\u865a\u62df\u200b\u673a\u5173\u200b\u673a\u200b\uff0c\u200b\u5728\u200b Proxmox \u200b\u7684\u200b\u754c\u9762\u200b\u4e2d\u200b\u6253\u200b\u4e00\u4e2a\u200b\u5feb\u7167\u200b\uff0c\u200b\u65b9\u4fbf\u200b\u4ee5\u540e\u200b\u4ee5\u200b\u5f53\u524d\u200b\u72b6\u6001\u200b\u4e3a\u200b\u57fa\u7840\u200b\u8fdb\u4e00\u6b65\u200b\u5b9a\u5236\u200b\u955c\u50cf\u200b\u3002
\u200b\u8fd8\u662f\u200b\u4ee5\u200b\u7ba1\u7406\u5458\u200b\u6253\u5f00\u200b PowerShell\uff0c\u200b\u5b9a\u4f4d\u200b\u5230\u200b C:\\Program Files\\Cloudbase Solutions\\Cloudbase-init\\conf
\uff0c\u200b\u8fd0\u884c\u200b Sysprep\uff1a
C:\\Windows\\System32\\Sysprep\\sysprep.exe /generalize /oobe /unattend:Unattend.xml\n
\u200b\u8fd9\u4e2a\u200b Unattend.xml
\u200b\u7531\u200b Cloudbase-init \u200b\u63d0\u4f9b\u200b\uff0c\u200b\u6240\u4ee5\u200b\u9700\u8981\u200b\u5148\u200b cd
\u200b\u5230\u200b\u4e0a\u8ff0\u200b\u76ee\u5f55\u200b\u3002
\u200b\u5982\u679c\u200b Sysprep \u200b\u51fa\u73b0\u200b\u9519\u8bef\u200b\uff0c\u200b\u8bf7\u200b\u68c0\u67e5\u200b C:\\Windows\\System32\\Sysprep\\Panther\\setupact.log
\u200b\u5e76\u200b\u5229\u7528\u200b Google \u200b\u6392\u67e5\u200b\u3002
setupact.log
\u200b\u4e2d\u200b\u80fd\u200b\u770b\u5230\u200b\u4ee5\u4e0b\u200b\u9519\u8bef\u4fe1\u606f\u200b\uff0c\u200b\u4ee5\u200b Microsoft Solitaire Collection \u200b\u4e3a\u4f8b\u200b\uff1a
Package Microsoft.MicrosoftSolitaireCollection_4.10.7290.0_neutral_~_8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.\n
\u200b\u8bf7\u56de\u5230\u200b\u7b2c\u56db\u8282\u200b\u6b63\u786e\u200b\u5378\u8f7d\u200b\u9519\u8bef\u4fe1\u606f\u200b\u7ed9\u51fa\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u3002
Sysprep \u200b\u8fd0\u884c\u200b\u5b8c\u6210\u200b\u540e\u200b Windows \u200b\u4f1a\u200b\u81ea\u52a8\u5173\u673a\u200b\uff0c\u200b\u6b64\u65f6\u200b\u5c31\u200b\u4e0d\u8981\u200b\u518d\u200b\u5f00\u673a\u200b\u4e86\u200b\uff0c\u200b\u628a\u200b\u5f53\u524d\u200b\u7248\u672c\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u955c\u50cf\u200b\u63d0\u53d6\u200b\u51fa\u6765\u200b\uff0c\u200b\u5c31\u7b97\u200b\u6253\u5305\u200b\u5b8c\u6210\u200b\u4e86\u200b\u3002\u200b\u4f60\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u76f4\u63a5\u200b\u5c06\u200b\u8fd9\u4e2a\u200b\u865a\u62df\u673a\u200b\u8f6c\u6362\u200b\u4e3a\u200b Template\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4ece\u200b\u5b83\u200b\u521b\u5efa\u200b\u51fa\u65b0\u200b\u865a\u62df\u673a\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-windows-image/#packaging","title":"\u63d0\u53d6\u200b\u865a\u62df\u673a\u200b\u955c\u50cf","text":"\u200b\u9996\u5148\u200b\u8bf7\u200b\u53c2\u8003\u200b\u6253\u5305\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u5bf9\u5e94\u200b\u7684\u200b\u4e00\u8282\u200b\u6fc0\u6d3b\u200b\u865a\u62df\u673a\u200b\u5bf9\u5e94\u200b\u7684\u200b LVM \u200b\u5377\u200b\u3002
\u200b\u63d0\u53d6\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u5feb\u7167\u200b\u200b\u5982\u679c\u200b\u4f60\u200b\u60f3\u200b\u63d0\u53d6\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u67d0\u4e2a\u200b\u5feb\u7167\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u5176\u200b\u5f53\u524d\u200b\u72b6\u6001\u200b\uff0c\u200b\u9700\u8981\u200b\u5728\u200b lvchange
\u200b\u547d\u4ee4\u200b\u4e2d\u200b\u989d\u5916\u200b\u6dfb\u52a0\u200b -Ky
\u200b\u53c2\u6570\u200b\u3002
lvchange -ay -Ky /dev/{vg}/{snap-lv}\n
\u200b\u7136\u540e\u200b\uff0c\u200b\u4f7f\u7528\u200b QEMU \u200b\u7684\u200b\u78c1\u76d8\u5de5\u5177\u200b\u5c06\u200b\u5b58\u50a8\u200b\u5728\u200b LVM \u200b\u4e2d\u200b\u7684\u200b\u539f\u59cb\u200b\uff08raw\uff09\u200b\u78c1\u76d8\u955c\u50cf\u200b\u63d0\u53d6\u200b\u51fa\u6765\u200b\uff1a
qemu-img convert -p -f raw -O qcow2 /dev/{vg}/{lv} win10.qcow2\n
\u200b\u6b64\u65f6\u200b win10.qcow2
\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4e86\u200b\u3002\u200b\u5b83\u200b\u7684\u200b\u5bb9\u91cf\u200b\u901a\u5e38\u200b\u5728\u200b 20 GB \u200b\u4ee5\u4e0a\u200b\uff0c\u200b\u53ef\u80fd\u200b\u8fd8\u200b\u4e0d\u591f\u200b\u65b9\u4fbf\u200b\u79fb\u52a8\u200b\uff0c\u200b\u4e0b\u9762\u200b\u63d0\u4f9b\u200b\u4e00\u79cd\u200b\u7b80\u5355\u200b\u7684\u200b\u4f18\u5316\u200b\u65b9\u6cd5\u200b\u3002
Linux \u200b\u4e0b\u200b\u5bf9\u200b NTFS \u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u5199\u5165\u200b\u6ca1\u6709\u200b\u5f88\u200b\u597d\u200b\u7684\u200b\u4f18\u5316\u200b\uff0c\u200b\u5bb9\u6613\u200b\u635f\u574f\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\uff0c\u200b\u56e0\u6b64\u200b\u8bf7\u200b\u5c06\u200b\u4e0a\u200b\u4e00\u6b65\u200b\u63d0\u53d6\u200b\u5f97\u5230\u200b\u7684\u200b qcow2 \u200b\u6587\u4ef6\u200b\u4f5c\u4e3a\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u865a\u62df\u200b\u78c1\u76d8\u200b\u6302\u8f7d\u200b\u8fdb\u200b Windows \u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u4ece\u200b Windows \u200b\u4e2d\u200b\u64cd\u4f5c\u200b\u3002
\u200b\u5220\u9664\u200b\u9875\u9762\u200b\u6587\u4ef6\u200b\u548c\u200b\u4ea4\u6362\u6587\u4ef6\u200b
\u200b\u6253\u5f00\u200b\u521a\u200b\u6302\u8f7d\u200b\u7684\u200b\u78c1\u76d8\u200b\u4e2d\u200b\u7684\u200b\u7cfb\u7edf\u200b\u5206\u533a\u200b\uff08\u200b\u5b83\u200b\u7684\u200b\u76d8\u7b26\u200b\u73b0\u5728\u200b\u5e94\u8be5\u200b\u4e0d\u662f\u200b C \u200b\u4e86\u200b\uff0c\u200b\u6ce8\u610f\u200b\u8fa8\u522b\u200b\uff09\uff0c\u200b\u5220\u9664\u200b pagefile.sys
\u200b\u548c\u200b swapfile.sys
\u3002
\u200b\u4f60\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u540c\u65f6\u200b\u6e05\u7a7a\u200b C:\\Windows\\Logs
\u200b\u548c\u200b\u4e00\u4e9b\u200b\u5176\u4ed6\u200b\u6587\u4ef6\u5939\u200b\uff0c\u200b\u4f46\u200b\u8fd9\u200b\u901a\u5e38\u200b\u662f\u200b\u4e0d\u5fc5\u8981\u200b\u7684\u200b\uff0c\u200b\u5b83\u4eec\u200b\u4e0d\u4f1a\u200b\u6e05\u7406\u200b\u51fa\u200b\u51e0\u5341\u200b MB \u200b\u7684\u200b\u5bb9\u91cf\u200b\u3002
\u200b\u5bf9\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u6267\u884c\u200b Trim
\u200b\u518d\u6b21\u200b\u4ee5\u200b\u7ba1\u7406\u5458\u200b\u8eab\u4efd\u200b\u6253\u5f00\u200b PowerShell\uff0c\u200b\u6267\u884c\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b\uff1a
Optimize-Volume -DriveLetter X -ReTrim -Defrag -SlabConsolidate -Verbose\n
\uff08\u200b\u5982\u679c\u200b\u547d\u4ee4\u200b\u8fd0\u884c\u200b\u5f97\u200b\u592a\u6162\u200b\u4e86\u200b\uff0c\u200b\u4f60\u200b\u53ef\u4ee5\u200b\u53bb\u6389\u200b -SlabConsolidate
\u200b\u53c2\u6570\u200b\u3002\uff09
\u200b\u4ee5\u4e0a\u200b\u4efb\u52a1\u200b\u5b8c\u6210\u200b\u540e\u200b\uff0c\u200b\u5173\u95ed\u200b Windows \u200b\u865a\u62df\u673a\u200b\u5e76\u200b\u89e3\u9664\u200b\u6302\u8f7d\u200b\u786c\u76d8\u200b\uff0c\u200b\u7136\u540e\u200b\u518d\u6b21\u200b\u8f6c\u6362\u200b\u5e76\u200b\u538b\u7f29\u200b\u955c\u50cf\u200b\uff1a
qemu-img convert -p -c -f qcow2 -O qcow2 win10.qcow2 win10-new.qcow2\n
\u200b\u6b64\u65f6\u200b\u7684\u200b win10-new.qcow2
\u200b\u5bb9\u91cf\u200b\u5e94\u8be5\u200b\u80fd\u200b\u7f29\u51cf\u200b\u81f3\u200b 10-12 GB\uff0c\u200b\u53ef\u4ee5\u200b\u4fdd\u5b58\u200b\u4f5c\u4e3a\u200b\u6b63\u5f0f\u200b\u955c\u50cf\u200b\u4e86\u200b\uff0c\u200b\u521a\u624d\u200b\u7684\u200b win10.qcow2
\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5220\u9664\u200b\u6216\u200b\u8986\u76d6\u200b\u6389\u200b\u4e86\u200b\u3002
\u200b\u6ce8\u610f\u200b
\u200b\u672c\u200b\u6587\u6863\u200b\u662f\u200b\u5e73\u53f0\u200b\u7684\u200b\u6280\u672f\u6027\u200b\u6587\u6863\u200b\uff0c\u200b\u5185\u5bb9\u200b\u4e3b\u8981\u200b\u5bf9\u200b\u7ef4\u62a4\u200b\u5de5\u4f5c\u200b\u6709\u7528\u200b\uff0c\u200b\u7528\u6237\u200b\u8bf7\u200b\u770b\u200b\u7528\u6237\u6587\u6863\u200b\u3002
\u200b\u4e3a\u4e86\u200b\u4f7f\u200b\u5185\u5bb9\u200b\u7b80\u6d01\u200b\u7cbe\u70bc\u200b\u3001\u200b\u5c3d\u91cf\u200b\u4fdd\u6301\u200b\u4e0e\u200b\u4e3b\u9898\u200b\u76f8\u5173\u200b\uff0c\u200b\u672c\u200b\u6587\u6863\u200b\u65e0\u6cd5\u200b\u63d0\u4f9b\u200b\u8fc7\u4e8e\u200b\u8be6\u5c3d\u200b\u7684\u200b Linux \u200b\u57fa\u7840\u77e5\u8bc6\u200b\uff0c\u200b\u5982\u679c\u200b\u9047\u5230\u200b\u95ee\u9898\u200b\uff0c\u200b\u8bf7\u200b\u5584\u7528\u200b Google \u200b\u7b49\u200b\u5de5\u5177\u200b\u3002
Linux \u200b\u5165\u95e8\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b\u6821\u200b Linux \u200b\u7528\u6237\u200b\u534f\u4f1a\u200b\u7684\u200b Linux 101 \u200b\u8bfe\u7a0b\u200b\u8bb2\u4e49\u200b\u6216\u200b\u5176\u4ed6\u200b\u5728\u7ebf\u6559\u7a0b\u200b\u3002
When in doubt, ask.
\u200b\u6587\u6863\u200b\u7f3a\u5931\u200b
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u7f3a\u4e4f\u200b\u5bf9\u5e94\u200b\u7684\u200b\u7ef4\u62a4\u200b\u6587\u6863\u200b\uff1a
\u200b\u8bb0\u5f55\u200b\u6211\u4eec\u200b\u4e0a\u7ebf\u200b\u90e8\u7f72\u200b\u65b0\u200b\u529f\u80fd\u200b\uff08\u200b\u6216\u200b bug fix \u200b\u7b49\u200b\uff09\u200b\u7684\u200b\u5386\u53f2\u200b\u3002
\u200b\u7f16\u5199\u200b\u65f6\u8bf7\u200b\u6309\u200b\u65f6\u95f4\u200b\u5012\u5e8f\u200b\u6392\u5e8f\u200b\uff0c\u200b\u5373\u200b\u6700\u65b0\u200b\u7684\u200b\u65e5\u671f\u200b\u5728\u200b\u6700\u200b\u4e0a\u9762\u200b\u3002\u200b\u6709\u200b\u4e13\u95e8\u200b\u7684\u200b\u5de5\u4f5c\u200b\u8bb0\u5f55\u200b\u9875\u9762\u200b\u7684\u200b\u8bf7\u200b\u628a\u200b\u65f6\u95f4\u200b\u94fe\u63a5\u200b\u5230\u200b\u5bf9\u5e94\u200b\u7684\u200b\u9875\u9762\u200b\u3002
"},{"location":"changelog/#\u66f4\u65b0\u8bb0\u5f55","title":"\u66f4\u65b0\u200b\u8bb0\u5f55","text":""},{"location":"changelog/#2024-\u5e74","title":"2024 \u200b\u5e74","text":"7 \u200b\u6708\u200b 5 \u200b\u65e5\u200b\u200b\u4fee\u590d\u200b\u4e86\u200b\u4f7f\u7528\u200b\u8f83\u200b\u65b0\u200b\u7684\u200b OpenSSH \u200b\u5ba2\u6237\u7aef\u200b\uff08>= 9.5\uff09\u200b\u8fde\u63a5\u200b sshmux\uff0c\u200b\u4e14\u200b\u865a\u62df\u673a\u200b\u4e2d\u200b\u7684\u200b OpenSSH \u200b\u670d\u52a1\u7aef\u200b\u8f83\u200b\u8001\u200b\uff08< 9.5\uff09\u200b\u65f6\u200b\uff0c\u200b\u6309\u200b\u4efb\u610f\u200b\u952e\u76d8\u200b\u6309\u952e\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u8fde\u63a5\u200b\u65ad\u5f00\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
\u200b\u7ec6\u8282\u200b\u200b\u5728\u200b sshmux \u200b\u4e2d\u200b\u6dfb\u52a0\u200b\u8f93\u51fa\u200b\u6253\u5370\u200b\u8fde\u63a5\u200b\u65ad\u5f00\u200b\u7684\u200b\u7406\u7531\u200b\uff0c\u200b\u53d1\u73b0\u9519\u8bef\u200b\u5185\u5bb9\u200b\u4e3a\u200b\uff1a
ssh: disconnect, reason 2: Invalid ssh2 packet type: 192\n
\u200b\u68c0\u67e5\u200b x/crypto/ssh
\u200b\u7684\u200b\u4ee3\u7801\u200b\u672a\u200b\u53d1\u73b0\u200b\u76f8\u5173\u200b\u5b57\u7b26\u4e32\u200b\uff0c\u200b\u7136\u540e\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u5185\u200b\u5173\u95ed\u200b sshd \u200b\u5e76\u200b\u624b\u52a8\u200b\u4ee5\u200b debug \u200b\u6a21\u5f0f\u200b\u542f\u52a8\u200b\uff08/usr/sbin/sshd -ddd
\uff09\uff0c\u200b\u53d1\u73b0\u200b\u5982\u4e0b\u200b\u8f93\u51fa\u200b\uff1a
debug3: receive packet: type 192\ndebug2: sshpkt_disconnect: sending SSH2_MSG_DISCONNECT: Invalid ssh2 packet type: 192\n
\u200b\u67e5\u8be2\u200b SSH packet type\uff0c\u200b\u53d1\u73b0\u200b RFC 4250 \u00a7 4.1.3 \u200b\u5c06\u200b 192-255 \u200b\u5b9a\u4e49\u200b\u4e3a\u200b private use\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b OpenSSH \u200b\u4f7f\u7528\u200b\u8fd9\u4e9b\u200b\u6570\u503c\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u81ea\u5df1\u200b\u7684\u200b\u6269\u5c55\u200b\u3002
\u200b\u540c\u65f6\u200b\u68c0\u67e5\u200b x/crypto/ssh
\u200b\u548c\u200b OpenSSH \u200b\u7684\u200b\u4ee3\u7801\u200b\uff0c\u200b\u53d1\u73b0\u200b\u76f8\u4e92\u200b\u5339\u914d\u200b\u7684\u200b\u5b9a\u4e49\u200b\uff1a
// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9\nconst msgPing = 192\n\ntype pingMsg struct {\n Data string `sshtype:\"192\"`\n}\n\n// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9\nconst msgPong = 193\n\ntype pongMsg struct {\n Data string `sshtype:\"193\"`\n}\n
ssh2.h/* transport layer: OpenSSH extensions */\n#define SSH2_MSG_PING 192\n#define SSH2_MSG_PONG 193\n
\u200b\u7ee7\u7eed\u200b\u641c\u7d22\u200b\u53d1\u73b0\u200b OpenSSH 9.5 (2023/08/27) \u200b\u5f15\u5165\u200b\u4e86\u200b Keystroke timing obfuscation\uff0c\u200b\u5bf9\u5e94\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u65b0\u200b\u7684\u200b message type\u3002
\u200b\u95ee\u9898\u200b\u5728\u4e8e\u200b\uff0c\u200b\u4f7f\u7528\u200b\u8f83\u200b\u65b0\u200b\u7684\u200b\u5ba2\u6237\u7aef\u200b\u548c\u200b\u8f83\u200b\u65b0\u200b\u7684\u200b x/crypto
\u200b\u5199\u6210\u200b\u7684\u200b sshmux \u200b\u670d\u52a1\u7aef\u200b\u4f1a\u200b\u534f\u5546\u200b\u51fa\u200b\u8fd9\u4e2a\u200b\u6269\u5c55\u200b\uff0c\u200b\u800c\u200b sshmux \u200b\u76f4\u63a5\u200b\u5728\u200b\u5ba2\u6237\u7aef\u200b\u548c\u200b\u4e0a\u6e38\u200b\u670d\u52a1\u7aef\u200b\u4e4b\u95f4\u200b\u8f6c\u53d1\u200b\u6240\u6709\u200b\u7684\u200b SSH packet\uff0c\u200b\u5ffd\u7565\u200b\u7684\u200b\u670d\u52a1\u7aef\u200b\u652f\u6301\u200b\u7684\u200b\u6269\u5c55\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u4e86\u200b\u5ba2\u6237\u7aef\u200b\u53d1\u9001\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u670d\u52a1\u7aef\u200b\u4e0d\u200b\u8ba4\u8bc6\u200b\u7684\u200b packet\uff0c\u200b\u4ece\u800c\u200b\u4f7f\u200b\u670d\u52a1\u7aef\u200b\u65ad\u5f00\u8fde\u63a5\u200b\u3002
OpenSSH 9.6 \u200b\u5ba2\u6237\u7aef\u200b\u548c\u200b\u57fa\u4e8e\u200b x/crypto
v0.24.0 \u200b\u670d\u52a1\u7aef\u200b\u7684\u200b\u65e5\u5fd7\u200b\u8282\u9009\u200b\u5982\u4e0b\u200b\uff1a
debug1: SSH2_MSG_EXT_INFO received\ndebug1: kex_ext_info_client_parse: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-256,rsa-sha2-512,ssh-rsa,ssh-dss>\ndebug1: kex_ext_info_check_ver: ping@openssh.com=<0>\ndebug2: service_accept: ssh-userauth\ndebug1: SSH2_MSG_SERVICE_ACCEPT received\n
\u200b\u800c\u200b\u540c\u6837\u200b\u7684\u200b\u5ba2\u6237\u7aef\u200b\u76f4\u8fde\u200b OpenSSH 8.9 \u200b\u670d\u52a1\u7aef\u200b\uff08Ubuntu 22.04\uff09\u200b\u7684\u200b\u65e5\u5fd7\u200b\u8282\u9009\u200b\u5982\u4e0b\u200b\uff1a
debug1: SSH2_MSG_EXT_INFO received\ndebug1: kex_ext_info_client_parse: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com,webauthn-sk-ecdsa-sha2-nistp256@openssh.com>\ndebug1: kex_ext_info_check_ver: publickey-hostbound@openssh.com=<0>\ndebug2: service_accept: ssh-userauth\ndebug1: SSH2_MSG_SERVICE_ACCEPT received\n
\u200b\u56e0\u6b64\u200b\u786e\u8ba4\u200b\u95ee\u9898\u200b\u4e3a\u200b sshmux \u200b\u5411\u200b\u5ba2\u6237\u7aef\u200b\u5ba3\u544a\u200b\u652f\u6301\u200b ping@openssh.com
\u200b\u6269\u5c55\u200b\uff0c\u200b\u5e76\u200b\u8f6c\u53d1\u200b\u4e86\u200b packet type 192\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u662f\u200b\u5728\u200b x/crypto/ssh
\u200b\u4e2d\u200b\u627e\u5230\u200b ext_info
\u200b\u76f8\u5173\u200b\u4ee3\u7801\u200b\u5e76\u200b\u4ece\u4e2d\u200b\u5220\u6389\u200b ping@openssh.com
\u200b\u7684\u200b\u652f\u6301\u200b\uff1a42b2075
@ USTC-vlab/sshmux
\u200b\u7531\u4e8e\u200b RegreSSHion\uff08CVE-2024-6387\uff09\u200b\u6f0f\u6d1e\u200b\uff0c\u200b\u4fee\u6539\u200b\u9632\u706b\u5899\u200b\u4f7f\u200b\u865a\u62df\u673a\u200b\u7684\u200b 22 \u200b\u7aef\u53e3\u200b\u53ea\u80fd\u200b\u4ece\u200b web \u200b\u5bb9\u5668\u200b\u8fde\u63a5\u200b\uff0c\u200b\u907f\u514d\u200b\u7528\u6237\u200b\u5185\u200b\u7f51\u200b\u5185\u90e8\u200b\u4e92\u76f8\u200b\u626b\u63cf\u200b\u7206\u7834\u200b\u3002
\u200b\u53e6\u5916\u200b\u4fee\u590d\u200b\u4e86\u200b sshmux \u200b\u7531\u4e8e\u200b\u4e0a\u6e38\u200b x/crypto
\u200b\u66f4\u65b0\u200b\u5bfc\u81f4\u200b SSH \u200b\u8fde\u63a5\u200b\u51fa\u73b0\u200b sign_and_send_pubkey: no mutual signature supported
\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
OpenSSH \u200b\u5f00\u542f\u200b DEBUG1 \u200b\u4e4b\u540e\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u5982\u4e0b\u200b\u8f93\u51fa\u200b\uff1a
debug1: kex_ext_info_client_parse: server-sig-algs=<>\n
\u200b\u68c0\u67e5\u200b 1 \u200b\u6708\u4efd\u200b\u5c06\u200b x/crypto
\u200b\u66f4\u65b0\u200b\u5230\u200b v0.18.0 \u200b\u7684\u200b\u65f6\u5019\u200b\u6ca1\u6709\u200b\u6ce8\u610f\u200b\u5230\u200b ServerConfig
\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u5b57\u200b\u6bb5\u200b PublicKeyAuthAlgorithms
\uff0c\u200b\u4e14\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u5217\u8868\u200b\u4ec5\u200b\u5728\u200b NewServerConn
\u200b\u5185\u200b\u8bbe\u7f6e\u200b\uff08\u200b\u4e0d\u50cf\u200b Config
\u200b\u6709\u200b SetDefaults
\u200b\u65b9\u6cd5\u200b\uff09\uff1b\u200b\u800c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\u4e86\u200b\u81ea\u5df1\u200b\u5199\u200b\u7684\u200b NewPipeSession
\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u56e0\u6b64\u200b\u8fd9\u4e2a\u200b\u5b57\u200b\u6bb5\u200b\u4e00\u76f4\u200b\u4e3a\u7a7a\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u662f\u200b\u5728\u200b pipe.go
\u200b\u4e2d\u52a0\u200b\u4e00\u4e2a\u200b\u51fd\u6570\u200b\u5c06\u200b\u9ed8\u8ba4\u200b\u7684\u200b algorithm \u200b\u5217\u8868\u200b\u5bfc\u51fa\u200b\uff1a
func DefaultPublicKeyAuthAlgos() []string {\n return supportedPublicKeyAuthAlgos\n}\n
\u200b\u7136\u540e\u200b\u5728\u200b\u6211\u4eec\u200b\u7684\u200b\u524d\u7aef\u200b\u4ee3\u7801\u200b\u4e2d\u200b\u4f7f\u7528\u200b\u5373\u53ef\u200b\uff1a
sshConfig := &ssh.ServerConfig{\n PublicKeyAuthAlgorithms: ssh.DefaultPublicKeyAuthAlgos(),\n}\n
5 \u200b\u6708\u200b 10 \u200b\u65e5\u200b \u200b\u4fee\u590d\u200b\uff1a\u200b\u66f4\u65b0\u200b code-server \u200b\u7684\u200b\u811a\u672c\u200b\uff08pv1:/root/vlab-software/code-server.sh
\uff09\u200b\u8c03\u7528\u200b rsync \u200b\u65f6\u200b\u5fd8\u8bb0\u200b\u52a0\u200b --delete
\u200b\u4e86\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u66f4\u65b0\u200b\u5230\u200b 4.89.0 \u200b\u540e\u200b\u51fa\u9519\u200b\u3002
\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u7ba1\u7406\u200b\u9875\u9762\u200b\u65b0\u589e\u200b\u4e86\u200b\u91cd\u547d\u540d\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u9009\u9879\u200b\u548c\u200b\u201c\u200b\u7ba1\u7406\u5458\u200b\u6d88\u606f\u200b\u201d\u200b\u529f\u80fd\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u5185\u5b58\u5bb9\u91cf\u200b\u589e\u52a0\u200b\u5230\u200b\u4e86\u200b 6 GB\uff08\u200b\u65b0\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u4e5f\u200b\u91c7\u7528\u200b 6 GB\uff09\u3002
3 \u200b\u6708\u200b 8 \u200b\u65e5\u200b\u200b\u8c03\u6574\u200b\u4e86\u200b SSL \u200b\u8bc1\u4e66\u200b\u7684\u200b\u90e8\u7f72\u200b\u65b9\u5f0f\u200b\u3002
2 \u200b\u6708\u200b 18 \u200b\u65e5\u200b\u200b\u4fee\u590d\u200b\u4e86\u200b KVM \u200b\u865a\u62df\u673a\u200b\u9ed8\u8ba4\u200b\u4e0d\u5e26\u200b zram.ko
\u200b\u7684\u200b\u95ee\u9898\u200b\uff08\u200b\u901a\u8fc7\u200b cloud.cfg
\u200b\u52a0\u88c5\u200b linux-image-extra-virtual
\uff09\uff0c\u200b\u5e76\u200b\u66f4\u65b0\u200b\u4e86\u200b\u865a\u62df\u673a\u200b\u955c\u50cf\u200b\u3002
\u200b\u5168\u9762\u200b\u5f00\u653e\u200b\u4e86\u200b KVM \u200b\u865a\u62df\u673a\u200b\u6743\u9650\u200b\uff0c\u200b\u5141\u8bb8\u200b\u7528\u6237\u200b\u81ea\u884c\u200b\u521b\u5efa\u200b KVM \u200b\u865a\u62df\u673a\u200b\u3002
1 \u200b\u6708\u200b 14 \u200b\u65e5\u200b\u200b\u66f4\u65b0\u200b\u4e86\u200b Ubuntu 22.04, Ubuntu 20.04 \u200b\u548c\u200b CECS \u200b\u4e09\u4e2a\u200b\u955c\u50cf\u200b\uff0c\u200b\u7ed9\u200b systemd-journald \u200b\u52a0\u4e0a\u200b\u4e86\u200b\u5199\u76d8\u200b\u548c\u200b\u5199\u200b /run
\u200b\u7684\u200b\u5bb9\u91cf\u200b\u9650\u5236\u200b\u3002
\u200b\u5728\u200b pv9 - pv14 \u200b\u4e0a\u200b\u5b89\u88c5\u200b\u4e86\u200b\u65b0\u200b\u7684\u200b intel-microcode
\u200b\u5305\u5e76\u200b\u5b89\u6392\u200b\u8ba1\u5212\u200b\u91cd\u542f\u200b\uff0c\u200b\u4fee\u590d\u200b\u4e86\u200b CVE-2023-23583\u3002
\u200b\u540c\u65f6\u200b\u66f4\u65b0\u200b\u4e86\u200b Django\uff0c\u200b\u5728\u200b\u865a\u62df\u673a\u200b ID \u200b\u540e\u9762\u200b\u663e\u793a\u200b\u8282\u70b9\u200b\u540d\u79f0\u200b\u3002
10 \u200b\u6708\u200b 2 \u200b\u65e5\u200bVlab Software \u200b\u4e0a\u7ebf\u200b\u4e86\u200b Vivado 2023.1\uff0c\u200b\u5bb9\u91cf\u200b\u7ea6\u200b\u4e3a\u200b 29 GB\u3002
/opt/vlab/applications/vivado2023.desktop\n/opt/vlab/bin/vivado2023\n/opt/vlab/vivado/Xilinx/Vivado/2023.1/\n
\u200b\u6d4b\u8bd5\u200b\u53d1\u73b0\u200b Vivado 2023.1 \u200b\u5728\u200b\u5f00\u59cb\u200b\u7efc\u5408\u200b\u548c\u200b\u5f00\u59cb\u200b\u5b9e\u73b0\u200b\u7684\u200b\u65f6\u5019\u200b\u90fd\u200b\u4f1a\u200b\u95ea\u9000\u200b\uff0c\u200b\u88ab\u8feb\u200b\u8865\u4e0a\u200b\u4e86\u200b\u7956\u4f20\u200b\u7684\u200b LD_PRELOAD Ubuntu 18.04 \u200b\u7684\u200b libudev.so.1.6.9
\uff1b\u200b\u63a5\u4e0b\u6765\u200b route_design \u200b\u4e00\u6b65\u200b\u8fd8\u662f\u200b\u4f1a\u200b\u5f02\u5e38\u200b\u7ed3\u675f\u200b\uff08\u200b\u4f46\u200b\u7a0b\u5e8f\u200b\u6ca1\u6709\u200b\u6574\u4e2a\u200b\u95ea\u9000\u200b\uff09\uff0c\u200b\u53c8\u200b\u88ab\u8feb\u200b\u8865\u4e0a\u200b\u4e86\u200b libdbus-glib-1.so.2.3.4
\u3002
\u200b\u6309\u7167\u200b\u89c4\u5212\u200b\u4e86\u200b\u4e00\u4e2a\u591a\u6708\u200b\u4ee5\u6765\u200b\u7684\u200b\u65b9\u6848\u200b\u5168\u9762\u200b\u5207\u6362\u200b\u5230\u200b\u4e86\u200b PVE Firewall\uff0c\u200b\u5e76\u200b\u66f4\u65b0\u200b\u4e86\u200b vlab-vnc\u3001vlab-vscode \u200b\u7b49\u200b\u56e0\u6b64\u200b\u53d7\u76ca\u200b\u7684\u200b\u8f6f\u4ef6\u200b\u3002
9 \u200b\u6708\u200b 15 \u200b\u65e5\u200b\u200b\u6d4b\u8bd5\u200b\u53d1\u73b0\u200b HPE MSA 1050 \u200b\u7684\u200b Virtual Volume \u200b\u662f\u200b\u652f\u6301\u200b SCSI Unmap \u200b\u7684\u200b\uff0c\u200b\u56e0\u6b64\u200b\u5728\u200b\u6240\u6709\u200b\u8ba1\u7b97\u200b\u8282\u70b9\u200b\u7684\u200b /etc/lvm/lvm.conf
\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\u4e86\u200b issue_discard = 1
\uff0c\u200b\u7136\u540e\u200b\u901a\u8fc7\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u4e34\u65f6\u200b LV \u200b\u7684\u200b\u65b9\u5f0f\u200b\u628a\u200b\u6240\u6709\u200b\u672a\u200b\u5206\u914d\u200b\u7a7a\u95f4\u200b\u90fd\u200b unmap \u200b\u4e86\u200b\u4e00\u4e0b\u200b\uff1a
lvcreate -l 100%FREE -n test user-data\nblkdiscard -f user-data/test\nlvremove user-data/test\n
\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u540e\u53f0\u200b\u663e\u793a\u200b\u7684\u200b Allocated \u200b\u4ece\u200b 30.3 TB \u200b\u4e0b\u964d\u200b\u5230\u200b\u4e86\u200b 17.1 TB\u3002
9 \u200b\u6708\u200b 5 \u200b\u65e5\u200b\u200b\u5b9e\u73b0\u200b\u4e86\u200b Linux KVM \u200b\u865a\u62df\u673a\u200b\u955c\u50cf\u200b\u7684\u200b\u53ef\u200b\u590d\u73b0\u200b\u914d\u7f6e\u200b\uff08\u200b\u89c1\u200b labstrap \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u7684\u200b kvmstrap
\u200b\u4ee3\u7801\u200b\uff0c\u200b\u6682\u672a\u5168\u200b\u81ea\u52a8\u5316\u200b\uff09\uff0c\u200b\u5e76\u200b\u636e\u6b64\u200b\u6784\u5efa\u200b\u51fa\u200b\u4e86\u200b\u7b2c\u4e00\u4efd\u200b \u200b\u53ef\u7528\u200b\u7684\u200b KVM \u200b\u955c\u50cf\u200b\uff08VM 200\uff09\u3002
\u200b\u66f4\u65b0\u200b\u4e86\u200b Django \u200b\u4ee3\u7801\u200b\uff0c\u200b\u652f\u6301\u200b\u5bf9\u200b\u4e0d\u540c\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u91c7\u7528\u200b\u4e0d\u540c\u200b\u914d\u7f6e\u200b\u53c2\u6570\u200b\uff0c\u200b\u5e76\u200b\u90e8\u7f72\u200b\u4e86\u200b\u66f4\u65b0\u200b\u540e\u200b\u7684\u200b\u4ee3\u7801\u200b\u3002\u200b\u8fd9\u200b\u6807\u5fd7\u200b\u7740\u200b\u65b0\u200b\u4e00\u6279\u200b\u670d\u52a1\u5668\u200b pv9-14 \u200b\u53ca\u200b\u5bf9\u5e94\u200b\u7684\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u6b63\u5f0f\u200b\u6295\u5165\u200b\u670d\u52a1\u200b\u3002
\u200b\u4ea4\u6362\u200b\u4e86\u200b pv8 \u200b\u548c\u200b pv9 \u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u73b0\u5728\u200b pv2-8 \u200b\u53ca\u200b pv10-14 \u200b\u8fd0\u884c\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u3002pv1 \u200b\u548c\u200b pv9 \u200b\u4fdd\u7559\u200b\uff0c\u200b\u5206\u522b\u200b\u7528\u4e8e\u200b\u8fd0\u884c\u200b Vlab \u200b\u6838\u5fc3\u200b\u670d\u52a1\u200b\u53ca\u5176\u200b\u4ed6\u200b\u9ad8\u200b\u914d\u7f6e\u200b\u9700\u6c42\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u3002
\u200b\u4fee\u6539\u200b\u4e86\u200b vscode-pdf \u200b\u63d2\u4ef6\u200b\u4f7f\u200b\u5176\u200b\u53ef\u4ee5\u200b\u5728\u200b code-server \u200b\u4e2d\u200b\u6b63\u5e38\u200b\u8fd0\u884c\u200b\uff08\u200b\u89c1\u200b\u7528\u6237\u6587\u6863\u200b\uff09\u3002
8 \u200b\u6708\u200b 23 \u200b\u65e5\u200b\u200b\u914d\u7f6e\u200b\u597d\u200b\u4e86\u200b pv9 - pv14 \u200b\u516d\u200b\u53f0\u200b\u673a\u5668\u200b\u548c\u200b\u65b0\u200b\u7684\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u5c06\u200b\u65b0\u200b\u7684\u200b\u8ba1\u7b97\u200b\u8282\u70b9\u200b\u5347\u7ea7\u200b\u5230\u200b\u4e86\u200b PVE 8 \u200b\u5e76\u200b\u52a0\u5165\u200b\u4e86\u200b\u73b0\u6709\u200b\u7684\u200b\u96c6\u7fa4\u200b\u3002\u200b\u6b64\u5904\u200b\u5e76\u200b\u6ca1\u6709\u200b\u8e29\u200b\u4ec0\u4e48\u200b\u5751\u200b\u3002
\u200b\u4fee\u6539\u200b\u4e86\u200b /etc/pve/corosync.conf
\uff0c\u200b\u5220\u9664\u200b\u4e86\u200b link 1\uff08\u200b\u53ea\u200b\u4fdd\u7559\u200b\u4e86\u200b link 0\uff09\u3002
\u200b\u4e3a\u200b\u300a\u200b\u8ba1\u7b97\u200b\u7cfb\u7edf\u200b\u7efc\u5408\u200b\u5b9e\u9a8c\u200b\u300b\u200b\u8bfe\u7a0b\u200b\u5b9a\u5236\u200b\u4e86\u200b\u7cfb\u7edf\u200b\u73af\u5883\u200b\uff1a
riscv64-unknown-elf
\uff09\uff0c\u200b\u901a\u8fc7\u200b /opt/vlab/riscv64
\u200b\u63d0\u4f9b\u200b\u3002/opt/vlab
\u200b\u63d0\u4f9b\u200b\u3002vlab21-CECS-ubuntu-desktop-mate-22.04
\u200b\u955c\u50cf\u200b\uff0c\u200b\u901a\u8fc7\u200b apt install
\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u76f8\u5173\u200b\u8f6f\u4ef6\u200b\u3002\u200b\u53e6\u5916\u200b\u534f\u52a9\u200b\u914d\u7f6e\u200b\u4e86\u200b soc.ustc.edu.cn \u200b\u57df\u540d\u200b\u4e0b\u200b\u7684\u200b\u76f8\u5173\u200b\u7f51\u9875\u200b\u670d\u52a1\u200b\u3002
8 \u200b\u6708\u200b 6 \u200b\u65e5\u200b\u200b\u5c06\u200b\u4e3b\u673a\u200b\u5347\u7ea7\u200b\u5230\u200b\u4e86\u200b PVE 8.0 \u200b\u4e0e\u200b PBS 3.0\uff0c\u200b\u540c\u65f6\u200b\u66f4\u65b0\u200b\u4e86\u200b\uff087 \u200b\u6708\u200b\u5df2\u200b\u5f00\u53d1\u200b\u5b8c\u6210\u200b\u7684\u200b\uff09Django KVM \u200b\u76f8\u5173\u200b\u529f\u80fd\u200b\u652f\u6301\u200b\u3002
7 \u200b\u6708\u200b 4 \u200b\u65e5\u200b\u200b\u4fee\u6539\u200b\u4e86\u200b /opt/vlab/.dev/kvm
\u200b\u6743\u9650\u200b\u4e3a\u200b 100000:100107 0660
\uff08Proxmox VE \u200b\u53ca\u200b Ubuntu \u200b\u955c\u50cf\u200b\u4e2d\u200b\u7684\u200b kvm
\u200b\u7ec4\u200b\uff09\uff0c/opt/vlab/.dev/tun
\u200b\u6743\u9650\u200b\u4e3a\u200b 100000:100000 0666
\uff0c\u200b\u4f7f\u5f97\u200b\u865a\u62df\u673a\u200b\u5185\u200b\u7684\u200b\u666e\u901a\u7528\u6237\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u8bbf\u95ee\u200b KVM \u200b\u548c\u200b TUN\u3002\u200b\u76f8\u5173\u200b\u6587\u6863\u200b\u4e8e\u200b 7 \u200b\u6708\u200b 7 \u200b\u65e5\u200b\u66f4\u65b0\u200b\u3002
vlab-earlyoom \u200b\u5df2\u200b\u4e0d\u518d\u200b\u4f9d\u8d56\u4e8e\u200b\u7cfb\u7edf\u200b\u7684\u200b earlyoom \u200b\u5305\u200b\uff0c\u200b\u8f6c\u4e3a\u200b\u4f7f\u7528\u200b\u81ea\u5df1\u200b\u9884\u200b\u7f16\u8bd1\u200b\u7684\u200b earlyoom \u200b\u7a0b\u5e8f\u200b\uff1b\u200b\u540c\u65f6\u200b\u901a\u77e5\u200b\u65b9\u5f0f\u200b\u6539\u4e3a\u200b\u4f7f\u7528\u200b Zenity \u200b\u56fe\u5f62\u5316\u200b\u901a\u77e5\u200b\u6846\u200b\uff08\u200b\u6548\u679c\u200b\uff09\u3002
Django \u200b\u4fee\u590d\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u7531\u4e8e\u200b .save()
\u200b\u4f1a\u200b\u66f4\u65b0\u200b\u6240\u6709\u200b\u5217\u200b\u5bfc\u81f4\u200b\u7684\u200b race condition\u3002
\u200b\u7531\u4e8e\u200b\u78c1\u76d8\u7a7a\u95f4\u200b\u7206\u6ee1\u200b\u540e\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u865a\u62df\u673a\u200b\u65e0\u6cd5\u200b\u5f00\u673a\u200b\uff0c\u200b\u65b0\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u5df2\u200b\u5c06\u200b ext4 reserved space \u200b\u4ece\u200b 0 \u200b\u6539\u4e3a\u200b 1%\uff08\u200b\u5728\u200b vlab-pve-agent \u200b\u4e2d\u200b\u4fee\u6539\u200b tune2fs -m
\u200b\u7684\u200b\u53c2\u6570\u200b\uff09\u3002
Django \u200b\u7684\u200b\u767b\u5f55\u200b\u9875\u9762\u200b\u9ed8\u8ba4\u200b\u6298\u53e0\u200b\u7528\u6237\u540d\u200b\u5bc6\u7801\u200b\u767b\u5f55\u200b\uff0c\u200b\u5e76\u200b\u5c55\u793a\u200b\u4e00\u4e2a\u200b\u5de8\u5927\u200b\u7684\u200b\u201c\u200b\u7edf\u4e00\u200b\u8eab\u4efd\u200b\u8ba4\u8bc1\u200b\u767b\u5f55\u200b\u201d\u200b\u6309\u94ae\u200b\uff0c\u200b\u4ee5\u200b\u9f13\u52b1\u200b\u7528\u6237\u200b\u4f7f\u7528\u200b CAS \u200b\u767b\u5f55\u200b\u3002
\u200b\u4ee5\u53ca\u200b\u4e00\u4e9b\u200b\u4e0e\u200b\u6e05\u9000\u200b\u5224\u65ad\u200b\u76f8\u5173\u200b\u7684\u200b\u540e\u53f0\u200b\u903b\u8f91\u200b\u8c03\u6574\u200b\u3002
2 \u200b\u6708\u200b 17 \u200b\u65e5\u200b\u200b\u66f4\u65b0\u200b\u4e86\u200b Django\uff0c\u200b\u9650\u5236\u200b\u5e76\u884c\u6267\u884c\u200b\u7684\u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u4efb\u52a1\u200b\uff0c\u200b\u52a0\u5feb\u200b\u5bb9\u5668\u200b\u521b\u5efa\u200b\uff0c\u200b\u5e76\u200b\u6539\u8fdb\u200b\u4e86\u200b\u865a\u62df\u673a\u200b\u7ba1\u7406\u200b\u9875\u9762\u200b\u7684\u200b\u7528\u6237\u200b\u4f53\u9a8c\u200b\u3002\u200b\u540c\u65f6\u200b\u5728\u200b\u4e2a\u4eba\u4fe1\u606f\u200b\u9875\u9762\u200b\u663e\u793a\u200b\u4ece\u200b CAS \u200b\u83b7\u53d6\u200b\u7684\u200b\u7528\u6237\u200b\u90ae\u7bb1\u200b\u3002
\u200b\u66f4\u65b0\u200b\u4e86\u200b Filestash\uff0c\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u63d0\u793a\u200b\uff0c\u200b\u4f7f\u200b\u64cd\u4f5c\u200b\u66f4\u200b\u76f4\u89c2\u200b\u3002
2 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u200b\u5c06\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u7684\u200b\u6784\u5efa\u200b\u81ea\u52a8\u5316\u200b\uff0c\u200b\u4e0d\u518d\u200b\u9700\u8981\u200b\u5728\u200b\u81ea\u5df1\u200b\u7684\u200b\u673a\u5668\u200b\u4e0a\u200b\u624b\u52a8\u200b\u8fd0\u884c\u200b\u6784\u5efa\u200b\u811a\u672c\u200b\u3002
\u200b\u540c\u65f6\u200b\u4fee\u6539\u200b\u4e86\u200b\u5df2\u6709\u200b\u7684\u200b\u5bb9\u5668\u200b\uff0c\u200b\u505c\u7528\u200b\u6216\u200b\u9519\u5f00\u200b\u4e86\u200b\u51e0\u4e2a\u200b\u56fa\u5b9a\u200b\u65f6\u95f4\u200b\u7684\u200b systemd timer \u200b\u5b9a\u65f6\u200b\u4efb\u52a1\u200b\uff0c\u200b\u5c1d\u8bd5\u200b\u7f13\u89e3\u200b\u6bcf\u5929\u200b 0 \u200b\u70b9\u200b\u548c\u200b 6 \u200b\u70b9\u200b\u7a81\u53d1\u200b\u7684\u200b iowait\u3002
"},{"location":"changelog/#2022-\u5e74","title":"2022 \u200b\u5e74","text":"9 \u200b\u6708\u200b 20 \u200b\u65e5\u200b\u200b\u5c06\u200b post creation \u200b\u4ece\u200b\u521b\u5efa\u200b\u65f6\u200b\u6267\u884c\u200b\u6539\u4e3a\u200b\u9996\u6b21\u200b\u542f\u52a8\u200b\u65f6\u200b\u6267\u884c\u200b\uff0c\u200b\u4f7f\u5f97\u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u7684\u200b\u754c\u9762\u200b\u4e0d\u518d\u200b\u963b\u585e\u200b\u3002
4 \u200b\u6708\u200b 11 \u200b\u65e5\u200b\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u7f51\u9875\u200b SSH \u200b\u767b\u5f55\u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u5728\u200b Chrome \u200b\u4e0e\u200b Edge \u200b\u6d4f\u89c8\u5668\u200b\u4e0b\u200b noVNC \u200b\u81ea\u52a8\u200b\u526a\u8d34\u677f\u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u65b9\u4fbf\u200b\u7528\u6237\u200b\u4f7f\u7528\u200b\u3002
2 \u200b\u6708\u200b 14 \u200b\u65e5\u200b\u200b\u5bf9\u200b LXC \u200b\u865a\u62df\u673a\u200b\u63d0\u4f9b\u200b\u201c\u200b\u6062\u590d\u6a21\u5f0f\u200b SSH\u201d\u200b\u63a5\u53e3\u200b\uff0c\u200b\u4f7f\u200b\u7528\u6237\u200b\u53ef\u4ee5\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u65ad\u7f51\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u901a\u8fc7\u200b SSH \u200b\u767b\u5f55\u200b\u83b7\u5f97\u200b\u865a\u62df\u673a\u200b\u7684\u200b shell\uff0c\u200b\u81ea\u4e3b\u200b\u8fdb\u884c\u200b\u6062\u590d\u200b\u5de5\u4f5c\u200b\u3002
1 \u200b\u6708\u200b 28 \u200b\u65e5\u200b\u200b\u4fee\u6539\u7248\u200b Filestash \u200b\u6d4b\u8bd5\u200b\u4e0a\u7ebf\u200b\u3002\u200b\u672c\u6b21\u200b\u66f4\u65b0\u200b\u4e3b\u8981\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u81ea\u52a8\u200b\u767b\u5f55\u200b\u529f\u80fd\u200b\uff0c\u200b\u5e76\u4e14\u200b\u4fee\u6b63\u200b\u4e86\u200b\u5927\u91cf\u200b\u95ee\u9898\u200b\u3002
1 \u200b\u6708\u200b 26 \u200b\u65e5\u200b\u200b\u7d27\u6025\u200b\u5b89\u5168\u66f4\u65b0\u200b\uff0c\u200b\u540c\u65f6\u200b\u66f4\u65b0\u200b\u4e86\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\u7684\u200b sshd_config
\u200b\u4e3a\u200b\u63a5\u4e0b\u6765\u200b\u4e3a\u200b\u6240\u6709\u200b username \u200b\u542f\u7528\u200b SSH \u200b\u8bc1\u4e66\u200b\u767b\u5f55\u200b\u505a\u597d\u200b\u51c6\u5907\u200b\u3002
vlab.ustc.edu.cn
\u200b\u914d\u7f6e\u200b\u7684\u200b HSTS \u200b\u4ece\u200b 1 \u200b\u5c0f\u65f6\u200b\u5347\u7ea7\u200b\u81f3\u200b 1 \u200b\u5468\u200b\uff08max-age=604800
\uff09\u3002
\u200b\u4fee\u590d\u200b\u4e86\u200b Grafana \u200b\u663e\u793a\u200b\u7684\u200b VNC \u200b\u5728\u7ebf\u200b\u65f6\u200b\u957f\u200b\u6bcf\u4e2a\u200b\u6708\u200b\u4f1a\u200b\u6709\u200b\u4e00\u4e2a\u200b\u5f02\u5e38\u200b\u9ad8\u5cf0\u200b\u7684\u200b\u60c5\u51b5\u200b\uff08MySQL \u200b\u65e5\u671f\u200b\u65f6\u95f4\u200b\u8ba1\u7b97\u200b\u95ee\u9898\u200b\uff09\u3002
\u200b\u539f\u6765\u200b\u4f7f\u7528\u200b\u7684\u200b SELECT \u200b\u9879\u76ee\u200b\u662f\u200b SUM(disconnect_time - connect_time)
\uff0c\u200b\u6539\u4e3a\u200b SUM(TIME_TO_SEC(TIMEDIFF(disconnect_time, connect_time)))
\u200b\u540e\u200b\u6b63\u5e38\u200b\u4e86\u200b\u3002
\u200b\u66f4\u65b0\u200b\u4e86\u200b 01 \u200b\u53f7\u200b\u955c\u50cf\u200b\uff0c\u200b\u5347\u7ea7\u200b\u4e86\u200b\u6240\u6709\u200b\u8f6f\u4ef6\u5305\u200b\uff0c\u200b\u6e05\u7406\u200b\u4e86\u200b\u591a\u4f59\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b apt \u200b\u6e90\u200b\u6362\u56de\u200b\u4e86\u200b\u79d1\u5927\u200b\u955c\u50cf\u200b\u7ad9\u200b\u3002
8 \u200b\u6708\u200b 21 \u200b\u65e5\u200b\u200b\u5c06\u200b\u96c6\u7fa4\u200b\u5168\u90e8\u200b\u5347\u7ea7\u200b\u81f3\u200b Proxmox VE 7.0
8 \u200b\u6708\u200b 12 \u200b\u65e5\u200b\u200b\u4fee\u590d\u200b\u4e86\u200b\u62e5\u6709\u200b\u591a\u4e2a\u200b\u5b66\u53f7\u200b\u6216\u200b\u5de5\u53f7\u200b\u7684\u200b\u7528\u6237\u200b\u901a\u8fc7\u200b\u4e0d\u540c\u200b\u5b66\u5de5\u200b\u53f7\u200b\u767b\u5f55\u200b\u65f6\u200b\u6570\u636e\u200b\u4e0d\u200b\u4e92\u901a\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
4 \u200b\u6708\u200b 11 \u200b\u65e5\u200b\u200b\u901a\u8fc7\u200b Vlab Software \u200b\u63d0\u4f9b\u200b\u4e86\u200b RISC-V \u200b\u7684\u200b GCC \u200b\u5de5\u5177\u200b\u94fe\u200b\uff0c\u200b\u4ee5\u53ca\u200b RARS \u200b\u6a21\u62df\u5668\u200b\uff08\u200b\u5df2\u200b\u7f16\u5199\u200b .desktop
\u200b\u6587\u4ef6\u200b\u4f7f\u7528\u200b Vlab Software \u200b\u63d0\u4f9b\u200b\u7684\u200b JDK 14 \u200b\u8fd0\u884c\u200b\uff09
\u200b\u901a\u8fc7\u200b Vlab Software \u200b\u63d0\u4f9b\u200b\u4e86\u200b Xilinx Vivado 2016.3 \u200b\u7248\u672c\u200b\uff0c\u200b\u4e3a\u200b 2019.1 \u200b\u7248\u672c\u200b\u7684\u200b\u517c\u5bb9\u6027\u95ee\u9898\u200b\u63d0\u4f9b\u200b\u4e00\u4e2a\u200b\u5907\u200b\u9009\u9879\u200b\u3002
"},{"location":"changelog/#2020-\u5e74","title":"2020 \u200b\u5e74","text":"11 \u200b\u6708\u200b 18 \u200b\u65e5\u200b\u200b\u5c06\u200b\u6545\u969c\u200b\u635f\u6bc1\u200b\u7684\u200b CT 100 \u200b\u6062\u590d\u200b\u5e76\u200b\u91cd\u5efa\u200b\u3002
11 \u200b\u6708\u200b 14 \u200b\u65e5\u200bVivado \u200b\u4eff\u771f\u200b\u7684\u200b\u62a5\u9519\u200b\u5df2\u7ecf\u200b\u5728\u200b\u955c\u50cf\u200b\u4e2d\u200b\u4fee\u590d\u200b\uff0c\u200b\u65b0\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\uff08ID \u200b\u5927\u4e8e\u200b 2266\uff09\u200b\u4e0d\u518d\u200b\u53d7\u6b64\u200b\u5f71\u54cd\u200b\u3002
\u200b\u5728\u7ebf\u200b VSCode \u200b\u7f16\u7a0b\u200b\u5e73\u53f0\u200b\u5f00\u653e\u200b\u6d4b\u8bd5\u200b\u3002
10 \u200b\u6708\u200b 29 \u200b\u65e5\u200b\u200b\u7528\u6237\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u5173\u95ed\u200b VNC \u200b\u767b\u5f55\u200b\u65f6\u200b\u663e\u793a\u200b\u7684\u200b\u52a0\u5165\u200b QQ \u200b\u7fa4\u200b\u7684\u200b\u901a\u77e5\u200b\u3002
Note
\u200b\u672c\u200b\u9875\u9762\u200b\u4e8e\u200b 2020 \u200b\u5e74\u200b 9 \u200b\u6708\u521d\u200b\u521b\u5efa\u200b\uff0c\u200b\u56e0\u6b64\u200b 2020 \u200b\u5e74\u200b 8 \u200b\u6708\u200b\u53ca\u200b\u4ee5\u524d\u200b\u7684\u200b\u66f4\u65b0\u200b\u8bb0\u5f55\u200b\u662f\u200b\u4e0d\u200b\u5b8c\u6574\u200b\u7684\u200b\u3002\u200b\u5c3d\u7ba1\u200b\u7f16\u8005\u200b\u5df2\u200b\u4ece\u200b\u8ba8\u8bba\u200b\u7fa4\u200b\u7684\u200b\u804a\u5929\u8bb0\u5f55\u200b\u7b49\u200b\u5730\u200b\u5c3d\u53ef\u80fd\u200b\u6062\u590d\u200b\uff08\u200b\u8865\u5199\u200b\uff09\u200b\u51fa\u200b\u4e86\u200b\u4e00\u4e9b\u200b\uff0c\u200b\u4f46\u200b\u8bb8\u591a\u200b\u7ec6\u8282\u200b\u4ecd\u7136\u200b\u96be\u4ee5\u200b\u4fdd\u8bc1\u200b\u5b8c\u6574\u6027\u200b\u53ca\u200b\u51c6\u786e\u6027\u200b\u3002
9 \u200b\u6708\u200b 8 \u200b\u65e5\u200b\u200b\u5b8c\u6210\u200b\u4e86\u200b\u5728\u200b\u5bb9\u5668\u200b\u4e4b\u95f4\u200b\u5171\u4eab\u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\u7684\u200b\u8bbe\u8ba1\u200b\uff08\u200b\u955c\u50cf\u200b 01 \u200b\u5df2\u7ecf\u200b\u66ff\u6362\u200b\u4e3a\u200b\u65b0\u200b\u7248\u672c\u200b\uff09\uff0c\u200b\u8fd9\u200b\u53ef\u4ee5\u200b\u51cf\u5c11\u200b\u76f8\u540c\u200b\u7684\u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\u91cd\u590d\u200b\u5b58\u50a8\u200b\u7684\u200b\u95ee\u9898\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5c06\u200b\u8f6f\u4ef6\u200b\u653e\u7f6e\u200b\u5728\u200b SSD \u200b\u4e0a\u200b\uff0c\u200b\u4e5f\u200b\u9884\u671f\u200b\u53ef\u4ee5\u200b\u63d0\u9ad8\u200b\u6027\u80fd\u200b\u3002\u200b\u540c\u65f6\u200b\uff0c\u200b\u65b0\u521b\u5efa\u200b\u7684\u200b\u5bb9\u5668\u200b\u4e5f\u200b\u652f\u6301\u200b\u5d4c\u5957\u200b\u5bb9\u5668\u200b\u4e86\u200b\u3002
9 \u200b\u6708\u200b 5 \u200b\u65e5\u200b\u200b\u865a\u62df\u673a\u200b\u7ba1\u7406\u200b\u754c\u9762\u200b\u7684\u200b\u684c\u9762\u200b\u8fde\u63a5\u529f\u80fd\u200b\u73b0\u5728\u200b\u53ef\u4ee5\u200b\u81ea\u52a8\u200b\u8fde\u63a5\u200b\u5bf9\u5e94\u200b\u865a\u62df\u673a\u200b\uff08\u200b\u4f7f\u7528\u200b URL parameters \u200b\u4f20\u9012\u4fe1\u606f\u200b\uff09
9 \u200b\u6708\u200b 3 \u200b\u65e5\u200bSSH \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4e86\u200b\u3002\u200b\u9884\u8ba1\u200b\u5c06\u200b\u5728\u200b\u4e00\u6bb5\u65f6\u95f4\u200b\u4e4b\u540e\u200b\u5173\u95ed\u200b\u65e7\u200b\u7684\u200b\u767b\u5f55\u200b\u65b9\u5f0f\u200b\uff08\u200b\u7aef\u53e3\u200b\u8f6c\u53d1\u200b\uff09\uff0c\u200b\u5177\u4f53\u200b\u65f6\u95f4\u200b\u5f85\u5b9a\u200b
8 \u200b\u6708\u200b 4 \u200b\u65e5\u200b\u200b\u57fa\u4e8e\u200b Grafana + InfluxDB / MySQL \u200b\u7684\u200b\u7528\u91cf\u200b\u6570\u636e\u200b\u7edf\u8ba1\u200b\u9875\u9762\u200b
8 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u200b\u5149\u7ea4\u7f51\u7edc\u200b\uff08ens1f0\u3001ens1f1\uff09\u200b\u7684\u200b MTU \u200b\u73b0\u5728\u200b\u662f\u200b 1550 \u200b\u5b57\u8282\u200b\u4e86\u200b
\u200b\u4fee\u590d\u200b\u4e86\u200b pv8 \u200b\u7684\u200b\u5149\u7ea4\u7f51\u7edc\u200b
noVNC \u200b\u652f\u6301\u200b\u57fa\u4e8e\u200b\u6d4f\u89c8\u5668\u200b cookie \u200b\u7684\u200b\u4e00\u952e\u200b\u767b\u5f55\u200b\uff0c\u200b\u51cf\u5c11\u200b\u91cd\u590d\u200b\u8f93\u5165\u200b\u7528\u6237\u540d\u200b\u5bc6\u7801\u200b\u7684\u200b\u9ebb\u70e6\u200b
\u200b\u914d\u7f6e\u200b\u5e76\u200b\u6253\u5305\u200b\u597d\u200b\u4e86\u200b Ubuntu 20.04 \u200b\u7684\u200b\u955c\u50cf\u200b\uff0c\u200b\u6682\u65f6\u200b\u4ee5\u200b\u7f16\u53f7\u200b 99 \u200b\u63d0\u4f9b\u200b
3 \u200b\u6708\u200b 31 \u200b\u65e5\u200b\u200b\u5411\u200b pv0 \u200b\u52a0\u88c5\u200b\u4e86\u200b 32 GB \u200b\u5185\u5b58\u200b\uff0c\u200b\u5411\u200b pv2~pv8 \u200b\u52a0\u88c5\u200b\u4e86\u200b 64 GB \u200b\u5185\u5b58\u200b\uff0c\u200b\u5411\u200b pv2~pv5 \u200b\u52a0\u88c5\u200b\u4e86\u200b Netronome Agilio \u200b\u7cfb\u5217\u200b\u7f51\u5361\u200b
3 \u200b\u6708\u200b 25 \u200b\u65e5\u200b2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u5b66\u671f\u200b\u63d0\u4f9b\u200b\u670d\u52a1\u200b\u7684\u200b\u5355\u53f0\u200b\u670d\u52a1\u5668\u200b\u5df2\u200b\u683c\u5f0f\u5316\u200b\u91cd\u88c5\u200b\u4e3a\u200b Proxmox VE 6.1 \u200b\u64cd\u4f5c\u7cfb\u7edf\u200b\uff0c\u200b\u547d\u540d\u200b\u4e3a\u200b pv0
2 \u200b\u6708\u200b\u200b\u5185\u200b\u7f51\u200b\u7f51\u5173\u200b\uff08CT 100\uff09\u200b\u521d\u6b65\u200b\u914d\u7f6e\u200b\u5b8c\u6210\u200b
Web \u200b\u670d\u52a1\u5668\u200b\uff08CT 101\uff09\u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u7684\u200b\u5bb9\u5668\u200b\u4e0a\u200b\uff0c2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u7684\u200b\u65e7\u200b\u673a\u5668\u200b\u6682\u65f6\u200b\u95f2\u7f6e\u200b
pdlan \u200b\u4f7f\u7528\u200b C++ \u200b\u7f16\u5199\u200b\u7684\u200b VNC \u200b\u7f51\u5173\u200b\u6d4b\u8bd5\u200b\u5b8c\u6210\u200b
\u200b\u7f51\u9875\u200b\u865a\u62df\u673a\u200b\u7ba1\u7406\u5668\u200b\uff08Django\uff09\u200b\u9002\u914d\u200b\u4e86\u200b Proxmox VE API\uff0c\u200b\u5220\u9664\u200b\u4e86\u200b LXC / LXD \u200b\u76f8\u5173\u200b\u7684\u200b\u4ee3\u7801\u200b
\u200b\u4fee\u6539\u200b\u4e86\u200b\u5f00\u6e90\u200b\u8f6f\u4ef6\u200b noVNC\uff0c\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u6d4f\u89c8\u5668\u200b\u767b\u5f55\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u65b9\u5f0f\u200b
\u200b\u91cd\u65b0\u200b\u6253\u5305\u200b\u4e86\u200b\u51e0\u4e2a\u200b\u65b0\u200b\u955c\u50cf\u200b\uff0c\u200b\u4f9b\u200b\u7528\u6237\u200b\u5728\u200b\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u65f6\u200b\u9009\u62e9\u200b
\u200b\u7ecf\u8fc7\u200b\u591a\u756a\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u9009\u5b9a\u200b\u4e86\u200b LightDM + TigerVNC\uff0c\u200b\u517c\u5bb9\u6027\u200b\u6700\u597d\u200b\u4e14\u200b\u6700\u200b\u5bb9\u6613\u200b\u914d\u7f6e\u200b
\u200b\u6d4b\u8bd5\u200b\u4e86\u200b fcitx \u200b\u4e0e\u200b ibus\uff0c\u200b\u914d\u7f6e\u200b\u597d\u200b\u4e86\u200b\u4e2d\u6587\u200b\u8f93\u5165\u6cd5\u200b
\u200b\u901a\u8fc7\u200b\u955c\u50cf\u200b\u5185\u7f6e\u200b SSH CA \u200b\u7684\u200b\u65b9\u5f0f\u200b\u5b9e\u73b0\u200b\u5bb9\u5668\u200b\u5185\u200b\u8fdc\u7a0b\u200b\u547d\u4ee4\u200b\u6267\u884c\u200b
\u200b\u66f4\u65b0\u200b\u4e86\u200b\u7528\u6237\u6587\u6863\u200b\u9879\u76ee\u200b\uff0c\u200b\u66f4\u200b\u5bb9\u6613\u200b\u7f16\u5199\u200b\u3001\u200b\u9605\u8bfb\u200b\u4f53\u9a8c\u200b\u66f4\u597d\u200b\uff0c\u200b\u5e76\u4e14\u200b\u66f4\u65b0\u200b\u4e86\u200b\u6587\u6863\u200b\u5185\u5bb9\u200b
\u200b\u521b\u5efa\u200b\u4e86\u200b\u7ef4\u62a4\u8005\u200b\u6587\u6863\u200b\uff08\u200b\u5373\u672c\u200b\u6587\u6863\u200b\uff09
\u2026\u2026\u200b\u8fd8\u6709\u200b\u66f4\u200b\u591a\u200b\uff08\u200b\u5f53\u524d\u200b\u4e00\u4ee3\u200b\u7684\u200b vlab \u200b\u57fa\u672c\u200b\u90fd\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u6708\u200b\u914d\u7f6e\u200b\u90e8\u7f72\u200b\u5b8c\u6210\u200b\uff0c\u200b\u65f6\u95f4\u200b\u201c\u200b\u4e45\u8fdc\u200b\u201d\u200b\u96be\u4ee5\u200b\u4ed4\u7ec6\u200b\u8003\u8bc1\u200b\uff09
"},{"location":"changelog/#2019-\u5e74","title":"2019 \u200b\u5e74","text":"9 \u200b\u6708\u200b\u200b\u521d\u7248\u200b vlab \u200b\u5b9e\u9a8c\u200b\u5e73\u53f0\u200b\u5728\u200b\u300a\u200b\u6570\u5b57\u7535\u8def\u200b\u5b9e\u9a8c\u200b\u300b\u200b\u8bfe\u7a0b\u200b\u9009\u5b9a\u200b\u7684\u200b 30 \u200b\u4eba\u200b\u5de6\u53f3\u200b\u4e2d\u200b\u8fdb\u884c\u200b\u6d4b\u8bd5\u200b
"},{"location":"overview/","title":"Vlab \u200b\u7b2c\u4e8c\u4ee3\u200b\u670d\u52a1\u5668\u200b\u96c6\u7fa4","text":""},{"location":"overview/#compute-server","title":"\u8ba1\u7b97\u200b\u670d\u52a1\u5668","text":"\u200b\u7b2c\u4e8c\u4ee3\u200b Vlab \u200b\u7684\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5171\u6709\u200b 16 \u200b\u53f0\u200b\uff0c\u200b\u5176\u4e2d\u200b 14 \u200b\u53f0\u4e3a\u200b\u666e\u901a\u200b\u670d\u52a1\u5668\u200b\uff088 \u200b\u53f0\u4e00\u200b\u6279\u6b21\u200b\uff0c6 \u200b\u53f0\u4e8c\u200b\u6279\u6b21\u200b\uff09\uff0c2 \u200b\u53f0\u4e3a\u200b GPU \u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u53e6\u200b\u6709\u200b\u4e24\u200b\u6279\u6b21\u200b\u5404\u53f0\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u3002
"},{"location":"overview/#compute-server-cpu","title":"\u666e\u901a\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668","text":"\u200b\u7b2c\u4e00\u6279\u200b 8 \u200b\u53f0\u200b\u666e\u901a\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5206\u522b\u200b\u547d\u540d\u200b\u4e3a\u200b pv1 \u200b\u5230\u200b pv8\uff0c\u200b\u6bcf\u53f0\u200b\u670d\u52a1\u5668\u200b\u5305\u542b\u200b\u53cc\u8def\u200b Intel Xeon Scalable Silver 4110 \u200b\u5904\u7406\u5668\u200b\uff08\u200b\u5171\u200b 16 \u200b\u6838\u5fc3\u200b\u300132 \u200b\u7ebf\u7a0b\u200b\uff09\uff0c\u200b\u9884\u88c5\u200b\u5185\u5b58\u200b 32 GB\uff082 x 16 GB DDR4 2400 ECC\uff09\uff0c\u200b\u786c\u76d8\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u4e24\u5757\u200b HPE SSD 480GB \u200b\u548c\u200b\u4e09\u5757\u200b 2.4 TB 10K SAS \u200b\u786c\u76d8\u200b\uff08\u200b\u53d6\u51fa\u200b\u6765\u200b\u653e\u8fdb\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u989d\u5916\u200b\u786c\u76d8\u200b\u7b3c\u200b\uff09
\u200b\u6240\u6709\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u5185\u200b\u5b58\u5728\u200b\u8d2d\u5165\u200b\u65f6\u5747\u200b\u5347\u7ea7\u200b\u81f3\u200b 160 GB\uff082 x 16 GB + 4 x 32 GB\uff09\uff0c\u200b\u5176\u4e2d\u200b pv2 ~ pv8 \u200b\u7684\u200b\u5185\u200b\u5b58\u5728\u200b 2020 \u200b\u5e74\u200b 3 \u200b\u6708\u5e95\u200b\u518d\u6b21\u200b\u5347\u7ea7\u200b\u81f3\u200b 224 GB\uff082 x 16 GB + 6 x 32 GB\uff09\u3002
\u200b\u7f51\u7edc\u200b\u65b9\u9762\u200b\uff0c\u200b\u8fd9\u200b\u6b3e\u200b\u670d\u52a1\u5668\u200b\u81ea\u5e26\u200b\u4e00\u4e2a\u200b\u56db\u53e3\u200b\u5343\u5146\u200b\u7f51\u5361\u200b\uff08\u200b\u7cfb\u7edf\u200b\u5185\u200b\u540d\u79f0\u200b\u4e3a\u200b eno1
\u200b\u5230\u200b eno4
\uff09\uff0c\u200b\u4e00\u4e2a\u200b\u767e\u5146\u200b\u53e3\u200b\u8fde\u63a5\u200b HPE iLO 5\uff08\u200b\u5373\u200b HPE \u200b\u7684\u200b IPMI \u200b\u8fdc\u7a0b\u7ba1\u7406\u200b\u5361\u200b\uff09\u3002\u200b\u53e6\u5916\u200b\u6bcf\u53f0\u200b\u670d\u52a1\u5668\u200b\u6269\u5c55\u200b\u4e86\u200b\u4e24\u4e2a\u200b 10 Gbps \u200b\u7684\u200b\u5149\u7ea4\u200b\u63a5\u53e3\u200b\uff08\u200b\u5206\u522b\u200b\u4e3a\u200b ens1f0
\u200b\u548c\u200b ens1f1
\uff09\uff0c\u200b\u901a\u8fc7\u200b\u4e00\u4e2a\u200b\u5149\u200b\u4ea4\u6362\u673a\u200b\u5728\u200b\u6240\u6709\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u548c\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b iSCSI \u200b\u7aef\u53e3\u200b\u5b9e\u73b0\u200b\u4e00\u4e2a\u200b\u5185\u200b\u7f51\u200b\u4e92\u8054\u200b\u3002
\u200b\u7b2c\u4e00\u4ee3\u200b Vlab \u200b\u7684\u200b\u552f\u4e00\u200b\u4e00\u53f0\u200b\u670d\u52a1\u5668\u200b\u5728\u200b\u91cd\u88c5\u200b\u540e\u200b\u6709\u9650\u200b\u63d0\u4f9b\u200b\u670d\u52a1\u200b\uff0c\u200b\u547d\u540d\u200b\u4e3a\u200b pv0\uff0c\u200b\u56e0\u6b64\u200b\u96c6\u7fa4\u200b\u5171\u6709\u200b 11 \u200b\u53f0\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u3002\u200b\u4e0e\u200b 2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u65f6\u200b\u76f8\u6bd4\u200b\uff0c\u200b\u5b83\u200b\u591a\u200b\u4e86\u200b 32 GB \u200b\u7684\u200b\u5185\u5b58\u200b\uff08NUMA \u200b\u4e0d\u200b\u5747\u8861\u200b\uff09\u200b\u548c\u200b\u4e00\u5757\u200b Intel X520-DA2 \u200b\u5149\u7ea4\u5361\u200b\u7528\u4e8e\u200b\u63a5\u5165\u200b\u5149\u7ea4\u7f51\u7edc\u200b\uff08\u200b\u4f46\u662f\u200b\u6700\u540e\u200b\u6ca1\u200b\u63a5\u4e0a\u200b\uff0c\u200b\u76ee\u524d\u200b\u7528\u4e8e\u200b\u6d4b\u8bd5\u200b\u5e73\u53f0\u200b\uff09\u3002
\u200b\u4e3b\u673a\u200b\u7684\u200b IPMI \u200b\u5730\u5740\u200b\u4e3a\u200b 10.38.79.100 \u200b\u81f3\u200b 10.38.79.108\uff0c\u200b\u6700\u540e\u200b\u4e00\u4f4d\u200b\u6570\u5b57\u200b\u548c\u200b\u4e3b\u673a\u540d\u200b\u4e00\u81f4\u200b\uff0c\u200b\u8be6\u89c1\u200b IP \u200b\u5730\u5740\u200b\u5217\u8868\u200b\u3002
\u200b\u7b2c\u4e8c\u6279\u200b 6 \u200b\u53f0\u200b\u666e\u901a\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5206\u522b\u200b\u547d\u540d\u200b\u4e3a\u200b pv9 \u200b\u5230\u200b pv14\uff0c\u200b\u6bcf\u53f0\u200b\u670d\u52a1\u5668\u200b\u5305\u542b\u200b\u53cc\u8def\u200b Intel Xeon Scalable Silver 4314 \u200b\u5904\u7406\u5668\u200b\uff08\u200b\u5171\u200b 32 \u200b\u6838\u5fc3\u200b\u300164 \u200b\u7ebf\u7a0b\u200b\uff09\uff0c\u200b\u9884\u88c5\u200b\u5185\u5b58\u200b 256 GB\uff088 x 32 GB DDR4 2666 ECC\uff09\uff0c\u200b\u786c\u76d8\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u4e24\u5757\u200b 960 GB SSD\uff08\u200b\u6742\u724c\u200b SSSTC ER2-CD960A\uff09\u3002\u200b\u8fd9\u200b\u6b3e\u200b\u670d\u52a1\u5668\u200b\u914d\u7f6e\u200b\u4e86\u200b\u4e00\u5757\u200b\u53cc\u53e3\u200b I350\uff08\u200b\u53ef\u80fd\u200b\u662f\u200b\u677f\u8f7d\u200b\uff09\u200b\u7f51\u5361\u200b\u548c\u200b\u4e00\u5757\u200b\u53cc\u53e3\u200b 82599ES SFP+ \u200b\u7f51\u5361\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u72ec\u7acb\u200b\u7684\u200b IPMI \u200b\u7f51\u53e3\u200b\u3002\u200b\u65b0\u200b\u6279\u6b21\u200b\u7684\u200b\u670d\u52a1\u5668\u4e4b\u95f4\u200b\u6709\u200b\u4e00\u53f0\u200b\u65b0\u200b\u7684\u200b\u5149\u53e3\u200b\u4ea4\u6362\u673a\u200b\u4e92\u8054\u200b\uff0c\u200b\u65b0\u65e7\u200b\u4ea4\u6362\u673a\u200b\u4e4b\u95f4\u200b\u6709\u200b\u4e00\u4e2a\u200b QSFP+ 40 Gbps \u200b\u7684\u200b\u5149\u7ea4\u200b\u3002
\u200b\u540c\u200b\u524d\u200b\uff0c\u200b\u4e3b\u673a\u200b\u7684\u200b IPMI \u200b\u5730\u5740\u200b\u4e3a\u200b 10.38.79.109 \u200b\u81f3\u200b 10.38.79.114\u3002
"},{"location":"overview/#compute-server-gpu","title":"GPU \u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668","text":"2 \u200b\u53f0\u200b GPU \u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u547d\u540d\u200b\u4e3a\u200b pvg1 \u200b\u548c\u200b pvg2\uff0c\u200b\u6bcf\u53f0\u200b\u670d\u52a1\u5668\u200b\u5305\u542b\u200b\u53cc\u8def\u200b Intel Xeon Scalable Gold 5218 \u200b\u5904\u7406\u5668\u200b\uff08\u200b\u5171\u200b 32 \u200b\u6838\u5fc3\u200b\u300164 \u200b\u7ebf\u7a0b\u200b\uff09\uff0c\u200b\u5185\u5b58\u5bb9\u91cf\u200b\u4e3a\u200b 192 GB\uff08\u200b\u7ec4\u5408\u200b\u53ca\u200b NUMA \u200b\u60c5\u51b5\u200b\u672a\u77e5\u200b\uff09\u3002\u200b\u786c\u76d8\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u4e24\u5757\u200b HPE SSD 480GB\uff08pvg1 \u200b\u53e6\u6709\u200b\u56db\u5757\u200b Intel DC S4500 480GB\uff09\uff0c\u200b\u7f51\u5361\u200b\u914d\u7f6e\u200b\u4e0e\u200b CPU \u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u4e00\u81f4\u200b\u3002
\u200b\u5176\u4e2d\u200b pvg1 \u200b\u5b89\u88c5\u200b\u6709\u200b\u4e24\u5757\u200b RTX 2070 Super GPU\uff08\u200b\u53ef\u80fd\u200b\u4e3a\u200b\u6280\u5609\u200b\uff09\uff0cpvg2 \u200b\u5b89\u88c5\u200b\u6709\u200b\u4e00\u5757\u200b RTX 2070 Super GPU\uff08\u200b\u578b\u53f7\u200b\u672a\u77e5\u200b\uff09\u200b\u548c\u200b\u4e00\u5757\u200b Quadro RTX 6000 GPU\u3002
"},{"location":"overview/#operating-system","title":"\u64cd\u4f5c\u7cfb\u7edf","text":"\u200b\u8fd9\u6279\u200b\u670d\u52a1\u5668\u200b\u5168\u90e8\u200b\u5b89\u88c5\u200b Proxmox VE \u200b\u7cfb\u7edf\u200b\uff0c\u200b\u57fa\u4e8e\u200b Debian\u3002\u200b\u672c\u200b\u5e73\u53f0\u200b\u4f7f\u7528\u200b Proxmox VE \u200b\u7ba1\u7406\u200b LXC \u200b\u5bb9\u5668\u200b\u548c\u200b KVM \u200b\u865a\u62df\u673a\u200b\u3002
"},{"location":"overview/#storage-server","title":"\u5b58\u50a8\u200b\u670d\u52a1\u5668","text":"\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u4e3a\u200b HPE MSA 1050\uff0c\u200b\u6709\u200b 24 \u200b\u4e2a\u200b 2.5 \u200b\u5bf8\u200b SAS \u200b\u76d8\u4f4d\u200b\u548c\u200b\u4e24\u4e2a\u200b iSCSI \u200b\u63a7\u5236\u5668\u200b\u3002\u200b\u8d2d\u4e70\u200b\u65f6\u200b\u5e26\u6709\u200b 18 \u200b\u5757\u200b 1.2 TB \u200b\u7684\u200b\u786c\u76d8\u200b\uff0c\u200b\u540e\u6765\u200b\u90a2\u51ef\u200b\u8001\u5e08\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u989d\u5916\u200b\u7684\u200b\u786c\u76d8\u200b\u7b3c\u200b\uff0c\u200b\u6269\u5c55\u200b\u4e86\u200b 24 \u200b\u4e2a\u200b\u76d8\u4f4d\u200b\uff0c\u200b\u6b63\u597d\u200b\u653e\u4e0b\u200b 8 \u200b\u53f0\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5404\u81ea\u200b\u5e26\u200b\u7684\u200b 3 \u200b\u5757\u200b\u673a\u68b0\u200b\u786c\u76d8\u200b\u3002
\u200b\u8be5\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u6709\u200b\u4e24\u4e2a\u200b\u63a7\u5236\u5668\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u63a7\u5236\u5668\u200b\u5404\u6709\u200b\u4e00\u4e2a\u200b\u4ee5\u592a\u7f51\u200b\u53e3\u200b\uff08\u200b\u7528\u4e8e\u200b\u7ba1\u7406\u200b\u754c\u9762\u200b\uff09\u200b\u548c\u200b\u4e24\u4e2a\u200b\u5149\u7ea4\u200b\u63a5\u53e3\u200b\uff0810 Gbps\uff0c\u200b\u7528\u4e8e\u200b\u6570\u636e\u4f20\u8f93\u200b\uff09\u3002\u200b\u76ee\u524d\u200b\u4e24\u4e2a\u200b\u63a7\u5236\u5668\u200b\u7684\u200b\u7ba1\u7406\u200b\u63a5\u53e3\u200b\u90fd\u200b\u63a5\u5165\u200b\u6821\u56ed\u7f51\u200b\uff0c\u200b\u5730\u5740\u200b\u5206\u522b\u200b\u4e3a\u200b 10.38.79.98 \u200b\u548c\u200b 10.38.79.99\u3002
"},{"location":"overview/#location","title":"\u673a\u623f","text":"\u200b\u673a\u623f\u200b\u5728\u200b\u7535\u4e09\u697c\u200b 524\uff1a
5 \u200b\u53f7\u200b\u673a\u67dc\u200b\u548c\u200b 8 \u200b\u53f7\u200b\u673a\u67dc\u200b\u80cc\u540e\u200b\u6700\u200b\u4e0a\u65b9\u200b\u5404\u6709\u200b\u4e00\u4e2a\u200b\u5149\u200b\u4ea4\u6362\u673a\u200b\u548c\u200b\u7535\u200b\u4ea4\u6362\u673a\u200b\uff0c\u200b\u53c2\u89c1\u200b\u7f51\u7edc\u200b\u914d\u7f6e\u200b\u3002
"},{"location":"overview/#resources","title":"\u5176\u4ed6\u200b\u8d44\u6e90","text":"\u200b\u5b66\u6821\u200b\u5b98\u65b9\u200b\u57df\u540d\u200b vlab.ustc.edu.cn
\u200b\u5c5e\u4e8e\u200b\u672c\u200b\u9879\u76ee\u200b\uff0c\u200b\u6307\u5411\u200b A 202.38.75.226 \u200b\u53ca\u200b AAAA 2001:da8:d800:75::226\u3002\u200b\u53e6\u6709\u200b\u9759\u6001\u200b IP \u200b\u5730\u5740\u200b 202.38.75.252 \u200b\u7528\u4f5c\u200b\u5b66\u751f\u200b\u673a\u200b\u7f51\u5173\u200b\uff0c\u200b\u6ca1\u6709\u200b\u57df\u540d\u200b\u3002\u200b\u5173\u4e8e\u200b IP \u200b\u5730\u5740\u200b\u8be6\u89c1\u200b\u8fd9\u4e2a\u200b\u9875\u9762\u200b\u3002
\u200b\u6240\u6709\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u7684\u200b IPMI \u200b\u7f51\u9875\u200b\u3001\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u4e24\u4e2a\u200b\u7ba1\u7406\u200b\u63a5\u53e3\u200b\u4ee5\u53ca\u200b\u6211\u4eec\u200b\u7684\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u90fd\u200b\u4f7f\u7528\u200b\u81ea\u5df1\u200b\u7684\u200b CA \u200b\u7b7e\u53d1\u200b\u7684\u200b\u8bc1\u4e66\u200b\u3002\u200b\u8be5\u200b CA \u200b\u76ee\u524d\u200b\u7531\u200b iBug \u200b\u7ba1\u7406\u200b\uff0cCA \u200b\u8bc1\u4e66\u200b\u5728\u200b\u8fd9\u91cc\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6dfb\u52a0\u200b\u5230\u200b\u7cfb\u7edf\u200b\u7684\u200b\u8bc1\u4e66\u200b\u4fe1\u4efb\u200b\u5217\u8868\u200b\u4e2d\u200b\uff0c\u200b\u65b9\u4fbf\u200b\u540e\u7eed\u200b\u7ba1\u7406\u200b\u673a\u5668\u200b\u3002
"},{"location":"ssh-ca/","title":"SSH \u200b\u8bc1\u4e66\u200b\u8ba4\u8bc1","text":"\u200b\u6240\u6709\u200b Proxmox VE \u200b\u4e3b\u673a\u200b\u53ca\u200b\u51e0\u4e2a\u200b\u7279\u6b8a\u200b\u5bb9\u5668\u200b\uff08CT100 gateway\uff0cCT101 web \u200b\u548c\u200b\u5176\u4ed6\u200b ID \u200b\u4e3a\u200b 1xx \u200b\u7684\u200b\u5bb9\u5668\u200b/\u200b\u865a\u62df\u673a\u200b\uff09\u200b\u7684\u200b SSH \u200b\u767b\u5f55\u200b\u5747\u200b\u4f7f\u7528\u200b\u8bc1\u4e66\u200b\u3002
\u200b\u5173\u4e8e\u200b OpenSSH \u200b\u7684\u200b\u8bc1\u4e66\u200b\u8ba4\u8bc1\u200b\u65b9\u5f0f\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b iBug \u200b\u7684\u200b\u535a\u5ba2\u200b\uff08\u200b\u82f1\u6587\u200b\uff09\u3001totoro \u200b\u7684\u200b\u535a\u5ba2\u200b\u4ee5\u53ca\u200b\u6821\u200b Linux \u200b\u7528\u6237\u200b\u534f\u4f1a\u200b\u7684\u200b\u670d\u52a1\u5668\u200b\u7ef4\u62a4\u200b\u6587\u6863\u200b\u3002
CA \u200b\u516c\u94a5\u200b\uff1a
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD6KdAJzKLswXyjf4SipNL1dlK1Vq0KNOit/MTDLiamkqvHJDiKceLYmN97y3Chdx8ofXwW6sRUBJRrjmYq6M0JZSGc8roUtUnSai1P5q1kZQ59x1IhsduTg4WENSteSB6vIvpyoSmcIhi3v9UHgUsl4MsnHxffxx5BiyW7UHPY3MzzkRZL96A4QXUOFd9P+NED3zHmEZ9B2Q66+s2ep2FmNralK4XwRaVxBO2r9san8vYU5pH2TzYZLYxNZ/AFX3bLV5M+AmZytaSNLcuIzZHyqbYawvD+Lee00VB9A3JcaqsjDUCtHZ5gQsZMmqw2r7gj9lDqM6Fw6A8y5rWNJP3Q+FOEEYvzGnQ/SnzU0MpMvGpYWrm/uCJ8pFdbYTYkxAJ+VO0lJ5mAIN664cX0DQ3OyGH/xmCNWGGCfGfmvWqwMwD6Kzo06xcqzsoqaMxwgBuVyICE+VvVCf3pcX4HERDrZY0TMjZxaTc8Ws2xQHJbqekv6nIjQWUgH7LIjkYvycQkxXE2dWfDy/c2SRiKWuxW9n8Hymmfp3lbBHzlCa/LtHeuPIzmBUHUoGya0feWFjrbGnKcPs3etNqpvyIGngMaecTAsbrf5v+J1M0VLCfwzwLt13/G1BCb+BK22vYzMTusrR+6A68Fm6OWSFlBYp31uVLxPg0nqtiW8bi1FbD0hQ== Vlab-CA\n
\u200b\u53ef\u4ee5\u200b\u5728\u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b Wget \u200b\u6216\u200b cURL \u200b\u83b7\u53d6\u200b\uff1a
wget -O /etc/ssh/ssh_user_ca https://vlab.ibugone.com/assets/vlab_ca.pub\n
\u200b\u7136\u540e\u200b\u51c6\u5907\u200b /etc/ssh/sshd_config.d/vlab.conf
\uff1a
HostKey /etc/ssh/ssh_host_rsa_key\nHostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub\nTrustedUserCAKeys /etc/ssh/ssh_user_ca\n\nAuthorizedKeysFile none # \u200b\u5c4f\u853d\u200b\u4e0d\u5e26\u200b\u8bc1\u4e66\u200b\u7684\u200b\u516c\u94a5\u200b\u8ba4\u8bc1\u200b\nPermitRootLogin prohibit-password\nPasswordAuthentication no\n
"},{"location":"ssh-ca/#\u7528\u6237-ca","title":"\u7528\u6237\u200b CA","text":"\u200b\u7531\u4e8e\u200b Proxmox VE \u200b\u6ca1\u6709\u200b\u63d0\u4f9b\u200b\u76f4\u63a5\u200b\u5728\u200b\u5bb9\u5668\u200b\u5185\u200b\u6267\u884c\u547d\u4ee4\u200b\u7684\u200b API\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u901a\u8fc7\u200b\u5185\u5d4c\u200b SSH CA \u200b\u7684\u200b\u65b9\u5f0f\u200b\u81ea\u5df1\u200b\u9020\u4e2a\u200b\u8f6e\u5b50\u200b\u3002
\u200b\u51fa\u4e8e\u200b\u7ba1\u7406\u200b\u7684\u200b\u8003\u8651\u200b\uff0c\u200b\u7528\u6237\u200b CA \u200b\u548c\u200b\u4e3b\u673a\u200b CA \u200b\u72ec\u7acb\u200b\u3002\u200b\u516c\u94a5\u200b\uff1a
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAH3ZHisQY0iMpUNDQNaxcnRSqDbauE8ih6/MrEENJZa7FHKINOPi+bunK1wEXPqlKfu8INEBWCf95+t86z+jXVxmQE176xenS92wiLvR4MZyCBfD5DXAB0mK5iV1eQug5P/cD8Pohr/3wywFbKgKzsix9unky9sJGr86RunSwJbAkMGlw== Vlab-User-CA\n
\u200b\u53ef\u4ee5\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u4e2d\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b Wget \u200b\u6216\u200b cURL \u200b\u83b7\u53d6\u200b\uff1a
wget -O /etc/ssh/ssh_user_ca https://vlab.ibugone.com/assets/vlab_user_ca.pub\n
\u200b\u5c06\u200b CA \u200b\u6dfb\u52a0\u200b\u81f3\u200b\u5bb9\u5668\u200b\u6216\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u64cd\u4f5c\u200b\u4e0e\u200b\u4e0a\u9762\u200b\u7c7b\u4f3c\u200b\uff0c\u200b\u4f46\u662f\u200b\u4e0d\u200b\u9700\u8981\u200b\u5bf9\u200b\u4e3b\u673a\u200b\u516c\u94a5\u200b\u8fdb\u884c\u200b\u7b7e\u540d\u200b\uff0c\u200b\u56e0\u6b64\u200b\u53ea\u200b\u9700\u8981\u200b
/etc/ssh/ssh_user_ca
\u200b\u5728\u200b sshd_config
\u200b\u4e2d\u200b\u8ffd\u52a0\u200b\uff0c\u200b\u6216\u8005\u200b\u521b\u5efa\u200b /etc/ssh/sshd_config.d/vlab.conf
\u200b\u5e76\u200b\u5199\u5165\u200b
TrustedUserCAKeys /etc/ssh/ssh_user_ca\n
\u200b\u6ce8\u610f\u200b\u4f7f\u7528\u200b sshd_config.d
\u200b\u524d\u8981\u200b\u786e\u8ba4\u200b\u8f6f\u4ef6\u5305\u200b\u63d0\u4f9b\u200b\u7684\u200b sshd_config
\u200b\u5305\u542b\u200b\u4e86\u200b Include \u200b\u8bed\u53e5\u200b\uff0c\u200b\u5426\u5219\u8bf7\u200b\u76f4\u63a5\u200b\u4fee\u6539\u200b sshd_config
\u3002
\u200b\u5426\u5219\u200b\uff0c\u200b\u672a\u200b\u5f00\u542f\u200b\u7684\u200b\u8282\u70b9\u200b\u7531\u4e8e\u200b\u6ca1\u6709\u200b\u6536\u5230\u200b\u66f4\u65b0\u200b\u901a\u77e5\u200b\uff0c\u200b\u53ef\u80fd\u200b\u5728\u200b\u52a0\u5165\u200b\u96c6\u7fa4\u200b\u65f6\u200b\u51fa\u73b0\u200b\u9519\u8bef\u200b\u3002
\u200b\u5728\u200b\u51fa\u73b0\u200b\u9519\u8bef\u200b\u7684\u200b\u8282\u70b9\u200b\u4e0a\u200b\u7684\u200b\u75c7\u72b6\u200b\uff1a
pvesr.service
\u200b\u65e0\u6cd5\u200b\u8fd0\u884c\u200b\uff0c\u200b\u9519\u8bef\u4fe1\u606f\u200b\u5305\u542b\u200b \"error with cfs lock 'file-replication_cfg': no quorum!\"pvecm status
\u200b\u663e\u793a\u200b \"Cannot initialize CMAP service\"corosync.service
\u200b\u672a\u200b\u5728\u200b\u8fd0\u884c\u200b\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a
pve-cluster.service
pmxcfs -l
\uff0c\u200b\u5c06\u200b\u96c6\u7fa4\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u4ee5\u200b local mode \u200b\u542f\u52a8\u200b/etc/pve/corosync.conf
\uff0c\u200b\u8986\u76d6\u200b\u9519\u8bef\u200b\u8282\u70b9\u200b\u7684\u200b\u76f8\u5e94\u200b\u6587\u4ef6\u200bkillall pmxcfs
pve-cluster.service
\u200b\u548c\u200b corosync.service
service 'ct:100' in error state, must be disabled and fixed first
","text":"\u200b\u9700\u8981\u200b\u5148\u200b disable\uff1aha-manager set ct:100 --state disabled
\uff08ct:100
\u200b\u66ff\u6362\u200b\u4e3a\u200b\u62a5\u9519\u200b\u63d0\u793a\u200b\u4e2d\u200b\u5bf9\u5e94\u200b\u7684\u200b\u540d\u5b57\u200b\uff09
ERROR: migration aborted (duration 00:00:00): CT is locked (migrate)
","text":"\u200b\u5bb9\u5668\u200b\uff1apct unlock <ID \u200b\u53f7\u200b>
\u200b\u865a\u62df\u673a\u200b\uff1aqm unlock <ID \u200b\u53f7\u200b>
HA \u200b\u6ce8\u610f\u4e8b\u9879\u200b
\u200b\u8bf7\u52ff\u200b bind mount \u200b\u6216\u200b\u6302\u8f7d\u200b ISO\uff0c\u200b\u5426\u5219\u200b\u8282\u70b9\u200b\u4e0b\u7ebf\u200b\u65f6\u200b\u65e0\u6cd5\u200b\u8fdb\u884c\u200b\u81ea\u52a8\u200b migrate\u3002
"},{"location":"traps/#\u624b\u52a8\u8fc1\u79fb\u542f\u7528\u4e86-ha-\u7684\u865a\u62df\u673a\u6216\u5bb9\u5668\u53c8\u88ab\u81ea\u52a8\u8fc1\u79fb\u56de\u6765\u4e86","title":"\u624b\u52a8\u200b\u8fc1\u79fb\u200b\u542f\u7528\u200b\u4e86\u200b HA \u200b\u7684\u200b\u865a\u62df\u673a\u200b\u6216\u200b\u5bb9\u5668\u200b\u53c8\u200b\u88ab\u200b\u81ea\u52a8\u200b\u8fc1\u79fb\u200b\u56de\u6765\u200b\u4e86","text":"PVE \u200b\u7684\u200b HA \u200b\u592a\u200b\u656c\u4e1a\u200b\u4e86\u200b\uff0c\u200b\u8fd0\u884c\u200b\u865a\u62df\u673a\u200b\u65f6\u4f1a\u200b\u4e25\u683c\u200b\u6309\u7167\u200b HA \u200b\u914d\u7f6e\u200b\u597d\u200b\u7684\u200b\u8282\u70b9\u200b\u4f18\u5148\u7ea7\u200b\u6765\u200b\u8fd0\u884c\u200b\u865a\u62df\u673a\u200b\u3002
\u200b\u65e7\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u200b\u8981\u200b\u60f3\u200b HA \u201c\u200b\u542c\u8bdd\u200b\u201d\uff0c\u200b\u529e\u6cd5\u200b\u5c31\u662f\u200b\u76f4\u63a5\u200b\u6539\u200b\u5404\u200b\u8282\u70b9\u200b\u7684\u200b\u4f18\u5148\u7ea7\u200b\uff0c\u200b\u8ba9\u200b\u542c\u8bdd\u200b\u7684\u200b HA \u200b\u5e2e\u200b\u4f60\u200b\u8fc1\u79fb\u200b\u3002
\u200b\u7ef4\u62a4\u200b\u8282\u70b9\u200b\u524d\u200b\u8bf7\u200b\u5c06\u200b\u5176\u200b\u4f18\u5148\u7ea7\u200b\u8c03\u4f4e\u200b\u6216\u200b\u5220\u6389\u200b\uff08\u200b\u9ed8\u8ba4\u200b\u4e3a\u200b\u96f6\u200b\uff0c\u200b\u6570\u503c\u200b\u8d8a\u9ad8\u8d8a\u200b\u4f18\u5148\u200b\uff09\uff0c\u200b\u4ee5\u514d\u200b\u91cd\u542f\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b HA \u200b\u5c06\u200b\u865a\u62df\u673a\u200b\u9891\u7e41\u200b\u8fc1\u79fb\u200b\u3002
HA group \u200b\u6709\u200b\u4e00\u4e2a\u200b\u9009\u9879\u200b\u662f\u200b nofailback\uff0c\u200b\u5373\u200b\u7981\u7528\u200b\u201c\u200b\u6709\u200b\u66f4\u200b\u9ad8\u200b\u4f18\u5148\u7ea7\u200b\u8282\u70b9\u200b\u5728\u7ebf\u200b\u65f6\u200b\u4f18\u5148\u200b\u8fc1\u79fb\u200b\u5230\u200b\u66f4\u200b\u9ad8\u200b\u8282\u70b9\u200b\u201d\u200b\u8fd9\u4e2a\u200b\u9ed8\u8ba4\u200b\u884c\u4e3a\u200b\u3002\u200b\u542f\u7528\u200b nofailback \u200b\u540e\u200b HA \u200b\u4f1a\u200b\u5c3d\u91cf\u907f\u514d\u200b\u8fc1\u79fb\u200b\u865a\u62df\u673a\u200b\u800c\u200b\u4e0d\u662f\u200b\u5c3d\u91cf\u200b\u5f80\u9ad8\u200b\u4f18\u5148\u7ea7\u200b\u8282\u70b9\u200b\u4e0a\u200b\u8fc1\u79fb\u200b\u3002
"},{"location":"traps/#proxmox-backup-server-\u65e0\u6cd5\u8fde\u63a5\u63d0\u793a-error-fetching-datastores---fingerprint-xxxxxx","title":"Proxmox Backup Server \u200b\u65e0\u6cd5\u200b\u8fde\u63a5\u200b\uff0c\u200b\u63d0\u793a\u200b Error fetching datastores - fingerprint XX:XX:XX:\u2026","text":"PVE \u200b\u4f1a\u200b\u9a8c\u8bc1\u200b PBS \u200b\u7684\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u5982\u679c\u200b\u8bc1\u4e66\u200b\u4e0e\u200b\u914d\u7f6e\u200b\u7684\u200b fingerprint \u200b\u4e0d\u200b\u5339\u914d\u200b\uff08\u200b\u6216\u8005\u200b\u5728\u200b\u6ca1\u6709\u200b fingerprint \u200b\u7684\u200b\u65f6\u5019\u200b\u4e0d\u200b\u4fe1\u4efb\u200b\u8bc1\u4e66\u200b\uff09\uff0c\u200b\u5219\u200b\u4f1a\u200b\u63d0\u793a\u200b\u9519\u8bef\u200b\u3002
\u200b\u7531\u4e8e\u200b\u6211\u4eec\u200b\u7684\u200b\u8bc1\u4e66\u200b\u4f7f\u7528\u200b acme.sh \u200b\u81ea\u52a8\u66f4\u65b0\u200b\uff0c\u200b\u6bcf\u6b21\u200b\u66f4\u65b0\u200b\u540e\u200b\u8bc1\u4e66\u200b\u7684\u200b fingerprint \u200b\u5c31\u200b\u4f1a\u200b\u53d8\u5316\u200b\uff0c\u200b\u800c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\u5185\u200b\u7f51\u200b\u5730\u5740\u200b\u8fde\u63a5\u200b PBS \u200b\u4e5f\u200b\u4e0d\u200b\u53ef\u80fd\u200b\u83b7\u5f97\u200b\u516c\u7f51\u200b\u53ef\u200b\u4fe1\u4efb\u200b\u7684\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u56e0\u6b64\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u662f\u200b\u6bcf\u6b21\u200b\u66f4\u65b0\u200b\u8bc1\u4e66\u200b\u65f6\u200b\u540c\u6b65\u200b\u66f4\u65b0\u200b fingerprint\u3002
\u200b\u5728\u200b pv1 \u200b\u7684\u200b\u66f4\u65b0\u200b\u8bc1\u4e66\u200b\u7684\u200b cron \u200b\u811a\u672c\u200b\u6700\u540e\u200b\u52a0\u5165\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\uff0c\u200b\u4f7f\u7528\u200b OpenSSL \u200b\u83b7\u53d6\u200b\u8bc1\u4e66\u200b fingerprint \u200b\u5e76\u7528\u200b pvesm \u200b\u547d\u4ee4\u200b\u767b\u8bb0\u200b\u4fee\u6539\u200b\uff1a
FP=\"$(openssl x509 -noout -fingerprint -sha256 -inform pem -in \"$SRC/pveproxy-ssl.pem\")\"\nFP=\"${FP##*=}\"\npvesm set pbs --fingerprint \"$FP\"\n
"},{"location":"traps/#lvm","title":"LVM","text":""},{"location":"traps/#\u5f00\u673a\u663e\u793a-cannot-process-volume-group-pve-\u7b49\u9519\u8bef\u4fe1\u606f","title":"\u5f00\u673a\u200b\u663e\u793a\u200b Cannot process volume group pve \u200b\u7b49\u200b\u9519\u8bef\u4fe1\u606f","text":"\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u6bd4\u8f83\u200b\u9ebb\u70e6\u200b\uff0c\u200b\u4e3b\u8981\u200b\u662f\u56e0\u4e3a\u200b IPMI \u200b\u63d0\u4f9b\u200b\u7684\u200b\u90a3\u4e2a\u200b\u8fdc\u7a0b\u200b\u7ec8\u7aef\u200b\u7ecf\u5e38\u200b\u5361\u200b\u3002
\u200b\u539f\u56e0\u200b\u662f\u200b\u7cfb\u7edf\u200b\u4e2d\u6709\u200b /dev/sda
\u200b\u548c\u200b /dev/sdb
\u200b\u4e24\u4e2a\u200b\u8bbe\u5907\u200b\uff0c\u200b\u5176\u4e2d\u200b\u4e00\u4e2a\u200b\u662f\u200b SSD\uff0c\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u4e0d\u200b\u77e5\u9053\u200b\u662f\u200b\u54ea\u6765\u200b\u7684\u200b\uff08\u200b\u53ef\u80fd\u200b\u662f\u200b IPMI \u200b\u7684\u200b\u865a\u62df\u200b\u8bbe\u5907\u200b\uff0c\u200b\u901a\u8fc7\u200b USB \u200b\u603b\u7ebf\u200b\u63a5\u5165\u200b\uff09\uff0c\u200b\u4e3a\u4e86\u200b\u4e0d\u8ba9\u200b LVM \u200b\u6bcf\u6b21\u200b\u8fd0\u884c\u200b\u65f6\u200b\u90fd\u200b\u5410\u200b\u69fd\u200b\u4e00\u904d\u200b open /dev/sdX failed: no medium found
\uff0c\u200b\u5c06\u200b\u62a5\u9519\u200b\u7684\u200b\u90a3\u4e2a\u200b\u8bbe\u5907\u200b\u5c4f\u853d\u200b\uff0c\u200b\u65b9\u6cd5\u200b\u662f\u200b\u5728\u200b /etc/lvm/lvm.conf
\u200b\u4e2d\u200b\u7684\u200b global_filters
\u200b\u4e2d\u200b\u52a0\u5165\u200b \"r|/dev/disk/by-id/usb.*|\"
\uff0c\u200b\u4f7f\u200b LVM \u200b\u626b\u63cf\u200b PV \u200b\u65f6\u200b\u5ffd\u7565\u200b\u8fd9\u4e2a\u200b\u8bbe\u5907\u200b\u53ca\u5176\u200b\u4ed6\u200b\u7ecf\u8fc7\u200b USB \u200b\u603b\u7ebf\u200b\u8fde\u63a5\u200b\u7684\u200b\u8bbe\u5907\u200b\u3002
\u200b\u5751\u70b9\u200b 1\uff08\u200b\u5df2\u200b\u89e3\u51b3\u200b\uff09
\u200b\u66fe\u7ecf\u200b\u7684\u200b\u8fc7\u6ee4\u200b\u89c4\u5219\u200b\u662f\u200b r|/dev/sdb|
\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u628a\u200b\u4efb\u4f55\u200b\u6620\u5c04\u200b\u5230\u200b sdb \u200b\u7684\u200b\u8bbe\u5907\u200b\u90fd\u200b\u5ffd\u7565\u200b\u4e86\u200b\uff0c\u200b\u4f46\u662f\u200b\u5728\u200b\u4e0d\u660e\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u8bbe\u5907\u200b\u4f1a\u200b\u4e92\u6362\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u539f\u5148\u200b\u7684\u200b\u8fc7\u6ee4\u200b\u89c4\u5219\u200b\u628a\u200b\u771f\u6b63\u200b\u7684\u200b\u7cfb\u7edf\u76d8\u200b\u7ed9\u200b\u8fc7\u6ee4\u200b\u6389\u200b\u4e86\u200b\uff0c\u200b\u7559\u4e0b\u200b\u4e00\u4e2a\u200b\u7a7a\u200b\u8bbe\u5907\u200b\uff0c\u200b\u65e0\u6cd5\u200b\u5f00\u673a\u200b\u542f\u52a8\u200b\uff08rootfs \u200b\u5728\u200b LV \u200b\u5377\u200b pve/root \u200b\u4e0a\u200b\uff09
\u200b\u597d\u200b\u5728\u200b\u76ee\u524d\u200b\u6ca1\u6709\u200b\u53d1\u73b0\u200b\u7a7a\u200b\u8bbe\u5907\u200b\u4ece\u200b sdb \u200b\u53d8\u6210\u200b sda \u200b\u7684\u200b\u60c5\u51b5\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u6700\u200b\u591a\u53ea\u200b\u9700\u8981\u200b\u5904\u7406\u200b\u4e00\u6b21\u200b\u5c31\u884c\u200b\uff08\u200b\u5176\u5b9e\u200b\u5230\u200b\u73b0\u5728\u200b\u4e00\u5171\u200b\u5c31\u200b\u53d1\u751f\u200b\u8fc7\u200b\u4e00\u6b21\u200b\uff09\u3002
\u200b\u5751\u70b9\u200b 2
LVM \u200b\u662f\u200b\u5f00\u673a\u200b\u542f\u52a8\u200b\u5fc5\u987b\u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u56e0\u6b64\u200b LVM \u200b\u76f8\u5173\u200b\u7684\u200b\u5de5\u5177\u200b\uff08lvm
\u200b\u547d\u4ee4\u200b\uff09\u200b\u548c\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff08\u200b\u5373\u200b /etc/lvm/lvm.conf
\uff09\u200b\u4f1a\u200b\u6253\u5305\u200b\u8fdb\u200b initramfs \u200b\u91cc\u200b\uff0c\u200b\u8fd9\u65f6\u5019\u200b\u8fd9\u4e2a\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b\u7cfb\u7edf\u200b\u91cc\u200b\u548c\u200b initramfs \u200b\u91cc\u200b\u5c31\u200b\u6709\u200b\u72ec\u7acb\u200b\u7684\u200b\u4e24\u4efd\u200b\u4e86\u200b\uff0c\u200b\u8981\u200b\u4fee\u6539\u200b\u5f97\u200b\u628a\u200b\u4e24\u4efd\u200b\u90fd\u200b\u4fee\u6539\u200b\u6389\u200b\u3002
lvm
\u200b\u5de5\u5177\u200b/etc/lvm/lvm.conf
\uff0c\u200b\u627e\u5230\u200b global_filters
\uff0c\u200b\u628a\u200b\u5176\u4e2d\u200b\u7684\u200b r|/dev/sda|
\u200b\u6362\u6210\u200b r|/dev/sdb|
\uff08\u200b\u6216\u8005\u200b\u53cd\u8fc7\u6765\u200b\u6539\u200b\uff0c\u200b\u53d6\u51b3\u4e8e\u200b\u539f\u5148\u200b\u5185\u5bb9\u200b\u662f\u200b\u4ec0\u4e48\u200b\u4ee5\u53ca\u200b\u524d\u9762\u200b\u62a5\u200b no medium found \u200b\u7684\u200b\u662f\u200b\u54ea\u4e2a\u200b\u8bbe\u5907\u200b\uff09lvm vgscan
\uff0c\u200b\u8fd9\u65f6\u5019\u200b\u518d\u200b lvm vgs
\u200b\u5e94\u8be5\u200b\u5c31\u200b\u80fd\u200b\u770b\u5230\u200b pve \u200b\u8fd9\u4e2a\u200b VG \u200b\u4e86\u200blvm lvchange -ay pve/root
\u200b\u6fc0\u6d3b\u200b rootfs \u200b\u5377\u200b\uff0c\u200b\u627e\u4e2a\u200b\u5730\u65b9\u200b\u6302\u8f7d\u200b\u8d77\u6765\u200b/etc/lvm/lvm.conf
\u200b\u518d\u200b\u6539\u200b\u4e00\u904d\u200b\uff08\u200b\u548c\u200b\u7b2c\u200b 2 \u200b\u6b65\u200b\u76f8\u540c\u200b\uff09update-initramfs -u -k all
\u200b\u66f4\u65b0\u200b initramfs\uff0c\u200b\u91cd\u542f\u200b
\u200b\u5176\u5b9e\u200b\u7b2c\u200b 5 \u200b\u6b65\u200b\u4e0d\u200b\u4e00\u5b9a\u200b\u9700\u8981\u200b chroot\uff0c\u200b\u4f46\u662f\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u662f\u200b\u9700\u8981\u200b\u7684\u200b
LVM \u200b\u5377\u200b\u4e0d\u80fd\u200b\u591a\u4e2a\u200b\u4e3b\u673a\u200b\u540c\u65f6\u200b\u4f7f\u7528\u200b\uff08active \u200b\u72b6\u6001\u200b\uff09\uff0c\u200b\u5982\u679c\u200b\u51fa\u73b0\u200b\u8fd9\u79cd\u200b\u60c5\u51b5\u200b\u4f1a\u200b\u5bfc\u81f4\u200b LVM \u200b\u62d2\u7edd\u200b\u4f7f\u7528\u200b\u53d7\u200b\u5f71\u54cd\u200b\u7684\u200b\u5377\u200b\u3002
\u200b\u76ee\u524d\u200b\u6211\u4eec\u200b\u7684\u200b VG user-data
\u200b\u662f\u200b\u5171\u4eab\u200b\u7684\u200b\uff0c\u200b\u800c\u200b VG pve
\u200b\u662f\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u81ea\u5df1\u200b\u7684\u200b SSD\uff08\u200b\u5373\u200b\u4e0e\u200b\u672c\u200b\u95ee\u9898\u200b\u65e0\u5173\u200b\uff09\u3002
Proxmox VE \u200b\u4f7f\u7528\u200b LVM
Proxmox VE \u200b\u5728\u200b\u542f\u52a8\u200b\u5bb9\u5668\u200b\u6216\u200b\u865a\u62df\u673a\u200b\u65f6\u4f1a\u200b\u5c1d\u8bd5\u200b\u5360\u7528\u200b\u76f8\u5173\u200b\u7684\u200b\u5377\u200b\uff08\u200b\u8bbe\u200b\u4e3a\u200b active\uff09\uff0c\u200b\u5e76\u200b\u5728\u200b\u5173\u95ed\u200b\u5bb9\u5668\u200b\u6216\u200b\u865a\u62df\u673a\u200b\u65f6\u200b\u53d6\u6d88\u200b active \u200b\u72b6\u6001\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6b63\u5e38\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u4e0d\u4f1a\u200b\u51fa\u73b0\u200b\u8de8\u200b\u4e3b\u673a\u200b\u5360\u7528\u200b\u7684\u200b\u60c5\u51b5\u200b\u3002
\u200b\u8be5\u200b\u5751\u70b9\u200b\u53ef\u80fd\u200b\u5df2\u200b\u4fee\u590d\u200b\uff0c\u200b\u5c1a\u672a\u200b\u6d4b\u8bd5\u200b
\u200b\u5f00\u673a\u200b\u542f\u52a8\u200b\u6216\u8005\u200b\u624b\u52a8\u200b\u8fde\u63a5\u200b iSCSI \u200b\u8bbe\u5907\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u4e0a\u9762\u200b\u6240\u6709\u200b\u7684\u200b LV \u200b\u90fd\u200b\u53d8\u6210\u200b active\uff0c\u200b\u8fd9\u662f\u200b PVE \u200b\u7684\u200b\u9ed8\u8ba4\u200b\u884c\u4e3a\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u6839\u636e\u200b Server Fault \u200b\u4e0a\u200b\u7684\u200b\u8fd9\u4e2a\u200b\u56de\u7b54\u200b\uff0c\u200b\u5728\u200b /etc/lvm/lvm.conf
\u200b\u4e2d\u200b\u5199\u5165\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\uff1a
auto_activation_volume_list = [ \"pve\", \"data\" ]\n
\u200b\u4fdd\u5b58\u200b\u540e\u200b LVM \u200b\u5c31\u200b\u4e0d\u4f1a\u200b\u5728\u200b\u68c0\u6d4b\u200b\u5230\u200b\u65b0\u200b VG \u200b\u65f6\u200b\u81ea\u52a8\u200b\u542f\u7528\u200b\u5168\u90e8\u200b\u5377\u200b\u4e86\u200b\u3002\u200b\u53ef\u80fd\u200b\u9700\u8981\u200b\u66f4\u65b0\u200b initramfs \u200b\u548c\u200b/\u200b\u6216\u200b\u91cd\u542f\u200b\u3002
\u200b\u89e3\u51b3\u200b\u6b65\u9aa4\u200b\uff1a
lvchange -an <vg/lv>
\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u5728\u200b\u5168\u90e8\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u5377\u200b\u53d6\u6d88\u200b\u4e86\u200b active \u200b\u72b6\u6001\u200b\uff0c\u200b\u7136\u540e\u200b\u5176\u4e2d\u200b\u4e00\u4e2a\u200b\u4e3b\u673a\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5f00\u59cb\u200b\u4f7f\u7528\u200b\u5b83\u200b\uff08\u200b\u542f\u52a8\u200b\u5bb9\u5668\u200b\uff09\u200b\u4e86\u200b\u3002\u200b\u5982\u679c\u200b\u53d7\u200b\u5f71\u54cd\u200b\u7684\u200b\u5377\u200b\u5f88\u591a\u200b\uff08\u200b\u5e38\u89c1\u200b\u60c5\u51b5\u200b\uff09\uff0c\u200b\u8f83\u4e3a\u7b80\u5355\u200b\u7684\u200b\u65b9\u6cd5\u200b\u662f\u200b\u628a\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u5bb9\u5668\u200b\u90fd\u200b\u5173\u6389\u200b\uff0c\u200b\u7136\u540e\u200b vgchange -an <vg>
\uff0c\u200b\u4e00\u6b21\u6027\u200b\u628a\u200b\u6574\u4e2a\u200b VG \u200b\u91cc\u200b\u7684\u200b\u5168\u90e8\u200b LV \u200b\u53d6\u6d88\u200b active \u200b\u72b6\u6001\u200b\uff08\u200b\u5f53\u7136\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u90fd\u200b\u8981\u200b\u91cd\u590d\u200b\u4e00\u904d\u200b\uff09\uff0c\u200b\u7136\u540e\u200b\u4e00\u5207\u200b\u6062\u590d\u6b63\u5e38\u200b\u3002
\u200b\u53e6\u200b\u4e00\u79cd\u200b\u9ad8\u7ea7\u200b\u529e\u6cd5\u200b\u662f\u200b\u4f7f\u7528\u200b\u6587\u5b57\u5904\u7406\u200b\u6280\u5de7\u200b\uff0c\u200b\u89e3\u6790\u200b lvs
\u200b\u7684\u200b\u8f93\u51fa\u200b\u5e76\u200b\u5173\u95ed\u200b\u5168\u90e8\u200b active \u200b\u4f46\u200b\u4e0d\u662f\u200b open \u200b\u7684\u200b\u5377\u200b\uff08\u200b\u5373\u200b flags \u200b\u4e3a\u200b -wi-a-----
\u200b\u7684\u200b\u5377\u200b\uff09\u3002\u200b\u53c2\u8003\u200b\u547d\u4ee4\u200b\u5982\u4e0b\u200b\uff1a
lvs | awk '$2 == \"user-data\" && substr($3, 5, 1) == \"a\" { print $2 \"/\" $1 }' | xargs lvchange -an\n
\u200b\u91cd\u542f\u200b\u8fdb\u200b Live CD\uff0c\u200b\u6302\u8f7d\u200b\u4e00\u5806\u200b\u4e1c\u897f\u200b\uff0c\u200b\u7136\u540e\u200b chroot \u200b\u8fdb\u539f\u200b\u7cfb\u7edf\u200b\u7684\u200b rootfs\u3002
vgscan\nvgchange -ay pve/root\nmount /dev/pve/root /mnt\nmount -o rbind /run /mnt/run # For systemd-udevd\nchroot /mnt\nmount -t devtmpfs devtmpfs dev\nmount -t proc proc proc\nmount -t sysfs sysfs sys\nmount /dev/sda1 /boot/efi\n
\u200b\u7136\u540e\u200b\u5728\u200b\u4ee5\u4e0b\u200b\u65b9\u6cd5\u200b\u4e2d\u4e8c\u9009\u200b\u4e00\u200b\uff08\u200b\u4e24\u4e2a\u200b\u90fd\u200b\u505a\u200b\u4e5f\u200b\u6ca1\u200b\u95ee\u9898\u200b\uff09\uff1a
/etc/initramfs-tools/modules
\uff0c\u200b\u6dfb\u52a0\u200b\u4e24\u884c\u200b dm_raid
\u200b\u548c\u200b raid1
\uff0c\u200b\u8fd0\u884c\u200b update-initramfs -u -k all
mdadm
\u200b\u8f6f\u4ef6\u5305\u200b\u200b\u4ee5\u4e0a\u200b\u64cd\u4f5c\u200b\u5b8c\u6210\u200b\u540e\u200b\u91cd\u542f\u200b\u5373\u53ef\u200b\u3002
\u200b\u53c2\u8003\u200b\uff1ahttps://askubuntu.com/q/292092/612877
"},{"location":"traps/#\u5bb9\u5668\u4ecd\u5728\u90e8\u5206\u8fd0\u884c\u4f46\u662f-rootfs-\u672a\u5728-lvs-\u4e2d\u663e\u793a","title":"\u5bb9\u5668\u200b\u4ecd\u200b\u5728\u200b\uff08\u200b\u90e8\u5206\u200b\uff09\u200b\u8fd0\u884c\u200b\uff0c\u200b\u4f46\u662f\u200b rootfs \u200b\u672a\u200b\u5728\u200blvs
\u200b\u4e2d\u200b\u663e\u793a","text":"\u200b\u75c7\u72b6\u200b\uff1a
journalctl
\u200b\u7684\u200b\u9519\u8bef\u200b\u65e5\u5fd7\u200b\u63d0\u793a\u200b ext4\uff08\u200b\u6216\u8005\u200b\u5176\u4ed6\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\uff09\u200b\u8bfb\u5199\u200b\u5bb9\u5668\u200b rootfs \u200b\u65f6\u200b\u51fa\u73b0\u200b\u9519\u8bef\u200b\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u5f53\u65f6\u200b\u5728\u200b CT 100 \u200b\u4e0a\u200b\u51fa\u73b0\u200b\uff0c\u200b\u539f\u56e0\u200b\u4e3a\u200b\u5728\u200b\u540c\u5b66\u200b\u64cd\u4f5c\u200b\u6d4b\u8bd5\u200b\u8282\u70b9\u200b\u65f6\u200b\uff0c\u200b\u4f7f\u7528\u200b\u4e86\u200b\u548c\u200b\u6b63\u5f0f\u200b\u73af\u5883\u200b\u76f8\u540c\u200b\u7684\u200b LVM \u200b\u5b58\u50a8\u200b\uff0c\u200b\u4f46\u662f\u200b\u672a\u200b\u52a0\u5165\u200b\u96c6\u7fa4\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u9501\u200b\u5931\u6548\u200b\u3002\u200b\u8fd9\u79cd\u200b\u60c5\u51b5\u200b\u662f\u200b\u6781\u5176\u200b\u5371\u9669\u200b\u7684\u200b\uff0c\u200b\u6700\u574f\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0c\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u7834\u574f\u200b LVM \u200b\u7684\u200b\u5206\u533a\u8868\u200b\u3002
\u200b\u76ee\u524d\u200b\uff0c\u200b\u6d4b\u8bd5\u200b\u8282\u70b9\u200b\u5df2\u200b\u52a0\u5165\u200b\u96c6\u7fa4\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5bf9\u200b\u91cd\u8981\u200b\u5bb9\u5668\u200b\u7684\u200b\u5907\u4efd\u200b\u6b63\u5728\u200b\u64cd\u4f5c\u200b\u4e2d\u200b\u3002
"},{"location":"traps/#lvm-metadata-\u5df2\u6ee1\u65e0\u6cd5\u65b0\u5efa-lv","title":"LVM metadata \u200b\u5df2\u6ee1\u200b\uff0c\u200b\u65e0\u6cd5\u200b\u65b0\u5efa\u200b LV","text":"\u200b\u53c2\u89c1\u200b 2022 \u200b\u5e74\u200b 6 \u200b\u6708\u200b 16 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3\u200b\u3002
"},{"location":"traps/#networking","title":"\u7f51\u7edc","text":""},{"location":"traps/#pve-7-ifupdown2","title":"Proxmox VE 7 \u200b\u7f51\u7edc\u200b\u914d\u7f6e","text":"PVE 7 \u200b\u9ed8\u8ba4\u200b\u4f7f\u7528\u200b ifupdown2\uff0c\u200b\u662f\u200b ifupdown \u200b\u7684\u200b\u4e00\u4e2a\u200b Python \u200b\u66ff\u4ee3\u54c1\u200b\uff0c\u200b\u914d\u7f6e\u6587\u4ef6\u200b /etc/network/interfaces
\u200b\u51e0\u4e4e\u200b\u517c\u5bb9\u200b\u3002
ifupdown2 \u200b\u7684\u200b bond \u200b\u8bed\u6cd5\u200b\u6709\u200b\u4e00\u70b9\u200b\u4e0d\u200b\u4e00\u6837\u200b\uff08\u200b\u5e76\u4e14\u200b\u4f1a\u70b8\u200b\uff09\uff0c\u200b\u5c31\u662f\u200b bond \u200b\u7684\u200b slave \u200b\u662f\u200b\u5199\u200b\u5728\u200b bond \u200b\u8bbe\u5907\u200b\u4e0b\u200b\u7684\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u50cf\u200b ifupdown \u200b\u4e00\u6837\u200b\u5728\u200b slave \u200b\u8bbe\u5907\u200b\u4e0b\u5199\u200b bond-master
\uff0c\u200b\u6240\u4ee5\u200b\u4ece\u200b ifupdown \u200b\u6362\u200b\u5230\u200b ifupdown2 \u200b\u540e\u200b\u91cd\u542f\u200b\u524d\u200b\u52a1\u5fc5\u200b\u4fee\u6539\u200b\u914d\u7f6e\u200b\u3002\u200b\u5efa\u8bae\u200b\u4e0d\u8981\u200b\u7740\u6025\u200b\u5220\u6389\u200b bond-master
\uff0c\u200b\u56e0\u4e3a\u200b\u5c3d\u7ba1\u200b\u4e24\u79cd\u200b\u5199\u6cd5\u200b\u4e92\u4e0d\u200b\u517c\u5bb9\u200b\uff0c\u200b\u4f46\u662f\u200b\u5b83\u4eec\u200b\u4e5f\u200b\u4e92\u4e0d\u200b\u51b2\u7a81\u200b\uff08ifupdown / ifupdown2 \u200b\u4f1a\u200b\u4e92\u76f8\u200b\u65e0\u89c6\u200b\u53e6\u200b\u4e00\u79cd\u200b\u5199\u6cd5\u200b\uff09\u3002
\u200b\u5347\u7ea7\u200b PVE 7 \u200b\u4e0d\u200b\u4e00\u5b9a\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u66ff\u6362\u200b\u8f6f\u4ef6\u200b
\u200b\u5982\u679c\u200b\u66f4\u65b0\u200b\u5230\u200b PVE 7 \u200b\u7684\u200b\u65f6\u5019\u200b\u6ca1\u6709\u200b\u81ea\u52a8\u200b\u5c06\u200b ifupdown \u200b\u66ff\u6362\u200b\u4e3a\u200b ifupdown2\uff0c\u200b\u8bf7\u200b\u624b\u52a8\u200b\u66ff\u6362\u200b\u5e76\u200b\u66f4\u65b0\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u3002
\u200b\u8bed\u6cd5\u200b\u6bd4\u8f83\u200b\uff1a
ifupdownifupdown2auto eno1\niface eno1 inet manual\n bond-master bond0\n\nauto eno2\niface eno2 inet manual\n bond-master bond0\n\nauto bond0\niface bond0 inet manual\n bond-mode balance-alb\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n
auto eno1\niface eno1\n\nauto eno2\niface eno2\n\nauto bond0\niface bond0\n bond-slaves eno1 eno2\n bond-mode balance-alb\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n
\u200b\u66f4\u200b\u591a\u200b\u4fe1\u606f\u200b\u8bf7\u200b\u89c1\u200b\u4e3b\u673a\u200b\u7f51\u5361\u200b\u3002
\u200b\u6ce8\u610f\u200b\u4e0b\u5212\u7ebf\u200b
ifupdown2 \u200b\u91cc\u200b\u4e0d\u518d\u200b\u4f7f\u7528\u200b\u4e0b\u5212\u7ebf\u200b\u4f5c\u4e3a\u200b key\uff0c\u200b\u6240\u6709\u200b ifupdown \u200b\u91cc\u200b\u4f7f\u7528\u200b\u4e0b\u5212\u7ebf\u200b\u7684\u200b key \u200b\u90fd\u200b\u88ab\u200b\u6362\u6210\u200b\u4e86\u200b\u51cf\u53f7\u200b\uff0c\u200b\u4f8b\u5982\u200b bridge_ports
\u200b\u5df2\u7ecf\u200b\u6362\u6210\u200b\u4e86\u200b bridge-ports
\u3002
\u200b\u8be5\u200b\u95ee\u9898\u200b\u5df2\u200b\u4e8e\u200b 2020 \u200b\u5e74\u200b 7 \u200b\u6708\u200b 31 \u200b\u65e5\u200b\u89e3\u51b3\u200b\uff0c\u200b\u89c1\u200b\u4e0b\u200b
\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b Linux \u200b\u4f1a\u200b\u5bf9\u200b\u672c\u673a\u200b\u7684\u200b\u6240\u6709\u200b IP \u200b\u5730\u5740\u200b\u5728\u200b\u6240\u6709\u200b\u754c\u9762\u200b\u4e0a\u200b\u54cd\u5e94\u200b ARP \u200b\u8bf7\u6c42\u200b\uff08\u200b\u5f53\u7136\u200b 127.0.0.0/8 \u200b\u662f\u200b\u9664\u5916\u200b\u7684\u200b\uff09\uff0c\u200b\u4f8b\u5982\u200b\u4e00\u4e2a\u200b\u4e3b\u673a\u200b\u62e5\u6709\u200b\u4e24\u4e2a\u200b\u754c\u9762\u200b ifA \u200b\u548c\u200b ifB\uff0c\u200b\u5b83\u4eec\u200b\u5206\u522b\u200b\u5177\u6709\u200b IP \u200b\u5730\u5740\u200b ipA \u200b\u548c\u200b ipB\uff0c\u200b\u90a3\u4e48\u200b Linux \u200b\u4f1a\u200b\u5728\u200b ifA \u200b\u4e0a\u200b\u54cd\u5e94\u200b who-has ipB \u200b\u7684\u200b\u8bf7\u6c42\u200b\uff0c\u200b\u53cd\u4e4b\u4ea6\u7136\u200b\u3002
\u200b\u8fd9\u200b\u5728\u200b 2020 \u200b\u5e74\u200b\u4e0a\u534a\u5e74\u200b\u7814\u7a76\u200b pv8 \u200b\u4e3a\u4ec0\u4e48\u200b\u8fde\u4e0d\u4e0a\u200b VXLAN \u200b\u7684\u200b\u65f6\u5019\u200b\u9020\u6210\u200b\u4e86\u200b\u5f88\u5927\u200b\u7684\u200b\u56f0\u60d1\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u5b9e\u9645\u4e0a\u200b pv8 \u200b\u7684\u200b ens1f1 \u200b\u754c\u9762\u200b\u662f\u200b\u574f\u200b\u7684\u200b\uff08\u200b\u53ef\u80fd\u200b\u662f\u200b\u5149\u7ea4\u200b\u6ca1\u200b\u63d2\u200b\u597d\u200b\u4e4b\u7c7b\u200b\u7684\u200b\uff09\uff0c\u200b\u7136\u540e\u200b\u7cfb\u7edf\u200b\u5728\u200b ens1f0 \u200b\u754c\u9762\u200b\u4e0a\u200b\u54cd\u5e94\u200b\u4e86\u200b\u5b9e\u9645\u200b\u5c5e\u4e8e\u200b ens1f1 \u200b\u7684\u200b IP \u200b\u5730\u5740\u200b\uff0c\u200b\u5728\u200b\u5176\u4ed6\u200b\u673a\u5668\u200b\u4e0a\u200b\u770b\u8d77\u6765\u200b\u5c31\u200b\u50cf\u662f\u200b ens1f1 \u200b\u80fd\u200b\u8fde\u901a\u200b\u4f46\u200b vxlan0 \u200b\u8fde\u200b\u4e0d\u901a\u200b\uff0c\u200b\u800c\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b 10.0.0.28 \u200b\u88ab\u200b\u89e3\u6790\u200b\u5230\u200b\u4e86\u200b pv8 \u200b\u7684\u200b ens1f0 \u200b\u4e0a\u200b\uff0c\u200b\u6ca1\u200b\u6545\u969c\u200b\u5f53\u7136\u200b\u5c31\u200b\u80fd\u200b\u8fde\u901a\u200b\u4e86\u200b\u3002
iBug \u200b\u5907\u6ce8\u200b
\u200b\u8fd9\u4e2a\u200b\u5730\u65b9\u200b\u6211\u200b\u4e5f\u200b\u6ca1\u60f3\u5230\u200b\uff0c\u200b\u5176\u5b9e\u200b\u53ea\u8981\u200b\u5728\u200b\u5176\u4ed6\u200b\u673a\u5668\u200b\u4e0a\u200b\u770b\u770b\u200b ARP \u200b\u7f13\u5b58\u200b\u8868\u200b\uff08arp -a
\uff09\u200b\u5c31\u200b\u80fd\u200b\u53d1\u73b0\u200b\u4e24\u4e2a\u200b IP \u200b\u89e3\u6790\u200b\u51fa\u6765\u200b\u7684\u200b MAC \u200b\u4e00\u6837\u200b\u4e86\u200b
\u200b\u89e3\u51b3\u529e\u6cd5\u200b\u5c31\u662f\u200b\u8bbe\u7f6e\u200b Linux \u200b\u53c2\u6570\u200b\u8ba9\u200b\u5176\u200b\u53ea\u200b\u5728\u200b\u201c\u200b\u6b63\u786e\u200b\u7684\u200b\u201d\u200b\u754c\u9762\u200b\u4e0a\u200b\u54cd\u5e94\u200b\uff0c\u200b\u8be6\u7ec6\u200b\u89e3\u91ca\u200b\u53c2\u89c1\u200b Server Fault \u200b\u4e0a\u200b\u7684\u200b\u8fd9\u4e2a\u200b\u56de\u7b54\u200b\u3002\u200b\u6211\u4eec\u200b\u7684\u200b\u505a\u6cd5\u200b\u662f\u200b\u5411\u200b /etc/sysctl.d/arp.conf
\u200b\u91cc\u200b\u5199\u5165\u200b\u4e86\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff1a
net.ipv4.conf.all.arp_ignore=1\nnet.ipv4.conf.all.arp_announce=2\n
"},{"location":"traps/#vxlan-mtu","title":"VXLAN MTU","text":"\u200b\u8be5\u200b\u5751\u70b9\u200b\u5df2\u4e8e\u200b 2020 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u4fee\u590d\u200b
\u200b\u5728\u200b\u6b64\u6b21\u200b\u7ef4\u62a4\u200b\u5de5\u4f5c\u200b\u4e2d\u200b\uff0c\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u5361\u200b ens1f1 \u200b\u7684\u200b MTU \u200b\u5df2\u200b\u88ab\u200b\u8c03\u6574\u200b\u4e3a\u200b 1550 \u200b\u5b57\u8282\u200b\uff0c\u200b\u4ece\u800c\u200b\u6b64\u540e\u200b\u7684\u200b VXLAN \u200b\u7f51\u7edc\u200b\u90fd\u200b\u5177\u6709\u200b\u201c\u200b\u6b63\u5e38\u200b\u201d\u200b\u7684\u200b 1500 \u200b\u5b57\u8282\u200b\u7684\u200b\u8bbe\u7f6e\u200b\u3002
\u200b\u6ce8\u610f\u200b\u4ee5\u540e\u200b\u82e5\u6709\u200b\u65b0\u589e\u200b\u7684\u200b\u673a\u5668\u200b\u8fd8\u662f\u200b\u9700\u8981\u200b\u989d\u5916\u200b\u8bbe\u7f6e\u200b\u4e00\u904d\u200b\u7684\u200b\u3002
VXLAN \u200b\u662f\u200b\u4e00\u79cd\u200b overlay \u200b\u7f51\u7edc\u200b\u5b9e\u73b0\u200b\uff0c\u200b\u5c06\u200b\u5e27\u200b\u5305\u88c5\u200b\u5728\u200b UDP \u200b\u5305\u4e2d\u200b\u4f20\u8f93\u200b\u3002\u200b\u7531\u4e8e\u200b\u4e00\u4e2a\u200b UDP \u200b\u5305\u200b\u5bf9\u5e94\u200b\u4e00\u4e2a\u200b\u5e27\u200b\uff0c\u200b\u56e0\u6b64\u200b VXLAN \u200b\u7f51\u7edc\u200b\u7684\u200b MTU \u200b\u4e3a\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u200b\u7684\u200b MTU \u200b\u51cf\u6389\u200b 50 \u200b\u5b57\u8282\u200b\uff08\u200b\u5404\u79cd\u200b\u5934\u200b\u4e4b\u7c7b\u200b\u7684\u200b\uff09\uff0c\u200b\u6240\u4ee5\u200b\u5728\u200b\u4e0b\u5c42\u200b\u7f51\u7edc\u200b\u4f7f\u7528\u200b\u9ed8\u8ba4\u200b\u914d\u7f6e\u200b\uff08MTU 1500\uff09\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b VXLAN \u200b\u7f51\u7edc\u200b\u7684\u200b MTU \u200b\u4e3a\u200b 1450\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u975e\u6807\u51c6\u200b\u7684\u200b\u503c\u200b\uff0c\u200b\u800c\u200b\u4ece\u200b\u8be5\u200b VXLAN \u200b\u7f51\u7edc\u200b\u4e2d\u200b\u6865\u63a5\u200b\u51fa\u6765\u200b\u7684\u200b\u754c\u9762\u200b\u5e76\u4e0d\u77e5\u9053\u200b\u5176\u200b\u7f51\u7edc\u200b\u7684\u200b\u771f\u5b9e\u200b MTU \u200b\u5c0f\u4e8e\u200b 1500\uff0c\u200b\u7ed3\u679c\u200b\u5c31\u662f\u200b\u4f20\u8f93\u200b\u7684\u200b\u5185\u5bb9\u200b\u7a0d\u5fae\u200b\u591a\u4e00\u70b9\u200b\uff08\u200b\u5355\u4e2a\u200b\u5e27\u200b\u8d85\u8fc7\u200b 1450 \u200b\u5b57\u8282\u200b\uff09\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u4f1a\u200b\u88ab\u200b\u6574\u4e2a\u200b\u4e22\u6389\u200b\uff0c\u200b\u9020\u6210\u200b\u65e0\u6cd5\u200b\u8054\u7f51\u200b\u7684\u200b\u60c5\u51b5\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u5012\u200b\u4e5f\u200b\u4e0d\u96be\u200b\uff0c\u200b\u5728\u200b\u7cfb\u7edf\u200b\u91cc\u200b\u8bbe\u7f6e\u200b\u7f51\u7edc\u200b\u7684\u200b MTU \u200b\u4e3a\u200b 1450 \u200b\u5c31\u884c\u200b\u3002Proxmox VE \u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u7684\u200b\u65f6\u5019\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5728\u200b\u7f51\u7edc\u200b\u53c2\u6570\u200b\u4e2d\u200b\u6307\u5b9a\u200b mtu=1450
\uff0c\u200b\u4f46\u200b KVM \u200b\u865a\u62df\u673a\u200b\u5c31\u200b\u5fc5\u987b\u200b\u6bcf\u4e2a\u200b\u865a\u62df\u673a\u200b\u8bbe\u7f6e\u200b\u4e86\u200b\uff0c\u200b\u8fd9\u200b\u5728\u200b Windows \u200b\u4e0b\u200b\u5c24\u5176\u200b\u9ebb\u70e6\u200b\u3002
\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u8ba1\u5212\u200b\u5728\u200b 2020 \u200b\u5e74\u200b\u6691\u5047\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u5f7b\u5e95\u89e3\u51b3\u200b\uff0c\u200b\u529e\u6cd5\u200b\u662f\u200b\u628a\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u200b\u7684\u200b MTU \u200b\u8c03\u5927\u200b 50 \u200b\u5b57\u8282\u200b\uff08\u200b\u53d8\u6210\u200b 1550 \u200b\u5b57\u8282\u200b\uff0c\u200b\u4fee\u6539\u200b pv1 \u200b\u5230\u200b pv8 \u200b\u7684\u200b ens1f1 \u200b\u754c\u9762\u200b\uff09\uff0c\u200b\u8fd9\u6837\u200b VXLAN \u200b\u5c31\u200b\u80fd\u200b\u62e5\u6709\u200b\u201c\u200b\u6b63\u5e38\u200b\u201d\u200b\u7684\u200b 1500 \u200b\u5b57\u8282\u200b\u7684\u200b MTU \u200b\u4e86\u200b\uff0c\u200b\u80fd\u4e3a\u200b\u4ee5\u540e\u200b\u51cf\u5c11\u200b\u4e0d\u5c11\u200b\u9ebb\u70e6\u200b\u3002
"},{"location":"traps/#pve-fwbr","title":"PVE \u200b\u9632\u706b\u5899\u200b\u4e0e\u200b ebtables","text":"PVE \u200b\u4f1a\u200b\u5c06\u200b\u5f00\u542f\u200b\u4e86\u200b firewall \u200b\u7684\u200b\u865a\u62df\u673a\u200b\u7f51\u5361\u200b\u989d\u5916\u200b\u6865\u63a5\u200b\u4e00\u6b21\u200b\uff0c\u200b\u5982\u56fe\u6240\u793a\u200b\uff1a
\u200b\u672a\u200b\u5f00\u542f\u200b firewall \u200b\u65f6\u200bflowchart LR\nvmbr{{vmbr0}} ---|\"veth100i0 / eth0@vm\"| vm([VM])
\u200b\u5f00\u542f\u200b firewall \u200b\u65f6\u200b flowchart LR\nvmbr{{vmbr0}} ---|\"fwpr100i0 / fwln100i0\"| fwbr{{fwbr100i0}} ---|\"veth100i0 / eth0@vm\"| vm([VM])
\u200b\u4e3a\u4e86\u200b\u5168\u9762\u200b\u8fc1\u79fb\u200b\u5230\u200b PVE \u200b\u9632\u706b\u5899\u200b\uff0c\u200b\u6211\u4eec\u200b\u63d0\u524d\u200b\u4fee\u6539\u200b\u4e86\u200b Django \u200b\u4e3a\u200b\u65b0\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u7f51\u5361\u200b\u542f\u7528\u200b\u9632\u706b\u5899\u200b\uff0c\u200b\u4f46\u662f\u200b\u610f\u5916\u200b\u7684\u200b\u662f\u200b\uff0cPVE Datacenter \u200b\u5c42\u9762\u200b\u7684\u200b\u9632\u706b\u5899\u200b\u603b\u5f00\u5173\u200b\u53ea\u200b\u63a7\u5236\u200b\u662f\u5426\u200b\u5e94\u7528\u200b iptables \u200b\u89c4\u5219\u200b\uff0c\u200b\u603b\u5f00\u5173\u200b\u5173\u95ed\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b PVE \u200b\u4ecd\u7136\u200b\u8fdb\u884c\u200b\u4e0a\u8ff0\u200b\u6865\u63a5\u200b\u64cd\u4f5c\u200b\u3002\u200b\u8be5\u200b\u6865\u63a5\u200b\u4e0e\u200b\u6211\u4eec\u200b\u624b\u200b\u6413\u200b\u7684\u200b ebtables \u200b\u89c4\u5219\u200b\u6709\u200b\u51b2\u7a81\u200b\uff0c\u200b\u4f7f\u200b\u6240\u6709\u200b\u5e27\u200b\u90fd\u200b\u65e0\u6cd5\u200b\u7ecf\u8fc7\u200b fwbr100i0\uff0c\u200b\u5bfc\u81f4\u200b\u865a\u62df\u673a\u200b\u6574\u4e2a\u200b\u65ad\u7f51\u200b\u3002
\u200b\u867d\u7136\u200b ebtables -I VLAB_SECURE 4 -i fwln+ -j ACCEPT
\u200b\u53ef\u4ee5\u200b\u89e3\u51b3\u95ee\u9898\u200b\uff0c\u200b\u4f46\u662f\u200b\u65e2\u7136\u200b\u8981\u200b\u8fc1\u79fb\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fd8\u662f\u200b\u9009\u62e9\u200b\u76f4\u63a5\u200b\u5220\u9664\u200b\u624b\u200b\u6413\u200b\u7684\u200b ebtables \u200b\u914d\u7f6e\u200b\uff0c\u200b\u907f\u514d\u200b\u4ee5\u540e\u200b\u8d77\u200b\u66f4\u200b\u591a\u200b\u51b2\u7a81\u200b\u3002
PVE Firewall \u200b\u4f1a\u200b\u5728\u200b\u542f\u52a8\u200b\u65f6\u200b\u81ea\u52a8\u200b\u5c06\u200b iptables \u200b\u547d\u4ee4\u200b\u7684\u200b alternatives \u200b\u5207\u6362\u200b\u81f3\u200b iptables-legacy\uff0c\u200b\u4f46\u662f\u200b\u5e76\u200b\u4e0d\u4f1a\u200b\u5e2e\u5fd9\u200b\u6e05\u6389\u200b iptables-nft \u200b\u91cc\u200b\u5df2\u6709\u200b\u7684\u200b\u89c4\u5219\u200b\uff0c\u200b\u6240\u4ee5\u200b\u521a\u200b\u5f00\u542f\u200b\u5168\u5c40\u200b\u9632\u706b\u5899\u200b\u5f00\u5173\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u5c3d\u7ba1\u200b iptables -S
\u200b\u548c\u200b iptables-save
\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u770b\u8d77\u6765\u200b\u6ca1\u200b\u5565\u200b\u95ee\u9898\u200b\uff0c\u200b\u4f46\u662f\u200b\u865a\u62df\u673a\u200b\u8fd8\u662f\u200b\u65ad\u7f51\u200b\u4e86\u200b\uff0c\u200b\u4ed4\u7ec6\u200b\u601d\u8003\u200b\u4e86\u200b 20 \u200b\u5206\u949f\u200b\u624d\u200b\u60f3\u200b\u8d77\u6765\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u662f\u200b\u624b\u52a8\u200b\u6e05\u6389\u200b iptables-nft \u200b\u91cc\u200b\u7684\u200b\u89c4\u5219\u200b\uff0c\u200b\u5728\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u8fd0\u884c\u200b\uff1a
iptables-nft -F\niptables-nft -X\niptables-nft -Z\n
\u200b\u6b64\u65f6\u200b\u8fd8\u200b\u6ca1\u6709\u200b\u6ce8\u610f\u200b\u5230\u200b IPv6 \u200b\u4e5f\u200b\u574f\u200b\u4e86\u200b\uff0c\u200b\u53c8\u200b\u82b1\u200b\u4e86\u200b 10 \u200b\u5206\u949f\u200b\u60f3\u200b\u8d77\u6765\u200b\u8fd8\u200b\u9700\u8981\u200b\u6267\u884c\u200b\u4e0b\u9762\u200b\u7684\u200b\u547d\u4ee4\u200b\uff1a
ip6tables-nft -F\nip6tables-nft -X\nip6tables-nft -Z\n
\u200b\u8003\u8651\u200b\u5230\u200b\u6211\u4eec\u200b\u5148\u524d\u200b\u5bf9\u200b INPUT, OUTPUT, FORWARD \u200b\u94fe\u200b\u8bbe\u7f6e\u200b\u7684\u200b policy \u200b\u90fd\u200b\u662f\u200b ACCEPT\uff0c\u200b\u5c31\u200b\u4e0d\u200b\u9700\u8981\u200b\u91cd\u7f6e\u200b\u4e86\u200b\u3002
"},{"location":"traps/#vm","title":"\u865a\u62df\u673a","text":""},{"location":"traps/#systemd-logind-\u542f\u52a8\u5931\u8d25","title":"systemd-logind \u200b\u542f\u52a8\u200b\u5931\u8d25","text":"\u200b\u5c24\u5176\u200b\u662f\u200b\u5728\u200b\u5bb9\u5668\u200b\u4ece\u200b Debian buster \u200b\u5347\u7ea7\u200b\u5230\u200b bullseye \u200b\u540e\u200b\u5bb9\u6613\u200b\u51fa\u73b0\u200b\u3002
\u200b\u75c7\u72b6\u200b\uff1a
SSH \u200b\u767b\u5f55\u200b\u5df2\u200b\u8fde\u63a5\u200b\uff0c\u200b\u4f46\u200b\u957f\u65f6\u95f4\u200b\u4e0d\u5f39\u200b\u51fa\u200b shell\uff0c/var/log/auth.log
\u200b\u663e\u793a\u200b pam_systemd(sshd:session): Failed to create session: Failed to activate service 'org.freedesktop.login1': timed out
\uff0csystemctl status systemd-logind
\u200b\u663e\u793a\u200b failed
/ code=226/NAMESPACE
\u3002
\u200b\u539f\u56e0\u200b\uff1a
Systemd \u200b\u4ece\u200b\u7248\u672c\u200b 242 \u200b\u5f00\u59cb\u200b\u91c7\u7528\u200b\u66f4\u200b\u591a\u200b\u6280\u672f\u200b\u6765\u200b\u9650\u5236\u200b\u8fd0\u884c\u200b\u670d\u52a1\u200b\u7684\u200b\u6743\u9650\u200b\uff0c\u200b\u800c\u200b\u9ed8\u8ba4\u200b\u6ca1\u200b\u5f00\u200b nesting \u200b\u7684\u200b\u5bb9\u5668\u200b\u7f3a\u5c11\u200b\u5fc5\u8981\u200b\u6743\u9650\u200b\uff0c\u200b\u5bfc\u81f4\u200b systemd-logind \u200b\u65e0\u6cd5\u200b\u542f\u52a8\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a
\u200b\u4e3a\u200b\u5bb9\u5668\u200b\u5f00\u542f\u200b nesting\uff08\u200b\u548c\u200b keyctl\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u60f3\u200b\u7684\u8bdd\u200b\uff09\u3002\u200b\u6211\u4eec\u200b\u5df2\u7ecf\u200b\u9ed8\u8ba4\u200b\u4e3a\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\u5f00\u542f\u200b\u4e86\u200b\u8fd9\u4e24\u9879\u200b\u6743\u9650\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e3a\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u7684\u200b\u670d\u52a1\u200b\u5bb9\u5668\u200b\u5f00\u542f\u200b\u5b83\u4eec\u200b\u4e0d\u4f1a\u200b\u6709\u200b\u989d\u5916\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
pvesh set /nodes/<node_name>/lxc/<vmid>/config -features keyctl=1,nesting=1\n
\u200b\u53c2\u8003\u8d44\u6599\u200b\uff1ahttps://discuss.linuxcontainers.org/t/apparmor-blocks-systemd-services-in-container/9812
"},{"location":"traps/#user1000service-\u542f\u52a8\u5931\u8d25","title":"user@1000.service \u200b\u542f\u52a8\u200b\u5931\u8d25","text":"\u200b\u68c0\u67e5\u200b\u73af\u5883\u53d8\u91cf\u200b XDG_RUNTIME_DIR
\u200b\u662f\u5426\u200b\u8bbe\u7f6e\u200b\u6b63\u786e\u200b\uff0c\u200b\u5e94\u4e3a\u200b /run/user/<uid>
\u3002
\u200b\u53e6\u5916\u200b\u5728\u200b\u672a\u77e5\u200b\u60c5\u51b5\u200b\u4e0b\u8be5\u200b\u76ee\u5f55\u200b\u6709\u200b\u53ef\u80fd\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\uff08\u200b\u4fdd\u9669\u200b\u8d77\u200b\u89c1\u200b\uff0c\u200b\u540c\u65f6\u200b chown \u200b\u4e00\u4e0b\u200b\uff09\uff1a
UID=\"$(id -u)\"\nmkdir -p \"/run/user/$UID\"\nchown \"$UID.$UID\" \"/run/user/$UID\"\n
Ref: https://github.com/systemd/systemd/issues/9461#issuecomment-409929860
"},{"location":"traps/#docker-in-lxc-\u542f\u52a8\u5931\u8d25","title":"Docker in LXC \u200b\u542f\u52a8\u200b\u5931\u8d25","text":"\u200b\u75c7\u72b6\u200b\uff1a
\u200b\u5c1d\u8bd5\u200b\u8fd0\u884c\u200b Docker \u200b\u5bb9\u5668\u200b\u65f6\u200b\u51fa\u73b0\u200b\u5982\u4e0b\u200b\u9519\u8bef\u200b\uff1a
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused \"process_linux.go:449: container init caused \\\"join session keyring: create session key: disk quota exceeded\\\"\": unknown.
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a
\u200b\u53c2\u8003\u200b https://github.com/docker/compose/issues/7295#issuecomment-657475590\u3002
Docker \u200b\u9700\u8981\u200b\u83b7\u53d6\u200b\u5230\u200b kernel session key \u200b\u624d\u80fd\u200b\u6b63\u5e38\u200b\u8fd0\u884c\u200b\u3002\u200b\u9996\u5148\u200b\u67e5\u770b\u200b /proc/key-users
\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5206\u6790\u200b\u9650\u989d\u200b\u5361\u200b\u5728\u200b\u4e86\u200b\u54ea\u91cc\u200b\u3002\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u7c7b\u4f3c\u200b\u4e8e\u200b\uff1a
0: 336 335/335 238/1000000 4597/25000000\n 100: 1 1/1 1/50000 9/20000\n 998: 1 1/1 1/50000 9/20000\n100000: 1198 1198/1198 1198/50000 19871/20000\n100101: 2 2/2 2/50000 18/20000\n
\u200b\u5176\u4e2d\u200b\uff1a
\u200b\u6ce8\u610f\u200b\u6700\u540e\u200b\u4e24\u5217\u200b\u3002\u200b\u5982\u679c\u200b\u51fa\u73b0\u200b\u5f88\u200b\u8d34\u8fd1\u200b\u9650\u989d\u200b\u7684\u200b\u60c5\u51b5\u200b\uff0c\u200b\u9700\u8981\u200b\u8c03\u6574\u200b /proc/sys/kernel/keys/maxbytes
\u200b\u548c\u200b /proc/sys/kernel/keys/maxkeys
\u200b\u7684\u200b\u503c\u200b\u3002root \u200b\u4e0b\u200b echo \u200b\u4e00\u4e2a\u200b\u66f4\u5927\u200b\u7684\u200b\u6570\u200b\u8fdb\u53bb\u200b\u5373\u53ef\u200b\u3002
root_maxbytes
\u200b\u548c\u200b root_maxkeys
\u200b\u4e00\u822c\u200b\u90fd\u200b\u975e\u5e38\u200b\u5927\u200b\uff08\u200b\u89c1\u200b key-users
\u200b\u7684\u200b\u7b2c\u4e00\u884c\u200b\uff09\uff0c\u200b\u53ef\u4ee5\u200b\u4e0d\u7528\u200b\u7ba1\u200b\u3002
\u200b\u5982\u679c\u200b\u9700\u8981\u200b\u6301\u4e45\u200b\u5316\u200b\u914d\u7f6e\u200b\uff0c\u200b\u8bf7\u200b\u6dfb\u52a0\u200b /etc/sysctl.d/20-keys.conf
\uff0c\u200b\u5199\u5165\u200b\u4e0b\u9762\u200b\u7684\u200b\u5185\u5bb9\u200b\uff1a
kernel.keys.maxbytes = 500000\nkernel.keys.maxkeys = 5000\n
\u200b\u7136\u540e\u200b\u6267\u884c\u200b sysctl --system
\u3002
\u200b\u4ece\u200b Proxmox VE 6 \u200b\u5347\u7ea7\u200b\u5230\u200b Proxmox VE 7 \u200b\u540e\u200b\u914d\u7f6e\u200b\u4e86\u200b keyctl=1,nesting=1
\u200b\u7684\u200b\u5bb9\u5668\u200b\u65e0\u6cd5\u200b\u542f\u52a8\u200b docker.service
\uff0cjournalctl \u200b\u8f93\u51fa\u200b\u6709\u200b Devices cgroup isn't mounted
\u3002
\u200b\u539f\u56e0\u200b\uff1aProxmox VE 7 \u200b\u9ed8\u8ba4\u200b\u5f00\u542f\u200b\u4e86\u200b unified cgroup hierarchy\uff08\u200b\u5373\u200b cgroup v2\uff09\uff0c\u200b\u800c\u200b\u65e7\u7248\u672c\u200b\u7684\u200b Docker \u200b\u9700\u8981\u200b\u539f\u6765\u200b\u7684\u200b cgroup v1 \u200b\u7ed3\u6784\u200b\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u5728\u200b\u5185\u6838\u200b\u53c2\u6570\u200b\u4e2d\u200b\u52a0\u4e0a\u200b systemd.unified_cgroup_hierarchy=0
\uff0c\u200b\u7136\u540e\u200b\u91cd\u542f\u200b\u4e3b\u673a\u200b\u3002\u200b\u5177\u4f53\u64cd\u4f5c\u200b\u662f\u200b\u5728\u200b /etc/default/grub
\u200b\u7684\u200b GRUB_CMDLINE_LINUX_DEFAULT
\u200b\u540e\u9762\u200b\u8865\u200b\u4e0a\u200b systemd.unified_cgroup_hierarchy=0
\uff0c\u200b\u7136\u540e\u200b\u6267\u884c\u200b update-grub
\u200b\u5e76\u200b\u91cd\u542f\u200b\u3002
Note
Docker Engine 20.10 \u200b\u5f00\u59cb\u200b\u652f\u6301\u200b cgroup v2\uff0c\u200b\u4f46\u662f\u200b\u5230\u200b\u5168\u9762\u200b\u5e94\u7528\u200b\u8fd8\u200b\u6709\u70b9\u200b\u65e9\u200b\uff0c\u200b\u6240\u4ee5\u200b\u8fd9\u4e2a\u200b\u517c\u5bb9\u200b\u8bbe\u7f6e\u200b\u5148\u5f00\u200b\u7740\u200b\u3002
"},{"location":"traps/#systemd-\u670d\u52a1\u56e0\u7a7a\u95f4\u4e0d\u8db3\u542f\u52a8\u5931\u8d25","title":"Systemd \u200b\u670d\u52a1\u200b\u56e0\u200b\u300c\u200b\u7a7a\u95f4\u200b\u4e0d\u8db3\u200b\u300d\u200b\u542f\u52a8\u200b\u5931\u8d25\u200b\u3002","text":"\u200b\u75c7\u72b6\u200b\uff1a\u200b\u91cd\u8981\u200b\u670d\u52a1\u200b\u65e0\u6cd5\u200b\u542f\u52a8\u200b\uff0c\u200b\u63d0\u793a\u200b Failed to add /run/systemd/ask-password to directory watch: No space left on device
\uff0c\u200b\u4f46\u662f\u200b df
\u200b\u663e\u793a\u200b\u5269\u4f59\u200b\u7a7a\u95f4\u200b\u8fd8\u6709\u200b\u5f88\u591a\u200b\u3002
\u200b\u53ef\u80fd\u200b\u7684\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u8bbe\u7f6e\u200b sysctl:
fs.inotify.max_user_watches = 1048576\n
\u200b\u56e0\u4e3a\u200b\u51fa\u200b\u95ee\u9898\u200b\u7684\u200b\u5bb9\u5668\u200b\u88ab\u200b\u540c\u5b66\u200b\u5220\u6389\u200b\u4e86\u200b\uff0c\u200b\u6240\u4ee5\u200b\u672a\u200b\u9a8c\u8bc1\u200b\u662f\u5426\u200b\u80fd\u591f\u200b\u89e3\u51b3\u95ee\u9898\u200b\u3002
"},{"location":"traps/#\u56fe\u5f62\u754c\u9762\u4e2d\u8fd0\u884c\u7684\u8fdb\u7a0b\u6570\u6700\u591a\u53ea\u80fd\u8dd1-4915-\u4e2a","title":"\u56fe\u5f62\u754c\u9762\u200b\u4e2d\u200b\u8fd0\u884c\u200b\u7684\u200b\u8fdb\u7a0b\u200b\u6570\u6700\u591a\u200b\u53ea\u80fd\u200b\u8dd1\u200b 4915 \u200b\u4e2a","text":"\u200b\u6240\u6709\u200b\u56fe\u5f62\u754c\u9762\u200b\u8fdb\u7a0b\u200b cgroup \u200b\u90fd\u200b\u6302\u200b\u5728\u200b lightdm.service \u200b\u7684\u200b\u9650\u5236\u200b\u4e0b\u9762\u200b\uff0c\u200b\u800c\u200b systemd \u200b\u9ed8\u8ba4\u200b\u914d\u7f6e\u200b\u9650\u989d\u200b\u4e3a\u200b 4915\u3002
\u200b\u7b80\u5355\u200b\u5feb\u901f\u200b\u7684\u200b\u4fee\u6539\u200b\u547d\u4ee4\u200b\uff1asystemctl set-property lightdm.service TasksMax=18000
\u200b\u66f4\u200b\u8be6\u7ec6\u200b\u7684\u200b\u6307\u5bfc\u200b\u53c2\u89c1\u200b https://www.suse.com/support/kb/doc/?id=000015901
"},{"location":"traps/#\u4f7f\u7528-ubuntu-cloud-image-\u955c\u50cf-import-\u7684\u865a\u62df\u673a\u542f\u52a8\u5361\u6b7b","title":"\u4f7f\u7528\u200b Ubuntu cloud-image \u200b\u955c\u50cf\u200b import \u200b\u7684\u200b\u865a\u62df\u673a\u200b\u542f\u52a8\u200b\u5361\u6b7b","text":"\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u624b\u52a8\u200b\u6302\u8f7d\u200b\uff08lvchange -ay \u200b\u78c1\u76d8\u200b\u540d\u200b
\uff09\uff0c\u200b\u4f7f\u7528\u200b fdisk -l
\u200b\u68c0\u67e5\u200b\u5206\u533a\u8868\u200b\u662f\u5426\u200b\u6709\u200b\u95ee\u9898\u200b\u3002\u200b\u5982\u679c\u200b\u6709\u200b\uff08\u200b\u63d0\u793a\u200b The primary GPT table is corrupt, but the backup appears OK, so that will be used\uff09\uff0c\u200b\u4f7f\u7528\u200b fdisk
\u200b\u6253\u5f00\u200b\uff0c\u200b\u518d\u200b\u6267\u884c\u200b w
\u200b\u5229\u7528\u200b\u5907\u4efd\u200b\u5206\u533a\u8868\u200b\u5199\u5165\u200b\u4fee\u590d\u200b\u3002
tcpdump
\u200b\u8fd0\u884c\u200b\u65e0\u200b\u8f93\u51fa","text":"2021/12/19 \u200b\u51cc\u6668\u200b\u6709\u200b\u540c\u5b66\u200b\u53cd\u9988\u200b\u8be5\u200b\u95ee\u9898\u200b\uff0c\u200b\u7ecf\u200b\u68c0\u67e5\u200b\u95ee\u9898\u200b\u4e3a\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7684\u200b apparmor \u200b\u89c4\u5219\u200b\u963b\u6b62\u200b\u4e86\u200b tcpdump
\u200b\u5411\u200b stdout
/stderr
\u200b\u5bfc\u81f4\u200b\u7684\u200b\u3002\u200b\u7b80\u5355\u200b\u7684\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u5982\u4e0b\u200b\uff1a
cd /etc/apparmor.d\nsudo mv usr.sbin.tcpdump disable/\nsudo apparmor_parser -R /etc/apparmor.d/disable/\n
\u200b\u4e4b\u540e\u200b\u9700\u8981\u200b\u4fee\u6539\u200b\u955c\u50cf\u200b\uff0c\u200b\u79fb\u9664\u200b usr.sbin.tcpdump
\u200b\u89c4\u5219\u200b\u3002
/proc/<\u200b\u5f88\u5927\u200b\u7684\u200b PID>/mounts
\u200b\u83b7\u5f97\u200b VMIDecho 1 > /sys/fs/cgroup/lxc/<VMID>/cgroup.kill
cgroup.kill
\u200b\u4f1a\u200b\u963b\u6b62\u200b cgroup \u200b\u5185\u90e8\u200b\u8fdb\u7a0b\u200b\u521b\u5efa\u200b\u65b0\u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u5e76\u4e14\u200b\u53d1\u9001\u200b SIGKILL\uff09\u3002\u200b\u5982\u679c\u200b\u6709\u200b\u9700\u8981\u200b\uff0c\u200b\u5355\u72ec\u200b\u6dfb\u52a0\u200b\u66f4\u200b\u4e25\u683c\u200b\u7684\u200b\u9650\u989d\u200b\uff08\u200b\u5728\u200b\u6587\u4ef6\u200b /etc/pve/lxc/<VMID>.conf
\u200b\u6dfb\u52a0\u200b lxc.cgroup2.pids.max: 2000
\uff09lvchange -ay
\u200b\u6fc0\u6d3b\u200b\u7528\u6237\u200b\u76d8\u200blxc-start -n <vmid> -F -I DEBUG -o debug.log
2023/04/07 \u200b\u9047\u5230\u200b\u4e00\u4e2a\u200b\u76d8\u5199\u200b\u6ee1\u200b\uff0c\u200b\u7ed3\u679c\u200b\u5199\u200b\u4e0d\u4e86\u200b\u9700\u8981\u200b\u7ed9\u200b systemd-network \u200b\u7684\u200b\u4e34\u65f6\u6587\u4ef6\u200b\uff0c\u200b\u7136\u540e\u200b\u542f\u52a8\u200b\u5931\u8d25\u200b\u7684\u200b\uff0c\u200b\u4e4b\u540e\u200b\u7ed9\u200b postcreation \u200b\u7684\u200b tune2fs \u200b\u8bbe\u7f6e\u200b\u4e86\u200b\u4fdd\u7559\u200b 1% \u200b\u7684\u200b\u9884\u7559\u200b\u7a7a\u95f4\u200b\uff08\u200b\u800c\u200b\u4e0d\u662f\u200b\u4e0d\u200b\u4fdd\u7559\u200b\uff09\u3002
"},{"location":"traps/#\u5b9a\u65f6\u4efb\u52a1\u8c03\u6574","title":"\u5b9a\u65f6\u200b\u4efb\u52a1\u200b\u8c03\u6574","text":"\u200b\u5982\u679c\u200b\u53d1\u73b0\u200b\u51cc\u6668\u200b 0 \u200b\u70b9\u200b\u6216\u8005\u200b\u51cc\u6668\u200b 6 \u200b\u81f3\u200b 7 \u200b\u70b9\u200b iowait% \u200b\u4ee5\u53ca\u200b IO time \u200b\u8fc7\u9ad8\u200b\uff0c\u200b\u5bf9\u200b\u6240\u6709\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u5bb9\u5668\u200b\u6267\u884c\u200b\u4ee5\u4e0b\u200b\u64cd\u4f5c\u200b\uff1a
See 2023 \u200b\u5e74\u200b 1 \u200b\u6708\u200b 28 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u8bb0\u5f55\u200b.
# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- systemctl disable man-db.timer\n# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- systemctl disable apt-daily-upgrade.timer\n# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- bash -c 'echo xxx && [ ! -f \"/etc/systemd/system/logrotate.timer.d/vlab.conf\" ] && mkdir -p /etc/systemd/system/logrotate.timer.d && echo -e \"[Timer]\\nRandomizedDelaySec=3h\" > /etc/systemd/system/logrotate.timer.d/vlab.conf && systemctl daemon-reload'\n
"},{"location":"traps/#web-\u53ca\u7528\u6237\u754c\u9762","title":"Web \u200b\u53ca\u200b\u7528\u6237\u754c\u9762","text":""},{"location":"traps/#\u521b\u5efa\u865a\u62df\u673a\u51fa\u73b0-connection-aborted-remotedisconnectedremote-end-closed-connection-without-response","title":"\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u51fa\u73b0\u200b Connection aborted, RemoteDisconnected('Remote end closed connection without response')","text":"\u200b\u67e5\u770b\u200b pv1 \u200b\u4e0a\u200b\u7684\u200b systemctl status pveproxy
\u200b\u53ef\u89c1\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff1a
Oct 27 17:13:56 pv1 pveproxy[34382]: problem with client ::ffff:172.30.0.2; rsa_padding_check_pkcs1_type_1: invalid padding\n
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u76f4\u63a5\u200b reload django \u200b\u5e94\u7528\u200b\u5373\u53ef\u200b\uff0c\u200b\u539f\u56e0\u200b\u53ca\u200b\u590d\u73b0\u200b\u65b9\u6cd5\u200b\u672a\u77e5\u200b\u3002
"},{"location":"traps/#hpe-\u670d\u52a1\u5668-ipmihpe-ilo","title":"HPE \u200b\u670d\u52a1\u5668\u200b IPMI\uff08HPE iLO\uff09","text":"HPE iLO \u200b\u56fa\u4ef6\u200b\u4e0b\u8f7d\u200b\uff08\u200b\u5b98\u65b9\u200b\u94fe\u63a5\u200b\uff0c\u200b\u514d\u200b\u767b\u5f55\u200b\uff09\uff1ahttps://pingtool.org/latest-hp-ilo-firmwares/
P.S. \u200b\u5982\u679c\u200b\u94fe\u63a5\u200b\u6302\u200b\u4e86\u200b\uff0c\u200b\u8bf7\u200b\u5584\u7528\u200b\u5404\u79cd\u200b Internet Archive \u200b\u4ee5\u53ca\u200b Google Web Cache\u3002
"},{"location":"traps/#\u66f4\u65b0-ilo-\u56fa\u4ef6\u62a5\u9519-the-file-signature-is-invalid","title":"\u66f4\u65b0\u200b iLO \u200b\u56fa\u4ef6\u200b\u62a5\u9519\u200b The file signature is invalid.","text":"\u200b\u66f4\u65b0\u200b iLO \u200b\u56fa\u4ef6\u200b\u65f6\u62a5\u200b\u9519\u200b The file signature is invalid. Make sure you are using a valid, signed flash file and try again.
\u200b\u539f\u56e0\u200b\uff1a\u200b\u8de8\u200b\u7248\u672c\u200b\u7684\u200b iLO \u200b\u56fa\u4ef6\u200b\u6709\u65f6\u5019\u200b\u9700\u8981\u200b\u5148\u200b\u66f4\u65b0\u200b\u5230\u200b\u67d0\u4e2a\u200b\u201c\u200b\u4e2d\u95f4\u200b\u7248\u672c\u200b\u201d\uff0c\u200b\u4f8b\u5982\u200b iLO 5 1.40 \u200b\u4ee5\u524d\u200b\u7684\u200b\u7248\u672c\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u66f4\u65b0\u200b\u5230\u200b 2.10 \u200b\u4ee5\u540e\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u200b\u66f4\u65b0\u200b\u5230\u200b 1.40 \u200b\u624d\u80fd\u200b\u518d\u200b\u66f4\u65b0\u200b\u5230\u200b 2.10\u3002
\u200b\u53c2\u8003\u8d44\u6599\u200b\uff1ahttps://community.hpe.com/t5/ProLiant-Servers-ML-DL-SL/ILO5-firware-update-fails-quot-the-file-siganture-is-invalid/td-p/7085862
"},{"location":"backup/","title":"\u5907\u4efd","text":"\u200b\u6211\u4eec\u200b\u5728\u200b pv1 \u200b\u4e0a\u200b\u540c\u65f6\u200b\u5b89\u88c5\u200b\u4e86\u200b Proxmox Backup Server \u200b\u76f8\u5173\u200b\u8f6f\u4ef6\u200b\u4ee5\u200b\u63d0\u4f9b\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u5907\u4efd\u200b\u670d\u52a1\u200b\u3002
/etc/apt/sources.list.d/pve.listdeb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription\ndeb https://mirrors.ustc.edu.cn/proxmox/debian/pbs bookworm pbs-no-subscription\n
\u200b\u7531\u4e8e\u200b PBS \u200b\u4e0d\u80fd\u200b\u52a0\u5165\u200b PVE \u200b\u96c6\u7fa4\u200b\uff0c\u200b\u53ea\u80fd\u200b\u6dfb\u52a0\u200b\u4e3a\u200b\u4e00\u4e2a\u200b Storage location\uff0c\u200b\u81ea\u7136\u200b\u4e5f\u200b\u65e0\u6cd5\u200b\u4f7f\u7528\u200b PVE \u200b\u7684\u200b\u8d26\u53f7\u200b\u7cfb\u7edf\u200b\u3002\u200b\u6211\u4eec\u200b\u76ee\u524d\u200b\u7684\u200b\u505a\u6cd5\u200b\u662f\u200b\u6bcf\u6b21\u200b\u9700\u8981\u200b\u767b\u5f55\u200b web \u200b\u754c\u9762\u200b\u65f6\u5148\u200b SSH \u200b\u4e0a\u53bb\u200b\u5c06\u200b root \u200b\u5bc6\u7801\u200b\u6539\u6389\u200b\uff0c\u200b\u7136\u540e\u200b\u4f7f\u7528\u200b root \u200b\u767b\u5f55\u200b\uff0c\u200b\u5728\u200b\u64cd\u4f5c\u200b\u5b8c\u6210\u200b\u540e\u200b\u518d\u200b passwd -d root
\u3002\u200b\u5982\u679c\u200b\u4f60\u200b\u9700\u8981\u200b\u7ecf\u5e38\u200b\u767b\u5f55\u200b PBS \u200b\u7684\u8bdd\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7ed9\u200b\u81ea\u5df1\u200b\u5efa\u200b\u4e00\u4e2a\u200b\u8d26\u53f7\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5b83\u200b\u4e0e\u200b PVE \u200b\u8d26\u53f7\u200b\u662f\u200b\u72ec\u7acb\u200b\u7684\u200b\u3002
\u200b\u7b2c\u4e00\u4ee3\u200b Vlab \u200b\u8fdc\u7a0b\u200b\u865a\u62df\u200b\u684c\u9762\u200b\u5e73\u53f0\u200b\u5728\u200b 2019 \u200b\u5e74\u200b 6 \u200b\u6708\u200b\u7531\u200b\u674e\u5b50\u200b\u5929\u200b\u5b66\u957f\u200b\u521d\u6b65\u200b\u914d\u7f6e\u200b\u597d\u200b\uff0c\u200b\u7ecf\u8fc7\u200b @iBug \u200b\u548c\u200b @taoky \u200b\u7b49\u200b\u4eba\u200b\u8fdb\u4e00\u6b65\u200b\u8c03\u6574\u200b\u5e76\u200b\u7f16\u5199\u200b\u524d\u7aef\u200b\u7ba1\u7406\u7cfb\u7edf\u200b\u540e\u200b\uff0c\u200b\u4e8e\u200b 2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u5b66\u671f\u5f00\u59cb\u200b\u5c0f\u200b\u8303\u56f4\u200b\u6d4b\u8bd5\u200b\uff08\u200b\u6b63\u5f0f\u200b\u4e0a\u7ebf\u200b\uff09\u3002
"},{"location":"history/gen1/#hardware","title":"\u786c\u4ef6","text":"\u200b\u7b2c\u4e00\u4ee3\u200b Vlab \u200b\u670d\u52a1\u5668\u200b\u5305\u542b\u200b\u53cc\u8def\u200b Intel Xeon E5-2630 v4 \u200b\u5904\u7406\u5668\u200b\uff08\u200b\u5171\u200b 20 \u200b\u6838\u5fc3\u200b\u300140 \u200b\u7ebf\u7a0b\u200b\uff09\uff0c\u200b\u5b89\u88c5\u200b\u5185\u5b58\u200b 128 GB\uff088 x 16 GB DDR4 2400 ECC\uff09\u3002\u200b\u786c\u76d8\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u4e00\u5757\u200b Intel Optane 905P 480GB\uff08\u200b\u7cfb\u7edf\u76d8\u200b\uff0cswap \u200b\u548c\u200b\u7f13\u5b58\u200b\uff09\u200b\u548c\u200b\u56db\u5757\u200b HPE 2.4TB SAS \u200b\u786c\u76d8\u200b\u3002
\u200b\u53e6\u5916\u200b\u8be5\u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\u8fd8\u6709\u200b\u4e00\u5757\u200b NVIDIA Tesla P4 GPU\uff0c\u200b\u539f\u672c\u200b\u8ba1\u5212\u200b\u7528\u4e8e\u200b\u52a0\u901f\u200b\u6df1\u5ea6\u200b\u5b66\u4e60\u200b\u7b49\u200b\u8d1f\u8f7d\u200b\uff0c\u200b\u5b9e\u9645\u4e0a\u200b\u7531\u4e8e\u200b\u627f\u62c5\u200b\u7684\u200b\u8bfe\u7a0b\u200b\u5b9e\u9a8c\u200b\u4efb\u52a1\u200b\u7c7b\u578b\u200b\u4e0d\u540c\u200b\uff0c\u200b\u5e76\u672a\u200b\u6d3e\u4e0a\u7528\u573a\u200b\u3002
"},{"location":"history/gen1/#operating-system","title":"\u64cd\u4f5c\u7cfb\u7edf","text":"\u200b\u642d\u5efa\u200b\u8fd9\u53f0\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u5b66\u957f\u200b\u9009\u62e9\u200b\u4e86\u200b Ubuntu 18.04 LTS\uff0c\u200b\u4f46\u662f\u200b\u5c06\u200b\u5185\u6838\u200b\u66ff\u6362\u200b\u4e3a\u200b 3.10.0-514.61.1.el7.x86_64
\uff08\u200b\u6765\u81ea\u200b RHEL 7.3 EUS\uff09\uff0c\u200b\u539f\u56e0\u200b\u662f\u200b NVIDIA \u200b\u7684\u200b\u9a71\u52a8\u200b\uff08\u200b\u5185\u6838\u6a21\u5757\u200b\uff09\u200b\u9700\u8981\u200b\u7f16\u8bd1\u200b\uff0c\u200b\u800c\u4e14\u200b\u5bf9\u200b\u5185\u6838\u200b\u7248\u672c\u200b\u975e\u5e38\u200b\u654f\u611f\u200b\uff0c\u200b\u4e3a\u4e86\u200b\u4fdd\u8bc1\u200b\u8fd9\u4e2a\u200b\u96be\u6574\u200b\u7684\u200b\u9a71\u52a8\u200b\u80fd\u200b\u6b63\u5e38\u200b\u4f7f\u7528\u200b\uff0c\u200b\u4e0d\u200b\u65b9\u4fbf\u200b\u5c06\u200b\u5185\u6838\u200b\u4ea4\u7531\u200b apt \u200b\u7ba1\u7406\u200b\u5347\u7ea7\u200b\u3002
\u200b\u91c7\u7528\u200b LXD \u200b\u5bb9\u5668\u200b\uff0c\u200b\u8fd0\u884c\u200b\u4e00\u4e2a\u200b\u5b9a\u5236\u200b\u7684\u200b\u955c\u50cf\u200b\uff08Ubuntu Minimal \u200b\u5b89\u88c5\u200b\u4e86\u200b Xfce \u200b\u548c\u200b Xilinx Vivado\uff09\uff0c\u200b\u4e3a\u200b 2019 \u200b\u5e74\u200b\u79cb\u5b63\u200b\u5b66\u671f\u200b\u7684\u200b\u300a\u200b\u6570\u5b57\u7535\u8def\u200b\u5b9e\u9a8c\u200b\u300b\u200b\u8bfe\u7a0b\u200b\u63d0\u4f9b\u200b\u670d\u52a1\u200b\u3002
"},{"location":"history/gen1/#storage","title":"\u5b58\u50a8","text":"\u200b\u6700\u200b\u5f00\u59cb\u200b\uff082019 \u200b\u5e74\u200b\u6691\u5047\u200b\u671f\u95f4\u200b\uff09\u200b\u6ca1\u6709\u200b\u4efb\u4f55\u200b\u7279\u522b\u200b\u7684\u200b\u5b58\u50a8\u200b\u67b6\u6784\u200b\uff0c\u200b\u76f4\u63a5\u200b\u7528\u200b\u7684\u200b LXD \u200b\u7684\u200b Directory\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u7eaf\u200b\u76ee\u5f55\u200b\uff09\u200b\u5b58\u50a8\u200b\uff0c\u200b\u540e\u6765\u200b\u5728\u200b\u6b63\u5f0f\u200b\u4e0a\u7ebf\u200b\u524d\u200b\u7531\u200b iBug \u200b\u66ff\u6362\u6210\u200b\u4e86\u200b ZFS\uff0c\u200b\u5e76\u200b\u4e00\u76f4\u200b\u8fd0\u884c\u200b\u4e0b\u53bb\u200b\u3002
"},{"location":"history/gen1/#follow-ups","title":"\u540e\u7eed","text":"\u200b\u8fd9\u53f0\u200b\u673a\u5668\u200b\u5728\u200b 2020 \u200b\u5e74\u200b 3 \u200b\u6708\u5e95\u200b\u88ab\u200b\u91cd\u88c5\u200b\u4e3a\u200b Proxmox VE \u200b\u7cfb\u7edf\u200b\uff0c\u200b\u5185\u5b58\u200b\u7531\u200b 128 GB \u200b\u5347\u7ea7\u200b\u5230\u200b 160 GB\uff0c\u200b\u91cd\u65b0\u200b\u6307\u6d3e\u200b hostname \u200b\u4e3a\u200b pv0\uff0c\u200b\u8ba1\u5212\u200b\u662f\u200b\u63d0\u4f9b\u200b GPU \u200b\u5bb9\u5668\u200b\u670d\u52a1\u200b\uff0c\uff0c\u200b\u4e0d\u8fc7\u200b\u540e\u6765\u200b\u53d1\u73b0\u200b\u7b2c\u4e8c\u4ee3\u200b\u7684\u200b\u673a\u5668\u200b\u65e0\u6cd5\u200b\u52a0\u88c5\u200b GPU \u200b\u4e4b\u540e\u200b\u5c31\u200b\u6539\u4e3a\u200b\u7528\u4f5c\u200b\u6211\u4eec\u200b\u7684\u200b\u5f00\u53d1\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u4e86\u200b\uff0c\u200b\u4e0d\u200b\u63d0\u4f9b\u200b\u4efb\u4f55\u200b\u6b63\u5f0f\u200b\u670d\u52a1\u200b\uff08\u200b\u4e5f\u200b\u6ca1\u6709\u200b\u63a5\u5165\u200b\u5149\u7ea4\u200b\u5185\u200b\u7f51\u200b\uff09\u3002
"},{"location":"kvm/cloud-init/","title":"\u865a\u62df\u673a\u200b cloud-init \u200b\u914d\u7f6e\u200b\u548c\u200b\u4f7f\u7528","text":""},{"location":"kvm/cloud-init/#\u914d\u7f6e\u5e26\u6709-cloud-init-\u7684\u955c\u50cf","title":"\u914d\u7f6e\u200b\u5e26\u6709\u200b cloud-init \u200b\u7684\u200b\u955c\u50cf","text":""},{"location":"kvm/cloud-init/#\u521b\u5efa\u865a\u62df\u673a\u5e76\u5b89\u88c5-cloud-init","title":"\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u5e76\u200b\u5b89\u88c5\u200b cloud-init","text":"\u200b\u4ece\u200b\u672c\u5730\u200b\u9009\u62e9\u200b iso \u200b\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u88c5\u200b\u597d\u200b\u7cfb\u7edf\u200b\u540e\u200b\u8fdb\u5165\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u5b89\u88c5\u200b cloud-init\u3002\u200b\u5982\u679c\u200b\u5728\u200b\u88c5\u200b\u7cfb\u7edf\u200b\u65f6\u200b\u6ca1\u6709\u200b\u6362\u6e90\u200b\uff0c\u200b\u5c31\u200b\u5148\u6362\u6e90\u200b\u3002
sudo apt install cloud-init # Ubuntu\nsudo yum install cloud-init # CentOS\n
cloud-init \u200b\u7684\u200b\u914d\u7f6e\u200b\u4fe1\u606f\u200b\u5728\u200b\u6587\u4ef6\u200b /etc/cloud/cloud.cfg.d/*.cfg
\u200b\u548c\u200b /etc/cloud/cloud.cfg
\u200b\u4e2d\u200b\u3002cloud-init \u200b\u4ee5\u200b\u5b57\u6bcd\u200b\u987a\u5e8f\u200b\u8bfb\u53d6\u200b\u6240\u6709\u200b\u7684\u200b *.cfg
\u200b\u6587\u4ef6\u200b\uff0c\u200b\u76f8\u540c\u200b\u53c2\u6570\u200b\u540e\u9762\u200b\u7684\u200b\u6587\u4ef6\u200b\u4f1a\u200b\u8986\u76d6\u200b\u524d\u9762\u200b\u7684\u200b\u6587\u4ef6\u200b\u3002
\u200b\u5728\u200b cloud.cfg \u200b\u6587\u4ef6\u200b\u4e2d\u200b\uff0c\u200b\u4efb\u52a1\u200b\u4ee5\u200b module \u200b\u5f62\u5f0f\u200b\u7ec4\u7ec7\u200b. \u200b\u4f8b\u5982\u200b\u6307\u5b9a\u200b set_hostname
\u200b\u7684\u200b moudle \u200b\u65f6\u200b\uff0ccloud-init \u200b\u4f1a\u200b\u6267\u884c\u200b hostname \u200b\u4efb\u52a1\u200b\uff0c\u200b\u5177\u4f53\u200b\u7684\u200b\u914d\u7f6e\u200b\u53c2\u6570\u200b\u7531\u200b metadata \u200b\u6307\u5b9a\u200b\u3002
\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5728\u200b\u6b64\u200b\u6587\u4ef6\u200b\u4e2d\u200b\u5220\u9664\u200b\u4e0d\u200b\u9700\u8981\u200b\u7684\u200b\u6a21\u5757\u200b, \u200b\u4f8b\u5982\u200b disable-ec2-metadata
\u200b\u548c\u200b byobu
\u200b\u7b49\u200b\u3002
cloud_config_modules:\n- snap\n- snap_config\n- ubuntu-advantage\n- disable-ec2-metadata\n- byobu\n\ncloud_final_modules:\n- snappy\n- fan\n- landscape\n- lxd\n- puppet\n- chef\n- mcollective\n- salt-minion\n- rightscale_userdata\n
cloud-init \u200b\u7684\u200b\u6570\u636e\u6587\u4ef6\u200b\u653e\u5728\u200b /var/lib/cloud/data
\u200b\u4e2d\u200b\uff0c \u200b\u65e5\u5fd7\u200b\u6587\u4ef6\u200b\u653e\u5728\u200b /var/log/cloud-init-output.log
(\u200b\u6bcf\u200b\u9636\u6bb5\u200b\u8f93\u51fa\u200b)\uff0c /var/log/cloud-init.log
(\u200b\u6bcf\u200b\u4e00\u4e2a\u200b\u64cd\u4f5c\u200b\u66f4\u200b\u8be6\u7ec6\u200b\u7684\u200b\u8c03\u8bd5\u200b\u65e5\u5fd7\u200b)\uff0c /run/cloud-init
\u200b\u51b3\u5b9a\u200b\u5f00\u542f\u200b\u548c\u200b\u5173\u95ed\u200b\u81ea\u8eab\u200b\u7684\u200b\u67d0\u4e9b\u200b\u529f\u80fd\u200b\u3002
Proxmox \u200b\u4f1a\u200b\u5bf9\u200b\u521b\u5efa\u200b\u7684\u200b\u65b0\u200b\u865a\u62df\u673a\u200b\u81ea\u52a8\u200b\u5206\u914d\u200b\u4e0d\u540c\u200b\u7684\u200b MAC \u200b\u5730\u5740\u200b\u3002
\u200b\u4f46\u662f\u200b\u5bf9\u4e8e\u200b Ubuntu\uff0c\u200b\u4ece\u200b\u7edf\u4e00\u200b\u6a21\u677f\u200b\u4e2d\u200b\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u6709\u200b\u548c\u200b\u6a21\u677f\u200b\u76f8\u540c\u200b\u7684\u200b machine-id\uff0c\u200b\u865a\u62df\u673a\u200b\u4f7f\u7528\u200b\u6b64\u200b machine-id \u200b\u6765\u200b\u83b7\u53d6\u200b DHCP \u200b\u7684\u200b lease\uff0c\u200b\u4ece\u200b\u5bfc\u81f4\u200b\u591a\u4e2a\u200b\u865a\u62df\u673a\u200b\u7ade\u4e89\u200b\u540c\u4e00\u4e2a\u200b IP \u200b\u5730\u5740\u200b\u3002
\u200b\u89e3\u51b3\u200b\u6b64\u200b\u95ee\u9898\u200b\u7684\u200b\u65b9\u6cd5\u200b\u662f\u200b\u6587\u4ef6\u200b /etc/machine-id
\u200b\u5220\u9664\u200b\uff0c\u200b\u91cd\u65b0\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u540c\u540d\u200b\u7a7a\u767d\u200b\u6587\u4ef6\u200b
sudo rm /etc/machine-id\nsudo touch /etc/machine-id\n
\u200b\u4e4b\u540e\u200b\uff0c\u200b\u8f6c\u200b\u5230\u200b\u6587\u4ef6\u200b /var/lib/dbus/machine-id
\uff0c\u200b\u6b64\u200b\u6587\u4ef6\u200b\u4f1a\u200b\u5728\u200b\u6bcf\u6b21\u200b\u865a\u62df\u673a\u200b\u91cd\u542f\u200b\u4e4b\u540e\u200b\u5c06\u200b machine-id \u200b\u590d\u5236\u5230\u200b /etc/machine-id
\u200b\u4e2d\u200b\u3002 \u200b\u6240\u4ee5\u200b\u5c06\u200b\u6b64\u200b\u6587\u4ef6\u200b\u5220\u9664\u200b\uff0c\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b /etc/machine-id
\u200b\u7684\u200b\u7b26\u53f7\u200b\u94fe\u63a5\u200b\u5230\u200b\u6b64\u5904\u200b\u3002
sudo rm /var/lib/dbus/machine-id\nsudo ln -s /etc/machine-id /var/lib/dbus/machine-id\n
\u200b\u7136\u540e\u200b\u5c06\u200b\u6b64\u200b\u865a\u62df\u200b\u673a\u5173\u200b\u673a\u200b\uff08\u200b\u4e0d\u662f\u200b\u91cd\u542f\u200b\uff0c\u200b\u5426\u5219\u200b\u4f1a\u200b\u751f\u6210\u200b\u65b0\u200b\u7684\u200b machine-id\uff09\uff0c\u200b\u5236\u4f5c\u200b\u4e3a\u200b\u6a21\u677f\u200b\u3002
"},{"location":"kvm/cloud-init/#\u65b9\u6cd5-2","title":"\u65b9\u6cd5\u200b 2","text":"\u200b\u4fee\u6539\u200b DHCP \u200b\u7684\u200b identifier\uff0c/etc/netplan/
\u200b\u4e0b\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5728\u200b network \u200b\u4e0b\u200b\u7684\u200b ethernets \u200b\u4e0b\u200b\u7684\u200b\u6761\u76ee\u200b\u589e\u52a0\u200b dhcp-identifier: mac
\uff0c\u200b\u5373\u53ef\u200b\u4f7f\u7528\u200b MAC \u200b\u4f5c\u4e3a\u200b DHCP \u200b\u5206\u914d\u200b IP \u200b\u7684\u200b\u552f\u4e00\u200b\u6807\u5fd7\u200b\u3002 \u200b\u4f46\u200b SSH \u200b\u4e5f\u200b\u4f7f\u7528\u200b machine-id\uff0c\u200b\u6240\u4ee5\u200b\u6b64\u200b\u65b9\u6cd5\u200b\u53ea\u200b\u89e3\u51b3\u200b\u4e86\u200b ip \u200b\u7684\u200b\u95ee\u9898\u200b\u3002
\u200b\u5b89\u88c5\u200b net-tools, openssh-server \u200b\u7b49\u200b\u5de5\u5177\u200b
"},{"location":"kvm/cloud-init/#\u8bbe\u7f6e-username-\u548c-password-\u5931\u8d25\u65e0\u6cd5\u4f7f\u7528\u5728-proxmox-web-\u9875\u9762\u4e0a\u8bbe\u7f6e\u7684-username-\u548c-password-\u767b\u5f55\u865a\u62df\u673a","title":"\u8bbe\u7f6e\u200b username \u200b\u548c\u200b password (\u200b\u5931\u8d25\u200b\uff0c\u200b\u65e0\u6cd5\u200b\u4f7f\u7528\u200b\u5728\u200b proxmox web \u200b\u9875\u9762\u200b\u4e0a\u200b\u8bbe\u7f6e\u200b\u7684\u200b username \u200b\u548c\u200b password \u200b\u767b\u5f55\u200b\u865a\u62df\u673a\u200b)","text":"\u200b\u5b8c\u6210\u200b\u4e0a\u9762\u200b\u7684\u200b\u5de5\u4f5c\u200b\u540e\u200b\u5c06\u200b\u865a\u62df\u200b\u673a\u5173\u200b\u673a\u200b\uff0c\u200b\u5728\u200b proxmox web \u200b\u754c\u9762\u200b hardware \u200b\u680f\u4e2d\u200b add cloudinit Drive\uff0c\u200b\u7136\u540e\u200b\u5728\u200b Cloud-init \u200b\u680f\u4e2d\u200b\u8bbe\u7f6e\u200b\u7528\u6237\u540d\u200b\u548c\u200b\u5bc6\u7801\u200b\uff08\u200b\u5fc5\u987b\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u5426\u5219\u200b\u65e0\u6cd5\u200b\u8fdb\u5165\u200b\u7531\u6b64\u200b\u6a21\u677f\u200b\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\uff09\u3002
"},{"location":"kvm/cloud-init/#cloud-init-\u7b80\u4ecb\u548c\u914d\u7f6e\u89e3\u91ca","title":"cloud-init \u200b\u7b80\u4ecb\u200b\u548c\u200b\u914d\u7f6e\u200b\u89e3\u91ca","text":""},{"location":"kvm/cloud-init/#\u9636\u6bb5","title":"\u9636\u6bb5","text":"cloud-init.cfg \u200b\u6587\u4ef6\u200b\u4e2d\u6709\u200b\u4e94\u4e2a\u200b stage\uff0ccloud-init \u200b\u5206\u4e3a\u200b\u4e94\u4e2a\u200b\u9636\u6bb5\u200b\u8fdb\u884c\u200b\uff0c\u200b\u5177\u4f53\u200b\u4ee5\u200b\u670d\u52a1\u200b\u7684\u200b\u5f62\u5f0f\u200b\u6ce8\u518c\u200b\u5230\u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u6309\u200b\u5982\u4e0b\u200b\u6b21\u5e8f\u200b\u6267\u884c\u200b\uff1a
generator
\u200b\u6b64\u200b\u9636\u6bb5\u200b\u68c0\u6d4b\u200b ci \u200b\u662f\u5426\u200b\u88ab\u200b\u7981\u7528\u200b
local:cloud-init-local.service
\u200b\u5f53\u200b/\u200b\u6302\u8f7d\u200b\u65f6\u200b\u6267\u884c\u200b\uff0c\u200b\u6b64\u200b\u9636\u6bb5\u200b\u7684\u200b\u4efb\u52a1\u200b\u4e3b\u8981\u200b\u662f\u200b\u5b9a\u4f4d\u200b\u672c\u5730\u200b\u6570\u636e\u200b\uff0c\u200b\u5c06\u200b\u7f51\u7edc\u200b\u914d\u7f6e\u200b\u5e94\u7528\u200b\u5230\u200b\u672c\u5730\u200b\u3002
\u200b\u9700\u8981\u200b\u5c06\u200b\u7f51\u7edc\u200b block
\u200b\u6b64\u200b\u9636\u6bb5\u200b\u6ca1\u6709\u200b\u7528\u5230\u200b\u7684\u200b\u6a21\u5757\u200b
network:cloud-init.service
\u200b\u5904\u7406\u200b\u6240\u6709\u200b\u7684\u200b user-data, \u200b\u5305\u62ec\u200b\u4efb\u4f55\u200b #include
or #include-once
, \u200b\u89e3\u538b\u7f29\u200b\u6240\u6709\u200b\u538b\u7f29\u6587\u4ef6\u200b, \u200b\u8fd0\u884c\u200b\u6240\u6709\u200b\u7684\u200b part-handler
config:cloud.config.service
\u200b\u6b64\u200b\u9636\u6bb5\u200b\u4ec5\u200b\u8fd0\u884c\u200b config module, \u200b\u5176\u4ed6\u200b\u9636\u6bb5\u200b\u4e0d\u8d77\u4f5c\u7528\u200b\u7684\u200b\u6a21\u5757\u200b\u90fd\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u9636\u6bb5\u200b\u8fd0\u884c\u200b
final:cloud-final.service
\u200b\u6b64\u200b\u9636\u6bb5\u200b\u8fd0\u884c\u200b\u7528\u6237\u200b\u81ea\u5b9a\u4e49\u200b\u7684\u200b\u9700\u8981\u200b\u5728\u200b\u767b\u5f55\u200b\u7cfb\u7edf\u200b\u540e\u200b\u6267\u884c\u200b\u7684\u200b\u811a\u672c\u200b\u5728\u200b\u6b64\u5904\u200b\u8fd0\u884c\u200b\u3002
\u200b\u6bcf\u4e2a\u200b\u9636\u6bb5\u200b\u4e2d\u200b\u6267\u884c\u200b\u7684\u200b\u4efb\u52a1\u200b\u4ee5\u200b\u6a21\u5757\u200b\u7684\u200b\u5f62\u5f0f\u200b\u5b9a\u4e49\u200b, \u200b\u6a21\u5757\u200b\u6267\u884c\u200b\u7684\u200b\u5177\u4f53\u4efb\u52a1\u200b\u7531\u200b metadata \u200b\u51b3\u5b9a\u200b
"},{"location":"kvm/cloud-init/#user-data","title":"User-Data","text":"cloud-init \u200b\u901a\u8fc7\u200b\u547d\u4ee4\u884c\u200b --cicustom
\u200b\u5c06\u200b\u7528\u6237\u200b\u81ea\u5b9a\u4e49\u200b\u7684\u200b config \u200b\u6587\u4ef6\u200b\u8fdb\u884c\u200b\u914d\u7f6e\u200b
# Syntax\nqm set <vid> --cicustom \"user=<volume>, network=<volume>, meta=<volume>\" \n\n# Example\nqm set 9000 --cicustom \"user=local:snippets/userconfig.yaml\" \n
cicustom \u200b\u6587\u4ef6\u200b\u9700\u8981\u200b\u5728\u200b\u652f\u6301\u200b snippets \u200b\u5e76\u4e14\u200b\u6240\u6709\u200b\u7684\u200b VM \u200b\u90fd\u200b\u80fd\u200b access \u200b\u7684\u200b\u8282\u70b9\u200b\u4e0a\u200b\u3002
\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b snippets: \u200b\u5728\u200b proxmox \u200b\u7684\u200b web \u200b\u754c\u9762\u200b\u4e0a\u200b\u7684\u200b datacenter \u200b\u4e2d\u200b\u70b9\u51fb\u200b\u5b58\u50a8\u200b - add-directory, \u200b\u8bbe\u7f6e\u200b id, \u200b\u9009\u62e9\u200b\u76ee\u5f55\u200b content \u200b\u9009\u62e9\u200b snippets, node \u200b\u9009\u200b ALL (No restrictions)\u3002
"},{"location":"kvm/cloud-init/#\u5173\u4e8e-volumes","title":"\u5173\u4e8e\u200b volumes","text":"local \u200b\u9ed8\u8ba4\u200b\u4f4d\u7f6e\u200b\u4e3a\u200b /var/lib/vz
\uff08\u200b\u5b9a\u4e49\u200b\u5728\u200b\u914d\u7f6e\u6587\u4ef6\u200b /etc/pve/storage.cfg
\u200b\u4e2d\u200b\uff09
cloudinit \u200b\u65e5\u5fd7\u200b\u6587\u4ef6\u200b\u5728\u200b /var/log/cloud-init-ouput.log
\u200b\u4e2d\u200b
\u200b\u901a\u5e38\u200b\u7528\u4e8e\u200b\u4ec5\u200b\u9700\u8981\u200b\u6267\u884c\u200b\u4e00\u4e2a\u200b shell \u200b\u811a\u672c\u200b\u7684\u200b\u65f6\u5019\u200b
\u200b\u683c\u5f0f\u200b\uff1a\u200b\u4ee5\u200b #!
\u200b\u5f00\u59cb\u200b\u6216\u8005\u200b\u5f53\u200b\u4f7f\u7528\u200b MIME \u200b\u5f52\u6863\u200b\u65f6\u4ee5\u200b Content-Type: text/x-shellscript
\u200b\u5f00\u59cb\u200b
\u200b\u793a\u4f8b\u200b
#!/bin/sh\necho \"Hello World. The time is now $(date -R)!\" | tee /root/output.txt\n
\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u7684\u200b /var/lib/cloud/scripts
\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u5b58\u653e\u200b\u8981\u200b\u6267\u884c\u200b\u7684\u200b\u811a\u672c\u200b\u6587\u4ef6\u200b\u3002
\u200b\u5fc5\u987b\u200b\u662f\u200b\u5408\u6cd5\u200b\u7684\u200b yaml \u200b\u683c\u5f0f\u200b
local \u200b\u76ee\u5f55\u200b\u5728\u200b /var/lib/vz
\u200b\u4e0b\u200b\uff08\u200b\u5728\u200b /etc/pve/storage.cfg
\u200b\u4e2d\u200b\u914d\u7f6e\u200b\uff09
\u200b\u683c\u5f0f\u200b: \u200b\u4ee5\u200b #cloud-config
\u200b\u5f00\u59cb\u200b\u6216\u8005\u200b\u5f53\u200b\u4f7f\u7528\u200b MIME \u200b\u65f6\u4ee5\u200b Content-Type: text/cloud-config
\u200b\u5f00\u59cb\u200b
\u200b\u5404\u200b module \u200b\u5bf9\u5e94\u200b\u4e0b\u200b config data \u200b\u683c\u5f0f\u200b\u53ca\u200b\u529f\u80fd\u200b\u8bf4\u660e\u200b\uff1ahttps://cloudinit.readthedocs.io/en/latest/topics/modules.html
\u200b\u793a\u4f8b\u200b
bootcmd:\n - echo 192.168.1.130 us.archive.com > /etc/hosts\n - [ cloud-init-per, one, mymkfs, mkfs, /dev/vdb ]\n
"},{"location":"kvm/cloud-init/#config-\u793a\u4f8b","title":"config \u200b\u793a\u4f8b\u200b:","text":"\u200b\u914d\u7f6e\u200b\u5b9e\u4f8b\u200b\u7684\u200b SSH key\uff1ahttps://cloudinit.readthedocs.io/en/latest/topics/modules.html#ssh
\u200b\u6269\u5bb9\u200b\uff1ahttps://cloudinit.readthedocs.io/en/latest/topics/modules.html#growpart
"},{"location":"kvm/cloud-init/#kernel-command-line","title":"Kernel Command Line","text":"\u200b\u4f7f\u7528\u200b NoCloud \u200b\u65f6\u200b\uff0c\u200b\u7528\u6237\u200b\u53ef\u4ee5\u200b\u5c06\u200b\u7528\u6237\u200b\u6570\u636e\u200b\u901a\u8fc7\u200b\u5185\u6838\u200b\u547d\u4ee4\u884c\u200b\u53c2\u6570\u4f20\u9012\u200b\u3002
"},{"location":"kvm/cloud-init/#\u5176\u4ed6","title":"\u5176\u4ed6","text":"\u200b\u5176\u4ed6\u200b\u683c\u5f0f\u200b\u8fd8\u6709\u200b include, upstart job, cloud boothook, part handler \u200b\u7b49\u200b
ci \u200b\u6709\u200b\u4e00\u4e2a\u200b\u811a\u672c\u200b make-mime.py
\u200b\u53ef\u4ee5\u200b\u5c06\u200b\u4e0d\u540c\u200b\u7c7b\u578b\u200b\u7684\u200b\u7528\u6237\u200b\u6570\u636e\u200b\u7efc\u5408\u200b\u5728\u200b\u4e00\u8d77\u200b\uff0c\u200b\u4f8b\u5982\u200b\u5c06\u200b cloud-config \u200b\u7c7b\u578b\u200b\u7684\u200b config.yaml \u200b\u548c\u200b x-shellscript \u200b\u7c7b\u578b\u200b\u7684\u200b script.sh \u200b\u7ec4\u5408\u200b\u5728\u200b\u4e00\u8d77\u200b\u5f62\u6210\u200b user-data \u200b\u6570\u636e\u200b:
./tools/make-mime.py -a config.yaml:cloud-config -a script.sh:x-shellscript > user-data\n
"},{"location":"kvm/cloud-init/#\u90e8\u7f72","title":"\u90e8\u7f72","text":""},{"location":"kvm/cloud-init/#\u90e8\u7f72\u6587\u4ef6\u5f62\u5f0f","title":"\u90e8\u7f72\u200b\u6587\u4ef6\u200b\u5f62\u5f0f","text":"\u200b\u5728\u200b\u865a\u62df\u673a\u200b /etc/cloud/cloud.cfg.d/
\u200b\u4e0b\u200b\u6709\u200b\u591a\u4e2a\u200b .cfg
\u200b\u7ed3\u5c3e\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u8fd9\u4e9b\u200b ci \u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5c06\u200b\u6309\u7167\u200b\u5b57\u6bcd\u200b\u987a\u5e8f\u200b\u6267\u884c\u200b\uff0c\u200b\u540e\u9762\u200b\u7684\u200b cfg \u200b\u6587\u4ef6\u200b\u4f1a\u200b\u8986\u76d6\u200b\u524d\u9762\u200b\u7684\u200b cfg \u200b\u6587\u4ef6\u200b\u4e2d\u200b\u76f8\u540c\u200b\u7684\u200b\u914d\u7f6e\u200b\u3002
\u200b\u901a\u8fc7\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b cfg \u200b\u6587\u4ef6\u200b\uff0c\u200b\u4f7f\u7528\u200b\u6a21\u5757\u200b bootcmd\uff0c\u200b\u5728\u200b\u6b64\u200b\u6a21\u5757\u200b\u4e0b\u200b\u7f16\u5199\u200b\u7684\u200b\u811a\u672c\u200b\u7a0b\u5e8f\u200b\u5c06\u4f1a\u200b\u88ab\u200b\u6267\u884c\u200b\uff0c\u200b\u4f8b\u5982\u200b\u65b0\u5efa\u200b\u6587\u4ef6\u200b /etc/cloud/cloud.cfg.d/test.cfg
\uff0c\u200b\u5199\u5165\u200b\u5185\u5bb9\u200b
bootcmd:\n - [ sh, -xc, \"echo 'hello world' >> testfile\" ]\n
\u200b\u5c31\u200b\u5c06\u200b\u4f1a\u200b\u5728\u200b\u5f53\u524d\u200b .cfg \u200b\u6587\u4ef6\u76ee\u5f55\u200b\u4e0b\u200b\u5efa\u7acb\u200b\u4e00\u4e2a\u200b\u5185\u5bb9\u200b\u4e3a\u200b \"hello world\" \u200b\u7684\u200b\u540d\u4e3a\u200b testfile \u200b\u7684\u200b\u6587\u4ef6\u200b\u3002 \u200b\u865a\u62df\u673a\u200b\u6bcf\u6b21\u200b\u542f\u52a8\u200b\u90fd\u200b\u4f1a\u200b\u6267\u884c\u200b bootcmd \u200b\u5176\u540e\u200b\u7684\u200b\u547d\u4ee4\u200b\uff0c\u200b\u901a\u8fc7\u200b\u5c06\u200b\u914d\u7f6e\u200b\u8fc7\u7a0b\u200b\u5199\u6210\u200b\u811a\u672c\u200b\u7684\u200b\u5f62\u5f0f\u200b\u518d\u200b\u4f5c\u4e3a\u200b bootcmd \u200b\u7684\u200b\u53c2\u6570\u200b\u5199\u5165\u200b .cfg \u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e2d\u200b\uff0c\u200b\u865a\u62df\u673a\u200b\u4fbf\u200b\u80fd\u591f\u200b\u5b8c\u6210\u200b\u914d\u7f6e\u200b\u4efb\u52a1\u200b\u3002
\u200b\u6b64\u5916\u200b\uff0cbootcmd \u200b\u662f\u200b\u6bcf\u6b21\u200b\u865a\u62df\u673a\u200b\u542f\u52a8\u200b\u90fd\u200b\u4f1a\u200b\u6267\u884c\u200b\uff0c\u200b\u5982\u679c\u200b\u9700\u8981\u200b\u865a\u62df\u673a\u200b\u53ea\u200b\u6267\u884c\u200b\u4e00\u6b21\u200b\u547d\u4ee4\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b runcmd \u200b\u9009\u9879\u200b\u3002
\u200b\u6b64\u5916\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5c06\u200b\u914d\u7f6e\u200b\u8fc7\u7a0b\u200b\u4ee5\u200b\u811a\u672c\u200b\u7684\u200b\u5f62\u5f0f\u200b\u5448\u73b0\u200b\uff0c\u200b\u5c06\u200b\u5176\u200b\u5b58\u50a8\u200b\u5728\u200b /var/lib/cloud/scripts/
\u200b\u4e0b\u200b\uff0c\u200b\u865a\u62df\u673a\u200b\u6bcf\u6b21\u200b\u542f\u52a8\u200b\u90fd\u200b\u4f1a\u200b\u6267\u884c\u200b\u6b64\u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u547d\u4ee4\u200b\u3002
\u200b\u865a\u62df\u673a\u200b\u672c\u5730\u200b
\u200b\u5c06\u200b .cfg
\u200b\u548c\u200b script
\u200b\u6587\u4ef6\u200b\u5b58\u50a8\u200b\u5728\u200b\u76f8\u5e94\u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u7531\u200b\u865a\u62df\u673a\u200b\u5728\u200b\u542f\u52a8\u200b\u7684\u200b\u65f6\u5019\u200b\u8bfb\u53d6\u200b\u5e76\u200b\u6267\u884c\u200b\u914d\u7f6e\u200b\u8fc7\u7a0b\u200b
qm \u200b\u547d\u4ee4\u200b\u4ece\u200b\u6570\u636e\u4e2d\u5fc3\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\uff08\u200b\u672a\u200b\u5b9e\u73b0\u200b\uff09
\u200b\u4ece\u200b\u6570\u636e\u4e2d\u5fc3\u200b\u7684\u200b\u7ec8\u7aef\u200b\u4e0a\u200b\u6267\u884c\u547d\u4ee4\u200b\u8fdb\u884c\u200b\u90e8\u7f72\u200b
# \u200b\u683c\u5f0f\u200b\nqm set <vmid> --cicustom \"user=<volume>\"\n\n# \u200b\u793a\u4f8b\u200b\nqm set 101 --cicustom \"user=local:snippets/userconfig.yaml\"\n
\u200b\u4fee\u590d\u200b\u62a5\u9519\u200b:
\u200b\u9519\u8bef\u200b\u8868\u73b0\u200b\u5982\u4e0b\u200b
perl: warning: Setting locale failed.\nperl: warning: Please check that your locale settings:\n LANGUAGE = (unset),\n LC_ALL = (unset),\n LC_ADDRESS = \"zh_CN.UTF-8\",\n .....\n are supported and installed on your system.\nperl: warning: Falling back to a fallback locale (\"en_US.UTF-8\").\n
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a\u200b\u8bbe\u7f6e\u200b\u73af\u5883\u53d8\u91cf\u200b LC_ALL=C
\u200b\u6216\u200b LC_ALL=C.UTF-8
\u200b\u4e0e\u200b\u672c\u4ee3\u200b Vlab \u200b\u96c6\u7fa4\u200b\u76f8\u5173\u200b\u7684\u200b\u7f51\u7edc\u200b\u6709\u200b\u4e09\u4e2a\u200b\uff0c\u200b\u4e0b\u9762\u200b\u5206\u522b\u200b\u4ecb\u7ecd\u200b\u3002
"},{"location":"networking/#ustcnet","title":"\u6821\u56ed\u7f51","text":"\u200b\u6240\u6709\u200b\u673a\u5668\u200b\u90fd\u200b\u5728\u200b\u7535\u4e09\u697c\u200b 524 \u200b\u673a\u623f\u200b\uff0c\u200b\u901a\u8fc7\u200b\u94dc\u7ebf\u200b\u76f4\u63a5\u200b\u63a5\u5165\u200b\u7535\u4e09\u697c\u200b\u7684\u200b VLAN\uff0c\u200b\u8be5\u200b VLAN \u200b\u6709\u200b\u4e09\u4e2a\u200b\u516c\u7f51\u200b IP \u200b\u5730\u5740\u200b\u6bb5\u200b 202.38.75.254/24, 202.38.79.254/24, 202.38.86.254/24\uff0c\u200b\u53e6\u6709\u200b\u4e00\u4e2a\u200b\u4ec5\u200b\u6821\u56ed\u7f51\u200b\u7684\u200b\u5730\u5740\u200b\u6bb5\u200b 10.38.79.254/24\uff0c\u200b\u76ee\u524d\u200b\u90e8\u7f72\u200b\u4e86\u200b\u6240\u6709\u200b\u4e3b\u673a\u200b\u7684\u200b IPMI \u200b\u754c\u9762\u200b\u3002
\u200b\u9664\u200b pv8 \u200b\u5916\u200b\u6240\u6709\u200b\u673a\u5668\u200b\u7684\u200b\u56db\u4e2a\u200b\u7f51\u53e3\u200b\u505a\u200b\u4e00\u4e2a\u200b bond\uff0c\u200b\u7136\u540e\u200b\u5c06\u200b\u8fd9\u4e2a\u200b bond \u200b\u6865\u63a5\u200b\uff0c\u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u663e\u793a\u200b\u7684\u200b\u754c\u9762\u200b\u540d\u79f0\u200b\u4e3a\u200b vmbr0
\u3002\u200b\u65b9\u4fbf\u200b\u8d77\u200b\u89c1\u200b\u6240\u6709\u200b\u4e3b\u673a\u200b\u7684\u200b\u6821\u56ed\u7f51\u200b IP \u200b\u90fd\u200b\u4ece\u200b 202.38.75.0/24 \u200b\u7f51\u6bb5\u200b\u4e2d\u53d6\u200b\uff0c\u200b\u8bb0\u5f55\u200b\u5728\u200b\u57df\u540d\u200b pv#.vlab.ibugone.net
\u200b\u4e2d\u200b\u3002
pv8 \u200b\u7684\u200b eno4 \u200b\u63a5\u5728\u5149\u200b\u4ea4\u6362\u673a\u200b\u7684\u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b\u4e0a\u200b\uff0c\u200b\u56e0\u6b64\u200b pv8 \u200b\u53ea\u6709\u200b\u4e09\u4e2a\u200b\u7f51\u53e3\u200b\u505a\u200b bond\u3002
"},{"location":"networking/#fibre-intranet","title":"\u5149\u7ea4\u200b\u5185\u200b\u7f51","text":"\u200b\u5149\u7ea4\u200b\u754c\u9762\u200b\u4e3a\u200b ens1f0
\u200b\u548c\u200b ens1f1
\uff08\u200b\u4e24\u53f0\u200b GPU \u200b\u670d\u52a1\u5668\u200b\u4e3a\u200b ens4f0
\u200b\u548c\u200b ens4f1
\uff09\uff0c\u200b\u901a\u8fc7\u200b\u4e00\u4e2a\u200b\u534e\u4e3a\u200b\u5149\u200b\u4ea4\u6362\u673a\u200b\u4e92\u8054\u200b\uff0c\u200b\u56e0\u6b64\u200b\u53ea\u6709\u200b\u670d\u52a1\u5668\u200b\u96c6\u7fa4\u200b\u5185\u90e8\u200b\u8fde\u901a\u200b\uff0c\u200b\u7531\u4e8e\u200b\u6bcf\u53f0\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u5404\u81ea\u200b\u63a5\u5165\u200b\u6821\u56ed\u7f51\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5149\u7ea4\u200b\u5185\u7f51\u200b\u53ea\u200b\u7528\u4e8e\u200b\u4e92\u8054\u200b\uff08\u200b\u5305\u62ec\u200b\u8fde\u63a5\u200b iSCSI\uff09\uff0c\u200b\u4e0d\u200b\u7528\u4e8e\u200b\u8f6c\u53d1\u200b\u3002
IP \u200b\u5206\u914d\u60c5\u51b5\u200b\u89c1\u200b IP \u200b\u5730\u5740\u200b\u5217\u8868\u200b\u3002
\u200b\u8fd0\u884c\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u7f51\u7edc\u200b\u4e0a\u200b\u7684\u200b\u8bbe\u65bd\u200b\u6709\u200b iSCSI \u200b\u548c\u200b NFS\uff08\u200b\u7528\u4e8e\u200b\u5171\u4eab\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\uff0cLVM \u200b\u5e26\u9501\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u591a\u673a\u200b\u540c\u65f6\u200b\u6302\u8f7d\u200b\uff09\u3002
"},{"location":"networking/#overlay-intranet","title":"\u5bb9\u5668\u200b\u5185\u200b\u7f51","text":"\u200b\u5bb9\u5668\u200b\u4e4b\u95f4\u200b\u7684\u200b\u8fde\u63a5\u200b\u57fa\u4e8e\u200b\u8fd0\u884c\u200b\u5728\u200b\u5149\u7ea4\u200b\u4e4b\u4e0a\u200b\u7684\u200b overlay \u200b\u7f51\u7edc\u200b\uff0coverlay \u200b\u5b9e\u73b0\u200b\u91c7\u7528\u200b VXLAN\uff0c\u200b\u66f4\u200b\u591a\u200b\u4fe1\u606f\u200b\u53c2\u89c1\u200b \u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b \u200b\u4e00\u9875\u200b\u3002
"},{"location":"networking/#vm-network","title":"\u5b66\u751f\u200b\u673a\u200b\u7f51\u7edc","text":"CT100 \u200b\u4e3a\u200b\u7f51\u5173\u200b\uff0c\u200b\u5c06\u200b\u6240\u6709\u200b\u5b66\u751f\u200b\u673a\u200b\u7684\u200b\u4e0a\u884c\u200b\u6d41\u91cf\u200b NAT \u200b\u540e\u200b\u8fde\u63a5\u200b\u5230\u200b\u6821\u56ed\u7f51\u200b\uff0c\u200b\u8be6\u89c1\u200b CT100 \u200b\u5bb9\u5668\u200b\u7684\u200b\u6587\u6863\u200b\u3002
CT101 \u200b\u4e3a\u200b web \u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u63d0\u4f9b\u200b web \u200b\u754c\u9762\u200b\uff08Nginx, Django\uff09\u200b\u548c\u200b VNC \u200b\u7edf\u4e00\u200b\u63a5\u5165\u200b\uff08\u200b\u7a0b\u5e8f\u200b\u5728\u200b pdlan \u200b\u7684\u200b\u4e00\u4e2a\u200b\u79c1\u6709\u200b\u4ed3\u5e93\u200b\u4e2d\u200b\uff0c\u200b\u7531\u4e8e\u200b\u6f5c\u5728\u200b\u7684\u200b\u7248\u6743\u200b\u95ee\u9898\u200b\u4e0d\u80fd\u200b\u516c\u5f00\u200b\uff09\u3002\u200b\u5177\u4f53\u5185\u5bb9\u200b\u8be6\u89c1\u200b CT101 \u200b\u5bb9\u5668\u200b\u7684\u200b\u6587\u6863\u200b\u3002
"},{"location":"networking/#structure","title":"\u7f51\u7edc\u200b\u67b6\u6784","text":""},{"location":"networking/firewall/","title":"\u670d\u52a1\u5668\u200b\u9632\u706b\u5899\u200b\u914d\u7f6e","text":"\u200b\u6211\u4eec\u200b\u91c7\u7528\u200b\u6bd4\u624b\u200b\u6413\u200b iptables \u200b\u66f4\u52a0\u200b\u9760\u200b\u8c31\u200b\u5408\u7406\u200b\u7684\u200b\u65b9\u6848\u200b\uff1a\u200b\u4f7f\u7528\u200b PVE Firewall\u3002
\u200b\u5173\u4e8e\u200b\u5168\u9762\u200b\u5207\u6362\u200b\u5230\u200b PVE Firewall \u200b\u7684\u200b\u8c03\u7814\u200b
\u200b\u4f18\u70b9\u200b\uff1a
\u200b\u7f3a\u70b9\u200b\uff1a
iptables-persistent
Datacenter \u200b\u7ea7\u522b\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b /etc/pve/firewall/cluster.fw
\uff0cHost \u200b\u7ea7\u522b\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b /etc/pve/nodes/{hostname}/host.fw
\uff0cVM \u200b\u7ea7\u522b\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b /etc/pve/firewall/<id>.fw
\u3002\u200b\u5982\u679c\u200b\u8fd9\u4e9b\u200b\u6587\u4ef6\u200b\u5728\u200b\u78c1\u76d8\u200b\u4e0a\u200b\u88ab\u200b\u4fee\u6539\u200b\u4e86\u200b\uff0cPVE \u200b\u4f1a\u200b\u81ea\u52a8\u200b\u5c06\u200b\u4fee\u6539\u200b\u540c\u6b65\u200b\u5230\u200b iptables \u200b\u89c4\u5219\u200b\u91cc\u200b\uff0c\u200b\u6d4b\u8bd5\u8868\u660e\u200b PVE \u200b\u7684\u200b\u626b\u63cf\u200b\u95f4\u9694\u200b\u5927\u7ea6\u200b\u4e3a\u200b 10s\u3002
PVE \u200b\u4f1a\u200b\u81ea\u52a8\u200b\u653e\u901a\u200b\u96c6\u7fa4\u200b\u901a\u4fe1\u200b\u6240\u200b\u9700\u200b\u7684\u200b\u7aef\u53e3\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ea\u200b\u9700\u8981\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u540d\u4e3a\u200b management
\u200b\u7684\u200b IPset\uff0c\u200b\u5c06\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u767b\u5f55\u200b PVE \u200b\u7684\u200b IP \u200b\u52a0\u5165\u200b\u5c31\u884c\u4e86\u200b\uff0cPVE \u200b\u4f1a\u5e2e\u200b\u6211\u4eec\u200b\u81ea\u52a8\u200b\u653e\u901a\u200b\u8fd9\u4e2a\u200b IPset \u200b\u91cc\u200b\u7684\u200b IP\u3002\u200b\u76ee\u524d\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u51e0\u4e2a\u200b\u5e38\u7528\u200b\u7684\u200b IP \u200b\u5730\u5740\u200b\uff0c\u200b\u5305\u62ec\u200b iBug \u200b\u7684\u200b\u5de5\u4f5c\u7ad9\u200b\u548c\u200b LUG VPN \u200b\u7684\u200b\u51fa\u53e3\u200b IP\u3002
\u200b\u53e6\u6709\u200b\u4e00\u4e2a\u200b\u7279\u6b8a\u200b IPset \u200b\u53eb\u505a\u200b blacklist
\uff0c\u200b\u4e0d\u8fc7\u200b\u6211\u4eec\u200b\u6682\u65f6\u200b\u7528\u4e0d\u4e0a\u200b\u3002
\u200b\u5176\u4ed6\u200b\u9700\u8981\u200b\u7684\u200b\u89c4\u5219\u200b\u7528\u200b Security Group\uff08\u200b\u5b89\u5168\u200b\u7ec4\u200b\uff09\u200b\u5b9e\u73b0\u200b\u3002\u200b\u6211\u4eec\u200b\u5728\u200b\u96c6\u7fa4\u200b\u5c42\u9762\u200b\u5efa\u597d\u200b\u4e86\u200b vlab-host
\u200b\u548c\u200b pbs
\u200b\u7b49\u200b SG\uff0c\u200b\u7136\u540e\u200b\u7ed9\u200b\u6bcf\u4e2a\u200b\u4e3b\u673a\u200b\u90fd\u200b\u6309\u200b\u9700\u914d\u200b\u4e0a\u200b\u8fd9\u4e9b\u200b SG \u200b\u5c31\u884c\u4e86\u200b\u3002
\u200b\u53c2\u89c1\u200b\uff1aFirewall - Proxmox VE
"},{"location":"networking/firewall/#config-vm","title":"\u865a\u62df\u673a\u200b\u8bbe\u7f6e","text":"\u200b\u6211\u4eec\u200b\u5728\u200b datacenter \u200b\u4e0a\u5efa\u200b\u4e00\u4e2a\u200b Security Group \u200b\u53eb\u200b vlab-vm
\u200b\u7528\u6765\u200b\u914d\u7f6e\u200b\u9700\u8981\u200b\u5bf9\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u751f\u6548\u200b\u7684\u200b\u89c4\u5219\u200b\uff0c\u200b\u6bd4\u5982\u200b\u9488\u5bf9\u200b code-server \u200b\u548c\u200b VNC \u200b\u7684\u200b\u9632\u706b\u5899\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u8fd9\u79cd\u200b\u65b9\u5f0f\u200b\u90e8\u7f72\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u5916\u9762\u200b\u3002
\u200b\u5982\u679c\u200b\u8bbe\u7f6e\u200b\u91cc\u200b\u5f00\u542f\u200b\u4e86\u200b IP Filter\uff0c\u200b\u5bf9\u4e8e\u200b LXC \u200b\u5bb9\u5668\u200b\uff0cPVE \u200b\u4f1a\u200b\u81ea\u52a8\u200b\u628a\u200b\u5df2\u200b\u914d\u7f6e\u200b\u597d\u200b\u7684\u200b IP \u200b\u5730\u5740\u200b\u52a0\u5165\u200b\u8fd9\u4e2a\u200b\u767d\u540d\u5355\u200b\uff0c\u200b\u4f46\u662f\u200b\u6211\u4eec\u200b\u4ecd\u7136\u200b\u9700\u8981\u200b\u624b\u52a8\u200b\u5904\u7406\u200b\u53e6\u5916\u200b\u4e24\u4e2a\u200b\u95ee\u9898\u200b\uff1a
\u200b\u76ee\u524d\u200b\u505a\u6cd5\u200b\u662f\u200b\u4ea4\u7ed9\u200b vlab-pve-agent \u200b\u6765\u200b\u8bfb\u53d6\u200b VM \u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5e76\u200b\u751f\u6210\u200b\u9632\u706b\u5899\u200b\u914d\u7f6e\u200b\u3002\u200b\u5bf9\u4e8e\u200b IPv6 SLAAC \u200b\u5730\u5740\u200b\uff0c\u200b\u6211\u4eec\u200b\u9009\u62e9\u200b\u5077\u4e2a\u200b\u61d2\u200b\uff0c\u200b\u76f4\u63a5\u200b\u628a\u200b\u6574\u6bb5\u200b /64 \u200b\u52a0\u5165\u200b\u767d\u540d\u5355\u200b\u3002
[OPTIONS]\n\npolicy_in: ACCEPT\nipfilter: 1\nmacfilter: 1\nenable: 1\n\n[IPSET ipfilter-net0]\n\n!2001:da8:d800:4bfc::/112\n2001:da8:d800:4bfc::/64\n\n[RULES]\n\nGROUP vlab-vm\n
\u200b\u521d\u59cb\u5316\u200b\u914d\u7f6e\u200b\u8fc7\u7a0b\u200b\u89c1\u200b 2023 \u200b\u5e74\u200b 10 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u8bb0\u5f55\u200b
"},{"location":"networking/firewall/#previous","title":"\u65e7\u200b\u7684\u200b\u624b\u5de5\u200b\u914d\u7f6e","text":"Warning
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u5df2\u7ecf\u200b\u8fc7\u65f6\u200b\uff0c\u200b\u4ec5\u4f9b\u53c2\u8003\u200b\u3002
\u200b\u9632\u706b\u5899\u200b\u4f7f\u7528\u200b Linux \u200b\u81ea\u5e26\u200b\u7684\u200b iptables \u200b\u7ba1\u7406\u200b\uff0c\u200b\u9ed8\u8ba4\u200b\u7b56\u7565\u200b\u4e3a\u200b INPUT DROP
, FORWARD ACCEPT
, OUTPUT ACCEPT
\u3002\u200b\u65b9\u4fbf\u200b\u8d77\u200b\u89c1\u200b\u4f7f\u7528\u200b iptables-persistent
\u200b\u8ba9\u200b\u9632\u706b\u5899\u200b\u89c4\u5219\u200b\u5f00\u673a\u200b\u81ea\u52a8\u200b\u52a0\u8f7d\u200b\u3002
\u200b\u4ee5\u4e0b\u200b\u4e3a\u200b pv1 \u200b\u4e0a\u200b\u7684\u200b\u9632\u706b\u5899\u200b\u914d\u7f6e\u200b\uff08/etc/iptables/rules.v4
\u200b\u548c\u200b rules.v6
\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u4e00\u6837\u200b\uff09\uff1a
pv1 \u200b\u7684\u200b\u989d\u5916\u200b\u914d\u7f6e\u200b
pv1 \u200b\u9700\u8981\u200b\u4fee\u6539\u200b\u4ee5\u4e0b\u200b\u914d\u7f6e\u200b\uff0c\u200b\u989d\u5916\u200b\u653e\u884c\u200b 8090 \u200b\u7aef\u53e3\u200b\uff0c\u200b\u4ee5\u200b\u7528\u4e8e\u200b\u865a\u62df\u673a\u200b\u521b\u5efa\u200b\u65f6\u200b\u7684\u200b\u989d\u5916\u200b\u521d\u59cb\u5316\u200b\uff08post-creation-agent\uff09\u3002
\u200b\u53e6\u5916\u200b\uff0c\u200b\u7531\u4e8e\u200b pv1 \u200b\u4e0d\u200b\u8fd0\u884c\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\uff0c\u200b\u6545\u200b\u5c4f\u853d\u200b\u4e86\u200b iptables-legacy \u200b\u7684\u200b\u76f8\u5173\u200b\u6a21\u5757\u200b\uff0c\u200b\u4ee5\u200b\u51cf\u5c11\u200b\u6f5c\u5728\u200b\u7684\u200b\u6545\u969c\u200b\u53ef\u80fd\u200b\u5c55\u793a\u200b\u95f2\u7740\u6ca1\u4e8b\u200b\u5e72\u200b\u7684\u200b\u7cbe\u795e\u200b\u3002
/etc/modprobe.d/iptables-legacy.confinstall iptable_filter /bin/true\ninstall iptable_nat /bin/true\ninstall iptable_mangle /bin/true\ninstall iptable_raw /bin/true\ninstall iptable_security /bin/true\ninstall ip6table_filter /bin/true\ninstall ip6table_nat /bin/true\ninstall ip6table_mangle /bin/true\ninstall ip6table_raw /bin/true\ninstall ip6table_security /bin/true\n
*filter\n:INPUT ACCEPT [0:0]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [0:0]\n:VLAB - [0:0]\n-A INPUT -i lo -j ACCEPT\n-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n-A INPUT -p icmp -j ACCEPT\n-A INPUT -i vmbr2 -j ACCEPT\n-A INPUT -i vmbr+ -j VLAB\n-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n-A FORWARD -i vmbr+ -j DROP\n-A VLAB -p tcp -m state --state NEW -m tcp --sport 1024:65535 -m multiport --dports 22,80,443,8006 -j ACCEPT\n-A VLAB -j DROP\nCOMMIT\n\n\n*nat\n:PREROUTING ACCEPT [0:0]\n:INPUT ACCEPT [0:0]\n:OUTPUT ACCEPT [0:0]\n:POSTROUTING ACCEPT [0:0]\n-A PREROUTING -m addrtype --dst-type LOCAL -p tcp --dport 443 -j REDIRECT --to-ports 8006\nCOMMIT\n
"},{"location":"networking/firewall/#ebtables","title":"\u4ee5\u592a\u7f51\u200b\u6865\u200b\u9632\u706b\u5899","text":"\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\u4e86\u200b ebtables \u200b\u6765\u200b\u9632\u6b62\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u901a\u8fc7\u200b ARP \u200b\u6b3a\u9a97\u200b\u4f2a\u88c5\u6210\u200b CT 100/101\uff0c\u200b\u56e0\u4e3a\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u865a\u62df\u673a\u200b\u5bf9\u200b\u7ef4\u6301\u200b\u6b63\u5e38\u200b\u670d\u52a1\u200b\u81f3\u5173\u91cd\u8981\u200b\uff0c\u200b\u4f46\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u914d\u7f6e\u200b MAC \u200b\u5730\u5740\u200b\u8fc7\u6ee4\u200b\u53c8\u200b\u8fc7\u4e8e\u200b\u7e41\u7410\u200b\u3001\u200b\u4e0d\u200b\u73b0\u5b9e\u200b\u3002
\u200b\u6211\u4eec\u200b\u7684\u200b ebtables \u200b\u89c4\u5219\u200b\u7b80\u5355\u200b\u8fc7\u6ee4\u200b\u4e86\u200b\u4ece\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u53d1\u51fa\u200b\u7684\u200b\uff0c\u200b\u53d7\u200b\u4fdd\u62a4\u200b\u7684\u200b\u6e90\u200b MAC \u200b\u5730\u5740\u200b\u7684\u200b\u4ee5\u592a\u7f51\u200b\u5e27\u200b\u548c\u200b\u54cd\u5e94\u200b\u53d7\u200b\u4fdd\u62a4\u200b\u7684\u200b\u6e90\u200b IP \u200b\u5730\u5740\u200b\u7684\u200b ARP \u200b\u5305\u200b\uff1a
ebtables -N VLAB_SECURE\nebtables -A VLAB_SECURE -i vxlan1 -j ACCEPT\nebtables -A VLAB_SECURE -i veth100i+ -j ACCEPT\nebtables -A VLAB_SECURE -i veth101i+ -j ACCEPT\nebtables -A VLAB_SECURE -j DROP\nebtables -A FORWARD -p arp --arp-ip-src 172.31.0.0/30 -j VLAB_SECURE\nebtables -A FORWARD -s 00:00:ac:1f:00:00/ff:ff:ff:ff:ff:fc -j VLAB_SECURE\n
\u200b\u7531\u4e8e\u200b ebtables \u200b\u4e0d\u200b\u81ea\u5e26\u200b persistent \u200b\u7684\u200b\u670d\u52a1\u200b\uff0c\u200b\u6211\u4eec\u200b\u624b\u5199\u200b\u4e86\u200b\u4e00\u4e2a\u200b systemd \u200b\u670d\u52a1\u200b\u7528\u4e8e\u200b\u6301\u4e45\u200b\u5316\u200b ebtables \u200b\u89c4\u5219\u200b\u3002
[Unit]\nDescription=Ethernet Bridge Firewall\nAfter=network.target network-online.target\n\n[Service]\nType=oneshot\nRemainAfterExit=true\n\nExecStartPre=-/usr/sbin/ebtables -F\nExecStartPre=-/usr/sbin/ebtables -X\nExecStartPre=-/usr/sbin/ebtables -Z\n\nExecStart=/usr/sbin/ebtables -N VLAB_SECURE\nExecStart=/usr/sbin/ebtables -A VLAB_SECURE -i vxlan1 -j ACCEPT\nExecStart=/usr/sbin/ebtables -A VLAB_SECURE -i veth100i+ -j ACCEPT\nExecStart=/usr/sbin/ebtables -A VLAB_SECURE -i veth101i+ -j ACCEPT\nExecStart=/usr/sbin/ebtables -A VLAB_SECURE -j DROP\nExecStart=/usr/sbin/ebtables -A FORWARD -p arp --arp-ip-src 172.31.0.0/30 -j VLAB_SECURE\nExecStart=/usr/sbin/ebtables -A FORWARD -s 00:00:ac:1f:00:00/ff:ff:ff:ff:ff:fc -j VLAB_SECURE\n\n[Install]\nWantedBy=network.target\n
"},{"location":"networking/host/","title":"\u4e3b\u673a\u200b\u7f51\u5361","text":"Proxmox VE \u200b\u4e0d\u200b\u652f\u6301\u200b ifupdown \u200b\u4ee5\u5916\u200b\u7684\u200b\u7f51\u7edc\u200b\u7ba1\u7406\u7cfb\u7edf\u200b\uff08PVE 7 \u200b\u5f00\u59cb\u200b\u9ed8\u8ba4\u200b\u4f7f\u7528\u200b ifupdown2\uff09\uff0c\u200b\u5982\u200b NetworkManager \u200b\u548c\u200b systemd-networkd \u200b\u7b49\u200b\uff0c\u200b\u56e0\u6b64\u200b\u7f51\u7edc\u200b\u914d\u7f6e\u200b\u53ea\u80fd\u200b\u4f7f\u7528\u200b /etc/network/interfaces
\u200b\u6587\u4ef6\u200b\u3002
\u200b\u4ee5\u4e0b\u200b\u662f\u200b pv2 \u200b\u7684\u200b\u914d\u7f6e\u200b\u4f9b\u53c2\u8003\u200b\uff0c\u200b\u6279\u91cf\u200b\u4fee\u6539\u200b\u8bf7\u200b\u89c1\u200b\u8fd9\u4e2a\u200b Gist\u3002\u200b\u5173\u4e8e\u200b ifupdown \u200b\u548c\u200b ifupdown2 \u200b\u7684\u200b\u533a\u522b\u200b\u89c1\u200b\u8fd9\u4e2a\u200b\u9875\u9762\u200b\uff0c\u200b\u4ee5\u53ca\u200b ifupdown2 \u200b\u7684\u200b\u6587\u6863\u200b\u5728\u200b\u8fd9\u200b\u3002
ifupdown2ifupdownauto lo\niface lo inet loopback\n\nauto eno1\niface eno1\nauto eno2\niface eno2\nauto eno3\niface eno3\nauto eno4\niface eno4\n\nauto ens1f0\niface ens1f0\n mtu 1550\nauto ens1f1\niface ens1f1\n mtu 1550\n\nauto bond0\niface bond0\n bond-slaves eno1 eno2 eno3 eno4\n bond-mode balance-alb\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n\nauto bond1\niface bond1\n address 10.0.0.12/24\n bond-slaves ens1f0 ens1f1\n bond-mode 802.3ad\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n\nauto vmbr0\niface vmbr0\n address 202.38.75.97/24\n gateway 202.38.75.254\n dns-nameservers 202.38.64.1\n bridge-ports bond0\n bridge-stp off\n bridge-fd 0\niface vmbr0 inet6 static\n address 2001:da8:d800:75::a2/64\n gateway 2001:da8:d800:75::1\n\n# Overlay network for VMs\nauto vxlan1\niface vxlan1\n pre-up ip link add $IFACE type vxlan id 1 group 239.1.1.1 dev bond1 || true\n post-down ip link delete $IFACE || true\n mtu 1500\nauto vmbr1\niface vmbr1\n bridge-ports vxlan1\n bridge-stp off\n bridge-fd 0\n\n# Overlay network for management\nauto vxlan2\niface vxlan2\n pre-up ip link add $IFACE type vxlan id 2 group 239.1.1.1 dev bond1 || true\n post-down ip link delete $IFACE || true\n mtu 1500\nauto vmbr2\niface vmbr2\n address 172.30.0.102/24\n bridge-ports vxlan1\n bridge-stp off\n bridge-fd 0\n
:fontawesome-solid-exclamation-triangle:{: .orangered } \u200b\u4ee5\u4e0b\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e3a\u200b\u8fc1\u79fb\u200b\u81f3\u200b ifupdown2 \u200b\u524d\u200b\u7684\u200b\u6700\u540e\u200b\u914d\u7f6e\u200b\uff0c\u200b\u5b9e\u9645\u200b\u60c5\u51b5\u200b\u5df2\u200b\u53d1\u751f\u53d8\u5316\u200b\uff0c\u200b\u5185\u5bb9\u200b\u4ec5\u4f9b\u53c2\u8003\u200b
auto lo\niface lo inet loopback\n\nauto eno1\niface eno1 inet manual\n bond-master bond0\nauto eno2\niface eno2 inet manual\n bond-master bond0\nauto eno3\niface eno3 inet manual\n bond-master bond0\nauto eno4\niface eno4 inet manual\n bond-master bond0\n\nauto ens1f0\niface ens1f0 inet manual\n bond-master bond1\n mtu 1550\nauto ens1f1\niface ens1f1 inet manual\n bond-master bond1\n mtu 1550\n\nauto bond0\niface bond0 inet manual\n bond-mode balance-alb\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n\nauto bond1\niface bond1 inet static\n address 10.0.0.12/24\n bond-mode 802.3ad\n bond-miimon 100\n bond-downdelay 200\n bond-updelay 200\n\nauto vmbr0\niface vmbr0 inet static\n address 202.38.75.97/24\n gateway 202.38.75.254\n dns-nameservers 202.38.64.1\n bridge_ports bond0\n bridge_stp off\n bridge_fd 0\niface vmbr0 inet6 static\n address 2001:da8:d800:75::a2/64\n gateway 2001:da8:d800:75::1\n\n# Overlay network for VMs\nauto vxlan0\niface vxlan0 inet manual\n pre-up ip link add vxlan0 type vxlan id 10 group 239.1.1.1 dev bond1 || true\n up ip link set vxlan0 up\n down ip link set vxlan0 down\n post-down ip link delete vxlan0 || true\n mtu 1500\nauto vmbr1\niface vmbr1 inet static\n address 172.30.0.102/24\n bridge_ports vxlan0\n bridge_stp off\n bridge_fd 0\n
\u200b\u5176\u4e2d\u200b ens1f1 \u200b\u7684\u200b mtu 1550
\u200b\u548c\u200b vxlan0 \u200b\u7684\u200b mtu 1500
\u200b\u8bbe\u7f6e\u200b\u89c1\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b\u4e2d\u200b\u7684\u200b\u89e3\u91ca\u200b\u3002
\u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b\u4f7f\u7528\u200b VXLAN \u200b\u5b9e\u73b0\u200b\uff0c\u200b\u5728\u200b\u6240\u6709\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u4e0a\u5747\u200b\u4f7f\u7528\u200b bond1 \u200b\u754c\u9762\u200b\u8fde\u63a5\u200b\uff0c\u200b\u521b\u5efa\u200b\u547d\u4ee4\u200b\u4e3a\u200b
ip link add vxlan0 type vxlan id 1 group 239.1.1.1 dev bond1\n
RFC 7348 \u200b\u6307\u51fa\u200b VXLAN \u200b\u63a5\u6536\u200b\u7aef\u53e3\u200b\u4e3a\u200b UDP 4789\uff0c\u200b\u4f46\u200b\u7531\u4e8e\u200b\u5386\u53f2\u200b\u539f\u56e0\u200b\u5305\u62ec\u200b Linux \u200b\u5728\u5185\u200b\u7684\u200b\u4e00\u4f17\u200b\u5382\u5546\u200b\u90fd\u200b\u5728\u200b\u4f7f\u7528\u200b UDP 8472\uff0c\u200b\u56e0\u6b64\u200b\u8be5\u200b\u7aef\u53e3\u200b\u5fc5\u987b\u200b\u5728\u200b bond1 \u200b\u4e0a\u200b\u5f00\u653e\u200b\u3002\u200b\u5b9e\u9645\u4e0a\u200b\u7531\u4e8e\u200b\u5149\u7ea4\u200b\u754c\u9762\u200b\u6ca1\u6709\u200b\u5916\u90e8\u200b\u63a5\u5165\u200b\uff0c\u200b\u6545\u200b\u4e0d\u8bbe\u9632\u200b\u3002
"},{"location":"networking/intranet/#ip-\u5730\u5740\u5206\u914d","title":"IP \u200b\u5730\u5740\u200b\u5206\u914d","text":"\u200b\u5185\u5bb9\u200b\u5df2\u200b\u79fb\u81f3\u200b IP \u200b\u5730\u5740\u200b\u5206\u914d\u200b\u3002
"},{"location":"networking/ips/","title":"IP \u200b\u5730\u5740\u200b\u5217\u8868","text":""},{"location":"networking/ips/#\u6821\u56ed\u7f51-ipv4","title":"\u6821\u56ed\u7f51\u200b IPv4","text":"IP \u200b\u5730\u5740\u200b \u200b\u4e3b\u673a\u200b\u6216\u200b\u7528\u9014\u200b 10.38.79.97 \u200b\u66d9\u5149\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b 10.38.79.9810.38.79.99 HPE \u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b 10.38.79.100 pv0 IPMI 10.38.79.101 pv1 IPMI 10.38.79.102 pv2 IPMI 10.38.79.103 pv3 IPMI 10.38.79.104 pv4 IPMI 10.38.79.105 pv5 IPMI 10.38.79.106 pv6 IPMI 10.38.79.107 pv7 IPMI 10.38.79.108 pv8 IPMI 10.38.79.109 pv9 IPMI 10.38.79.110 pv10 IPMI 10.38.79.111 pv11 IPMI 10.38.79.112 pv12 IPMI 10.38.79.113 pv13 IPMI 10.38.79.114 pv14 IPMI 10.38.79.181 pvg1 IPMI 10.38.79.182 pvg2 IPMI 202.38.75.4 web0\uff08\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b CT 101\uff09 202.38.75.24 gateway0\uff08\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b CT 100\uff09 202.38.75.85 pv0 202.38.75.86 pv1 202.38.75.97 pv2 202.38.75.98 pv3 202.38.75.99 pv4 202.38.75.100 pv5 202.38.75.102 pv6 202.38.75.103 pv7 202.38.75.104 pv8 202.38.75.109 pv9 202.38.75.111 pv10 202.38.75.112 pv11 202.38.75.113 pv12 202.38.75.114 pv13 202.38.75.115 pv14 202.38.75.105 pvg1 202.38.75.108 pvg2 202.38.75.226 CT 101\uff08Web \u200b\u670d\u52a1\u5668\u200b\uff09 202.38.75.25210.38.79.252 CT 100\uff08\u200b\u5185\u200b\u7f51\u200b\u7f51\u5173\u200b\u51fa\u53e3\u200b\uff09Info
10.38.79.252 \u200b\u6302\u200b\u5728\u200b CT 100 \u200b\u4e0a\u200b\uff0c\u200b\u4e3b\u8981\u200b\u7528\u6765\u200b\u901a\u8fc7\u200b NAT \u200b\u4f9b\u7535\u200b\u4e09\u697c\u200b 420 \u200b\u623f\u95f4\u200b\u4e0a\u7f51\u200b\u3002
"},{"location":"networking/ips/#\u6821\u56ed\u7f51-ipv6","title":"\u6821\u56ed\u7f51\u200b IPv6","text":"IP \u200b\u5730\u5740\u200b \u200b\u4e3b\u673a\u200b\u6216\u200b\u7528\u9014\u200b 2001:da8:d800:75::4 web0\uff08\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b CT 101\uff09 2001:da8:d800:75::226 CT 101\uff08Web \u200b\u670d\u52a1\u5668\u200b\uff09 2001:da8:d800:75::aaaa CT 100\uff08\u200b\u5185\u200b\u7f51\u200b\u7f51\u5173\u200b\u51fa\u53e3\u200b\uff09 2001:da8:d800:75::bbbb gateway0\uff08\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b CT 100\uff09"},{"location":"networking/ips/#\u5185\u7f51-ipv4","title":"\u5185\u200b\u7f51\u200b IPv4","text":"IP \u200b\u5730\u5740\u200b\u6bb5\u200b \u200b\u7528\u9014\u200b 10.0.0.0/24 \u200b\u4e3b\u673a\u200b\u95f4\u200b\u5149\u7ea4\u901a\u4fe1\u200b\uff08\u200b\u5305\u62ec\u200b\u5b58\u50a8\u200b\u8bbe\u65bd\u200b\u7684\u200b iSCSI\uff09 172.31.0.0/16 \u200b\u7528\u6237\u200b\u7f51\u7edc\u200b\uff08vmbr1\uff09 172.31.0.0 - 172.31.3.255 \u200b\u4fdd\u7559\u200b\u81ea\u7528\u200b\uff0c\u200b\u5982\u200b\u7f51\u5173\u200b\u548c\u200b\u6258\u7ba1\u200b\u7684\u200b\u670d\u52a1\u200b\u7b49\u200b 172.31.4.0 - 172.31.255.254 \u200b\u5206\u914d\u200b\u7ed9\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b 172.30.0.0/24 \u200b\u5185\u90e8\u200b\u8bbe\u65bd\u200b\u95f4\u200b\u7684\u200b\u901a\u4fe1\u200b\uff0c\u200b\u5305\u62ec\u200b\u865a\u62df\u673a\u200b\u548c\u200b\u4e3b\u673a\u200b\uff08\u200b\u4e0d\u200b\u5305\u542b\u200b iSCSI\uff0c\u200b\u5b89\u5168\u200b\u8d77\u200b\u89c1\u200b\u9700\u8981\u200b\u9694\u79bb\u200b\uff09\uff08vmbr2\uff09 192.168.252.0/24 WireGuard \u200b\u5916\u90e8\u200b\u63a5\u5165\u200b\uff08\u200b\u901a\u8fc7\u200b CT 100 \u200b\u7f51\u5173\u200b\uff09 IP \u200b\u5730\u5740\u200b \u200b\u4e3b\u673a\u200b 10.0.0.110.0.0.11 pv1 10.0.0.12 pv2 10.0.0.13 pv3 10.0.0.14 pv4 10.0.0.15 pv5 10.0.0.16 pv6 10.0.0.17 pv7 10.0.0.18 pv8 10.0.0.19 pv9 10.0.0.20 pv10 10.0.0.21 pv11 10.0.0.22 pv12 10.0.0.23 pv13 10.0.0.24 pv14 10.0.0.81 pvg1 10.0.0.82 pvg2 172.30.0.1172.31.0.1 CT 100 \u200b\u7f51\u5173\u200b 172.30.0.2172.31.0.2 CT 101 \u200b\u670d\u52a1\u5668\u200b 172.30.0.3 CT 102 (monitor, InfluxDB) 172.30.0.101 pv1 172.30.0.102 pv2 172.30.0.103 pv3 172.30.0.104 pv4 172.30.0.105 pv5 172.30.0.106 pv6 172.30.0.107 pv7 172.30.0.108 pv8 172.30.0.109 pv9 172.30.0.110 pv10 172.30.0.111 pv11 172.30.0.112 pv12 172.30.0.113 pv13 172.30.0.114 pv14 172.30.0.181 pvg1 172.30.0.182 pvg2 172.31.1.x \u200b\u89c1\u200b\u4e0b"},{"location":"networking/ips/#\u5206\u914d\u89c4\u5219","title":"\u5206\u914d\u200b\u89c4\u5219","text":"\u200b\u6211\u4eec\u200b\u6ca1\u6709\u200b\u5185\u200b\u7f51\u200b\u670d\u52a1\u200b\u8fd0\u884c\u200b\u5728\u200b IPv6 \u200b\u4e0a\u200b\u3002
IP \u200b\u5730\u5740\u200b\u6bb5\u200b \u200b\u5206\u914d\u200b\u7528\u9014\u200b 2001:da8:d800:4bfc::/64 \u200b\u901a\u8fc7\u200b SLAAC \u200b\u4f9b\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u8bbf\u95ee\u200b IPv6 2001:da8:d800:4b18::/64 \u200b\u540c\u200b\u4e0a\u200b\uff0c\u200b\u4f46\u662f\u200b\u662f\u200b\u6d4b\u8bd5\u73af\u5883"},{"location":"records/2020-03-31/","title":"2020 \u200b\u5e74\u200b 3 \u200b\u6708\u200b 31 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":""},{"location":"records/2020-03-31/#\u5df2\u5b8c\u6210","title":"\u5df2\u200b\u5b8c\u6210","text":"VXLAN \u200b\u7684\u200b MTU \u200b\u4e3a\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u7edc\u200b\u7684\u200b\u51cf\u53bb\u200b 50 \u200b\u5b57\u8282\u200b\uff0c\u200b\u8003\u8651\u200b\u5230\u200b 1450 \u200b\u5b57\u8282\u200b\u8fd9\u79cd\u200b\u975e\u6807\u51c6\u200b\u7684\u200b\u8bbe\u5b9a\u200b\u65e9\u665a\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u66f4\u200b\u591a\u200b\u7684\u200b\u9ebb\u70e6\u200b\uff08\u200b\u4f8b\u5982\u200b KVM \u200b\u865a\u62df\u673a\u200b\u9700\u8981\u200b\u5355\u72ec\u200b\u8bbe\u7f6e\u200b\u7b49\u200b\uff09\uff0c\u200b\u51b3\u5b9a\u200b\u627e\u200b\u673a\u4f1a\u200b\u8fdb\u884c\u200b\u7cfb\u7edf\u7ef4\u62a4\u200b\uff0c\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u8bbe\u7f6e\u200b\u6539\u6389\u200b\uff0c\u200b\u628a\u200b\u4e0b\u5c42\u200b\u627f\u8f7d\u200b\u7f51\u5361\u200b\u7684\u200b MTU \u200b\u589e\u52a0\u200b 50 \u200b\u5b57\u8282\u200b\u4ee5\u4f9b\u200b VXLAN \u200b\u586b\u8865\u200b\u3002
\u200b\u5177\u4f53\u200b\u7684\u200b\u8c03\u6574\u200b\u65b9\u6cd5\u200b\u5c31\u662f\u200b\u5728\u200b /etc/network/interfaces
\u200b\u4e2d\u200b\u7684\u200b iface ens1f1 inet static
\u200b\u540e\u9762\u200b\u52a0\u5165\u200b\u4e00\u884c\u200b mtu 1550
\uff0c\u200b\u540c\u6837\u200b\uff08\u200b\u4fdd\u9669\u200b\u8d77\u200b\u89c1\u200b\uff09\u200b\u5728\u200b iface vxlan0
\u200b\u540e\u9762\u200b\u52a0\u5165\u200b\u4e00\u884c\u200b mtu 1500
\u3002
\u200b\u6539\u8fc7\u200b\u4e4b\u540e\u200b\u7684\u200b interfaces \u200b\u6587\u4ef6\u200b\u7c7b\u4f3c\u200b\u8fd9\u6837\u200b\uff1a
auto ens1f1\niface ens1f1 inet static\n address 10.0.0.1\n netmask 255.255.255.0\n mtu 1550\n\nauto vxlan0\niface vxlan0 inet manual\n pre-up ip link add vxlan0 type vxlan id 10 group 239.1.1.1 dstport 0 dev ens1f1 || true\n up ip link set vxlan0 up\n down ip link set vxlan0 down\n post-down ip link delete vxlan0 || true\n mtu 1500\n
\u200b\u5bf9\u4e8e\u200b\u8fd0\u884c\u200b\u4e86\u200b\u5bb9\u5668\u200b\u7684\u200b\u4e3b\u673a\u200b\uff0c\u200b\u76f4\u63a5\u200b\u91cd\u542f\u200b\u66f4\u52a0\u200b\u65b9\u4fbf\u200b\uff08\u200b\u5f53\u7136\u200b iSCSI \u200b\u7684\u200b\u81ea\u52a8\u200b\u6302\u8f7d\u200b\u53c8\u200b\u51fa\u200b\u95ee\u9898\u200b\u4e86\u200b\uff0c\u200b\u89c1\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b\u7684\u200b LVM \u200b\u4e00\u8282\u200b\uff09\u3002\u200b\u5bf9\u4e8e\u200b\u6ca1\u6709\u200b\u8fd0\u884c\u200b\u5bb9\u5668\u200b\u7684\u200b\u4e3b\u673a\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u628a\u200b\u4f9d\u8d56\u200b\u7684\u200b\u7f51\u5361\u200b\u4e00\u4e2a\u4e2a\u200b down \u200b\u6389\u200b\u518d\u200b up \u200b\u56de\u6765\u200b\uff1a
ifdown vmbr1 vxlan0 ens1f1\nifup ens1f1 vxlan0 vmbr1\n
\u200b\u63a5\u4e0b\u6765\u200b\u7531\u4e8e\u200b\u73b0\u6709\u200b\u5bb9\u5668\u200b\u5df2\u7ecf\u200b\u8bbe\u7f6e\u200b\u4e86\u200b MTU = 1450\uff0c\u200b\u8981\u200b\u628a\u200b\u8bbe\u7f6e\u200b\u5220\u6389\u200b\uff0c\u200b\u505a\u6cd5\u200b\u7b80\u5355\u200b\u7c97\u66b4\u200b\uff1a
cd /etc/pve/nodes\ngrep -lwirF mtu=1450 | xargs sed -Ei 's/,mtu=1450//'\n
Proxmox \u200b\u4f1a\u200b\u81ea\u52a8\u200b\u5c06\u200b\u4fee\u6539\u200b\u8fc7\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u540c\u6b65\u200b\u81f3\u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u7684\u200b\u5176\u4ed6\u200b\u4e3b\u673a\u200b\uff08\u200b\u6ce8\u610f\u200b\u9700\u8981\u200b\u5168\u90e8\u200b\u4fdd\u6301\u200b\u5728\u7ebf\u200b\uff0c\u200b\u5426\u5219\u200b\u540c\u6b65\u200b\u4f1a\u200b\u6302\u200b\uff0c\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b\u6709\u200b\u5199\u200b\uff09\u3002
\u200b\u6700\u540e\u200b\u628a\u200b Django \u200b\u524d\u7aef\u200b\u7684\u200b config.py
\u200b\u6539\u200b\u4e00\u4e0b\u200b\uff0c\u200b\u8ba9\u200b\u65b0\u521b\u5efa\u200b\u7684\u200b\u5bb9\u5668\u200b\u4f7f\u7528\u200b\u9ed8\u8ba4\u200b\u7684\u200b MTU \u200b\u5c31\u884c\u4e86\u200b\u3002
\u200b\u4e00\u200b\u5f00\u59cb\u200b\u7684\u200b\u8868\u73b0\u200b\u662f\u200b pv8 \u200b\u7684\u200b\u4e24\u4e2a\u200b\u5149\u7ea4\u200b\u5185\u200b\u7f51\u200b IP \u200b\u90fd\u200b\u80fd\u200b\u8fde\u901a\u200b\uff0c\u200b\u4f46\u662f\u200b VXLAN \u200b\u6b7b\u6d3b\u200b\u8fde\u4e0d\u4e0a\u200b\u3002
\u200b\u9996\u5148\u200b\u8fd9\u91cc\u200b\u6709\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u5751\u200b\uff0c\u200b\u89e3\u51b3\u200b\u4e4b\u540e\u200b\u91cd\u65b0\u200b\u68c0\u67e5\u200b\uff0c\u200b\u786e\u5b9a\u200b\u5b9e\u9645\u200b\u95ee\u9898\u200b\u662f\u200b ens1f1 \u200b\u754c\u9762\u200b\u4e0d\u200b\u8fde\u901a\u200b\uff0c\u200b\u8054\u7cfb\u200b\u5362\u5efa\u826f\u200b\u8001\u5e08\u200b\u524d\u5f80\u200b\u673a\u623f\u200b\u5b9e\u5730\u200b\u6392\u67e5\u200b\uff0c\u200b\u6700\u7ec8\u200b\u786e\u8ba4\u200b\u6545\u969c\u200b\u90e8\u4ef6\u200b\u662f\u200b\u8be5\u200b\u7f51\u8def\u200b\u5728\u200b\u4ea4\u6362\u673a\u200b\u4e00\u7aef\u200b\u7684\u200b\u5149\u200b\u6a21\u5757\u200b\u6709\u200b\u95ee\u9898\u200b\uff0c\u200b\u66ff\u6362\u6210\u200b\u65c1\u8fb9\u200b\u4e00\u4e2a\u200b\u95f2\u7f6e\u200b\u7684\u200b\u5149\u200b\u6a21\u5757\u200b\u540e\u200b\u7f51\u7edc\u200b\u8fde\u901a\u6027\u200b\u6062\u590d\u200b\u3002
\u200b\u63a5\u4e0b\u6765\u200b\u7684\u200b\u5f85\u529e\u200b\u4e8b\u9879\u200b\u5c31\u662f\u200b\u8bf7\u4eba\u200b\u68c0\u67e5\u200b\u8fd9\u4e2a\u200b\u5149\u200b\u6a21\u5757\u200b\u6709\u200b\u4ec0\u4e48\u200b\u95ee\u9898\u200b\u4e86\u200b\uff08\u200b\u8fd9\u4e2a\u200b\u5c31\u200b\u4ea4\u7ed9\u200b\u8001\u5e08\u200b\u5904\u7406\u200b\u4e86\u200b\uff09\u3002
"},{"location":"records/2020-08-01/#\u5f85\u529e\u4e8b\u9879","title":"\u5f85\u529e\u200b\u4e8b\u9879","text":"\u200b\u89c1\u200b\u4e0a\u200b
"},{"location":"records/2021-03-18/","title":"2021 \u200b\u5e74\u200b 3 \u200b\u6708\u200b 18 \u200b\u65e5\u200b\u8ba8\u8bba\u200b\u603b\u7ed3","text":""},{"location":"records/2021-03-18/#\u5de5\u4f5c\u6c47\u62a5","title":"\u5de5\u4f5c\u6c47\u62a5","text":""},{"location":"records/2021-03-18/#page-2---\u5df2\u5b8c\u6210\u7684\u5185\u5bb9","title":"Page 2 - \u200b\u5df2\u200b\u5b8c\u6210\u200b\u7684\u200b\u5185\u5bb9","text":"https://vlab.ustc.edu.cn/grafana/d/2
"},{"location":"records/2021-03-18/#page-4---ssh-\u7edf\u4e00\u767b\u5f55","title":"Page 4 - SSH \u200b\u7edf\u4e00\u200b\u767b\u5f55","text":"https://vlab.ibugone.com/
"},{"location":"records/2021-03-18/#page-8---\u540e\u7eed\u5de5\u4f5c\u8ba1\u5212","title":"Page 8 - \u200b\u540e\u7eed\u200b\u5de5\u4f5c\u200b\u8ba1\u5212","text":"!important
\uff09status-bydesign
\uff09<iframe>
?\uff09!?!?
\uff09\u200b\u540c\u65f6\u200b\u6539\u200b\u6570\u636e\u5e93\u200b\u548c\u200b Django \u200b\u4ee3\u7801\u200b\uff0c\u200b\u6e05\u7406\u200b\u6389\u200b VMID_INCR
\u200b\u8fd9\u4e2a\u200b\u5386\u53f2\u200b\u5305\u88b1\u200b\u3002
-- Drop foreign key\n-- https://stackoverflow.com/posts/comments/32882353\nALTER TABLE vm_sshkey DROP CONSTRAINT `vm_sshkey_ct_id_8bfb3d03_fk_vm_pvect_id`;\n\n-- Remove auto increment and PK\n-- https://stackoverflow.com/a/6741189/5958455\nALTER TABLE vm_pvect MODIFY COLUMN id INT(11);\nALTER TABLE vm_pvect DROP PRIMARY KEY;\n\n-- Work data\nUPDATE vm_pvect SET id = id + 1000;\nUPDATE vm_sshkey SET ct_id = ct_id + 1000;\n\n-- Add back AI and PK\nALTER TABLE vm_pvect ADD PRIMARY KEY (`id`);\nALTER TABLE vm_pvect MODIFY COLUMN id INT(11) AUTO_INCREMENT;\n\n-- Add back FK\nALTER TABLE vm_sshkey ADD CONSTRAINT `vm_sshkey_ct_id_8bfb3d03_fk_vm_pvect_id` FOREIGN KEY (`ct_id`) REFERENCES `vm_pvect` (`id`);\n
\u200b\u4ee3\u7801\u200b\u90e8\u5206\u200b\u89c1\u200b Pull Request #1
"},{"location":"records/2021-06-13/#\u5176\u4ed6","title":"\u5176\u4ed6","text":"\u200b\u5c06\u200b /mnt/container-template
\u200b\u91cd\u547d\u540d\u200b\u4e3a\u4e86\u200b\u66f4\u200b\u7b80\u6d01\u200b\u7684\u200b /mnt/vz
\u3002\u200b\u7531\u4e8e\u200b PVE \u200b\u7684\u200b\u4e00\u4e9b\u200b\u8bbe\u5b9a\u200b\uff0c\u200b\u64cd\u4f5c\u200b\u987a\u5e8f\u200b\u5982\u4e0b\u200b\uff1a
mkdir /mnt/vz
\uff0c\u200b\u66f4\u65b0\u200b /etc/fstab
\u200b\u7136\u540e\u200b\u6302\u8f7d\u200b\u65b0\u200b\u8def\u5f84\u200b/etc/pve/storage.cfg
\u200b\u4f7f\u7528\u200b\u65b0\u200b\u8def\u5f84\u200bumount /mnt/container-template
\u200b\u5378\u8f7d\u200b\u65e7\u200b\u8def\u5f84\u200b\u5e76\u200b rmdir -p
\u200b\u5728\u200b pv1-pv8 \u200b\u4ee5\u53ca\u200b web \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u8fdb\u884c\u200b\u4e86\u200b\u7cfb\u7edf\u200b\u66f4\u65b0\u200b\uff08\u200b\u4e0a\u6e38\u200b\u5747\u200b\u66f4\u6362\u200b\u4e3a\u4e86\u200b\u79d1\u5927\u200b\u6e90\u200b\uff09\uff0c\u200b\u5e76\u200b\u5728\u200b pv1, pv7, pv8 \u200b\u4e0a\u200b\u5b89\u88c5\u200b\u4e86\u200b apt-listbugs
\uff08\u200b\u5b89\u88c5\u200b\u65f6\u200b\u4f7f\u7528\u200b --no-install-recommends
\u200b\u51cf\u5c11\u200b\u9644\u5e26\u200b\u7684\u200b\u5783\u573e\u200b\uff09
lvm.conf
\u200b\u91cc\u200b\u7684\u200b\u6392\u9664\u200b\u89c4\u5219\u200b global_filters
\uff0c\u200b\u4f7f\u7528\u200b /dev/disk/by-id/usb.*
\u200b\u6765\u200b\u6392\u9664\u200b\u90a3\u4e2a\u200b\u6c38\u8fdc\u200b No medium found \u200b\u7684\u200b\u8bbe\u5907\u200b\uff0c\u200b\u4ee5\u200b\u907f\u514d\u200b\u6f5c\u5728\u200b\u7684\u200b\u91cd\u542f\u200b\u540e\u200b sda/sdb \u200b\u4ea4\u6362\u200b\u5bfc\u81f4\u200b\u7684\u200b\u95ee\u9898\u200b\uff08\u200b\u89c1\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b\uff09\u200b\u91cd\u542f\u200b\u524d\u5148\u88c5\u200b mdadm
\u3002
\u200b\u53ef\u4ee5\u200b\u5728\u200b IPMI KVM \u200b\u4e2d\u200b\u64cd\u4f5c\u200b\u3002\u200b\u91cd\u542f\u200b\u540e\u200b\u51fa\u73b0\u200b\u63d0\u793a\u200b\u754c\u9762\u200b\u65f6\u200b\u6309\u200b F9 \u200b\u8fdb\u5165\u200b HPE UEFI \u200b\u8bbe\u7f6e\u200b\u9875\u9762\u200b\u3002\u200b\u8bbe\u7f6e\u200b\u9875\u9762\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u9f20\u6807\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u9009\u62e9\u200b RAID 1\uff0c\u200b\u5728\u200b\u63a7\u5236\u5668\u200b\u8bbe\u7f6e\u200b\u7684\u200b manage arrays \u200b\u4e2d\u200b\u627e\u5230\u200b delete array \u200b\u89e3\u9664\u200b\u9635\u5217\u200b\u3002
\u200b\u89e3\u9664\u200b\u540e\u200b\uff0c\u200b\u9700\u8981\u200b\u6302\u8f7d\u200b iso\uff08HPE IPMI \u200b\u4e0d\u200b\u652f\u6301\u200b DNS\uff0c\u200b\u6240\u4ee5\u200b\u76ee\u524d\u200b\u4f7f\u7528\u200b iBug \u200b\u7684\u200b\u5185\u7f51\u200b\u5c0f\u200b\u673a\u5668\u200b\uff0c\u200b\u5730\u5740\u200b\u4e3a\u200b https://10.38.79.2/iso/\uff0c\u200b\u5728\u200b\u5176\u4e2d\u200b\u9009\u62e9\u200b\u9002\u7528\u200b\u7684\u200b Debian \u200b\u7248\u672c\u200b\u6302\u8f7d\u200b\uff09\u3002
"},{"location":"records/2021-08-21/#\u7f29\u5c0f\u4e3b\u673a\u7684-rootfs-\u5e76\u6dfb\u52a0-lvm-mirror","title":"\u7f29\u5c0f\u200b\u4e3b\u673a\u200b\u7684\u200b rootfs \u200b\u5e76\u200b\u6dfb\u52a0\u200b LVM mirror","text":"\u200b\u53c2\u8003\u200b iBug \u200b\u7684\u200b\u535a\u5ba2\u200b\u3002
\u200b\u4e3b\u8981\u200b\u51e0\u6b65\u200b\uff08\u200b\u5047\u8bbe\u200b\u62c6\u5b8c\u200b\u4e4b\u540e\u200b\u662f\u200b /dev/sda
\u200b\u548c\u200b /dev/sdb
\uff09\uff1a
/dev/sda
\u200b\u5206\u533a\u8868\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5199\u5165\u200b\u6b63\u786e\u200b\u7684\u200b\u5206\u533a\u8868\u200b\u5230\u200b\u78c1\u76d8\u200b\u4e2d\u200b\u3002vgscan
\u200b\u52a0\u8f7d\u200b LVM \u200b\u4fe1\u606f\u200b\u3002\u200b\u5047\u8bbe\u200b rootfs
\u200b\u662f\u200b /dev/pve/root
e2fsck -f /dev/pve/root
\u200b\u68c0\u67e5\u200b\u4e00\u81f4\u6027\u200b\uff0c\u200b\u8fd0\u884c\u200b resize2fs -M -p /dev/pve/root
\u200b\u5c06\u200b rootfs \u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u7f29\u5c0f\u200b\u5230\u200b\u6700\u5c0f\u200b\uff0c\u200b\u786e\u4fdd\u200b\u7f29\u5c0f\u200b\u5f97\u5230\u200b\u7684\u200b\u5927\u5c0f\u200b\u5c0f\u4e8e\u200b 16GB\uff0c\u200b\u5426\u5219\u200b\u63a5\u4e0b\u6765\u200b\u7684\u200b\u64cd\u4f5c\u200b\u4f1a\u200b\u7834\u574f\u200b rootfs!\u3002lvresize -L 16G pve/root
\u200b\u5c06\u200b LVM rootfs \u200b\u903b\u8f91\u200b\u5206\u533a\u200b\u7f29\u5c0f\u200b\u5230\u200b 16GB\uff0c\u200b\u7136\u540e\u200b\u8fd0\u884c\u200b resize2fs -p /dev/pve/root
\u200b\u5c06\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u6269\u5927\u200b\u5230\u200b 16GB\u3002/dev/sdb
\u200b\u5206\u533a\u8868\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5199\u5165\u200b\u6b63\u786e\u200b\u7684\u200b\u5206\u533a\u8868\u200b\u5230\u200b\u78c1\u76d8\u200b\u4e2d\u200b\u3002fdisk -l /dev/sdb
\u200b\u786e\u8ba4\u200b\u539f\u6765\u200b LVM \u200b\u5728\u200b /dev/sdb
\u200b\u4e0a\u200b\u7684\u200b\u5206\u533a\u200b\u540d\u200b\uff0c\u200b\u5047\u8bbe\u200b\u662f\u200b /dev/sdb2
\uff0c\u200b\u8fd0\u884c\u200b dd if=/dev/zero of=/dev/sdb2 bs=1M count=1
\u200b\u64e6\u9664\u200b LVM metadata\uff0c\u200b\u7136\u540e\u200b pvcreate /dev/sdb2
, vgextend pve /dev/sdb2
\u200b\u52a0\u5165\u200b\u5230\u200b\u73b0\u5728\u200b\u7684\u200b LVM \u200b\u5377\u200b\u7ec4\u4e2d\u200b\u3002lvconvert -m1 pve/root
\uff0c\u200b\u8bbe\u7f6e\u200b rootfs \u200b\u4e3a\u200b RAID 1.chroot
\u200b\u8fdb\u5165\u200b rootfs\u3002\u200b\u5b89\u88c5\u200b grub-efi
\u200b\u540e\u200b\u8fd0\u884c\u200b grub-install
\u3002\u200b\u8bf7\u200b\u786e\u4fdd\u200b LiveCD Debian \u200b\u548c\u200b\u7cfb\u7edf\u200b Debian \u200b\u7248\u672c\u200b\u5c3d\u53ef\u80fd\u200b\u4e00\u81f4\u200b\uff0c\u200b\u5426\u5219\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u65e0\u6cd5\u200b\u5f15\u5bfc\u200b\u3002\uff08\u200b\u4f8b\u5982\u200b\uff0c\u200b\u4f7f\u7528\u200b Debian 11 ISO \u200b\u8dd1\u200b Debian 10 grub-install \u200b\u4f1a\u200b\u51fa\u73b0\u200b\u5173\u4e8e\u200b efi variables \u200b\u7684\u200b\u9519\u8bef\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u5b89\u88c5\u200b\u5931\u8d25\u200b\uff09\u3002\u200b\u5982\u679c\u200b\u8fd8\u662f\u200b\u65e0\u6cd5\u200b\u5f15\u5bfc\u200b\uff0c/dev/sda1
\u200b\u548c\u200b /dev/sdb1
\u200b\u90fd\u200b\u5206\u522b\u200b\u6302\u5230\u200b /boot/efi
\uff0c\u200b\u7136\u540e\u200b\u8dd1\u200b grub-install
\u200b\u8bd5\u8bd5\u200b\u3002PVE \u200b\u505a\u200b\u5f97\u200b\u5f88\u200b\u597d\u200b\uff0c\u200b\u5347\u7ea7\u200b\u8fc7\u7a0b\u200b\u8ddf\u200b Debian \u200b\u4f53\u9a8c\u200b\u5b8c\u5168\u4e00\u81f4\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b Debian 10 \u200b\u5347\u7ea7\u200b\u5230\u200b 11 \u200b\u7684\u200b\u6587\u6863\u200b\u6a21\u4eff\u200b\u64cd\u4f5c\u200b\u3002
\u200b\u66f4\u65b0\u8fc7\u7a0b\u200b\u4e2d\u200b\u9700\u8981\u200b\u6ce8\u610f\u200b\u4e00\u4e9b\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff1a
/etc/issue
\uff1a\u200b\u6b64\u200b\u6587\u4ef6\u200b\u6bcf\u6b21\u200b\u5f00\u673a\u200b\u65f6\u200b Proxmox \u200b\u4f1a\u200b\u8986\u76d6\u200b\uff0c\u200b\u6240\u4ee5\u200b\u9009\u200b Y \u200b\u548c\u200b N \u200b\u6ca1\u6709\u200b\u533a\u522b\u200b/etc/ssh/sshd_config
\uff1aDebian 11 \u200b\u7684\u200b sshd_config
\u200b\u6587\u4ef6\u200b\u5305\u542b\u200b\u4e86\u200b\u4e00\u6761\u200b Include /etc/ssh/sshd_config.d/*.conf
\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u7684\u200b\u81ea\u5b9a\u4e49\u200b\u8bbe\u7f6e\u200b\u4e5f\u200b\u79fb\u5230\u200b\u4e86\u200b sshd_config.d/vlab.conf
\uff0c\u200b\u4e3a\u4e86\u200b\u4ee5\u540e\u200b\u66f4\u65b0\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u8986\u76d6\u200b\uff08\u200b\u6ce8\u610f\u200b reload ssh \u200b\u524d\u200b\u628a\u200b vlab.conf
\u200b\u51c6\u5907\u200b\u597d\u200b\uff09
vlab.conf
\u200b\u6587\u4ef6\u200b HostKey /etc/ssh/ssh_host_rsa_key\nHostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub\nTrustedUserCAKeys /etc/ssh/ssh_user_ca\n\nPermitRootLogin prohibit-password\nPasswordAuthentication no\nAuthorizedKeysFile /dev/null\n
/etc/lvm/lvm.conf
\uff1a\u200b\u540c\u6837\u200b\u4e3a\u4e86\u200b\u4ee5\u540e\u200b\u66f4\u65b0\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u9009\u62e9\u200b\u8986\u76d6\u200b\u3002\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u6dfb\u52a0\u200b\u7684\u200b\u3001\u200b\u6709\u7528\u200b\u7684\u200b\u8bbe\u7f6e\u200b\u662f\u200b\u8fd9\u200b\u4e24\u6761\u200b\uff0c\u200b\u8986\u76d6\u200b\u540e\u200b\u52a0\u56de\u53bb\u200b\u5373\u53ef\u200b\uff08\u200b\u6ce8\u610f\u200b\u6dfb\u52a0\u200b\u5230\u200b\u5408\u9002\u200b\u7684\u200b\u4f4d\u7f6e\u200b\uff0clvm.conf
\u200b\u662f\u200b\u5206\u200b section \u200b\u7684\u200b\uff09
global_filter = [ \"r|/dev/disk/by-id/usb.*|\", \"r|/dev/zd.*|\", \"r|/dev/mapper/pve-.*|\" \"r|/dev/mapper/.*-(vm|base)--[0-9]+--disk--[0-9]+|\"]\n\nauto_activation_volume_list = [ \"pve\", \"data\" ]\n
\u200b\u4fee\u6539\u200b\u5b8c\u200b lvm.conf
\u200b\u540e\u200b\u8bb0\u5f97\u200b\u8fd0\u884c\u200b update-initramfs
\u3002
\u200b\u5176\u4ed6\u200b\u53ef\u4ee5\u200b\u8986\u76d6\u200b\uff0c\u200b\u80fd\u200b\u62c6\u5206\u200b\u51fa\u6765\u200b\u3001\u200b\u4e0d\u200b\u4fee\u6539\u200b\u5305\u200b\u7ba1\u7406\u5668\u200b\u63d0\u4f9b\u200b\u7684\u200b\u6587\u4ef6\u200b\u7684\u200b\u5c31\u200b\u5c3d\u91cf\u200b\u62c6\u51fa\u6765\u200b\uff0c\u200b\u4f8b\u5982\u200b\u628a\u200b sysctl \u200b\u8bbe\u7f6e\u200b\u653e\u8fdb\u200b /etc/sysctl.d
\u200b\u91cc\u200b\u800c\u200b\u4e0d\u662f\u200b\u76f4\u63a5\u200b\u4fee\u6539\u200b sysctl.conf
\uff0c\u200b\u8bf8\u5982\u6b64\u7c7b\u200b\u3002
\u200b\u66f4\u6362\u200b APT \u200b\u6e90\u200b\u6bd4\u8f83\u7b80\u5355\u200b\uff0c\u200b\u6302\u8f7d\u200b\u78c1\u76d8\u200b\u7136\u540e\u200b\u8dd1\u200b\u4e00\u4e0b\u200b sed
\u200b\u5373\u53ef\u200b\u3002
\u200b\u540c\u65f6\u200b\u7531\u4e8e\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b /opt/vlab \u200b\u6765\u200b\u63d0\u4f9b\u200b\u5404\u79cd\u200b\u5bb9\u91cf\u200b\u8f83\u5927\u200b\u7684\u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\uff0c\u200b\u65b0\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u78c1\u76d8\u200b\u4f7f\u7528\u91cf\u200b\u53ea\u6709\u200b\u4e0d\u5230\u200b 3.5 GB\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u518d\u6b21\u200b\u5c06\u200b\u65b0\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u78c1\u76d8\u200b\u5bb9\u91cf\u200b\u4e0b\u8c03\u200b\u5230\u200b 16 GB\u3002\u200b\u7531\u4e8e\u200b LVM \u200b\u7684\u200b\u7a7a\u95f4\u200b\u6bd4\u8f83\u200b\u7d27\u5f20\u200b\u4e86\u200b\uff08\u200b\u4f7f\u7528\u91cf\u200b > 70%\uff09\uff0c\u200b\u6211\u4eec\u200b\u8fd8\u200b retroactively \u200b\u5c06\u200b\u73b0\u6709\u200b\u5bb9\u5668\u200b\u7684\u200b\u78c1\u76d8\u200b\u7edf\u4e00\u200b\u7f29\u51cf\u200b\u3002\u200b\u7f29\u51cf\u200b\u65b9\u6848\u200b\u662f\u200b\u5b9e\u9645\u200b\u5360\u200b\u7528\u91cf\u200b\u5c0f\u4e8e\u200b 12 GB\uff0812288 MB\uff09\u200b\u7684\u200b\u7f29\u51cf\u200b\u4e3a\u200b 16 GB\uff0c\u200b\u5b9e\u9645\u200b\u5360\u200b\u7528\u91cf\u200b\u5c0f\u4e8e\u200b 24 GB \u200b\u7684\u200b\u7f29\u51cf\u200b\u4e3a\u200b 32 GB\uff0c\u200b\u5927\u4e8e\u200b 24 GB \u200b\u7684\u200b\u4e0d\u52a8\u200b\u3002
\u200b\u7f29\u51cf\u200b\u78c1\u76d8\u7a7a\u95f4\u200b\u64cd\u4f5c\u200b\u6bd4\u8f83\u590d\u6742\u200b\uff0c\u200b\u5927\u81f4\u200b\u8fc7\u7a0b\u200b\u4e0e\u200b\u5904\u7406\u200b\u4e3b\u673a\u200b\u7684\u200b rootfs \u200b\u4e00\u6837\u200b\uff0c\u200b\u5148\u200b resize2fs \u200b\u5c0f\u200b\u4e00\u70b9\u200b\uff0c\u200b\u7136\u540e\u200b lvresize \u200b\u6539\u200b\u5206\u533a\u200b\uff0c\u200b\u518d\u200b resize2fs \u200b\u6269\u5145\u200b\u56de\u6765\u200b\u3002\u200b\u4f46\u662f\u200b\u51fa\u4e8e\u200b\u672a\u77e5\u200b\u539f\u56e0\u200b e2fsck \u200b\u4f1a\u200b\u62a5\u200b\u4e0b\u9762\u200b\u8fd9\u4e2a\u200b\u9519\u8bef\u200b\uff0c\u200b\u56e0\u6b64\u200b\u64cd\u4f5c\u524d\u200b\u9700\u8981\u200b\u989d\u5916\u200b\u52a0\u200b\u4e00\u4e2a\u200b tune2fs\uff0c\u200b\u5177\u4f53\u200b\u8fc7\u7a0b\u200b\u89c1\u200b\u4e0b\u200b\u9644\u200b\u7684\u200b\u6279\u5904\u7406\u200b\u811a\u672c\u200b\u3002
e2fsck: MMP: e2fsck being run while checking MMP block
\u200b\u4f7f\u7528\u200b\u7684\u200bchange-repo.sh
\u200b\u811a\u672c\u200b #!/bin/bash\n\n[ -n \"$BASH_VERSION\" ] || exit 1\n\nwork() {\n local id=\"$1\"\n local param=\"$2\"\n local lv=user-data/vm-\"$id\"-disk-0\n local conf=\"$(find /etc/pve/nodes -name \"$id.conf\")\"\n local mnt=/tmp/mnt-\"$id\"\n mkdir -p \"$mnt\"\n local list=\"$mnt\"/etc/apt/sources.list\n echo \"******************** WORKING ON VM ID $id ($param remaining) ********************\"\n lvchange -y -ay \"$lv\"\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n #e2fsck -y -f /dev/\"$lv\" || true\n mount /dev/\"$lv\" \"$mnt\"\n if [ -f \"$list\" ]; then\n sed -i 's/mirrors\\.tuna\\.tsinghua\\.edu\\.cn/mirrors.ustc.edu.cn/g' \"$list\" &&\n echo \"Run sed on CT $id\"\n else\n echo \"CT $id does not contain /etc/apt/sources.list\"\n fi\n local size=\"$(df -BM --output=size \"$mnt\" | awk 'NR==2{print $1+0}')\"\n local used=\"$(df -BM --output=used \"$mnt\" | awk 'NR==2{print $1+0}')\"\n echo \"Size of VM $id: ${used}M / ${size}M\"\n umount \"$mnt\"\n if [ $used -gt 0 -a $used -lt 12288 ]; then\n echo \"Shrinking VM $id to 16G\"\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n e2fsck -y -f /dev/\"$lv\"\n resize2fs -p /dev/\"$lv\" 15G\n lvresize -y -f -L 16G \"$lv\" || true\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n resize2fs -p /dev/\"$lv\"\n test -n \"$conf\" && sed -i '/^rootfs:/s/size=[0-9]\\+G/size=16G/' \"$conf\"\n elif [ $used -ge 12288 -a $used -lt 24576 -a $size -gt 32768 ]; then\n echo \"Shrinking VM $id to 32G\"\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n e2fsck -y -f /dev/\"$lv\"\n resize2fs -p /dev/\"$lv\" 31G\n lvresize -y -f -L 32G \"$lv\" || true\n tune2fs -f -E clear_mmp /dev/\"$lv\"\n resize2fs -p /dev/\"$lv\"\n test -n \"$conf\" && sed -i '/^rootfs:/s/size=[0-9]\\+G/size=32G/' \"$conf\"\n fi\n lvchange -y -an \"$lv\"\n}\n\ntotal=$(<${1:-disks.txt} wc -l)\nfor id in $(<\"${1:-disks.txt}\"); do\n work \"$id\" \"$((total-=1))\"\ndone\n
\u200b\u5176\u4e2d\u200b\u751f\u6210\u200b disks.txt \u200b\u7684\u200b\u4ee3\u7801\u200b\u5229\u7528\u200b\u4e86\u200b /etc/pve/.vmlist
\u200b\u8fd9\u4e2a\u200b\u53ea\u8bfb\u200b\u7684\u200b JSON \u200b\u63a5\u53e3\u200b\uff1a
jq -r '.ids | with_entries(select((.key | tonumber >= 1000) and (.value.type == \"lxc\"))) | keys | map(tonumber) | sort | .[]' /etc/pve/.vmlist > disks.txt\n
"},{"location":"records/2021-08-21/#\u5176\u4ed6","title":"\u5176\u4ed6","text":"\u200b\u672c\u200b\u5468\u672b\u200b\u7684\u200b\u5de5\u4f5c\u200b\u662f\u200b\u89e3\u51b3\u200b vzdump
\u200b\u5907\u4efd\u200b\u7684\u200b\u76f8\u5173\u200b\u95ee\u9898\u200b\u3002\u200b\u5728\u200b 8 \u200b\u6708\u200b 21 \u200b\u65e5\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u53d1\u73b0\u200b\u6bcf\u5468\u200b\u5907\u4efd\u200b\u5f00\u59cb\u200b\u51fa\u73b0\u200b\u95ee\u9898\u200b\u3002
\u200b\u51fa\u73b0\u200b\u7684\u200b\u9519\u8bef\u200b\u7c7b\u4f3c\u200b\u4e8e\u200b command 'rsync ...' failed: exit code 11
\u3002
\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1avzdump
\u200b\u4f1a\u5148\u200b rsync \u200b\u5bb9\u5668\u200b\u7684\u200b rootfs \u200b\u5230\u200b /var/tmp
\uff0c\u200b\u800c\u200b\u5728\u200b\u7f29\u51cf\u200b\u4e3b\u673a\u200b rootfs \u200b\u7684\u200b\u5927\u5c0f\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5269\u4f59\u200b\u7a7a\u95f4\u200b\u4e0d\u8db3\u4ee5\u200b\u627f\u8f7d\u200b\u5bb9\u5668\u200b\u7684\u200b rootfs\u3002\u200b\u6240\u4ee5\u200b\u65b0\u5f00\u200b\u4e00\u4e2a\u200b LVM \u200b\u5377\u200b\u6302\u8f7d\u200b\u5230\u200b /var/tmp
\u3002
tmpfs \u200b\u65e0\u6cd5\u200b\u89e3\u51b3\u95ee\u9898\u200b
\u200b\u5bb9\u5668\u200b\u91cc\u200b Docker overlay \u200b\u9700\u8981\u200b userxattr\uff0ctmpfs \u200b\u4e0d\u200b\u652f\u6301\u200b\u8fd9\u4e2a\u200b\u7279\u6027\u200b\uff0c\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u5907\u4efd\u200b\u5931\u8d25\u200b\u3002
"},{"location":"records/2021-08-28/#kvm-\u865a\u62df\u673a\u5907\u4efd\u9519\u8bef","title":"KVM \u200b\u865a\u62df\u673a\u200b\u5907\u4efd\u200b\u9519\u8bef","text":"\u200b\u51fa\u73b0\u200b\u7684\u200b\u9519\u8bef\u200b\u7c7b\u4f3c\u200b\u4e8e\u200b job failed with err -5 - Input/output error
\u3002\u200b\u9605\u8bfb\u200b\u4e3b\u673a\u200b dmesg\uff0c\u200b\u4f1a\u200b\u53d1\u73b0\u200b\u5927\u91cf\u200b connection1:0: detected conn error (1020)
\uff0c\u200b\u4ee5\u53ca\u200b\u6807\u7ea2\u200b\u7684\u200b ext4/\u200b\u5757\u200b\u8bbe\u5907\u200b I/O error \u200b\u95ee\u9898\u200b\u3002\u200b\u6d4b\u8bd5\u200b\u53d1\u73b0\u200b\u5907\u4efd\u200b\u4f1a\u200b\u5bfc\u81f4\u200b iSCSI \u200b\u95f4\u63a5\u6027\u200b\u65ad\u200b\u8fde\u200b\uff0c\u200b\u8bf1\u53d1\u200b I/O error\uff0cI/O error \u200b\u6709\u5927\u200b\u6982\u7387\u200b\u5bfc\u81f4\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u5bb9\u5668\u200b/KVM \u200b\u865a\u62df\u673a\u200b\u78c1\u76d8\u200b\u8fdb\u5165\u200b readonly \u200b\u72b6\u6001\u200b\u3002
\u200b\u5468\u672b\u200b\u4e24\u5929\u200b\u57fa\u672c\u4e0a\u200b\u90fd\u200b\u5728\u200b\u6392\u67e5\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u76ee\u524d\u200b\uff082021/8/30 \u200b\u51cc\u6668\u200b\uff09\uff0c\u200b\u6211\u4eec\u200b\u5f97\u5230\u200b\u7684\u200b\u7ed3\u8bba\u200b\u5982\u4e0b\u200b\uff1a
open-iscsi
\u200b\u65e0\u6548\u200b\u3002pve-qemu-kvm
\u200b\u4ece\u200b 6.0.0-3
\u200b\u964d\u7ea7\u200b\u5230\u200b 5.2.0-6
\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5907\u4efd\u200b\u4efb\u52a1\u200b\u6267\u884c\u200b\u65f6\u200b\u4e0d\u518d\u200b\u51fa\u73b0\u200b I/O error\uff0c\u200b\u4f46\u662f\u200b\u4ecd\u7136\u200b\u6709\u200b\u53ef\u80fd\u200b\u51fa\u73b0\u200b conn error
\u3002aio=io_uring
, aio=native
\u200b\u6216\u200b aio=threads
\u200b\u5747\u200b\u65e0\u6548\u200b\u3002vzdump
\u200b\u7684\u200b\u5e26\u5bbd\u200b\u6709\u200b\u53ef\u80fd\u200b\u80fd\u200b\u51cf\u5c11\u200b conn error
\u200b\u51fa\u73b0\u200b\u7684\u200b\u6b21\u6570\u200b\uff0c\u200b\u4f46\u662f\u200b\u5728\u200b pv1 \u200b\u548c\u200b pv8 \u200b\u4e0a\u200b\u6d4b\u8bd5\u200b\u7684\u200b\u7ed3\u679c\u200b\u4e0d\u592a\u200b\u4e00\u6837\u200b\u3002\u200b\u76ee\u524d\u200b\u7684\u200b\u4e34\u65f6\u200b\u89e3\u51b3\u65b9\u6848\u200b\uff1a
pve-qemu-kvm
\u200b\u964d\u7ea7\u200b\u5230\u200b\u4e86\u200b 5.2.0-6
\u3002\u200b\u5176\u4ed6\u8f6f\u4ef6\u200b\uff08\u200b\u5305\u62ec\u200b\u5185\u6838\u200b\uff09\u200b\u7248\u672c\u200b\u4e0d\u53d8\u200b\u3002\u200b\u8d77\u56e0\u200b\uff1a\u200b\u901a\u8fc7\u200b PVE \u200b\u7684\u200b Web \u200b\u754c\u9762\u200b\u67e5\u770b\u200b\u96c6\u7fa4\u200b\u72b6\u6001\u200b\uff0c\u200b\u53d1\u73b0\u200b pv4 \u200b\u7684\u200b\u72b6\u6001\u200b\u4e3a\u200b\u95ee\u53f7\u200b\uff0c\u200b\u7cfb\u7edf\u200b\u8fd0\u884c\u200b\u6307\u6807\u200b\uff08CPU\u3001\u200b\u5185\u5b58\u200b\u7b49\u200b\uff09\u200b\u6298\u7ebf\u56fe\u200b\u65e0\u6cd5\u200b\u663e\u793a\u200b\uff0c\u200b\u5404\u79cd\u200b\u865a\u62df\u673a\u200b\u64cd\u4f5c\u200b\u5927\u91cf\u200b\u8d85\u65f6\u200b\u3002
SSH \u200b\u767b\u5f55\u200b pv4 \u200b\u540e\u5148\u200b\u5c1d\u8bd5\u200b\u8fd0\u884c\u200b apt upgrade
\uff0c\u200b\u5728\u200b\u66f4\u65b0\u200b\u5185\u6838\u200b\u65f6\u5361\u200b\u5728\u200b /etc/kernel/postinst.d/zz-update-grub
\u200b\u4e00\u884c\u200b\uff0c\u200b\u8fdb\u4e00\u6b65\u200b\u6392\u67e5\u200b\u53d1\u73b0\u200b grub-probe
\u200b\u5361\u4f4f\u200b\uff0clvs user-data
\u200b\u51fa\u73b0\u200b giving up waiting for lock
\uff0c\u200b\u6700\u7ec8\u200b\u67e5\u200b\u5230\u200b iSCSI \u200b\u5b58\u50a8\u200b\u6389\u7ebf\u200b\uff08\u200b\u4f46\u662f\u200b\u8fc7\u200b\u4e86\u200b\u4e00\u4f1a\u200b\u5b83\u200b\u53c8\u200b\u81ea\u5df1\u200b\u6062\u590d\u200b\u4e86\u200b\uff09\u3002
\u200b\u8003\u8651\u200b\u5230\u200b\u4e0d\u5230\u200b\u4e00\u4e2a\u6708\u200b\u524d\u624d\u200b\u51fa\u73b0\u200b\u8fc7\u200b\u7531\u200b\u865a\u62df\u673a\u200b\u5907\u4efd\u200b\u89e6\u53d1\u200b\u7684\u200b iSCSI \u200b\u9519\u8bef\u200b\uff0c\u200b\u6211\u4eec\u200b\u7ee7\u7eed\u200b\u68c0\u67e5\u200b\u4e86\u200b iSCSI \u200b\u4e0e\u200b\u7f51\u7edc\u200b\u95ee\u9898\u200b\u3002
\u200b\u6211\u4eec\u200b\u5728\u200b user-data \u200b\u4e2d\u200b\u521b\u5efa\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u65b0\u5377\u200b\u7528\u4e8e\u200b\u6d4b\u8bd5\u4e3b\u673a\u200b\u5230\u200b iSCSI \u200b\u7684\u200b\u8fde\u63a5\u200b\u5e26\u5bbd\u200b\u4e0e\u200b\u7a33\u5b9a\u6027\u200b\uff0c\u200b\u53d1\u73b0\u200b\u4ece\u200b\u5b58\u50a8\u200b\u8bfb\u53d6\u200b\u65f6\u200b\u901f\u5ea6\u200b\u5f88\u200b\u6162\u4e14\u200b\u4e0d\u200b\u7a33\u5b9a\u200b\uff0c\u200b\u4f46\u662f\u200b\u5199\u5165\u200b\u5b58\u50a8\u200b\u7684\u200b\u8fde\u63a5\u200b\u5f88\u200b\u6b63\u5e38\u200b\u3002\u200b\u8c03\u8bd5\u200b\u540e\u200b\u53d1\u73b0\u200b\u5c06\u200b\u4e3b\u673a\u200b\u7684\u200b\u5149\u7ea4\u7f51\u200b\u53e3\u200b\u7684\u200b MTU \u200b\u4ece\u200b 1550 \u200b\u8c03\u6574\u200b\u81f3\u200b 9000 \u200b\u5e76\u200b\u91cd\u542f\u200b\u540e\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6062\u590d\u6b63\u5e38\u200b\u3002\u200b\u4e4b\u540e\u200b\u5c06\u200b\u7ec4\u7ec7\u200b\u65f6\u95f4\u200b\u4fee\u6539\u200b\u6240\u6709\u200b\u4e3b\u673a\u200b\u7684\u200b MTU \u200b\u8bbe\u7f6e\u200b\u3002
"},{"location":"records/2021-10-31/","title":"2021 \u200b\u5e74\u200b 10 \u200b\u6708\u200b 31 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u65e5\u200b\u53d1\u73b0\u200b pv4 \u200b\u4e0e\u200b pv5 \u200b\u5185\u5b58\u200b\u5360\u7528\u200b\u8f83\u200b\u591a\u200b\uff0c\u200b\u68c0\u67e5\u200b\u8fdb\u7a0b\u200b\u540e\u200b\u53d1\u73b0\u200b blueman \u200b\u76f8\u5173\u200b\u8fdb\u7a0b\u200b\u5360\u7528\u200b\u989d\u5916\u200b\u5185\u5b58\u200b\u8f83\u200b\u591a\u200b\uff0c\u200b\u53ef\u80fd\u200b\u662f\u200b\u5728\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u6253\u5305\u200b\u65f6\u672a\u200b\u5220\u9664\u200b\u3002\u200b\u6211\u4eec\u200b\u5728\u200b\u8fd9\u4e24\u53f0\u200b\u673a\u5668\u200b\u4e0a\u200b\u5bf9\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u5bb9\u5668\u200b\u6267\u884c\u200b\u4e86\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u547d\u4ee4\u200b\uff1a
pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- dpkg -P blueman\n
\u200b\u5220\u9664\u200b\u4e86\u200b blueman\uff0c\u200b\u5e76\u4e14\u200b\u6267\u884c\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b\u7ed3\u675f\u200b\u76f8\u5173\u200b\u8fdb\u7a0b\u200b\uff1a
killall blueman-tray\nkillall blueman-applet\n
\u200b\u4e4b\u540e\u200b\u9700\u8981\u200b\u627e\u200b\u65f6\u95f4\u200b\u68c0\u67e5\u200b\u76f8\u5173\u200b\u955c\u50cf\u200b\u3002
"},{"location":"records/2021-12-20/","title":"2021 \u200b\u5e74\u200b 12 \u200b\u6708\u200b 20 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u6628\u65e5\u200b\u4e0b\u5348\u200b\u6709\u200b\u540c\u5b66\u200b\u53cd\u9988\u200b\u81ea\u5df1\u200b\u7684\u200b Vivado \u200b\u9879\u76ee\u200b\u5728\u200b Vlab \u200b\u4e0a\u200b\u751f\u6210\u200b\u6bd4\u7279\u6d41\u200b\u65f6\u200b\u603b\u662f\u200b\u5931\u8d25\u200b\u3002\u200b\u6628\u65e5\u200b\u665a\u200b\u4e0e\u200b\u4eca\u65e5\u200b\u51cc\u6668\u200b\u5bf9\u200b\u8be5\u200b\u95ee\u9898\u200b\u8fdb\u884c\u200b\u4e86\u200b\u6392\u67e5\u200b\u3002
\u200b\u9996\u5148\u200b\u53d1\u73b0\u200b\u8be5\u200b\u95ee\u9898\u200b\u786e\u5b9e\u200b\u5b58\u5728\u200b\uff0cVivado \u200b\u8f93\u51fa\u200b\u7684\u200b\u5d29\u6e83\u200b\u65f6\u200b\u9519\u8bef\u200b\u6808\u200b\u5f00\u5934\u200b\u4e00\u90e8\u5206\u200b\u5982\u4e0b\u200b\uff1a
Stack:\n/lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f3cc17f8210]\n/lib/x86_64-linux-gnu/libc.so.6(malloc_usable_size+0x48) [0x7f3cc1851378]\n/lib/x86_64-linux-gnu/libudev.so.1(+0x10319) [0x7f3c77539319]\n/lib/x86_64-linux-gnu/libudev.so.1(+0x167c4) [0x7f3c7753f7c4]\n/lib/x86_64-linux-gnu/libudev.so.1(+0x1b255) [0x7f3c77544255]\n/lib/x86_64-linux-gnu/libudev.so.1(+0x1b4bb) [0x7f3c775444bb]\n/lib/x86_64-linux-gnu/libudev.so.1(udev_enumerate_scan_devices+0x277) [0x7f3c77546d67]\n
\u200b\u5c1d\u8bd5\u200b\u4f7f\u7528\u200b Ubuntu 18.04 Docker \u200b\u8fd0\u884c\u200b Vivado\uff0c\u200b\u751f\u6210\u200b\u6b63\u5e38\u200b\u3002\u200b\u5728\u200b\u68c0\u7d22\u200b\u76f8\u5173\u200b\u8d44\u6599\u200b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u8ba4\u4e3a\u200b\u8be5\u200b\u95ee\u9898\u200b\u53ef\u80fd\u200b\u662f\u200b Ubuntu 20.04 \u200b\u7684\u200b libudev.so \u200b\u4e0e\u200b Vivado 2019.1 \u200b\u4e0d\u200b\u517c\u5bb9\u200b\u5bfc\u81f4\u200b\u7684\u200b\uff0c\u200b\u6216\u200b\u4e3a\u200b libudev \u200b\u5728\u200b LXC \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u89e6\u53d1\u200b\u4e86\u200b\u67d0\u4e9b\u200b corner case\u3002\u200b\u5c06\u200b Ubuntu 18.04 \u200b\u7684\u200b libudev.so \u200b\u63d0\u53d6\u200b\u540e\u200b\uff0c\u200b\u52a0\u5165\u200b LD_PRELOAD
\u200b\u4e2d\u200b\uff0c\u200b\u518d\u6b21\u200b\u8fd0\u884c\u200b Vivado\uff0c\u200b\u751f\u6210\u200b\u6b63\u5e38\u200b\u3002
\u200b\u76f8\u5173\u200b\u4fee\u6539\u200b\u5df2\u7ecf\u200b\u90e8\u7f72\u200b\u5230\u200b Vlab Software \u200b\u4e2d\u200b\u3002
"},{"location":"records/2022-01-26/","title":"2022 \u200b\u5e74\u200b 1 \u200b\u6708\u200b 26 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u65e5\u200b\u8fdb\u884c\u200b\u4e86\u200b\u505c\u673a\u200b\u7ef4\u62a4\u200b\uff0c\u200b\u64cd\u4f5c\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
apt update
\u200b\u64cd\u4f5c\u200b\u8fc7\u200b\u6162\u200b\uff0c\u200b\u4e2d\u9014\u200b\u653e\u5f03\u200b\u4e86\u200b\u672c\u200b\u9879\u76ee\u200b\u3002\u200b\u64cd\u4f5c\u200b\u811a\u672c\u200b\u5982\u4e0b\u200b\uff1a
#!/bin/bash\n\n[ -n \"$BASH_VERSION\" ] || exit 1\n\ngen_sh() {\n cat << EOFX\necho 'ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAH3ZHisQY0iMpUNDQNaxcnRSqDbauE8ih6/MrEENJZa7FHKINOPi+bunK1wEXPqlKfu8INEBWCf95+t86z+jXVxmQE176xenS92wiLvR4MZyCBfD5DXAB0mK5iV1eQug5P/cD8Pohr/3wywFbKgKzsix9unky9sJGr86RunSwJbAkMGlw==' > /etc/ssh/ssh_user_ca\nmkdir -p /etc/ssh/sshd_config.d/\ncat > /etc/ssh/sshd_config.d/vlab_ca.conf << EOF\nTrustedUserCAKeys /etc/ssh/ssh_user_ca\nAuthorizedPrincipalsCommand /usr/bin/printf 'root\\n%u\\n'\nAuthorizedPrincipalsCommandUser nobody\nEOF\nchown 0.0 /etc/ssh/ssh_user_ca /etc/ssh/sshd_config.d/vlab_ca.conf\nmv /etc/apparmor.d/usr.sbin.tcpdump /etc/apparmor.d/disable/\n\nif [ -d /etc/apt/sources.list.d ]; then\n echo \"deb [trusted=yes] https://vlab.ustc.edu.cn/repo/ ./\" > /etc/apt/sources.list.d/vlab.list\nfi\n\ndpkg -P blueman brltty brltty-x11 sbsigntool secureboot-db speech-dispatcher speech-dispatcher-espeak-ng orca libespeak-ng1 espeak-ng-data gir1.2-gstreamer-1.0 gir1.2-nm-1.0 libao-common libao4 libatk-adaptor libbluetooth3 libbrlapi0.7 libdotconf0 libnm0 libpcaudio0 libpcre2-32-0 libsonic0 libspeechd2 python3-brlapi python3-louis python3-pyatspi python3-speechd sound-icons speech-dispatcher-audio-plugins xbrlapi\n#apt update\n#apt-get install -y --only-upgrade policykit-1 sudo\n\nsystemctl disable cups-browsed.service\nEOFX\n}\n\nwork() {\n local id=\"$1\"\n local param=\"$2\"\n local lv=user-data/vm-\"$id\"-disk-0\n local mnt=/tmp/mnt-\"$id\"\n mkdir -p \"$mnt\"\n echo \"******************** WORKING ON VM ID $id ($param remaining) ********************\"\n lvchange -y -ay \"$lv\"\n mount /dev/\"$lv\" \"$mnt\"\n\n gen_sh > \"$mnt\"/tmp/work.sh\n # generate /dev/null for \"$mnt\"\n rm -f \"$mnt\"/dev/null\n mknod \"$mnt\"/dev/null c 1 3\n chmod 666 \"$mnt\"/dev/null\n lxc-usernsexec -- chroot \"$mnt\" bash /tmp/work.sh\n rm \"$mnt\"/tmp/work.sh\n umount \"$mnt\"\n lvchange -y -an \"$lv\"\n}\n\ntotal=$(<\"${1:-disks.txt}\" wc -l)\nfor id in $(<\"${1:-disks.txt}\"); do\n work \"$id\" \"$((total-=1))\"\ndone\n
\u200b\u811a\u672c\u200b\u5185\u5bb9\u200b\u4e0e\u200b\u5148\u524d\u200b change-repo.sh
\u200b\u7c7b\u4f3c\u200b\u3002\u200b\u6709\u200b\u4e00\u4e9b\u200b\u4e0d\u540c\u200b\u7684\u200b\u5730\u65b9\u200b\uff1a
chroot
\u200b\u540e\u200b apt update
\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u5361\u6b7b\u200b\u5728\u200b Waiting for header
\u200b\u63d0\u793a\u200b\u4e2d\u200b\u3002\u200b\u8c03\u8bd5\u200b\u7ea6\u200b\u4e00\u4e2a\u534a\u200b\u5c0f\u65f6\u200b\u540e\u200b\u53d1\u73b0\u200b\u5176\u200b\u4f9d\u8d56\u200b /dev/null
\u3002\u200b\u4e8e\u662f\u200b\u811a\u672c\u200b\u4f7f\u7528\u200b chroot
\u200b\u64cd\u4f5c\u200b\u524d\u540e\u200b\u6dfb\u52a0\u200b\u4e86\u200b /dev/null
\u200b\u7684\u200b\u76f8\u5173\u200b\u64cd\u4f5c\u200b\uff1blxc-usernsexec
\u200b\u7528\u4e8e\u200b\u786e\u4fdd\u200b UID \u200b\u7684\u200b\u6620\u5c04\u200b\u6b63\u786e\u200b\uff08\u200b\u5b9e\u9645\u200b\u4ee5\u200b\u5bb9\u5668\u200b\u91cc\u200b\u7684\u200b root \u200b\u7684\u200b\u8eab\u4efd\u200b\u6267\u884c\u200b\u7ef4\u62a4\u200b\u811a\u672c\u200b\uff09\uff1a\u200b\u5bb9\u5668\u200b\u91cc\u200b\u7684\u200b root \u200b\u4e8b\u5b9e\u4e0a\u200b\u662f\u200b 100000 \u200b\u53f7\u200b\u7528\u6237\u200b\uff0c\u200b\u76f4\u63a5\u200b\u4ee5\u200b host \u200b\u7684\u200b root \u200b\u8eab\u4efd\u200b\u5199\u5165\u200b\u4f1a\u200b\u51fa\u73b0\u200b\u6743\u9650\u200b\u95ee\u9898\u200b\u3002\u200b\u524d\u671f\u5de5\u4f5c\u200b\uff1a2021 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 21 \u200b\u65e5\u200b
"},{"location":"records/2022-06-16/","title":"2022 \u200b\u5e74\u200b 6 \u200b\u6708\u200b 16 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u6211\u4eec\u200b\u7d27\u6025\u200b\u5904\u7406\u200b\u4e86\u200b LVM metadata \u200b\u5df2\u6ee1\u200b\u5bfc\u81f4\u200b\u65e0\u6cd5\u200b\u65b0\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u95ee\u9898\u200b\u3002
LVM \u200b\u7684\u200b metadata \u200b\u9ed8\u8ba4\u200b\u5b58\u50a8\u200b\u5728\u200b\u6bcf\u4e2a\u200b PV \u200b\u7684\u200b\u5f00\u5934\u200b\u4e0e\u200b\u7ed3\u5c3e\u5904\u200b\uff08\u200b\u4e24\u4efd\u200b\uff09\uff0c\u200b\u5e76\u4e14\u200b metadata \u200b\u7684\u200b\u683c\u5f0f\u200b\u662f\u200b ASCII\u3002\u200b\u5f53\u200b metadata area\uff08MDA\uff09\u200b\u4e0d\u8db3\u4ee5\u200b\u52a0\u5165\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u200b\u65f6\u200b\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u51fa\u73b0\u200b\u65e0\u6cd5\u200b\u65b0\u5efa\u200b LV \u200b\u7b49\u200b\u60c5\u51b5\u200b\u3002
\u200b\u5728\u200b pvcreate
\u200b\u65f6\u200b\uff0cMDA \u200b\u7684\u200b\u5927\u5c0f\u200b\u9ed8\u8ba4\u200b\u4e3a\u200b 1 MB\uff0c\u200b\u6ce8\u610f\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5b58\u200b\u4e24\u4efd\u200b\uff0c\u200b\u56e0\u6b64\u200b\u5b9e\u9645\u200b\u53ef\u7528\u200b\u7684\u200b\u7a7a\u95f4\u200b\u662f\u200b 510K\u3002\u200b\u8fd9\u200b\u5bf9\u4e8e\u200b\u9700\u8981\u200b\u4e0a\u200b\u5343\u4e2a\u200b LV \u200b\u7684\u200b\u573a\u5408\u200b\u800c\u8a00\u200b\u662f\u200b\u4e0d\u8db3\u200b\u7684\u200b\u3002\u200b\u7531\u4e8e\u200b LVM \u200b\u8fd9\u79cd\u200b\u56fa\u5b9a\u200b\u5206\u914d\u200b\u7684\u200b\u8bbe\u8ba1\u200b\uff0c\u200b\u6211\u4eec\u200b\u65e0\u6cd5\u200b\u4fee\u6539\u200b PV MDA \u200b\u7684\u200b\u5927\u5c0f\u200b\uff0c\u200b\u56e0\u6b64\u200b\u4e3a\u4e86\u200b\u5904\u7406\u200b\u6b64\u200b\u95ee\u9898\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u200b\u80fd\u591f\u200b\u91c7\u53d6\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u63aa\u65bd\u200b\uff1a
iscsiadm -m session --rescan
\uff0c\u200b\u65e0\u987b\u200b\u505c\u673a\u200b\u6216\u200b\u4e2d\u65ad\u200b\u4efb\u4f55\u200b\u670d\u52a1\u200b\u3002pvcreate --metadatasize 64m /dev/XXX
vgextend
\uff09\u3002metadataignore
\u200b\u4e3a\u200b y
\uff0c\u200b\u4f7f\u5f97\u200b metadata \u200b\u4ec5\u200b\u5b58\u50a8\u200b\u4e8e\u200b\u65b0\u200b\u7684\u200b MDA \u200b\u8db3\u591f\u200b\u5927\u200b\u7684\u200b\u5c0f\u76d8\u200b\u4e0a\u200b\u3002\u200b\u6545\u969c\u200b\u4e8e\u200b\u5f53\u65e5\u200b 15:30 \u200b\u88ab\u200b\u53cd\u9988\u200b\uff0c\u200b\u5e76\u4e8e\u200b\u7ea6\u200b 22:30 \u200b\u4fee\u590d\u200b\u5b8c\u6210\u200b\u3002
\u200b\u5728\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\u521b\u5efa\u200b\u65b0\u200b LUN \u200b\u7684\u200b\u6ce8\u610f\u4e8b\u9879\u200b
\u200b\u6240\u6709\u200b Virtual Disk \u200b\u7684\u200b LUN \u200b\u7f16\u53f7\u200b\u5fc5\u987b\u200b\u552f\u4e00\u200b\uff0c\u200b\u5426\u5219\u200b\u65b0\u5efa\u200b\u7684\u200b LUN \u200b\u65e0\u6cd5\u200b\u88ab\u200b\u670d\u52a1\u5668\u200b\u68c0\u6d4b\u200b\u5230\u200b\uff0c\u200b\u751a\u81f3\u200b\u53ef\u80fd\u200b\u5728\u200b\u670d\u52a1\u5668\u200b\u91cd\u542f\u200b\u65f6\u200b\u4ea7\u751f\u200b\u9519\u4e71\u200b\u3002
"},{"location":"records/2022-09-20/","title":"2022 \u200b\u5e74\u200b 9 \u200b\u6708\u200b 20 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u8fd1\u65e5\u200b\u4e3b\u8981\u200b\u5b8c\u6210\u200b\uff1a
\u200b\u5173\u4e8e\u200b\u540e\u8005\u200b\uff1a
lxc.cgroup2.devices.allow: c 10:200 rwm
File descriptor in bad state
\uff0c\u200b\u5219\u200b\u53ef\u4ee5\u200b\u8ba4\u4e3a\u200b\u8bbe\u7f6e\u200b\u6210\u529f\u200bnameserver
\u200b\u9879\u200b\u3002\u200b\u8d77\u56e0\u200b\uff1a\u200b\u6709\u200b\u5b66\u751f\u200b\u53cd\u9988\u200b\u5bb9\u5668\u200b\u542f\u52a8\u200b\u7a0b\u5e8f\u200b\u8f83\u6162\u200b\uff0c\u200b\u7ef4\u62a4\u200b\u4eba\u5458\u200b\u53d1\u73b0\u200b iowait
\u200b\u8f83\u200b\u9ad8\u200b\uff0c\u200b\u968f\u540e\u200b\u53d1\u73b0\u200b\u5b58\u50a8\u9635\u5217\u200b\u7ba1\u7406\u200b\u754c\u9762\u200b\u65e0\u6cd5\u200b\u767b\u5f55\u200b\u3002
\u200b\u4eca\u65e5\u200b\u8fdb\u884c\u200b\u4e86\u200b\u505c\u673a\u200b\u7ef4\u62a4\u200b\uff0c\u200b\u64cd\u4f5c\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
iscsiadm -m node -T <target-name> -U all
\u200b\u767b\u51fa\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\uff1biscsiadm -m session -P 3
\u200b\u786e\u8ba4\u200b\u4f1a\u8bdd\u200b\u6210\u529f\u200b\u767b\u51fa\u200b\u3002\u200b\u6ce8\u200b\uff1a\u200b\u505c\u6b62\u200b iscsid.service
\u200b\u5e76\u200b\u4e0d\u4f1a\u200b\u767b\u51fa\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\u3002
\u200b\u4fee\u6539\u200b /etc/sub{u,g}id
\uff0c\u200b\u5c06\u200b\u7b2c\u4e09\u4e2a\u200b\u6570\u5b57\u200b\u7531\u200b 65536
\u200b\u6539\u4e3a\u200b 165536
\uff0c\u200b\u589e\u5927\u200b\u5bb9\u5668\u200b\u5141\u8bb8\u200b\u4f7f\u7528\u200b\u7684\u200b ID \u200b\u8303\u56f4\u200b\u3002
\u200b\u5b58\u50a8\u9635\u5217\u200b\u65e0\u6cd5\u200b\u767b\u5f55\u200b\u539f\u56e0\u200b\u4e0d\u660e\u200b\uff0c\u200b\u4f7f\u7528\u200b\u4e32\u53e3\u200b\u91cd\u7f6e\u200b\u51ed\u636e\u200b\u5e76\u200b\u91cd\u65b0\u200b\u8bbe\u7f6e\u200b\u8ba4\u8bc1\u200b\u540e\u200b\u53ef\u4ee5\u200b\u6b63\u5e38\u200b\u767b\u5f55\u200b\u3002
\u200b\u67e5\u770b\u200b\u9635\u5217\u200b\u65e5\u5fd7\u200b\uff0c\u200b\u4ec5\u200b\u53d1\u73b0\u200b 2022/11/15 \u200b\u51fa\u73b0\u200b\u8fc7\u200b\u4e00\u4e2a\u200b memory allocation failed
\u200b\u4e8b\u4ef6\u200b\uff0c\u200b\u65e0\u6cd5\u200b\u786e\u8ba4\u200b\u662f\u5426\u200b\u4e0e\u200b\u672c\u6b21\u200b\u65e0\u6cd5\u200b\u767b\u5f55\u200b\u76f8\u5173\u200b\u3002
\u200b\u67e5\u9605\u200b HPE \u200b\u8bbe\u5907\u200b\u56fa\u4ef6\u200b\u53d1\u884c\u200b\u6ce8\u8bb0\u200b\uff0c\u200b\u6ca1\u6709\u200b\u53d1\u73b0\u200b\u4e0e\u200b\u672c\u6b21\u200b\u6545\u969c\u200b\u76f8\u5173\u200b\u7684\u200b\u5185\u5bb9\u200b\u3002
\u200b\u53ef\u80fd\u200b\u9700\u8981\u200b\u5411\u200b\u4e0a\u6e38\u200b\u53cd\u9988\u200b\u672c\u6b21\u200b\u6545\u969c\u200b\u3002
"},{"location":"records/2023-01-28/","title":"2023 \u200b\u5e74\u200b 1 \u200b\u6708\u200b 28 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u6211\u4eec\u200b\u8fdb\u884c\u200b\u4e86\u200b Ubuntu 22.04 \u200b\u955c\u50cf\u200b\u7684\u200b\u6709\u5173\u200b\u6d4b\u8bd5\u200b\u3002
"},{"location":"records/2023-01-28/#firefox-\u7684\u517c\u5bb9\u6027\u95ee\u9898","title":"Firefox \u200b\u7684\u200b\u517c\u5bb9\u6027\u95ee\u9898","text":"\u200b\u7531\u4e8e\u200b Ubuntu 22.04 \u200b\u4f7f\u7528\u200b snap \u200b\u7248\u672c\u200b firefox \u200b\u66ff\u6362\u200b\u7cfb\u7edf\u200b\u81ea\u5e26\u200b\u7684\u200b firefox \u200b\u5305\u200b\uff0c\u200b\u6211\u4eec\u200b\u6dfb\u52a0\u200b\u4e86\u200b firefox-vlab
\u200b\u5305\u200b\u7528\u4e8e\u200b\u8c03\u7528\u200b Vlab Software \u200b\u5957\u4ef6\u200b\u4e2d\u200b\u7684\u200b firefox \u200b\u4e8c\u8fdb\u5236\u200b\u7a0b\u5e8f\u200b\u3002\u200b\u4e3b\u8981\u200b\u95ee\u9898\u200b\u51fa\u73b0\u200b\u5728\u200b\u83dc\u5355\u200b\u4e2d\u200b\uff1a
firefox-vlab
\u200b\u5305\u4e2d\u200b\u4fee\u590d\u200b\uff08divert \u200b\u66f4\u6539\u200b\u5bf9\u5e94\u200b desktop \u200b\u6587\u4ef6\u540d\u79f0\u200b\uff09\uff1b\u200b\u7ecf\u8fc7\u200b\u7b80\u5355\u200b\u6d4b\u8bd5\u200b\uff0cVivado 2016 \u200b\u80fd\u591f\u200b\u8fdb\u884c\u200b\u7efc\u5408\u200b\u3001\u200b\u5b9e\u73b0\u200b\u4e0e\u200b\u751f\u6210\u200b\u6bd4\u7279\u6d41\u200b\uff1bVivado 2019 \u200b\u5728\u200b\u7efc\u5408\u200b\u4e00\u6b65\u200b\u5d29\u6e83\u200b\uff0cbacktrace \u200b\u7c7b\u4f3c\u200b\u5982\u4e0b\u200b\uff1a
#\n# An unexpected error has occurred (11)\n#\nStack:\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/tps/lnx64/jre9.0.4/lib//server/libjvm.so(+0xb6aadb) [0x7f71a4f6aadb]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/tps/lnx64/jre9.0.4/lib//server/libjvm.so(JVM_handle_linux_signal+0xbb) [0x7f71a4f6fe1b]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/tps/lnx64/jre9.0.4/lib//server/libjvm.so(+0xb647b8) [0x7f71a4f647b8]\n/lib/x86_64-linux-gnu/libc.so.6(+0x42520) [0x7f71f2e1a520]\n/lib/x86_64-linux-gnu/libc.so.6(+0xa2d27) [0x7f71f2e7ad27]\n/lib/x86_64-linux-gnu/libc.so.6(free+0x73) [0x7f71f2e7d4d3]\n/lib/x86_64-linux-gnu/libselinux.so.1(selinuxfs_exists+0xd0) [0x7f71f22dfdb0]\n/lib/x86_64-linux-gnu/libselinux.so.1(+0x721c) [0x7f71f22d921c]\n/lib64/ld-linux-x86-64.so.2(+0x647e) [0x7f71f594447e]\n/lib64/ld-linux-x86-64.so.2(+0x6568) [0x7f71f5944568]\n/lib/x86_64-linux-gnu/libc.so.6(_dl_catch_exception+0xe5) [0x7f71f2f4cc85]\n/lib64/ld-linux-x86-64.so.2(+0xdff6) [0x7f71f594bff6]\n/lib/x86_64-linux-gnu/libc.so.6(_dl_catch_exception+0x88) [0x7f71f2f4cc28]\n/lib64/ld-linux-x86-64.so.2(+0xe34e) [0x7f71f594c34e]\n/lib/x86_64-linux-gnu/libc.so.6(+0x906bc) [0x7f71f2e686bc]\n/lib/x86_64-linux-gnu/libc.so.6(_dl_catch_exception+0x88) [0x7f71f2f4cc28]\n/lib/x86_64-linux-gnu/libc.so.6(_dl_catch_error+0x33) [0x7f71f2f4ccf3]\n/lib/x86_64-linux-gnu/libc.so.6(+0x901ae) [0x7f71f2e681ae]\n/lib/x86_64-linux-gnu/libc.so.6(dlopen+0x48) [0x7f71f2e68748]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd840d01ca6dc9+0x3c) [0x7f71ea14c90c]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd846009c98322+0xa8) [0x7f71ea14cbf8]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(+0x146e08) [0x7f71ea146e08]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd847e20e6acca+0x9) [0x7f71ea1473c9]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(+0xfe457) [0x7f71ea0fe457]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd853912de43c2+0xc8) [0x7f71ea0fe248]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(+0xeb552) [0x7f71ea0eb552]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd995765656b48+0x2a) [0x7f71ea0f578a]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libXil_lmgr11.so(xilinxd_52bd700d1bd3c616+0x73) [0x7f71ea0f5873]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetHostInfo[abi:cxx11](XilReg::Utils::HostInfoType, bool) const+0x208) [0x7f71edab58f8]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetHostInfoFormatted[abi:cxx11](XilReg::Utils::HostInfoType, bool) const+0x52) [0x7f71edab84b2]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetHostInfo[abi:cxx11]() const+0x183) [0x7f71edab8773]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetRegInfo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool)+0xc6) [0x7f71edac26b6]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonxillic.so(XilReg::Utils::GetRegInfoWebTalk(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x60) [0x7f71edac2940]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_project.so(HAPRWebtalkHelper::getRegistrationId[abi:cxx11]() const+0x3a) [0x7f71bd006c2a]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_project.so(HAPRWebtalkHelper::HAPRWebtalkHelper(HAPRProject*, HAPRDesign*, HWEWebtalkMgr*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xb0) [0x7f71bd0070a0]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_tcltasks.so(+0x1675a16) [0x7f71e4875a16]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_tcltasks.so(+0x16803a8) [0x7f71e48803a8]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_common.so(+0x8068e2) [0x7f71f44068e2]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(+0x334af) [0x7f71ece334af]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(+0x76875) [0x7f71ece76875]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(+0x7e029) [0x7f71ece7e029]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(TclEvalObjEx+0x76) [0x7f71ece35156]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_common.so(+0x804df1) [0x7f71f4404df1]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(Tcl_ServiceEvent+0x7f) [0x7f71ecea7b0f]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(Tcl_DoOneEvent+0x154) [0x7f71ecea7e44]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commontasks.so(+0x231625) [0x7f71e6e31625]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commontasks.so(+0x23b163) [0x7f71e6e3b163]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commontasks.so(+0x23c1fe) [0x7f71e6e3c1fe]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_common.so(+0x8068e2) [0x7f71f44068e2]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(+0x334af) [0x7f71ece334af]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(Tcl_EvalObjv+0x32) [0x7f71ece335e2]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(TclEvalObjEx+0x322) [0x7f71ece35402]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_commonmain.so(+0x7424) [0x7f71f3807424]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/libtcl8.5.so(Tcl_Main+0x1d0) [0x7f71ecea0210]\n/opt/vlab/vivado/Xilinx/Vivado/2019.1/lib/lnx64.o/librdi_common.so(+0x84ac9b) [0x7f71f444ac9b]\n/lib/x86_64-linux-gnu/libc.so.6(+0x94b43) [0x7f71f2e6cb43]\n/lib/x86_64-linux-gnu/libc.so.6(+0x126a00) [0x7f71f2efea00]\n
\u200b\u53ef\u4ee5\u200b\u53d1\u73b0\u200b\u95ee\u9898\u200b\u5728\u200b dlopen()
\u200b\u67d0\u4e2a\u200b\u5e93\u65f6\u200b\u51fa\u9519\u200b\u3002\u200b\u6211\u4eec\u200b\u7f16\u5199\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u7b80\u5355\u200b\u7684\u200b\u7a0b\u5e8f\u200b\u68c0\u67e5\u200b dlopen()
\u200b\u7684\u200b\u60c5\u51b5\u200b\uff1a
#include <dlfcn.h>\n#include <stdio.h>\n\n#if defined(RTLD_NEXT)\n#define REAL_LIBC RTLD_NEXT\n#else\n#define REAL_LIBC ((void *) -1L)\n#endif\n\nvoid* dlopen(const char *file, int mode)\n{\n static void* (*o_dlopen) ( const char *file, int mode )=0;\n fprintf(stderr, \"dlopen was called %s %d\\n\", file, mode );\n o_dlopen = (void*(*)(const char *file, int mode)) dlsym(REAL_LIBC, \"dlopen\");\n void *res = (*o_dlopen)( file, mode );\n fprintf(stderr, \"dlopen(%s, %d) gets %p\\n\", file, mode, res);\n return res;\n}\n
gcc -Wall -fPIC -shared -o dlopen.so dlopen.c -ldl
\u200b\u540e\u200b LD_PRELOAD
\u200b\u6267\u884c\u200b Vivado 2019 \u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u53d1\u73b0\u200b\u5728\u200b\u52a0\u8f7d\u200b libdbus-glib-1.so.2
\u200b\u65f6\u200b\u7a0b\u5e8f\u200b\u5d29\u6e83\u200b\u3002\u200b\u5c06\u200b Ubuntu 18.04 \u200b\u7684\u200b\u5bf9\u5e94\u200b\u5e93\u200b\u4e0b\u8f7d\u200b\u5e76\u200b LD_PRELOAD
\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u53d1\u73b0\u200b\u5de5\u4f5c\u200b\u6b63\u5e38\u200b\u3002
\u200b\u6839\u636e\u200b\u4ee5\u5f80\u200b\u7684\u200b\u7cfb\u7edf\u8d44\u6e90\u200b\u8bb0\u5f55\u200b\uff0c\u200b\u6211\u4eec\u200b\u53d1\u73b0\u200b\u66f4\u65b0\u200b man-db \u200b\u4e0e\u200b\u7cfb\u7edf\u200b\u66f4\u65b0\u200b\u64cd\u4f5c\u200b\u53ef\u80fd\u200b\u5bfc\u81f4\u200b I/O \u200b\u62e5\u5835\u200b\u3002\u200b\u76ee\u524d\u200b\u5904\u7406\u200b\u4e86\u200b\u6240\u6709\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u5bb9\u5668\u200b\uff1a
# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- systemctl disable man-db.timer\n# pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- systemctl disable apt-daily-upgrade.timer\n
\u200b\u540c\u65f6\u200b\u4e3a\u200b logrotate.timer
\u200b\u6dfb\u52a0\u200b\u4e86\u200b 3 \u200b\u5c0f\u65f6\u200b\u7684\u200b\u968f\u673a\u200b\u5ef6\u8fdf\u200b\uff1a
pct list | awk '$2==\"running\"{print $1}' | xargs -I xxx pct exec xxx -- bash -c 'mkdir -p /etc/systemd/system/logrotate.timer.d && echo -e \"[Timer]\\nRandomizedDelaySec=3h\" > /etc/systemd/syst\nem/logrotate.timer.d/vlab.conf && systemctl daemon-reload'\n
\u200b\u4ee5\u53ca\u200b\u65b0\u200b\u7684\u200b 22.04 \u200b\u5bb9\u5668\u200b\u4e5f\u200b\u9884\u671f\u200b\u4e0d\u200b\u5305\u542b\u200b\u8fd9\u4e9b\u200b\u5b9a\u65f6\u200b\u4efb\u52a1\u200b\u3002
"},{"location":"records/2023-01-28/#\u5173\u95ed-swap-\u5206\u914d","title":"\u5173\u95ed\u200b swap \u200b\u5206\u914d","text":"\u200b\u9ed8\u8ba4\u200b PVE \u200b\u7ed9\u200b\u6bcf\u4e2a\u200b\u5bb9\u5668\u200b\u5206\u914d\u200b\u4e86\u200b 512M \u200b\u7684\u200b swap\uff0c\u200b\u4f46\u662f\u200b\u4e3b\u673a\u200b swap \u200b\u4ec5\u200b\u6709\u200b 8G\uff0c\u200b\u56e0\u6b64\u200b\u6279\u91cf\u200b\u5173\u95ed\u200b\u4e86\u200b\u6240\u6709\u200b\u5bb9\u5668\u200b\u7684\u200b swap\uff0c\u200b\u5e76\u4e14\u200b\u4fee\u6539\u200b\u4e86\u200b\u7ba1\u7406\u200b\u5e73\u53f0\u200b\u76f8\u5173\u200b\u4ee3\u7801\u200b\u3002
# # inside /etc/pve/lxc\n# for i in *; do echo ${i/.conf/} && pct set ${i/.conf/} --swap 0; done\n
"},{"location":"records/2023-01-28/#\u540e\u7eed\u4f7f\u7528-github-actions-\u6784\u5efa\u955c\u50cf","title":"\u540e\u7eed\u200b\uff1a\u200b\u4f7f\u7528\u200b GitHub Actions \u200b\u6784\u5efa\u200b\u955c\u50cf","text":"2023 \u200b\u5e74\u200b 2 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u66f4\u65b0\u200b\uff1a
\u200b\u6211\u4eec\u200b\u5728\u200b labstrap \u200b\u4ed3\u5e93\u200b\u914d\u7f6e\u200b\u4e86\u200b GitHub Actions \u200b\u7684\u200b\u6784\u5efa\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u76ee\u524d\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b\u4ec5\u9650\u200b\u624b\u52a8\u200b\u89e6\u53d1\u200b\u3002\u200b\u7ba1\u7406\u5458\u200b\uff08\u200b\u6709\u200b\u4ed3\u5e93\u200b\u6743\u9650\u200b\u7684\u200b\u4eba\u200b\uff09\u200b\u53ef\u4ee5\u200b\u5728\u200b Image Build CI \u200b\u9875\u9762\u200b\u70b9\u51fb\u200b Run workflow \u200b\u542f\u52a8\u200b\u4e00\u6b21\u200b\u6784\u5efa\u200b\uff0c\u200b\u6784\u5efa\u200b\u5b8c\u6210\u200b\u540e\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u4e0a\u200b\u4f20\u5230\u200b Auto builds \u200b\u8fd9\u4e2a\u200b release\u3002
"},{"location":"records/2023-02-17/","title":"2023 \u200b\u5e74\u200b 2 \u200b\u6708\u200b 17 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u5bf9\u200b\u6240\u6709\u200b\u8282\u70b9\u200b\u8fdb\u884c\u200b\u4e86\u200b\u8f6f\u4ef6\u200b\u5347\u7ea7\u200b\uff0c\u200b\u5e76\u4e14\u200b\u66f4\u65b0\u200b\u4e86\u200b Django web \u200b\u4e0e\u200b filestash\u3002
"},{"location":"records/2023-02-17/#django-web-\u5347\u7ea7","title":"Django web \u200b\u5347\u7ea7","text":"\u200b\u66f4\u65b0\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
\u200b\u66f4\u65b0\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
\u200b\u4eca\u5929\u200b\u6839\u636e\u200b\u4e4b\u524d\u200b\u53d1\u5e03\u200b\u7684\u200b\u901a\u77e5\u200b\u6e05\u7406\u200b\u4e86\u200b\u957f\u671f\u200b\u4e0d\u200b\u4f7f\u7528\u200b\u53ca\u200b\u5df2\u200b\u6bd5\u4e1a\u200b\u534a\u5e74\u200b\u7684\u200b\u7528\u6237\u200b\u3002
\u200b\u8003\u8651\u200b\u5230\u200b\u767b\u5f55\u200b\u9875\u9762\u200b\u7684\u200b\u201c\u200b\u7528\u6237\u540d\u200b\u5bc6\u7801\u200b\u201d\u200b\u767b\u5f55\u200b\u65b9\u5f0f\u200b\u8fc7\u4e8e\u200b\u663e\u773c\u200b\uff0c\u200b\u4ee5\u81f3\u4e8e\u200b\u90e8\u5206\u200b\u7528\u6237\u200b\u6ca1\u6709\u200b\u4f7f\u7528\u200b CAS \u200b\u767b\u5f55\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u6211\u4eec\u200b\u65e0\u6cd5\u200b\u53ca\u65f6\u200b\u83b7\u53d6\u200b\u7528\u6237\u200b\u6700\u65b0\u200b\u7684\u200b\u5728\u6821\u200b\u72b6\u6001\u200b\u4fe1\u606f\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u5728\u200b\u7a0b\u5e8f\u200b\u5217\u51fa\u200b\u7684\u200b\u201c\u200b\u6e05\u9000\u200b\u7528\u6237\u200b\u5217\u8868\u200b\u201d\u200b\u4e2d\u200b\u6839\u636e\u200b\u5b66\u200b\u53f7\u200b\u624b\u52a8\u200b\u6392\u9664\u200b\u4e86\u200b\u53ef\u80fd\u200b\u8fd8\u200b\u5728\u6821\u200b\u7684\u200b\u540c\u5b66\u200b\u3002\u200b\u5177\u4f53\u200b\u89c4\u5219\u200b\u5982\u4e0b\u200b\uff1a
\u200b\u5bf9\u4e8e\u200b\u540c\u65f6\u200b\u7b26\u5408\u200b\u4ee5\u4e0a\u200b\u89c4\u5219\u200b\u7684\u200b\u7528\u6237\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c06\u200b\u5176\u200b\u4ece\u200b\u6e05\u9000\u200b\u5217\u8868\u200b\u4e2d\u200b\u79fb\u9664\u200b\uff0c\u200b\u7136\u540e\u200b\u5220\u9664\u200b\u4e86\u200b\u5217\u8868\u200b\u4e2d\u200b\u5269\u4f59\u200b\u7684\u200b\u7528\u6237\u200b\u53ca\u5176\u200b\u865a\u62df\u673a\u200b\u3002
\u200b\u6839\u636e\u200b Proxmox VE \u200b\u754c\u9762\u200b\u63d0\u4f9b\u200b\u7684\u200b\u4fe1\u606f\u200b\uff0c\u200b\u6b64\u6b21\u200b\u6e05\u9000\u200b\u540e\u200b\u201c\u200b\u7528\u6237\u200b\u6570\u636e\u200b\u201d\u200b\u5206\u533a\u200b\u7684\u200b\u4f7f\u7528\u91cf\u200b\u4ece\u200b 37.59 TB \u200b\u4e0b\u964d\u200b\u5230\u200b\u4e86\u200b 23.53 TB\uff08-37%\uff09\uff0c\u200b\u865a\u62df\u673a\u200b\u6570\u91cf\u200b\u4ece\u200b 1803 \u200b\u964d\u200b\u81f3\u200b 1067\uff08-42%\uff09\u3002
"},{"location":"records/2023-03-05/#django-web-\u66f4\u65b0","title":"Django web \u200b\u66f4\u65b0","text":"vm.can_cas_login
\u200b\u4f5c\u4e3a\u200b\u201c\u200b\u6e05\u9000\u200b\u767d\u540d\u5355\u200b\u201d\uff0c\u200b\u6743\u9650\u200b\u7ec4\u4e2d\u200b\u7684\u200b\u7528\u6237\u200b\u4e0d\u4f1a\u200b\u5728\u200b\u201c\u200b\u6e05\u9000\u200b\u5217\u8868\u200b\u201d\u200b\u4e2d\u200b\u5217\u51fa\u200b\u3002\u200b\u4eca\u65e5\u200b\u51cc\u6668\u200b\u5b8c\u6210\u200b\u4e86\u200b\u5347\u7ea7\u200b\u4e0e\u200b\u6e05\u9000\u200b\u64cd\u4f5c\u200b\u3002
"},{"location":"records/2023-08-06/#\u5347\u7ea7","title":"\u5347\u7ea7","text":"\u200b\u6240\u6709\u200b\u7684\u200b pv \u200b\u5747\u200b\u4ece\u200b PVE 7 (Debian Bullseye) \u200b\u5347\u7ea7\u200b\u81f3\u200b PVE 8 (Debian Bookworm)\uff0c\u200b\u5e76\u4e14\u200b\u4f4d\u4e8e\u200b pv1 \u200b\u7684\u200b PBS \u200b\u4e5f\u200b\u4ece\u200b 2 \u200b\u5347\u7ea7\u200b\u5230\u200b\u4e86\u200b 3 (Bookworm)\u3002
\u200b\u5347\u7ea7\u200b\u6ce8\u610f\u4e8b\u9879\u200b\u53c2\u89c1\u200b\uff1ahttps://pve.proxmox.com/wiki/Upgrade_from_7_to_8
\u200b\u5728\u200b\u5347\u7ea7\u200b pv1 \u200b\u524d\u200b\uff0c\u200b\u5c06\u200b pv1 \u200b\u4e0a\u200b\u6240\u6709\u200b VM \u200b\u8fc1\u79fb\u200b\u81f3\u200b\u5df2\u7ecf\u200b\u5347\u7ea7\u200b\u7684\u200b pv2 \u200b\u4ee5\u200b\u51cf\u7f13\u200b\u670d\u52a1\u200b\u4e2d\u65ad\u200b\u7684\u200b\u5f71\u54cd\u200b\u3002\u200b\u56e0\u4e3a\u200b CPU \u200b\u578b\u53f7\u200b\u4e00\u6837\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e0d\u4f1a\u200b\u51fa\u73b0\u200b\u95ee\u9898\u200b\u3002\u200b\u6b64\u5916\u200b\uff0c\u200b\u5728\u200b pv[2-7] \u200b\u4e0a\u200b\u5173\u95ed\u200b\u5168\u90e8\u200b\u5bb9\u5668\u200b\u7684\u200b\u64cd\u4f5c\u200b\u975e\u5e38\u200b\u7f13\u6162\u200b\uff08\u200b\u5e94\u8be5\u200b\u662f\u56e0\u4e3a\u200b\u6709\u200b\u5927\u91cf\u200b\u7684\u200b\u7ade\u4e89\u200b\u5bfc\u81f4\u200b\u7684\u200b\uff09\uff0c\u200b\u4e14\u200b\u5982\u679c\u200b\u5728\u200b\u5173\u95ed\u200b\u5bb9\u5668\u200b\u65f6\u200b\u5347\u7ea7\u200b\uff0c\u200b\u53ef\u80fd\u200b\u5bfc\u81f4\u200b\u6b7b\u9501\u200b\u3002\u200b\u672a\u6765\u200b\u9700\u8981\u200b\u8003\u8651\u200b\u4ee5\u200b\u5c0f\u6279\u91cf\u200b\u65b9\u5f0f\u200b\u5173\u95ed\u200b\u5bb9\u5668\u200b\u6765\u200b\u52a0\u5feb\u901f\u5ea6\u200b\u3002
PVE 8 \u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u9700\u8981\u200b SDN.Use \u200b\u6743\u9650\u200b\uff0c\u200b\u8fd9\u200b\u4e00\u70b9\u200b\u5728\u200b\u5347\u7ea7\u200b\u540e\u200b\u7528\u6237\u200b\u65e0\u6cd5\u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u65f6\u200b\u53d1\u73b0\u200b\u5e76\u200b\u89e3\u51b3\u200b\u3002
\u200b\u5173\u4e8e\u200b Django \u200b\u524d\u7aef\u200b\uff0c\u200b\u5176\u200b\u6dfb\u52a0\u200b\u4e86\u200b KVM \u200b\u652f\u6301\u200b\uff0c\u200b\u90e8\u7f72\u200b\u65b0\u200b\u7248\u672c\u200b\u6ca1\u6709\u200b\u53d1\u751f\u610f\u5916\u200b\u3002\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u5e93\u200b\u7ed3\u6784\u200b\u53c2\u8003\u200b https://github.com/USTC-vlab/cslab/blob/master/docs/django.md#proxy-model-%E7%BB%A7%E6%89%BF%E6%A8%A1%E5%9E%8B%E4%B8%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8D%95%E8%A1%A8%E7%BB%93%E6%9E%84\u3002
"},{"location":"records/2023-08-06/#\u6e05\u9000","title":"\u6e05\u9000","text":"Django \u200b\u4fa7\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u6e05\u9000\u200b\u7684\u200b management command\uff0c\u200b\u5177\u4f53\u5185\u5bb9\u200b\u53c2\u89c1\u200b https://github.com/USTC-vlab/cslab/blob/master/docs/operations.md#%E6%B8%85%E9%80%80%E7%94%A8%E6%88%B7\u3002
"},{"location":"records/2023-10-01/","title":"2023 \u200b\u5e74\u200b 10 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u665a\u4e0a\u200b\u6309\u7167\u200b\u5df2\u7ecf\u200b\u89c4\u5212\u200b\u4e86\u200b\u4e00\u4e2a\u591a\u6708\u200b\u7684\u200b\u65b9\u6848\u200b\uff0c\u200b\u5168\u9762\u200b\u629b\u5f03\u200b\u624b\u200b\u6413\u200b\u7684\u200b iptables \u200b\u9632\u706b\u5899\u200b\u89c4\u5219\u200b\uff0c\u200b\u5e76\u200b\u542f\u7528\u200b\u4e86\u200b PVE Firewall\u3002
"},{"location":"records/2023-10-01/#host-firewall","title":"\u66f4\u65b0\u200b\u4e3b\u673a\u200b\u9632\u706b\u5899","text":"\u200b\u5728\u200b PVE Web \u200b\u754c\u9762\u200b\u4e0a\u200b\u64cd\u4f5c\u200b\u5efa\u597d\u200b\u4e86\u200b management
\u3001blacklist
\u200b\u7b49\u200b IPSet\uff0c\u200b\u5e76\u4e14\u200b\u5efa\u597d\u200b\u4e86\u200b vlab-host
\u3001vlab-vm
\u200b\u548c\u200b pbs
\u200b\u4e09\u4e2a\u200b Security Group\u3002
\u200b\u5728\u200b pv1 \u200b\u4e0a\u914d\u200b\u597d\u200b\u4e86\u200b\u9632\u706b\u5899\u200b\uff0c\u200b\u68c0\u67e5\u200b\u914d\u7f6e\u6587\u4ef6\u200b /etc/pve/nodes/pv1/host.fw
\uff0c\u200b\u5e76\u200b\uff08\u200b\u53bb\u6389\u200b pbs \u200b\u4e4b\u540e\u200b\uff09\u200b\u590d\u5236\u5230\u200b\u5176\u4ed6\u200b\u8282\u70b9\u200b\u4e0a\u200b\u3002
\u200b\u6700\u540e\u200b\u5728\u200b pv1 \u200b\u4e0a\u200b\u5220\u9664\u200b\u4e86\u200b /etc/modprobe.d/iptables-legacy.conf
\u200b\u8fd9\u4e2a\u200b\u6beb\u65e0\u200b\u5fc5\u8981\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u6e05\u9664\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u66fe\u7ecf\u200b\u7ed9\u200b\u81ea\u5df1\u200b\u57cb\u4e0b\u200b\u7684\u200b\u5751\u200b\uff08\u200b\u4f46\u662f\u200b\u5e78\u4e8f\u200b\u8bb0\u4f4f\u200b\u4e86\u200b\uff09\u3002
\u200b\u9996\u5148\u200b\u5728\u200b PVE Web \u200b\u4e0a\u9762\u200b\u627e\u200b\u4e00\u4e2a\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u8c03\u200b\u597d\u200b\u9632\u706b\u5899\u200b\u9009\u9879\u200b\uff0c\u200b\u5f97\u5230\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff1a
/etc/pve/firewall/1095.fw[OPTIONS]\n\npolicy_in: ACCEPT\nipfilter: 1\nmacfilter: 1\nenable: 1\n\n[IPSET ipfilter-net0]\n\n!2001:da8:d800:4bfc::/112\n2001:da8:d800:4bfc::/64\n\n[RULES]\n\nGROUP vlab-vm\n
\u200b\u7136\u540e\u200b ssh \u200b\u8fdb\u200b PVE \u200b\u628a\u200b\u8fd9\u4efd\u200b\u6587\u4ef6\u200b\u590d\u5236\u200b\u7ed9\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\uff1a
cd /etc/pve/firewall\nfor id in $(jq -r '.ids | keys | .[]' /etc/pve/.vmlist); do\n [ $id -gt 1000 -a $id -lt 10000 -a $id -ne 1095 ] || continue\n cp 1095.fw $id.fw\ndone\n
"},{"location":"records/2023-10-01/#iface-firewall","title":"\u7f51\u5361\u200b\u5c42\u9762\u200b\u7684\u200b\u9632\u706b\u5899","text":"\u200b\u4e3a\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u7f51\u5361\u200b\uff08net0\uff09\u200b\u52a0\u4e0a\u200b firewall=1
\u3002\u200b\u7ecf\u8fc7\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u76f4\u63a5\u200b\u5bf9\u200b\u7740\u200b /etc/pve/nodes/{node}/lxc/{vmid}.conf
\u200b\u8dd1\u200b sed \u200b\u662f\u200b\u4e0d\u4f1a\u200b\u4e3a\u200b\u5df2\u7ecf\u200b\u5f00\u673a\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u771f\u6b63\u200b\u542f\u7528\u200b\u9632\u706b\u5899\u200b\u7684\u200b\uff0c\u200b\u9700\u8981\u200b\u901a\u8fc7\u200b API\uff08HTTP \u200b\u6216\u200b pvesh
\u200b\u5747\u200b\u53ef\u200b\uff09\u200b\u6765\u200b\u4fee\u6539\u200b\u3002\u200b\u7ecf\u8fc7\u200b\u8fdb\u4e00\u6b65\u200b\u7684\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u76f4\u63a5\u200b sed \u200b\u4e00\u628a\u200b\u68ad\u200b\u662f\u200b\u53ef\u4ee5\u200b\u7684\u200b\uff0c\u200b\u53ea\u662f\u200b\u9632\u706b\u5899\u200b\u89c4\u5219\u200b\u4ece\u6587\u4ef6\u200b\u540c\u6b65\u200b\u5230\u200b iptables \u200b\u91cc\u200b\u6709\u200b\u5927\u7ea6\u200b 10 \u200b\u79d2\u949f\u200b\u7684\u200b\u5ef6\u8fdf\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e00\u200b\u5f00\u59cb\u200b\u8bef\u4ee5\u4e3a\u200b\u4e0d\u4f1a\u200b\u540c\u6b65\u200b\uff08\u200b\u4f46\u662f\u200b\u4e0b\u9762\u200b\u7684\u200b\u811a\u672c\u200b\u5df2\u7ecf\u200b\u8dd1\u200b\u5b8c\u200b\u4e86\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5c31\u200b\u4e0d\u200b\u6539\u200b\u4e86\u200b\uff0c\u200b\u7559\u200b\u4f5c\u200b\u8bb0\u5f55\u200b\uff09\u3002
for id in $(jq -r '.ids | keys | .[]' /etc/pve/.vmlist); do\n [ $id -gt 1000 -a $id -lt 10000 ] || continue\n node=$(jq -r \".ids.\\\"$id\\\".node\" /etc/pve/.vmlist)\n f=\"/etc/pve/nodes/$node/lxc/$id.conf\"\n conf=\"$(awk '$1==\"net0:\"{print $2}' \"$f\")\"\n [[ \"$conf\" == *firewall=1* ]] && continue\n pvesh set /nodes/$node/lxc/$id/config -net0 \"$conf,firewall=1\"\ndone\n
\u200b\u7531\u4e8e\u200b\u865a\u62df\u673a\u200b\u6570\u91cf\u200b\u4f17\u591a\u200b\uff0c\u200b\u8fd9\u7ec4\u200b\u547d\u4ee4\u200b\u8dd1\u200b\u4e86\u200b\u4e00\u4e2a\u591a\u200b\u5c0f\u65f6\u200b\u624d\u200b\u8dd1\u200b\u5b8c\u200b\u3002
Django \u200b\u5df2\u7ecf\u200b\u63d0\u524d\u200b\u4fee\u6539\u200b\u8fc7\u200b\u4e86\u200b\uff0cbuild_container_network_str
\u200b\u73b0\u5728\u200b\u4e5f\u200b\u5305\u542b\u200b firewall=1
\u200b\u4e86\u200b\uff0c\u200b\u5e76\u200b\u56e0\u6b64\u200b\u8e29\u200b\u4e86\u200b\u4e2a\u200b\u5751\u200b\uff08\u200b\u4e0b\u9762\u200b ebtables \u200b\u90a3\u6761\u200b\uff09\u3002
\u200b\u7531\u4e8e\u200b\u6211\u4eec\u200b\u5728\u200b PVE \u200b\u4e0a\u200b\u4e3a\u200b\u865a\u62df\u673a\u200b\u90e8\u7f72\u200b\u4e86\u200b\u9632\u706b\u5899\u200b\uff0c\u200b\u8bbe\u7f6e\u200b\u4e86\u200b\u4fdd\u7559\u200b\u7aef\u53e3\u200b\u53ea\u200b\u5141\u8bb8\u200b web \u200b\u5bb9\u5668\u200b\u8bbf\u95ee\u200b\uff0c\u200b\u56e0\u6b64\u200b vlab-software \u200b\u91cc\u200b\u7684\u200b vscode
\u200b\u547d\u4ee4\u200b\u4e5f\u200b\u4e0d\u518d\u200b\u9700\u8981\u200b\u64cd\u4f5c\u200b\u4fee\u6539\u200b\u865a\u62df\u673a\u200b\u5185\u200b\u7684\u200b iptables \u200b\u4e86\u200b\uff0c\u200b\u5220\u6389\u200b\u4e86\u200b\u76f8\u5173\u200b\u4ee3\u7801\u200b\u3002
\u200b\u540c\u6837\u200b vlab-vnc
\u200b\u4e5f\u200b\u4e0d\u518d\u200b\u9700\u8981\u200b\u5904\u7406\u200b iptables\uff0c\u200b\u56e0\u6b64\u200b\u66f4\u65b0\u200b\u4e86\u200b Debian control \u200b\u548c\u200b postinst\uff0c\u200b\u5220\u6389\u200b\u4e86\u200b iptables-persistent \u200b\u7684\u200b\u4f9d\u8d56\u200b\u53ca\u200b\u64cd\u4f5c\u200b iptables \u200b\u7684\u200b\u4ee3\u7801\u200b\u3002
\u200b\u6700\u540e\u200b\u66f4\u65b0\u200b\u4e86\u200b vlab-pve-agent\uff0c\u200b\u8ba9\u200b\u5b83\u200b\u4e3a\u200b\u65b0\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u81ea\u52a8\u200b\u751f\u6210\u200b <id>.fw
\u200b\u9632\u706b\u5899\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u3002
\uff08\u200b\u4eca\u5929\u200b\u5565\u200b\u90fd\u200b\u6ca1\u5e72\u200b\uff0c\u200b\u5b9e\u9645\u200b\u5de5\u4f5c\u200b\u5df2\u7ecf\u200b\u5728\u200b 11 \u200b\u6708\u200b 16 \u200b\u65e5\u200b\u5b8c\u6210\u200b\u4e86\u200b\u3002\uff09
"},{"location":"records/2023-11-18/#cve-2023-23583","title":"CVE-2023-23583","text":"11 \u200b\u6708\u200b 16 \u200b\u65e5\u6709\u200b\u540c\u5b66\u200b\u5728\u200b vlab \u200b\u4e0a\u200b\u6d4b\u8bd5\u200b CVE-2023-23583 \u200b\u5bfc\u81f4\u200b pv11, pv13, pv14 \u200b\u4e09\u53f0\u200b host \u200b\u6545\u969c\u200b\u5e76\u200b\u81ea\u52a8\u200b\u91cd\u542f\u200b\uff0c\u200b\u7136\u540e\u200b\u79c1\u804a\u200b\u6211\u4eec\u200b\u53cd\u9988\u200b\u4e86\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u3002\u200b\u8c03\u67e5\u200b\u53d1\u73b0\u200b Intel \u200b\u5df2\u7ecf\u200b\u53d1\u5e03\u200b\u4e86\u200b\u4fee\u590d\u200b\u540e\u200b\u7684\u200b\u5fae\u7801\u200b\uff0c\u200b\u4f46\u662f\u200b Debian \u200b\u8fd8\u200b\u6ca1\u6709\u200b\u6253\u5305\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u624b\u52a8\u200b\u4e0b\u8f7d\u200b\u4e86\u200b\u7531\u200b Ubuntu \u200b\u6253\u5305\u200b\u7684\u200b\u5fae\u7801\u200b\uff08intel-microcode_3.20231114.0ubuntu0.22.04.1_amd64.deb
\uff09\u200b\u5e76\u200b dpkg -i
\u3002
\u200b\u6211\u4eec\u200b\u5bf9\u200b\u8fd9\u200b\u4e00\u6279\u200b\u673a\u5668\u200b\uff08pv9 \u200b\u5230\u200b pv14\uff09\u200b\u90fd\u200b\u8fdb\u884c\u200b\u4e86\u200b\u76f8\u540c\u200b\u7684\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u7136\u540e\u200b\u5c06\u200b pv9 \u200b\u5148\u884c\u200b\u91cd\u542f\u200b\uff0c\u200b\u786e\u8ba4\u200b\u6545\u969c\u200b\u5df2\u7ecf\u200b\u4fee\u590d\u200b\u540e\u200b\uff0c\u200b\u53d1\u5e03\u516c\u544a\u200b\u8ba1\u5212\u200b\u5728\u200b 18 \u200b\u65e5\u200b\u51cc\u6668\u200b 0 \u200b\u70b9\u200b\u91cd\u542f\u200b\u8fd0\u884c\u200b\u7740\u200b\u7528\u6237\u200b\u865a\u62df\u673a\u200b\u7684\u200b 5 \u200b\u53f0\u200b\u673a\u5668\u200b\u3002
\u200b\u8fd9\u56de\u200b\u5077\u200b\u4e86\u200b\u4e2a\u200b\u61d2\u200b\uff0c\u200b\u5728\u200b\u81ea\u5df1\u200b\u7684\u200b\u673a\u5668\u200b\u4e0a\u7528\u200b at(8) \u200b\u5b9a\u65f6\u200b\u4efb\u52a1\u200b ssh \u200b\u5230\u200b 5 \u200b\u53f0\u200b\u8282\u70b9\u200b\u4e0a\u200b\u8fd0\u884c\u200b reboot
\uff0c\u200b\u8282\u7701\u200b\u4e86\u200b\u4eba\u5de5\u200b\u64cd\u4f5c\u200b\u7684\u200b\u65f6\u95f4\u200b\u3002
\u200b\u540c\u65f6\u200b\u4e5f\u200b\u66f4\u65b0\u200b\u4e86\u200b Django\uff0c\u200b\u5728\u200b\u865a\u62df\u673a\u200b ID \u200b\u540e\u9762\u200b\u663e\u793a\u200b\u8282\u70b9\u200b\u540d\u79f0\u200b\u3002
"},{"location":"records/2023-12-13/","title":"2023 \u200b\u5e74\u200b 12 \u200b\u6708\u200b 13 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"\u200b\u4eca\u5929\u200b\u66ff\u6362\u200b\u4e86\u200b\u9635\u5217\u200b\u7684\u200b\u574f\u76d8\u200b\u3002
\u200b\u7531\u4e8e\u200b\u7b49\u5f85\u200b\u5907\u4ef6\u200b\u5bc4\u8fbe\u200b\uff0c\u200b\u6700\u7ec8\u200b\u82b1\u200b\u4e86\u200b\u8fd1\u200b\u4e24\u5468\u200b\u7684\u200b\u65f6\u95f4\u200b\u624d\u200b\u5b9e\u9645\u200b\u66f4\u6362\u200b\u3002\u200b\u73b0\u573a\u200b\u66f4\u6362\u200b\u4e00\u4e9b\u200b\u5907\u6ce8\u200b\uff1a
\u200b\u66ff\u6362\u200b\u540e\u200b\u9635\u5217\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u91cd\u5efa\u200b\uff0c\u200b\u5efa\u8bae\u200b\u6682\u505c\u200b\u865a\u62df\u673a\u200b\u521b\u5efa\u200b\uff1a\u200b\u4fee\u6539\u200b config.py\uff0c\u200b\u5c06\u200b TOTAL_CT_LIMIT
\u200b\u62c9\u4f4e\u200b\uff0c\u200b\u5e76\u4e14\u200b\u53d6\u6d88\u200b\u6ce8\u91ca\u200b GLOBAL_NOTIFICATION
\u200b\u7684\u200b\u503c\u200b\u5e76\u200b\u4fee\u6539\u200b\u4e3a\u200b\u901a\u77e5\u200b\u5185\u5bb9\u200b\uff0c\u200b\u4e4b\u540e\u200b\u6b63\u5e38\u200b\u5411\u200b\u7528\u6237\u200b\u53d1\u9001\u200b\u901a\u77e5\u200b\u5373\u53ef\u200b\u3002
[Desktop Entry]\nName=Vivado 2019.1\nExec=/opt/vlab/bin/vivado\nIcon=/opt/vlab/vivado/Xilinx/Vivado/2019.1/doc/images/vivado_logo.png\nTerminal=false\nType=Application\nX-Desktop-File-Install-Version=0.23\n
"},{"location":"references/pve-ids/","title":"Proxmox \u200b\u865a\u62df\u673a\u200b ID \u200b\u5206\u914d","text":"ID \u200b\u6216\u200b ID \u200b\u6bb5\u200b \u200b\u5206\u914d\u60c5\u51b5\u200b 100-199 vlab \u200b\u670d\u52a1\u200b\u5982\u200b gateway, web \u200b\u7b49\u200b 200-799 \u200b\u672a\u200b\u5206\u914d\u200b 800-899 \u200b\u6258\u7ba1\u200b\u5728\u200b vlab \u200b\u4e0a\u200b\u7684\u200b\u5176\u4ed6\u200b\u670d\u52a1\u200b\u5982\u200b USTC OJ, Verilog OJ \u200b\u7b49\u200b 900-999 vlab \u200b\u7ef4\u62a4\u200b\u5c0f\u7ec4\u200b\u81ea\u5df1\u200b\u4f7f\u7528\u200b\u7684\u200b\u865a\u62df\u673a\u200b 1000-? \u200b\u7528\u6237\u200b\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a"},{"location":"references/ustccas/","title":"\u7edf\u4e00\u200b\u8eab\u4efd\u200b\u8ba4\u8bc1\u200b\u8d44\u6599","text":""},{"location":"references/ustccas/#\u54cd\u5e94\u6837\u4f8b","title":"\u54cd\u5e94\u200b\u6837\u4f8b","text":"\u200b\u6ce8\u200b\uff1a\u200b\u975e\u200b\u539f\u59cb\u200b\u54cd\u5e94\u200b\uff0c\u200b\u5df2\u200b\u89e3\u6790\u200b\u4e3a\u200b Python dict
\uff1a
{\n 'xbm': '1',\n 'logintime': '2020-02-30 12:34:56',\n 'gid': '2201234567',\n 'ryzxztdm': '10',\n 'ryfldm': '201030000',\n 'loginip': '192.0.2.0',\n 'name': '\u200b\u5f20\u4e09\u200b',\n 'login': 'PB17000001',\n 'zjhm': 'PB17000001',\n 'glzjh': 'SA21011000\\tPB17000001',\n 'deptCode': '011',\n 'email': 'noreply@mail.ustc.edu.cn'\n}\n
\u200b\u539f\u59cb\u200b\u54cd\u5e94\u200b\u5185\u5bb9\u200b\uff08XML example\uff09 <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>\n<cas:authenticationSuccess>\n<cas:user>SA21011000</cas:user>\n<attributes>\n<cas:xbm>1</cas:xbm>\n<cas:logintime>2020-02-30 12:34:56</cas:logintime>\n<cas:gid>2201234567</cas:gid>\n<cas:ryzxztdm>10</cas:ryzxztdm>\n<cas:ryfldm>201030000</cas:ryfldm>\n<cas:loginip>192.0.2.0</cas:loginip>\n<cas:name>\u200b\u5f20\u4e09\u200b</cas:name>\n<cas:login>SA21011000</cas:login>\n<cas:zjhm>SA21011000</cas:zjhm>\n<cas:glzjh>SA21011000 PB17000001</cas:glzjh>\n<cas:deptCode>011</cas:deptCode>\n<cas:email>noreply@mail.ustc.edu.cn</cas:email>\n</attributes>\n</cas:authenticationSuccess>\n</cas:serviceResponse>\n
glzjh
\u200b\u7684\u200b\u503c\u200b\u4e0d\u200b\u5b8c\u5168\u200b\u53ef\u9760\u200b
\u200b\u6839\u636e\u200b USTCCAS \u200b\u7684\u200b\u6587\u6863\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u5c5e\u6027\u200b\u4e2d\u200b\u5305\u542b\u200b\u4e86\u200b\u7528\u6237\u200b\u6240\u6709\u200b\u7684\u200b\u5386\u53f2\u200b\u8bc1\u4ef6\u200b\u53f7\u200b\uff08\u200b\u5b66\u200b\u53f7\u200b/\u200b\u5de5\u53f7\u200b\uff09\uff0c\u200b\u4ee5\u200b \\t
\u200b\u5206\u5272\u200b\u3002
\u200b\u4f46\u662f\u200b\u5728\u200b\u5b9e\u9645\u64cd\u4f5c\u200b\u4e2d\u200b\u53d1\u73b0\u200b\u8fd9\u4e2a\u200b\u5c5e\u6027\u200b\u95ee\u9898\u200b\u6bd4\u8f83\u200b\u591a\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff08\u200b\u4ee5\u4e0b\u200b\u4f8b\u5b50\u200b\u7ecf\u8fc7\u200b\u533f\u540d\u200b\u5316\u200b\u5904\u7406\u200b\uff09\uff1a
\"BA01000000\\t00000\\tSA97000000\"
\uff0c\u200b\u7b2c\u4e00\u4e2a\u200b\u503c\u200b\u662f\u200b\u4e8c\u5341\u591a\u5e74\u200b\u524d\u200b\u7684\u200b\u535a\u58eb\u200b ID\uff0c\u200b\u800c\u200b\u6700\u65b0\u200b\u7684\u200b\u6559\u5e08\u200b\u8bc1\u4ef6\u200b\u53f7\u200b\u662f\u200b\u4e2d\u95f4\u200b\u7684\u200b\u503c\u200b\"U0000000\"
\"null\"
id,sfztm,sfzt\n1,10,\u200b\u5728\u6821\u200b\n2,20,\u200b\u79bb\u6821\u200b\uff08\u200b\u542b\u200b\u6821\u5185\u200b\u8eab\u4efd\u200b\u7ed3\u675f\u200b\uff09\n3,30,\u200b\u6821\u5185\u200b\u8eab\u4efd\u200b\u8f6c\u6362\u200b\n5,40,\u200b\u79bb\u9000\u4f11\u200b\n6,50,\"\u200b\u6682\u65f6\u200b\u79bb\u6821\u200b(\u200b\u4f11\u5b66\u200b/\u200b\u51fa\u56fd\u200b\u7b49\u200b)\"\n7,99,\u200b\u5176\u4ed6\u200b\n8,91,\u200b\u8bc1\u4ef6\u200b\u505c\u7528\u200b\u6216\u200b\u6ce8\u9500\u200b\n
"},{"location":"references/ustccas/#\u4eba\u5458\u5206\u7c7b\u7801","title":"\u4eba\u5458\u200b\u5206\u7c7b\u200b\u7801","text":"id,ryflm,ryfl\n1,101010000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u6559\u5b66\u200b\u5c97\u200b\n2,101020000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u79d1\u7814\u200b\u5c97\u200b\n3,101030000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u7ba1\u7406\u200b\u5c97\u200b\n4,101040000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u652f\u6491\u200b\u5c97\u200b\n5,101ZZ0000,\u200b\u6559\u5de5\u200b-\u200b\u6b63\u5f0f\u200b\u7f16\u5236\u200b\u5176\u4ed6\u200b\u5c97\u200b\u6216\u200b\u672a\u660e\u200b\u5c97\u200b\n6,201010000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u79d1\u5b66\u200b\u5b66\u4f4d\u200b\u535a\u58eb\u200b\n7,201020000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u79d1\u5b66\u200b\u5b66\u4f4d\u200b\u7855\u58eb\u200b\n8,201030000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u672c\u79d1\u200b\n9,201040000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u5b66\u751f\u200b\u4e13\u79d1\u200b\n10,201ZZ0000,\u200b\u5b66\u751f\u200b-\u200b\u6b63\u5f0f\u200b\u5b66\u751f\u200b\u5176\u4ed6\u200b\u6216\u200b\u672a\u77e5\u200b\u5c42\u6b21\u200b\n11,202010000,\u200b\u5b66\u751f\u200b-\u200b\u4e13\u4e1a\u5b66\u4f4d\u200b\u535a\u58eb\u200b\n12,202020000,\u200b\u5b66\u751f\u200b-\u200b\u4e13\u4e1a\u5b66\u4f4d\u200b\u7855\u58eb\u200b\n13,202ZZ0000,\u200b\u5b66\u751f\u200b-\u200b\u4e13\u4e1a\u5b66\u4f4d\u200b\u5176\u4ed6\u200b\u6216\u200b\u672a\u77e5\u200b\u5c42\u6b21\u200b\n14,240030000,\u200b\u5b66\u751f\u200b-\u200b\u591c\u5927\u200b\u51fd\u6388\u200b\u57f9\u8bad\u73ed\u200b\u672c\u79d1\u200b\n15,240040000,\u200b\u5b66\u751f\u200b-\u200b\u591c\u5927\u200b\u51fd\u6570\u200b\u57f9\u8bad\u73ed\u200b\u4e13\u79d1\u200b\n16,240ZZ0000,\u200b\u5b66\u751f\u200b-\u200b\u591c\u5927\u200b\u51fd\u6570\u200b\u57f9\u8bad\u73ed\u200b\u5176\u4ed6\u200b\u6216\u200b\u672a\u77e5\u200b\u5c42\u6b21\u200b\n17,290ZZ0000,\u200b\u77ed\u671f\u57f9\u8bad\u200b\u5b66\u751f\u200b\n18,2ZZZZ0000,\u200b\u5b66\u751f\u200b-\u200b\u5176\u4ed6\u200b\u7c7b\u578b\u200b\u5b66\u751f\u200b\n19,300000000,\u200b\u535a\u58eb\u540e\u200b\n20,901000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u4e0a\u7ea7\u90e8\u95e8\u200b\u5404\u79cd\u7c7b\u578b\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b\n21,902000000,\u200b\u4ea4\u6d41\u200b\u8bbf\u95ee\u200b\u8fdb\u4fee\u200b\u4eba\u5458\u200b\n22,903000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u9080\u8bf7\u200b\u6765\u200b\u7684\u200b\u8bb2\u5ea7\u200b\u3001\u200b\u6f14\u51fa\u200b\u3001\u200b\u4ea4\u6d41\u200b\u4eba\u5458\u200b\n23,904000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u53c2\u52a0\u200b\u4f1a\u8bae\u200b\u4eba\u5458\u200b\n24,905000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u6765\u6821\u200b\u53c2\u89c2\u200b\u4eba\u5458\u200b\n25,906000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u5b66\u751f\u5bb6\u957f\u200b\n26,9ZZ000000,\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b-\u200b\u5176\u4ed6\u200b\u6765\u8bbf\u200b\u4eba\u5458\u200b\n27,Z01000000,\u200b\u6559\u5de5\u200b\u5bb6\u5c5e\u200b\n28,Z02000000,\u200b\u9644\u4e2d\u200b\u5b66\u751f\u200b\n29,ZZZ000000,\u200b\u5176\u4ed6\u200b\u4eba\u5458\u200b\n30,103ZZ0000,\u200b\u6559\u5de5\u200b-\u200b\u6821\u200b\u8058\u7528\u200b\u4eba\u5458\u200b\u5176\u4ed6\u200b\u5c97\u200b\u6216\u200b\u672a\u660e\u200b\u5c97\u200b\n31,180ZZ0000,\u200b\u5404\u200b\u5355\u4f4d\u200b\u81ea\u8058\u200b\u4eba\u5458\u200b\n33,190ZZ0000,\u200b\u5404\u200b\u5355\u4f4d\u200b\u4e34\u65f6\u200b\u8058\u7528\u200b\u4eba\u5458\u200b\n34,301000000,\u200b\u6821\u5185\u200b\u535a\u58eb\u540e\u200b\n35,309000000,\u200b\u4f01\u4e1a\u200b\u535a\u58eb\u540e\u200b\n
"},{"location":"servers/ct100/","title":"\u7f51\u200b\u5173\u673a\u200b (CT 100)","text":"\u200b\u7f51\u200b\u5173\u673a\u200b\u987e\u540d\u601d\u4e49\u200b\u5c31\u662f\u200b\uff08\u200b\u5bb9\u5668\u200b\u5185\u7f51\u200b\u7684\u200b\uff09\u200b\u7f51\u5173\u200b\uff0c\u200b\u540c\u65f6\u200b\u63a5\u5165\u200b\u4e86\u200b\u7ba1\u7406\u200b\u5185\u200b\u7f51\u200b\uff08vmbr2
/ eth2
/ 172.30.0.1/24
\uff09\u3001\u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b\uff08vmbr1
/ eth1
/ 172.31.0.1/16
\uff09\u200b\u548c\u200b\u6821\u56ed\u7f51\u200b\uff08vmbr0
/ eth0
/ 202.38.75.252/24
\uff09\uff0c\u200b\u901a\u8fc7\u200b NAT \u200b\u63d0\u4f9b\u200b\u5185\u200b\u7f51\u200b\u673a\u5668\u200b\u7684\u200b\u5bf9\u5916\u200b\u8bbf\u95ee\u200b\u4ee5\u53ca\u200b\u7279\u6b8a\u200b\u9700\u6c42\u200b\u7684\u200b\u7aef\u53e3\u200b\u8f6c\u53d1\u200b\u3002
\u200b\u8be5\u200b\u5bb9\u5668\u200b\u914d\u7f6e\u200b\u4e3a\u200b\u56db\u6838\u200b 8G\uff0c\u200b\u4ec5\u200b\u8fd0\u884c\u200b\u4e86\u200b\u57fa\u672c\u200b\u7cfb\u7edf\u200b\u7ec4\u4ef6\u200b\uff08\u200b\u4e3b\u8981\u200b\u662f\u200b iptables\u3001radvd \u200b\u548c\u200b WireGuard\uff09\u3002
"},{"location":"servers/ct100/#\u5185\u7f51\u4e0a\u7f51\u8f6c\u53d1","title":"\u5185\u200b\u7f51\u4e0a\u7f51\u200b\u8f6c\u53d1","text":"\u200b\u5185\u200b\u7f51\u200b\u865a\u62df\u673a\u200b\uff08172.31.0.0/16\uff0c172.30.0.0/24\uff09\u200b\u7684\u200b\u6240\u6709\u200b\u5230\u200b\u5916\u7f51\u200b\u6d41\u91cf\u200b\u90fd\u200b\u901a\u8fc7\u200b\u672c\u200b\u673a\u200b\u8f6c\u53d1\u200b\uff0c\u200b\u8f6c\u53d1\u200b\u901a\u8fc7\u200b iptables \u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7531\u200b\u5185\u6838\u200b\u5b8c\u6210\u200b\uff0c\u200b\u56e0\u6b64\u200b\u672c\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7684\u200b iptables \u200b\u89c4\u5219\u200b\u5341\u5206\u200b\u91cd\u8981\u200b\u3002\u200b\u4e0b\u9762\u200b\u89e3\u91ca\u200b\u8bbe\u7f6e\u200b\u6587\u4ef6\u200b iptables.sh
\u3002
Tip
iptables.sh
\u200b\u66fe\u7ecf\u200b\u4f4d\u4e8e\u200b /root
\u200b\u4e0b\u200b\uff0c\u200b\u5728\u200b 2020 \u200b\u5e74\u200b 11 \u200b\u6708\u200b rootfs \u200b\u635f\u574f\u200b\u540e\u200b\u4e22\u5931\u200b\u3002
\u200b\u73b0\u5728\u200b\u7684\u200b\u505a\u6cd5\u200b\u662f\u200b\u76f4\u63a5\u200b\u5728\u200b /root/iptables/
\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u624b\u52a8\u200b\u7ef4\u62a4\u200b rules.v4
/ rules.v6
\u200b\u7b49\u200b\u6587\u4ef6\u200b\uff0c\u200b\u7136\u540e\u200b\u4f7f\u7528\u200b apply.sh
\u200b\u66f4\u65b0\u200b\u89c4\u5219\u200b\u3002
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u53ef\u80fd\u200b\u8fc7\u65f6\u200b\uff0c\u200b\u8bf7\u4ee5\u200b\u7cfb\u7edf\u200b\u5185\u200b\u7684\u200b\u6587\u4ef6\u200b\u4e3a\u51c6\u200b
"},{"location":"servers/ct100/#\u9632\u706b\u5899\u90e8\u5206","title":"\u9632\u706b\u5899\u200b\u90e8\u5206","text":"### IPv4 ###\niptables -P INPUT ACCEPT\niptables -P FORWARD ACCEPT\niptables -P OUTPUT ACCEPT\niptables -F\niptables -X\niptables -N VLAB\n\niptables -A VLAB -i lo -j ACCEPT\niptables -A VLAB -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\niptables -A VLAB -p tcp --dport 22 -j ACCEPT\niptables -A VLAB -p tcp --dport 1024 ! -s 202.38.75.226 -j DROP\niptables -A INPUT -i vmbr+ -j VLAB\n
\u200b\u5f00\u5934\u200b\u7684\u200b\u90e8\u5206\u200b 1-6 \u200b\u884c\u200b\u521d\u59cb\u5316\u200b iptables \u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5230\u200b\u8f6c\u53d1\u200b\u7684\u200b\u6d41\u91cf\u200b\u8d70\u200b\u7684\u200b\u662f\u200b FORWARD \u200b\u94fe\u200b\u800c\u200b\u4e0d\u662f\u200b INPUT \u200b\u94fe\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6709\u200b -P FORWARD ACCEPT
\u3002\u200b\u7b2c\u200b 7 \u200b\u884c\u200b\u521b\u5efa\u200b VLAB \u200b\u94fe\u653e\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u7684\u200b rules\u3002
9-13 \u200b\u884c\u200b\u8fd9\u90e8\u5206\u200b\u540c\u200b\u9632\u706b\u5899\u200b\u3002\u200b\u4e0b\u9762\u200b\u7684\u200b 15 \u200b\u884c\u200b\u4e5f\u200b\u76f8\u540c\u200b\u3002
"},{"location":"servers/ct100/#\u8f6c\u53d1\u9632\u706b\u5899\u90e8\u5206","title":"\u8f6c\u53d1\u200b\u9632\u706b\u5899\u200b\u90e8\u5206","text":"#iptables -A FORWARD -p udp -m state --ctstate NEW -j NFLOG --nflog-prefix '[vlab]'\niptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\niptables -A FORWARD -p tcp --dport 25 -j DROP # Block SMTP\niptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 -m state --state NEW -j NFLOG --nflog-prefix '[vlab]'\niptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 --tcp-flag FIN FIN -j NFLOG --nflog-prefix '[vlab]'\niptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 22 --tcp-flag RST RST -j NFLOG --nflog-prefix '[vlab]'\niptables -A FORWARD -i eth0 -o eth1 -j ACCEPT\niptables -A FORWARD -d 10.0.0.0/8 -j DROP\niptables -A FORWARD -d 172.16.0.0/12 -j DROP\niptables -A FORWARD -d 192.168.0.0/16 -j DROP\niptables -A FORWARD -d 202.38.64.58/31 -j DROP\niptables -A FORWARD -d 202.38.96.193 -j DROP\niptables -A FORWARD -d 210.45.224.65 -j DROP\niptables -Z\n
16 \u200b\u884c\u200b\u5c4f\u853d\u200b\u8fde\u63a5\u200b\u8fdc\u7aef\u200b 25\uff08SMTP\uff09\u200b\u7aef\u53e3\u200b\uff0c\u200b\u9632\u6b62\u200b\u6709\u4eba\u200b\u53d1\u200b\u5783\u573e\u90ae\u4ef6\u200b\uff0c\u200b\u8fd9\u200b\u548c\u200b LUG VPN \u200b\u4e00\u6837\u200b\u3002\u200b\u73b0\u5728\u200b\u7684\u200b\u4e92\u8054\u7f51\u200b\u5bf9\u200b\u5783\u573e\u90ae\u4ef6\u200b\u5f88\u200b\u654f\u611f\u200b\uff0c\u200b\u5f88\u200b\u5bb9\u6613\u200b\u56e0\u6b64\u200b\u7ed9\u200b IP \u200b\u5730\u5740\u200b\u751a\u81f3\u200b\u6821\u56ed\u7f51\u200b AS \u200b\u5e26\u6765\u200b\u4e0d\u597d\u200b\u7684\u200b\u58f0\u8a89\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5c4f\u853d\u6389\u200b\u3002
17-19 \u200b\u884c\u200b\u5c1d\u8bd5\u200b\u8bb0\u5f55\u200b\u6bcf\u4e2a\u200b TCP \u200b\u8fde\u63a5\u200b\uff0c\u200b\u7531\u4e8e\u200b LXC \u200b\u91cc\u200b\u7684\u200b iptables \u200b\u65e0\u6cd5\u8bbf\u95ee\u200b rsyslog1\uff0c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b ulogd2 \u200b\u7684\u200b\u529e\u6cd5\u200b2\u3002\u200b\u4e0d\u8fc7\u200b\u60c5\u51b5\u200b\u662f\u200b\uff0c\u200b\u7531\u4e8e\u200b\u6570\u636e\u91cf\u200b\u592a\u200b\u5927\u200b\uff0culogd2.service
\u200b\u73b0\u5728\u200b\u88ab\u200b\u5173\u6389\u200b\u4e86\u200b\uff08LOL...\uff09
21-23 \u200b\u884c\u200b\u5c4f\u853d\u200b\u5185\u200b\u7f51\u200b\u8bbf\u95ee\u200b\uff0c\u200b\u867d\u7136\u200b\u8fd9\u4e9b\u200b IP \u200b\u6bb5\u200b\u4e5f\u200b\u6709\u200b\u4e00\u4e9b\u200b\u6821\u56ed\u7f51\u200b\u8def\u7531\u200b\uff0c\u200b\u4e0d\u8fc7\u200b\u8fd9\u200b\u4e0d\u662f\u200b vlab \u200b\u7684\u200b\u670d\u52a1\u200b\u76ee\u7684\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e00\u8d77\u200b\u5c4f\u853d\u6389\u200b\u4e5f\u200b\u65e0\u6240\u8c13\u200b\u3002
24-26 \u200b\u884c\u200b\u5c4f\u853d\u200b\u7f51\u7edc\u200b\u901a\u200b\uff0c\u200b\u907f\u514d\u200b\u6211\u4eec\u200b\u7684\u200b\u51fa\u53e3\u200b IP \u200b\u8bbe\u7f6e\u200b\u88ab\u200b\u6539\u200b\uff08\u200b\u8fd9\u4e2a\u200b\u53c8\u200b\u548c\u200b LUG VPN \u200b\u4e00\u6837\u200b\uff09\u3002\u200b\u7f51\u7edc\u200b\u901a\u200b\u4e00\u5171\u200b\u6709\u200b 4 \u200b\u4e2a\u200b IP\uff0c\u200b\u5176\u4e2d\u200b 202.38.64.{58,59}
\u200b\u662f\u200b\u76f8\u90bb\u200b\u7684\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5408\u5e76\u200b\u8d77\u6765\u200b\u7528\u200b\u4e00\u4e2a\u200b /31
\u200b\u7684\u200b\u7f51\u6bb5\u200b\u505a\u200b\u89c4\u5219\u200b\u3002
iptables -t nat -F PREROUTING\niptables -t nat -F POSTROUTING\n#iptables -t nat -X\niptables -t nat -N VLAB_STUDENT >/dev/null 2>&1\niptables -t nat -A PREROUTING -i eth1 -d 202.38.64.58/31 -j DNAT --to-destination 202.38.75.226\niptables -t nat -A PREROUTING -i eth1 -d 202.38.96.193/32 -j DNAT --to-destination 202.38.75.226\niptables -t nat -A PREROUTING -i eth1 -d 210.45.224.65/32 -j DNAT --to-destination 202.38.75.226\niptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 10001:29999 -j VLAB_STUDENT\niptables -t nat -A POSTROUTING -s 172.30.0.0/15 -j MASQUERADE\niptables -t nat -A POSTROUTING -s 10.38.79.0/24 -j MASQUERADE\n#iptables -t nat -Z\niptables-save -f /etc/iptables/rules.v4\n
NAT \u200b\u90e8\u5206\u200b\u6211\u4eec\u200b\u53ea\u7528\u200b\u5230\u200b\u4e86\u200b PREROUTING \u200b\u548c\u200b POSTROUTING \u200b\u4e24\u4e2a\u200b\u94fe\u200b\uff08\u200b\u8fd9\u662f\u200b\u5178\u578b\u200b\u6a21\u5f0f\u200b\uff09\u3002
32 \u200b\u884c\u200b\u521b\u5efa\u200b VLAB_STUDENT
\u200b\u94fe\u200b\u7ed9\u200b pfserver \u200b\u7a0b\u5e8f\u200b\u7528\u200b\u3002
33-35 \u200b\u884c\u200b\u628a\u200b\u5c1d\u8bd5\u200b\u8bbf\u95ee\u200b\u7f51\u7edc\u200b\u901a\u200b\u7684\u200b\u6d41\u91cf\u200b\u90fd\u200b\u52ab\u6301\u200b\u5230\u200b web \u200b\u5bb9\u5668\u200b\u4e2d\u200b\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u80fd\u200b\u663e\u793a\u200b\u201c\u200b\u7f51\u7edc\u200b\u901a\u200b\u88ab\u200b\u5c4f\u853d\u200b\u201d\u200b\u7684\u200b\u6d88\u606f\u200b\u4e86\u200b\u3002
36 \u200b\u884c\u200b\u63d0\u4f9b\u200b VLAB_STUDENT
\u200b\u94fe\u200b\u7684\u200b\u5165\u53e3\u200b\uff0c\u200b\u8be5\u200b\u5165\u53e3\u200b\u9650\u5236\u200b\u4e86\u200b\u53ea\u6709\u200b 10001:29999 \u200b\u4e4b\u95f4\u200b\uff08inclusive\uff09\u200b\u7684\u200b\u7aef\u53e3\u200b\u80fd\u591f\u200b\u88ab\u200b\u8f6c\u53d1\u200b\u3002
37 \u200b\u662f\u200b\u51fa\u53e3\u200b NAT\uff0c\u200b\u5bf9\u4e8e\u200b\u8f6c\u53d1\u200b\u51fa\u53bb\u200b\u7684\u200b\u6d41\u91cf\u200b\uff0c\u200b\u6839\u636e\u200b\u6e90\u5730\u5740\u200b\u8fdb\u884c\u200b NAT\u3002\uff08POSTROUTING \u200b\u94fe\u4e2d\u200b\u6ca1\u6709\u200b -i
\u200b\u53ef\u7528\u200b\uff09\uff0c38 \u200b\u884c\u200b\u7c7b\u4f3c\u200b\uff08\u200b\u6b64\u5904\u200b\u5ffd\u7565\u200b\uff09
ip link set dev eth0 mtu 1500
\uff08\u200b\u51fa\u4e8e\u200b\u672a\u77e5\u200b\u539f\u56e0\u200b\uff0c\u200b\u65b0\u5efa\u200b\u65f6\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u662f\u200b 1450\uff0c\u200b\u914d\u7f6e\u200b\u9519\u8bef\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u5b66\u751f\u200b\u5bb9\u5668\u200b\u770b\u8d77\u6765\u200b\u7f51\u7edc\u200b\u6b63\u5e38\u200b\uff0c\u200b\u4f46\u662f\u200b\u7f51\u7edc\u200b\u4f1a\u200b\u5e38\u5e38\u200b\u5361\u4f4f\u200b\uff09
\u200b\u76ee\u524d\u200b\u6b64\u200b\u670d\u52a1\u5668\u200b\u6240\u6709\u200b\u7aef\u53e3\u200b\u7684\u200b MTU \u200b\u90fd\u200b\u5e94\u8be5\u200b\u4e3a\u200b 1500\u3002
"},{"location":"servers/ct100/#radvd","title":"radvd","text":"radvd \u200b\u662f\u200b IPv6 \u200b\u7684\u200b Router Advertisement Daemon\uff0c\u200b\u7528\u4e8e\u200b\u5411\u200b\u865a\u62df\u673a\u200b\u63d0\u4f9b\u200b IPv6 RA \u200b\u4f7f\u5f97\u200b\u865a\u62df\u673a\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b SLAAC \u200b\u81ea\u52a8\u200b\u914d\u7f6e\u200b IPv6 \u200b\u7f51\u7edc\u200b\u3002
/etc/radvd.conf
\u200b\u914d\u7f6e\u200b\u5982\u4e0b\u200b\uff1a
interface eth1\n{\n AdvSendAdvert on;\n MinRtrAdvInterval 3;\n MaxRtrAdvInterval 10;\n\n AdvDefaultPreference medium;\n AdvHomeAgentFlag off;\n\n prefix 2001:da8:d800:4bfc::/64\n {\n AdvOnLink on;\n AdvAutonomous on;\n AdvRouterAddr on;\n };\n};\n
"},{"location":"servers/ct100/#adguardhome","title":"AdGuardHome","text":"\u200b\u7f51\u5173\u200b\u4e0a\u200b\u8fd0\u884c\u200b AdGuardHome \u200b\u66ff\u4ee3\u200b\u66fe\u7ecf\u200b\u7684\u200b bind9\uff0c\u200b\u56e0\u4e3a\u200b bind9 \u200b\u5185\u5b58\u200b\u5360\u7528\u200b\u592a\u9ad8\u4e14\u200b\u7ef4\u62a4\u200b\u4e0d\u6613\u200b\uff0c\u200b\u800c\u200b AGH \u200b\u5c0f\u5de7\u200b\u8f7b\u4fbf\u200b\uff0c\u200b\u4f5c\u4e3a\u200b\u5c40\u57df\u7f51\u200b\u7684\u200b\u9012\u5f52\u200b DNS \u200b\u6bd4\u200b bind9 \u200b\u66f4\u200b\u5408\u9002\u200b\u3002
\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b GitHub \u200b\u4e0a\u200b\u7684\u200b \u200b\u5f00\u200b \u200b\u6e90\u200b \u200b\u9879\u200b \u200b\u76ee\u200b \u200b\u5728\u200b AGH \u200b\u4e0a\u200b\u5b9e\u73b0\u200b\u4e00\u4e9b\u200b\u9ad8\u7ea7\u200b\u7684\u200b\u89e3\u6790\u200b\u529f\u80fd\u200b\u3002
"},{"location":"servers/ct100/#\u8fc7\u65f6\u5185\u5bb9bind9","title":"\u8fc7\u65f6\u200b\u5185\u5bb9\u200b\uff1aBind9","text":"\u200b\u7f51\u5173\u200b\u7684\u200b bind9 \u200b\u8d1f\u8d23\u200b\u5904\u7406\u200b\u5b66\u751f\u200b\u673a\u200b\u7684\u200b DNS \u200b\u8bf7\u6c42\u200b\uff0c\u200b\u8f6c\u53d1\u7ed9\u200b\u5b66\u6821\u200b DNS\uff08\u200b\u6709\u200b 20 QPS/IP \u200b\u7684\u200b\u9650\u5236\u200b\uff09\uff0c\u200b\u5e76\u200b\u7f13\u5b58\u200b\u76f8\u5173\u200b\u7ed3\u679c\u200b\u3002
\u200b\u7279\u522b\u200b\u5730\u200b\uff0c\u200b\u5173\u95ed\u200b\u4e86\u200b DNSSEC \u200b\u9a8c\u8bc1\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u67d0\u4e9b\u200b\u57df\u540d\u200b\u628a\u200b CNAME \u200b\u914d\u7f6e\u200b\u5728\u200b\u4e86\u200b\u6839\u200b\u57df\u540d\u200b\u4e0a\u200b\uff08\u200b\u6bd4\u5982\u8bf4\u200b gitee.com
\uff09\u200b\u4f1a\u200b\u5bfc\u81f4\u200b bind9 \u200b\u51fa\u9519\u200b\u3002\u200b\u76f8\u5173\u200b\u53c2\u6570\u200b\u53ef\u4ee5\u200b\u5728\u200b named.conf.options
\u200b\u4e2d\u200b\u8bbe\u7f6e\u200b\u3002
\u200b\u4e3b\u200b\u6761\u76ee\u200b\uff1aVlab Dev VPN
"},{"location":"servers/ct100/#\u6545\u969c","title":"\u6545\u969c","text":"2020 \u200b\u5e74\u200b 11 \u200b\u6708\u200b 16 \u200b\u65e5\u200b\u53d1\u73b0\u200b\u8be5\u200b\u5bb9\u5668\u200b\u65e0\u6cd5\u200b\u767b\u5f55\u200b\uff0c\u200b\u8fdb\u4e00\u6b65\u200b\u68c0\u67e5\u200b\u53d1\u73b0\u200b\u5176\u200b rootfs \u200b\u5df2\u200b\u5b8c\u5168\u200b\u635f\u574f\u200b\u65e0\u6cd5\u200b\u6062\u590d\u200b\u3002\u200b\u7531\u4e8e\u200b iptables \u200b\u89c4\u5219\u200b\u662f\u200b\u8fd0\u884c\u200b\u5728\u200b\u5185\u6838\u200b\u4e2d\u200b\u7684\u200b\uff0c\u200b\u5176\u200b\u671f\u671b\u200b\u529f\u80fd\u200b\uff08\u200b\u4f5c\u4e3a\u200b\u7f51\u5173\u200b\uff09\u200b\u6ca1\u6709\u200b\u53d7\u5230\u200b\u5f71\u54cd\u200b\u3002\u200b\u8003\u8651\u200b\u5230\u200b\u5931\u63a7\u200b\u7684\u200b\u5371\u5bb3\u200b\uff08\u200b\u8be5\u200b\u5bb9\u5668\u200b\u4e0d\u80fd\u200b\u91cd\u542f\u200b\uff0c\u200b\u5426\u5219\u200b\u5c31\u200b\u518d\u4e5f\u200b\u5f00\u200b\u4e0d\u200b\u8d77\u6765\u200b\u4e86\u200b\uff09\uff0c\u200b\u5df2\u200b\u4ece\u200b\u8fd8\u200b\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b namespace \u200b\u4e2d\u200b\u63d0\u53d6\u200b\u51fa\u200b iptables \u200b\u89c4\u5219\u200b\uff0c\u200b\u5e76\u200b\u91cd\u5efa\u200b\u4f5c\u4e3a\u200b\u66ff\u4ee3\u200b\u3002\u200b\u65b0\u200b\u7684\u200b CT 100 \u200b\u5c06\u200b rootfs \u200b\u7f29\u5c0f\u200b\u5230\u200b\u4e86\u200b 4 GB\uff0c\u200b\u914d\u7f6e\u200b\u597d\u200b\u4e86\u200b iptables-persistent \u200b\u548c\u200b radvd\u3002
\u200b\u4e8b\u540e\u200b\u67e5\u660e\u200b\u6545\u969c\u200b\u539f\u56e0\u200b\u4e3a\u200b\uff0cPVE \u200b\u6d4b\u8bd5\u200b\u8282\u70b9\u200b\u672a\u200b\u52a0\u5165\u200b\u96c6\u7fa4\u200b\uff0c\u200b\u4f46\u662f\u200b\u4f7f\u7528\u200b\u4e86\u200b\u76f8\u540c\u200b\u7684\u200b LVM \u200b\u5b58\u50a8\u200b\uff0c\u200b\u5bfc\u81f4\u200b\u5728\u200b\u521b\u5efa\u200b/\u200b\u5220\u9664\u200b LVM \u200b\u5377\u65f6\u200b\uff0cLVM \u200b\u6ca1\u6709\u200b\u6b63\u786e\u200b\u88ab\u200b\u9501\u5b9a\u200b\u3002\u200b\u5728\u200b\u6d4b\u8bd5\u200b\u8282\u70b9\u200b\u5220\u9664\u200b\u5176\u4e0a\u200b\u7684\u200b CT 100 \u200b\u65f6\u200b\uff0c\u200b\u51fa\u73b0\u200b\u6df7\u4e71\u200b\u3002
Logging from iptables to rsyslog inside container fails. - Linux Continers Mailing Lists\u00a0\u21a9
iptables logging inside LXC containers - Proxmox Support Forum\u00a0\u21a9
\u200b\u8fd9\u4e2a\u200b\u5bb9\u5668\u200b\u662f\u200b vlab \u200b\u5bf9\u5916\u200b\u670d\u52a1\u200b\u7684\u200b\u4e3b\u8981\u200b\u573a\u6240\u200b\uff0c\u200b\u4e0a\u9762\u200b\u8fd0\u884c\u200b\u4e86\u200b\u6211\u4eec\u200b\u7684\u200b\u5404\u79cd\u200b\u7a0b\u5e8f\u200b\u3002
\u200b\u8be5\u200b\u5bb9\u5668\u200b\u63a5\u5165\u200b\u6821\u56ed\u7f51\u200b\uff08vmbr0
/ eth0
/ 202.38.75.226/24
\uff0c\u200b\u4e14\u200b\u8be5\u200b IP \u200b\u662f\u200b vlab.ustc.edu.cn
\u200b\u57df\u540d\u200b\u6307\u5411\u200b\u7684\u200b\uff09\u3001\u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b\uff08vmbr1
/ eth1
/ 172.31.0.2/16
\uff09\u200b\u548c\u200b\u7ba1\u7406\u200b\u5185\u200b\u7f51\u200b\uff08vmbr2
/ eth2
/ 172.30.0.2/24
\uff09\uff0c\u200b\u901a\u8fc7\u200b\u6821\u56ed\u7f51\u200b\u5bf9\u5916\u200b\u63d0\u4f9b\u200b Web \u200b\u670d\u52a1\u200b\u3001VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u670d\u52a1\u200b\u548c\u200b SSH \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u670d\u52a1\u200b\uff0c\u200b\u901a\u8fc7\u200b\u5bb9\u5668\u200b\u5185\u200b\u7f51\u200b\u8fde\u63a5\u200b\u5176\u4ed6\u200b\u865a\u62df\u673a\u200b\u3002\u200b\u5c3d\u7ba1\u200b\u672c\u200b\u5bb9\u5668\u200b\u63a5\u5165\u200b\u4e86\u200b\u4e09\u4e2a\u200b\u7f51\u7edc\u200b\uff0c\u200b\u4f46\u662f\u200b\u4e0d\u200b\u7528\u4f5c\u200b\u8f6c\u53d1\u200b\u3002
\u200b\u7531\u4e8e\u200b\u8fd9\u4e2a\u200b\u5bb9\u5668\u200b\u7684\u200b 22 \u200b\u7aef\u53e3\u200b\u7528\u4f5c\u200b SSH \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u4e86\u200b\uff0c\u200b\u56e0\u6b64\u200b\u5b83\u200b\u81ea\u5df1\u200b\u7684\u200b sshd \u200b\u5f00\u200b\u5728\u200b 179 \u200b\u7aef\u53e3\u200b\u4e0a\u200b\u3002
"},{"location":"servers/ct101/#ssl","title":"SSL \u200b\u8bc1\u4e66","text":"\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b acme.sh \u200b\u7533\u8bf7\u200b\u53ca\u200b\u66f4\u65b0\u200b SSL \u200b\u8bc1\u4e66\u200b\u3002
acme.sh \u200b\u5b89\u88c5\u200b\u5728\u200b /etc/acme.sh
\uff0c\u200b\u5b89\u88c5\u200b\u6b65\u9aa4\u200b\u5982\u4e0b\u200b\uff1a
git clone https://github.com/acmesh-official/acme.sh.git\ncd acme.sh\n./acme.sh --install --home /etc/acme.sh --accountemail vlab@ustc.edu.cn\n
\u200b\u7533\u8bf7\u200b\u8bc1\u4e66\u200b\u7684\u200b\u547d\u4ee4\u200b\u5982\u4e0b\u200b\uff1a
cd /etc/acme.sh\n./acme.sh --issue \\\n -d vlab.ustc.edu.cn \\\n -d file.vlab.ustc.edu.cn \\\n -d bbs.vlab.ustc.edu.cn \\\n -w /var/www\n
\u200b\u5176\u4e2d\u200b /var/www/.well-known
\u200b\u76ee\u5f55\u200b\u63d0\u524d\u200b\u5efa\u200b\u597d\u200b\uff0c\u200b\u5e76\u4e14\u200b\u9700\u8981\u200b\u7533\u8bf7\u200b\u8bc1\u4e66\u200b\u7684\u200b\u57df\u540d\u200b\u5bf9\u5e94\u200b\u7684\u200b Nginx server
\u200b\u5757\u200b\u5305\u542b\u200b\u4e00\u884c\u200b include /etc/nginx/snippets/well-known
\u3002\u200b\u4f5c\u4e3a\u200b\u53c2\u8003\u200b\uff0c\u200b\u8be5\u200b\u6587\u4ef6\u200b\u7684\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
location /.well-known {\n access_log off;\n root /var/www;\n}\n
"},{"location":"servers/ct101/#\u66f4\u65b0\u4e0e\u90e8\u7f72","title":"\u66f4\u65b0\u200b\u4e0e\u200b\u90e8\u7f72","text":"\u200b\u9700\u8981\u200b\u4f7f\u7528\u200b SSL \u200b\u8bc1\u4e66\u200b\u7684\u200b\u670d\u52a1\u200b\u4e3b\u8981\u200b\u662f\u200b Nginx \u200b\u548c\u200b vnc-multiplexer\u3002\u200b\u7531\u4e8e\u200b acme.sh \u200b\u4e0d\u200b\u63a8\u8350\u200b\u76f4\u63a5\u200b\u4ece\u200b /etc/acme.sh
\u200b\u76ee\u5f55\u200b\u4e2d\u200b\u4f7f\u7528\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u7528\u200b acme.sh --install-cert
\u200b\u547d\u4ee4\u200b\u5c06\u200b\u8bc1\u4e66\u200b\u5b89\u88c5\u200b\u5230\u200b /etc/ssl/private
\u200b\u76ee\u5f55\u200b\u4e2d\u200b\uff0c\u200b\u5e76\u200b\u6307\u5b9a\u200b --reloadcmd
\u200b\u6765\u200b reload \u200b\u76f8\u5173\u200b\u670d\u52a1\u200b\uff1a
# Main cert is used by both services\n/etc/acme.sh/acme.sh --install-cert \\\n -d vlab.ustc.edu.cn \\\n --key-file /etc/ssl/private/vlab.ustc.edu.cn.key\\\n --fullchain-file /etc/ssl/private/vlab.ustc.edu.cn.fullchain.cer \\\n --reloadcmd \"systemctl reload nginx vnc-multiplexer\"\n\n# Auxilary certs are used by Nginx only\n/etc/acme.sh/acme.sh --install-cert \\\n -d soc.ustc.edu.cn \\\n --key-file /etc/ssl/private/soc.ustc.edu.cn.key \\\n --fullchain-file /etc/ssl/private/soc.ustc.edu.cn.fullchain.cer \\\n --reloadcmd \"systemctl reload nginx\"\n/etc/acme.sh/acme.sh --install-cert \\\n -d verilogoj.ustc.edu.cn \\\n --key-file /etc/ssl/private/verilogoj.ustc.edu.cn.key \\\n --fullchain-file /etc/ssl/private/verilogoj.ustc.edu.cn.fullchain.cer \\\n --reloadcmd \"systemctl reload nginx\"\n\n# For PVE hosts to pick up with cron\n/etc/acme.sh/acme.sh --install-cert \\\n -d ibuglab.com \\\n --key-file /etc/ssl/private/ibuglab.com/ibuglab.com.key \\\n --fullchain-file /etc/ssl/private/ibuglab.com/fullchain.cer\n
"},{"location":"servers/ct101/#web","title":"Django web \u200b\u5e94\u7528\u200b\u4e0e\u200b Nginx","text":"\u200b\u6587\u6863\u200b\u8bb0\u5f55\u200b\u5728\u200b Django \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\uff0c\u200b\u89c1\u200b https://github.com/USTC-vlab/cslab/tree/master/docs\u3002
Nginx \u200b\u90e8\u5206\u200b\u672a\u5b8c\u5f85\u7eed\u200b\u3002
"},{"location":"servers/ct101/#vnc-unified-login","title":"VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55","text":"\u200b\u672a\u5b8c\u5f85\u7eed\u200b
"},{"location":"servers/ct101/#ssh-unified-login","title":"SSH \u200b\u7edf\u4e00\u200b\u767b\u5f55","text":"\u200b\u672a\u5b8c\u5f85\u7eed\u200b
"},{"location":"servers/ct101/#code-server","title":"\u7f51\u9875\u200b\u7248\u200b VS Code","text":"\u200b\u7f51\u9875\u200b\u7248\u200b VS Code \u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u5728\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\u5185\u200b\u8fd0\u884c\u200b\u7684\u200b cdr/code-server\uff0c\u200b\u5e76\u200b\u5728\u200b\u524d\u7aef\u200b\u901a\u8fc7\u200b Nginx \u200b\u53cd\u4ee3\u200b\u5728\u200b /vscode/
\u200b\u4e0b\u200b\u3002\u200b\u7531\u4e8e\u200b\u6240\u6709\u200b\u7528\u6237\u200b\u8bbf\u95ee\u200b\u7684\u200b\u90fd\u200b\u662f\u200b /vscode/
\u200b\u8fd9\u200b\u4e00\u4e2a\u200b\u8def\u5f84\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u9760\u200b Cookie \u200b\u6765\u200b\u9274\u6743\u200b\u53ca\u200b\u533a\u5206\u200b\u7528\u6237\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u3002
\u200b\u7531\u4e8e\u200b\u6211\u4eec\u200b\u6ca1\u6709\u200b\u4f7f\u7528\u200b\u5b8c\u6574\u200b\u7684\u200b OpenResty \u200b\u5957\u88c5\u200b\uff0c\u200b\u5728\u200b Lua \u200b\u811a\u672c\u200b\u91cc\u200b\u8fdb\u884c\u200b HTTP \u200b\u8bf7\u6c42\u200b\u4e0d\u592a\u200b\u73b0\u5b9e\u200b\uff0c\u200b\u800c\u4e14\u200b\u8fd9\u6837\u200b\u505a\u200b\u6027\u80fd\u200b\u4e5f\u200b\u5341\u5206\u200b\u7cdf\u7cd5\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u5c06\u200b\u7528\u6237\u200b\u7684\u200b\u865a\u62df\u673a\u200b IP \u200b\u548c\u200b\u8fc7\u671f\u200b\u65f6\u95f4\u200b\u6233\u200b\u4e00\u8d77\u200b\u5b58\u5728\u200b Cookie \u200b\u91cc\u200b\uff0c\u200b\u5e76\u200b\u5bf9\u200b Cookie \u200b\u7b7e\u540d\u200b\u3002\u200b\u5f53\u200b\u7528\u6237\u200b\u8bbf\u95ee\u200b Django \u200b\u540e\u200b\u7aef\u7684\u200b\u201c\u200b\u4f7f\u7528\u200b VS Code\u201d\u200b\u8fd9\u4e2a\u200b\u63a5\u53e3\u200b\u65f6\u200b\uff0c\u200b\u63a5\u53e3\u200b\u4f1a\u4e3a\u200b\u7528\u6237\u200b\u8bbe\u7f6e\u200b\u4e0a\u200b\u8fd9\u6837\u200b\u7684\u200b\u4e00\u4e2a\u200b Cookie \u200b\u5e76\u200b\u8df3\u8f6c\u200b\u5230\u200b /vscode/
\uff1a
ngt=172.31.0.1/1612345678+0123456789abcdef0123456789abcdef\n
\u200b\u8be5\u200b Cookie \u200b\u53d6\u540d\u200b ngt\uff08NGinx Target\uff0c\u200b\u5176\u5b9e\u200b\u5e76\u200b\u4e0d\u662f\u200b\u4e00\u4e2a\u200b\u5f88\u200b\u597d\u200b\u7684\u200b\u547d\u540d\u200b\uff09\uff0c\u200b\u683c\u5f0f\u200b\u662f\u200b IP/timestamp+signature
\uff0c\u200b\u5176\u4e2d\u200b\u7b7e\u540d\u200b\u503c\u200b\u662f\u200b IP/timestamp
\u200b\u90e8\u5206\u200b\u7684\u200b HMAC-SHA1 \u200b\u503c\u200b\uff0c\u200b\u5bf9\u5e94\u200b\u7684\u200b secret \u200b\u5206\u522b\u200b\u4f4d\u4e8e\u200b Django \u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e2d\u200b\u548c\u200b Nginx \u200b\u7684\u200b Lua \u200b\u811a\u672c\u200b\u4e2d\u200b\u3002
\u200b\u8d1f\u8d23\u200b\u9274\u6743\u200b\u53ca\u200b\u8fd4\u56de\u200b Nginx \u200b\u53c2\u6570\u200b\u7684\u200b Lua \u200b\u4ee3\u7801\u200b\u5982\u4e0b\u200b\uff1a
-- vim:filetype=lua:\n\nlocal key = ngx.var.cookie_ngt -- NGinx Target\n\nif key == nil then\n return \"missing\"\nend\n\nlocal m = ngx.re.match(key, \"^\\\"?([0-9.]*)/([0-9]*)\\\\+([0-9a-f]*)\\\"?$\", \"io\")\nif m == nil then\n return \"invalid\"\nend\nlocal payload = m[1] .. \"/\" .. m[2]\nlocal signature = m[3]\n\n--local str = require \"resty.string\"\nfunction to_hex(str)\n return str:gsub(\".\", function(c) return string.format(\"%02x\", c:byte(1)) end)\nend\n\nlocal hmac = to_hex(ngx.hmac_sha1('secret key here', payload))\n\nif hmac ~= signature then\n --return \"+\" .. payload .. \"+\" .. hmac .. \"+\" .. signature\n return \"failed\"\nend\n\nlocal valid_until = tonumber(m[2])\nif valid_until < ngx.time() then\n return \"expired\"\nend\n\nreturn m[1]\n
\u200b\u4e0e\u200b\u4e4b\u200b\u5bf9\u5e94\u200b\u7684\u200b\u8fd9\u90e8\u5206\u200b Nginx \u200b\u914d\u7f6e\u200b\u5219\u200b\u662f\u200b\uff1a
###########################################################################\n## Code-server reverse proxy\n###########################################################################\nlocation /vscode/ {\n error_page 502 /_internal/502-vscode.html;\n\n set_by_lua_file $user_host /etc/nginx/lua/user_host.lua;\n if ($user_host = \"missing\") { return 302 /vm/; }\n if ($user_host = \"invalid\") { return 400; }\n if ($user_host = \"failed\") { return 400; }\n if ($user_host = \"expired\") { return 302 /vm/; }\n\n rewrite ^/vscode/(.*)$ /$1 break;\n proxy_pass http://$user_host:1024;\n proxy_http_version 1.1;\n proxy_set_header Host vlab.ustc.edu.cn;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection upgrade;\n proxy_set_header Accept-Encoding gzip;\n}\n
\u200b\u7528\u6237\u200b\u5728\u200b\u865a\u62df\u673a\u200b\u5185\u200b\u4f7f\u7528\u200b\u6211\u4eec\u200b\u81ea\u5df1\u200b\u7f16\u5199\u200b\u7684\u200b vscode
\u200b\u547d\u4ee4\u200b\u6765\u200b\u7ba1\u7406\u200b code-server \u200b\u5bf9\u5e94\u200b\u7684\u200b\u7cfb\u7edf\u200b\u670d\u52a1\u200b\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\uff08\u200b\u7c97\u5236\u6ee5\u9020\u200b\u7684\u200b\uff09Bash \u200b\u811a\u672c\u200b\uff0c\u200b\u89c1\u200b vscode\u3002
\u200b\u5bb9\u5668\u200b\u91cc\u200b\u6709\u200b\u4e00\u4e2a\u200b webhook \u200b\u670d\u52a1\u5668\u200b\uff0c\u200b\u4ece\u200b GitHub \u200b\u63a5\u6536\u200b\u7528\u6237\u6587\u6863\u200b\u4ed3\u5e93\u200b USTC-vlab/docs \u200b\u7684\u200b\u66f4\u65b0\u200b\u901a\u77e5\u200b\u5e76\u62c9\u53d6\u200b\u66f4\u65b0\u200b\u3002
\u200b\u4ee3\u7801\u200b\u66fe\u7ecf\u200b\u662f\u200b\u7528\u200b Ruby Sinatra \u200b\u5199\u200b\u7684\u200b\uff0c\u200b\u540e\u6765\u200b\u6362\u6210\u200b\u4e86\u200b Go\uff0c\u200b\u53c2\u89c1\u200b ustclug-dev/webhook-go \u200b\u548c\u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\u7684\u200b /etc/webhook-go.yml
\u3002
\u200b\u6ce8\u610f\u200b
\u200b\u8fd9\u4e2a\u200b webhook \u200b\u524d\u9762\u200b\u8fd8\u662f\u200b\u5957\u200b\u4e86\u200b\u4e00\u5c42\u200b Nginx \u200b\u7684\u200b\uff0c\u200b\u4e0d\u662f\u200b\u76f4\u8fde\u200b\u7684\u200b\u3002
"},{"location":"servers/ct101/#grafana","title":"Grafana \u200b\u4e0e\u200b\u76d1\u63a7\u200b\u3001\u200b\u7edf\u8ba1","text":""},{"location":"servers/ct101/#grafana-security","title":"\u5b89\u5168\u200b\u7ef4\u62a4","text":"\u200b\u6839\u636e\u200b\u76f8\u5173\u200b\u8981\u6c42\u200b\uff0cGrafana \u200b\u9650\u5236\u200b\u4ec5\u200b\u5141\u8bb8\u200b\u6821\u56ed\u7f51\u200b\u8bbf\u95ee\u200b\uff0c\u200b\u4f46\u200b\u6211\u4eec\u200b\u4ecd\u7136\u200b\u9700\u8981\u200b\u4fdd\u8bc1\u200b Grafana \u200b\u59cb\u7ec8\u200b\u5904\u5728\u200b\u5b89\u5168\u200b\u7684\u200b\u6700\u65b0\u200b\u7248\u672c\u200b\u3002\u200b\u5efa\u8bae\u200b\u7ef4\u62a4\u8005\u200b\u4f7f\u7528\u200b RSS \u200b\u8ba2\u9605\u200b https://grafana.com/tags/security/index.xml\uff0c\u200b\u5728\u200b\u6709\u200b\u5b89\u5168\u200b\u901a\u77e5\u200b\u53d1\u5e03\u200b\u540e\u200b\u68c0\u67e5\u200b\u7248\u672c\u200b\u5e76\u200b\u53ca\u65f6\u200b\u5347\u7ea7\u200b\u3002
\u200b\u5347\u7ea7\u200b\u6b65\u9aa4\u200b\uff1a
docker pull grafana/grafana:latest
~/docker/grafana.sh
\u200b\u5176\u4ed6\u200b\u914d\u7f6e\u200b\u672a\u5b8c\u5f85\u7eed\u200b\u3002
"},{"location":"servers/ct101/#external-access","title":"\u9650\u5236\u200b\u6821\u5916\u200b\u8bbf\u95ee","text":"\u200b\u91c7\u7528\u200b\u4e0e\u200b VS Code \u200b\u53cd\u4ee3\u200b\u76f8\u540c\u200b\u7684\u200b\u65b9\u6848\u200b\uff0c\u200b\u8fd9\u6b21\u200b\u662f\u200b\u5c06\u200b CAS \u200b\u7528\u6237\u540d\u200b\u548c\u200b\u8fc7\u671f\u200b\u65f6\u95f4\u200b\u653e\u5728\u200b\u4e00\u8d77\u200b HMAC-SHA1 \u200b\u7b7e\u540d\u200b\uff0c\u200b\u683c\u5f0f\u200b\u4e3a\u200b username/timestamp+signature
\u3002
\u200b\u6821\u5916\u200b\u7528\u6237\u200b\u8bbf\u95ee\u200b Grafana \u200b\u65f6\u200b\uff0c\u200b\u4f1a\u200b\u5c55\u793a\u200b\u4e00\u4e2a\u200b 403 \u200b\u9875\u9762\u200b\u5e76\u200b\u63d0\u793a\u200b\u767b\u5f55\u200b\u3002Nginx \u200b\u4f1a\u200b\u5c06\u200b /ibug-auth
\u200b\u8f6c\u53d1\u7ed9\u200b\u540e\u200b\u7aef\u200b Go \u200b\u7a0b\u5e8f\u200b\uff0c\u200b\u540e\u200b\u7aef\u200b\u7a0b\u5e8f\u200b\u4f1a\u200b\u8bf7\u6c42\u200b https://passport.ustc.edu.cn/serviceValidate
\u200b\u9a8c\u8bc1\u200b ticket\uff0c\u200b\u751f\u6210\u200b\u7b7e\u540d\u200b\u8fc7\u200b\u7684\u200b cookie \u200b\u5e76\u200b\u91cd\u5b9a\u5411\u200b\u56de\u6765\u200b\u3002
Go \u200b\u540e\u200b\u7aef\u200b\u7a0b\u5e8f\u200b\u4f4d\u4e8e\u200b USTC-vlab/nginx-pass-cas\u3002
\u200b\u5bf9\u200b\u67d0\u4e2a\u200b location \u200b\u542f\u7528\u200b\u6821\u5916\u200b CAS \u200b\u8ba4\u8bc1\u200b\uff0c\u200b\u53ea\u200b\u9700\u8981\u200b\u5728\u200b\u5f53\u524d\u200b location \u200b\u5185\u200b include snippets/nginx-pass-location
\uff0c\u200b\u5e76\u200b\u5728\u200b\u5916\u5c42\u200b\u7684\u200b server \u200b\u5757\u200b\u4e2d\u200b include snippets/nginx-pass
\u200b\u5373\u53ef\u200b\u3002
location = /403-nginx-pass.html {\n root /srv/www/html;\n sub_filter \"${dollar}host\" \"$http_host\";\n sub_filter_last_modified on;\n sub_filter_once off;\n}\n\nlocation = /ibug-auth {\n proxy_pass http://127.0.0.1:8002;\n include snippets/proxy-common;\n}\n
/etc/nginx/snippets/nginx-pass-locationerror_page 403 /403-nginx-pass.html;\nset_by_lua_file $nginx_pass /etc/nginx/lua/nginx_pass.lua;\nset $nginx_pass_status \"$ustcnet:$nginx_pass\";\nif ($nginx_pass_status = \"0:missing\") { return 403; }\nif ($nginx_pass_status = \"0:invalid\") { return 403; }\nif ($nginx_pass_status = \"0:failed\") { return 403; }\nif ($nginx_pass_status = \"0:expired\") { return 403; }\n
"},{"location":"servers/pve/","title":"Proxmox VE \u200b\u4e3b\u673a","text":"\u200b\u6211\u4eec\u200b\u5c3d\u91cf\u200b\u4fdd\u8bc1\u200b PVE \u200b\u4e3b\u673a\u200b\u5e72\u51c0\u200b\u6574\u6d01\u200b\uff0c\u200b\u53ea\u200b\u5b89\u88c5\u200b\u914d\u7f6e\u200b\u5fc5\u987b\u200b\u8fd0\u884c\u200b\u5728\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u670d\u52a1\u200b\uff0c\u200b\u51cf\u8f7b\u200b\u7ef4\u62a4\u200b\u538b\u529b\u200b\u3002
"},{"location":"servers/pve/#pv1","title":"pv1","text":""},{"location":"servers/pve/#ssl","title":"\u66f4\u65b0\u200b SSL \u200b\u8bc1\u4e66","text":"\u200b\u7531\u4e8e\u200b Proxmox VE \u200b\u4e3b\u673a\u200b\u6ca1\u6709\u200b\u51fa\u200b\u6821\u200b\u6743\u9650\u200b\uff0c\u200b\u56e0\u6b64\u200b\u4e3b\u673a\u200b\u4f7f\u7528\u200b\u7684\u200b SSL \u200b\u8bc1\u4e66\u200b\uff08*.ibuglab.com
\uff09\u200b\u9700\u8981\u200b\u901a\u8fc7\u200b web \u200b\u5bb9\u5668\u200b\uff08CT 101\uff09\u200b\u66f4\u65b0\u200b\uff0c\u200b\u518d\u200b\u4ece\u200b web \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u53d6\u56de\u200b\u3002\u200b\u6211\u4eec\u200b\u914d\u7f6e\u200b\u4e86\u200b\u5982\u4e0b\u200b\u811a\u672c\u200b\uff0c\u200b\u4f7f\u7528\u200b cron \u200b\u6bcf\u5929\u200b\u4ece\u200b web \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u540c\u6b65\u200b\u8bc1\u4e66\u200b\uff1a
#!/bin/bash -e\n\nSRC=\"/etc/pve/nodes/pv1\"\nDSTROOT=\"/etc/pve/nodes\"\n\nscp web:/etc/ssl/private/ibuglab.com/ibuglab.com.key \"$SRC/pveproxy-ssl.key\"\nscp web:/etc/ssl/private/ibuglab.com/fullchain.cer \"$SRC/pveproxy-ssl.pem\"\nsystemctl reload pveproxy.service vlab-pve-agent.service\n\nfor DST in \"$DSTROOT\"/*; do\n [ \"$DST\" = \"$SRC\" ] && continue\n node=\"$(basename \"$DST\")\"\n cp \"$SRC/pveproxy-ssl.key\" \"$SRC/pveproxy-ssl.pem\" \"$DST/\"\n ssh \"$node\" 'systemctl reload pveproxy.service' &\n scp /etc/hosts \"$node\":/etc/hosts &\ndone\nwait\n\n# Proxmox Backup Server on pv1\nDST=\"/etc/proxmox-backup\"\ncp \"$SRC/pveproxy-ssl.key\" \"$DST/proxy.key\"\ncp \"$SRC/pveproxy-ssl.pem\" \"$DST/proxy.pem\"\nsystemctl reload proxmox-backup-proxy.service\n\n\n#FP=\"$(openssl x509 -noout -fingerprint -sha256 -inform pem -in \"$SRC/pveproxy-ssl.pem\")\"\n#FP=\"${FP##*=}\"\n#pvesm set pbs --fingerprint \"$FP\"\n
"},{"location":"servers/pve/#pve-agent","title":"PVE Agent","text":"\u200b\u7531\u4e8e\u200b LXC \u200b\u5bb9\u5668\u200b\u7684\u200b\u4e00\u4e9b\u200b\u8bbe\u7f6e\u200b\uff08\u200b\u5982\u200b bind mount\uff09\u200b\u5fc5\u987b\u200b\u901a\u8fc7\u200b root@pam \u200b\u7528\u6237\u200b\u767b\u5f55\u200b\u65f6\u200b\u624d\u80fd\u200b\u4fee\u6539\u200b\uff0c\u200b\u800c\u200b\u6211\u4eec\u200b\u5e76\u200b\u4e0d\u60f3\u200b\u5728\u200b django \u200b\u4e2d\u200b\u5b58\u50a8\u200b\u4e3b\u673a\u200b\u7684\u200b root \u200b\u7528\u6237\u200b\u5bc6\u7801\u200b\uff0c\u200b\u56e0\u6b64\u200b\u5199\u200b\u4e86\u200b\u8fd9\u4e2a\u200b agent \u200b\u653e\u5728\u200b\u4e3b\u673a\u200b\u4e0a\u200b\uff0c\u200b\u901a\u8fc7\u200b HTTP API \u200b\u63d0\u4f9b\u200b\u8fd9\u4e9b\u200b\u529f\u80fd\u200b\uff0c\u200b\u540e\u200b\u7aef\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b pvesh
\u200b\u547d\u4ee4\u200b\u3002pvesh \u200b\u547d\u4ee4\u200b\u5728\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u6267\u884c\u200b\u65f6\u4f1a\u200b\u81ea\u52a8\u200b\u4ee5\u200b\u6267\u884c\u200b\u8be5\u200b\u547d\u4ee4\u200b\u7684\u200b Linux \u200b\u7528\u6237\u200b\u8ba4\u8bc1\u200b\uff0c\u200b\u56e0\u6b64\u200b\u53ea\u8981\u200b\u8be5\u200b agent \u200b\u4ee5\u200b root \u200b\u8fd0\u884c\u200b\uff0c\u200b\u5c31\u200b\u80fd\u200b\u901a\u8fc7\u200b pvesh
\u200b\u8c03\u7528\u200b\u8fd9\u4e9b\u200b\u9700\u8981\u200b root@pam \u200b\u7528\u6237\u200b\u7684\u200b PVE API\u3002
\u200b\u4ee3\u7801\u200b\u5728\u200b vlab-pve-agent \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\uff0c\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e3a\u200b /etc/vlab-pve-agent.json
\uff0c\u200b\u5bf9\u5e94\u200b\u7684\u200b systemd service \u200b\u4e3a\u200b vlab-pve-agent.service
\u3002
PVE \u200b\u4e3b\u673a\u200b\u4e0a\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b pct enter
\u200b\u548c\u200b pct console
\u200b\u547d\u4ee4\u200b\u83b7\u53d6\u200b LXC \u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u200b shell \u200b\u6216\u8005\u200b\u63a5\u5165\u200b /dev/tty0\uff0c\u200b\u4f46\u200b\u8be5\u200b\u201c\u200b\u63a5\u53e3\u200b\u201d\u200b\u4e0d\u200b\u5728\u200b PVE API \u200b\u4e2d\u200b\u63d0\u4f9b\u200b\u3002\u200b\u8003\u8651\u200b\u5230\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u63a5\u53e3\u200b\u7684\u200b\u4e3b\u8981\u200b\u8fde\u63a5\u200b\u65b9\u5f0f\u200b\u662f\u200b SSH\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u5199\u200b\u4e86\u200b\u8fd9\u4e2a\u200b recovery SSHd \u200b\u653e\u5728\u200b pv1 \u200b\u4e0a\u200b\u8fd0\u884c\u200b\uff0c\u200b\u4f9b\u200b sshpiper \u200b\u8c03\u7528\u200b\u3002
\u200b\u4ee3\u7801\u200b\u5728\u200b recovery-sshd \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\uff0c\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e3a\u200b /etc/recovery-sshd.json
\uff0c\u200b\u5bf9\u5e94\u200b\u7684\u200b systemd service \u200b\u4e3a\u200b recovery-sshd.service
\u3002
Success
\u200b\u6211\u4eec\u200b\u5df2\u200b\u5c06\u200b\u6b64\u200b\u4efb\u52a1\u200b\u90e8\u5206\u200b\u81ea\u52a8\u5316\u200b\uff0c\u200b\u4f7f\u7528\u200b labstrap \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u7684\u200b pvestrap
\u200b\u811a\u672c\u200b\u3002
\u200b\u811a\u672c\u200b\u7684\u200b\u53c2\u8003\u200b\u8fd0\u884c\u200b\u65b9\u5f0f\u200b\uff08\u200b\u4ee5\u200b pv1 \u200b\u4e3a\u4f8b\u200b\uff09\uff1a
cd /etc/pve/nodes\nfor i in *; do ssh -T \"$i\" < ~/pvestrap & done; wait\n
"},{"location":"servers/pve/#subuid-\u548c-subgid","title":"Subuid \u200b\u548c\u200b Subgid","text":"\u200b\u4fee\u6539\u200b subuid \u200b\u548c\u200b subgid\uff0c\u200b\u5c06\u200b\u7b2c\u4e09\u5217\u200b\u7684\u200b\u503c\u200b\u4ece\u200b 65536 \u200b\u6539\u4e3a\u200b 165536\uff1a
/etc/subuid \u200b\u548c\u200b /etc/subgidroot:100000:165536\n
"},{"location":"servers/pve/#lxc-\u7279\u6b8a\u8bbe\u7f6e","title":"LXC \u200b\u7279\u6b8a\u200b\u8bbe\u7f6e","text":"LXC \u200b\u7684\u200b\u5168\u5c40\u200b\u8bbe\u7f6e\u200b\u4f4d\u4e8e\u200b /usr/share/lxc/config/common.conf.d/
\uff0c\u200b\u5176\u4e2d\u200b\u9664\u4e86\u200b 00-lxcfs.conf
\uff08lxcfs \u200b\u6302\u8f7d\u200b\u76f8\u5173\u200b\u5185\u5bb9\u200b\uff09\u200b\u548c\u200b 01-pve.conf
\uff08\u200b\u542f\u52a8\u200b\u524d\u200b\u3001\u200b\u7ed3\u675f\u200b\u540e\u200b\u3001\u200b\u8bbe\u5907\u200b\u6302\u8f7d\u200b\u76f8\u5173\u200b hook\uff09\u200b\u4ee5\u5916\u200b\uff0c\u200b\u6211\u4eec\u200b\u6dfb\u52a0\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u81ea\u5df1\u200b\u7684\u200b\u914d\u7f6e\u200b\u3002
\u200b\u8bbe\u7f6e\u200b 32768 PID \u200b\u4e0a\u9650\u200b\uff0c\u200b\u907f\u514d\u200b\u5bb9\u5668\u200b\u5185\u200b\u8fd0\u884c\u200b fork bomb \u200b\u7b49\u200b\u7a0b\u5e8f\u200b\u5f71\u54cd\u200b\u4e3b\u673a\u200b\u6216\u200b\u4e92\u76f8\u200b\u5f71\u54cd\u200b
/usr/share/lxc/config/common.conf.d/10-vlab.conflxc.cgroup2.pids.max = 32768\n
Info
\u200b\u4ece\u200b PVE 7 \u200b\u5f00\u59cb\u200b\u6b64\u5904\u200b\u8bbe\u7f6e\u200b\u9700\u8981\u200b\u7528\u200b lxc.cgroup2
\uff0ccgroup1 \u200b\u7684\u200b\u914d\u7f6e\u200b\u4ec5\u200b\u5bf9\u200b PVE 6 \u200b\u6709\u6548\u200b\u3002
\u200b\u7279\u522b\u200b\u5730\u200b\uff0cpv1 \u200b\u4e3b\u673a\u200b\u4e0a\u200b\u8fd9\u4e2a\u200b\u914d\u7f6e\u200b\u662f\u200b 8192\uff08\u200b\u6ca1\u6709\u200b\u7528\u6237\u200b\u5bb9\u5668\u200b\uff09\u3002
\u200b\u8bbe\u7f6e\u200b 16 MiB \u200b\u7684\u200b\u53ef\u200b\u9501\u5b9a\u200b\u5185\u5b58\u200b\uff0c\u200b\u4e3a\u200b\u5bb9\u5668\u200b\u5185\u200b\u4f7f\u7528\u200b earlyoom \u200b\u505a\u200b\u51c6\u5907\u200b\u3002\u200b\u8ba8\u8bba\u200b\u89c1\u200b discussions#19
/usr/share/lxc/config/common.conf.d/10-vlab.conflxc.prlimit.memlock = 16777216\n
"},{"location":"testing/","title":"\u6d4b\u8bd5\u73af\u5883","text":"\u200b\u6211\u4eec\u200b\u7684\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u8fd0\u884c\u200b\u5728\u200b\u5355\u673a\u200b pv0 \u200b\u4e0a\u200b\uff0c\u200b\u6ca1\u6709\u200b\u4f7f\u7528\u200b\u96c6\u7fa4\u200b\u914d\u7f6e\u200b\u3002
"},{"location":"testing/#\u4e0e\u751f\u4ea7\u73af\u5883\u7684\u6bd4\u8f83","title":"\u4e0e\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u7684\u200b\u6bd4\u8f83","text":"\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u4e3b\u8981\u200b\u7528\u4e8e\u200b\u5f00\u53d1\u200b\u548c\u200b\u6d4b\u8bd5\u200b\uff0c\u200b\u5404\u200b\u65b9\u9762\u200b\u914d\u7f6e\u200b\u90fd\u200b\u4e0e\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u63a5\u8fd1\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a
\u200b\u540c\u65f6\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u4e5f\u200b\u7528\u4e8e\u200b\u8e29\u200b\u5751\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5728\u200b\u65b0\u200b\u8f6f\u4ef6\u200b\u6216\u200b\u65b0\u7248\u200b\u64cd\u4f5c\u7cfb\u7edf\u200b\u53d1\u5e03\u200b\u65f6\u200b\u751a\u81f3\u200b\u53d1\u5e03\u200b\u524d\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u4f1a\u200b\u66f4\u200b\u79ef\u6781\u200b\u5730\u200b\u5347\u7ea7\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a
\u200b\u4e3a\u4e86\u200b\u65b9\u4fbf\u200b\u590d\u5236\u200b\u548c\u200b\u4f20\u8f93\u6570\u636e\u200b\uff0c\u200b\u90e8\u5206\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u7684\u200b\u4e3b\u673a\u200b\u548c\u200b\u865a\u62df\u673a\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b SSH \u200b\u767b\u5f55\u200b\u90e8\u5206\u200b\u6d4b\u8bd5\u73af\u5883\u200b\uff08\u200b\u5f53\u7136\u200b\u4e5f\u200b\u5c31\u200b\u53ef\u4ee5\u200b rsync \u200b\u4e86\u200b\uff09\uff1a
\u200b\u4ee5\u4e0a\u200b\u4e24\u4e2a\u200b\u8bbf\u95ee\u200b\u90fd\u200b\u662f\u200b\u76f4\u63a5\u200b\u6dfb\u52a0\u200b\u7684\u200b ~/.ssh/authorized_keys
\u3002
Warning
\u200b\u51fa\u4e8e\u200b\u5b89\u5168\u200b\u8003\u8651\u200b\uff0c\u200b\u4e0d\u8981\u200b\u5728\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u4e2d\u200b\u914d\u7f6e\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u7684\u200b\u767b\u5f55\u200b\u6743\u9650\u200b\uff08\u200b\u6dfb\u52a0\u200b\u516c\u94a5\u200b\u7b49\u200b\uff09\u3002
"},{"location":"testing/#\u914d\u7f6e","title":"\u914d\u7f6e","text":"\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u548c\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u5171\u7528\u200b\u540c\u200b\u4e00\u5957\u200b Nginx \u200b\u914d\u7f6e\u6587\u4ef6\u200b\u65b9\u4fbf\u200b\u8c03\u8bd5\u200b\uff0c\u200b\u4f46\u200b\u6d4b\u8bd5\u73af\u5883\u200b\u7684\u200b /etc/nginx \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u7684\u200b deploy key \u200b\u6ca1\u6709\u200b\u5199\u5165\u200b\u6743\u9650\u200b\uff0c\u200b\u8bf7\u200b\u81ea\u884c\u200b git pull
\u200b\u540e\u200b\u518d\u200b git push
\u3002
\u200b\u5176\u4ed6\u200b\u914d\u7f6e\u200b\u6682\u65f6\u200b\u6ca1\u6709\u200b\u5171\u4eab\u200b\u3002
"},{"location":"testing/devvpn/","title":"VPN for Vlab devs","text":"\u200b\u4e3a\u4e86\u200b\u65b9\u4fbf\u200b\u53c2\u4e0e\u200b\u5f00\u53d1\u200b\u7684\u200b\u540c\u5b66\u200b\u8fde\u63a5\u200b\u6821\u56ed\u7f51\u200b\uff0c\u200b\u6211\u4eec\u200b\u5f00\u8bbe\u200b\u4e86\u200b\u4e00\u4e2a\u200b OpenVPN Server \u200b\u8fd0\u884c\u200b\u5728\u200b gateway\uff08CT 100\uff09\u200b\u4e0a\u200b\u3002
"},{"location":"testing/devvpn/#\u4f7f\u7528\u65b9\u5f0f","title":"\u4f7f\u7528\u200b\u65b9\u5f0f","text":"\u200b\u767b\u5f55\u200b\u8fdb\u200b gateway\uff0c\u200b\u5207\u6362\u200b\u76ee\u5f55\u200b\u81f3\u200b /etc/openvpn/ca
\uff0c\u200b\u8fd0\u884c\u200b ./genconf.sh '<Common Name>'
\uff0c\u200b\u5176\u4e2d\u200b <Common Name>
\u200b\u4e3a\u200b\u6807\u8bc6\u200b\u5ba2\u6237\u7aef\u200b\u7684\u200b\u540d\u79f0\u200b\uff08X.509 \u200b\u8bc1\u4e66\u200b\u7684\u200b Common Name \u200b\u5b57\u200b\u6bb5\u200b\uff0c\u200b\u5efa\u8bae\u200b\u4f7f\u7528\u200b\u59d3\u540d\u200b\u6216\u200b\u6635\u79f0\u200b\u7b49\u200b\u80fd\u591f\u200b\u8fa8\u8ba4\u200b\u7684\u200b\u540d\u79f0\u200b\uff09\u3002\u200b\u5982\u679c\u200b\u4e00\u5207\u6b63\u5e38\u200b\uff0c\u200b\u5c31\u200b\u80fd\u200b\u5728\u200b clients
\u200b\u76ee\u5f55\u200b\u4e2d\u200b\u751f\u6210\u200b\u4e00\u4e2a\u200b <Common Name>.ovpn
\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5c06\u200b\u8be5\u200b\u6587\u4ef6\u200b\u5206\u200b\u53d1\u7ed9\u200b\u7528\u6237\u200b\uff0c\u200b\u4f7f\u7528\u200b OpenVPN \u200b\u5ba2\u6237\u7aef\u200b\u5bfc\u5165\u200b\u5e76\u200b\u8fde\u63a5\u200b\u5373\u53ef\u200b\u3002
\u200b\u670d\u52a1\u7aef\u200b\u53ea\u200b\u9700\u200b\u914d\u7f6e\u200b\u4e00\u6b21\u200b\uff0c\u200b\u4ee5\u4e0b\u200b\u8bb0\u5f55\u200b\u4f5c\u4e3a\u200b\u53c2\u8003\u200b
\u200b\u5b89\u88c5\u200b\u8f6f\u4ef6\u5305\u200b\uff1a
apt install --no-install-recommends openvpn easy-rsa\n
"},{"location":"testing/devvpn/#openvpn-pki","title":"\u8bc1\u4e66\u200b\u7cfb\u7edf","text":"cd /etc/openvpn\nmake-cadir ca\ncd ca\n./easyrsa init-pki\n./easyrsa build-ca nopass\n
\u200b\u81f3\u6b64\u200b\u5728\u200b /etc/openvpn/ca/pki
\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u5c31\u200b\u6709\u200b\u4e00\u5806\u200b\u51c6\u5907\u200b\u597d\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5f00\u59cb\u200b\u7b7e\u8bc1\u200b\u4e66\u200b\u4e86\u200b\u3002
\u200b\u9996\u5148\u200b\u7ed9\u200b\u670d\u52a1\u7aef\u200b\u7b7e\u200b\u4e00\u4e2a\u200b\u8bc1\u4e66\u200b\uff1a
./easyrsa build-server-full 'Vlab VPN Server' nopass\n
\u200b\u7136\u540e\u200b\u628a\u200b pki/issued/Vlab VPN Server.crt
\u200b\u548c\u200b pki/issued/Vlab VPN Server.key
\u200b\u590d\u5236\u5230\u200b /etc/openvpn/server
\u200b\u4e0b\u200b\uff0c\u200b\u5206\u522b\u200b\u547d\u540d\u200b\u4e3a\u200b server.crt
\u200b\u548c\u200b server.key
\u3002
\u200b\u63a5\u4e0b\u6765\u200b\u6bcf\u4e2a\u200b\u5ba2\u6237\u7aef\u200b\u90fd\u200b\u7528\u200b\u8fd9\u6837\u200b\u7684\u200b\u547d\u4ee4\u200b\u7b7e\u200b\u4e00\u4e2a\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u6ce8\u610f\u200b Common Name \u200b\u4e0d\u8981\u200b\u91cd\u590d\u200b\u3002
./easyrsa build-client-full '<Client Name>' nopass\n
\u200b\u73b0\u5728\u200b pki/issued
\u200b\u4e0b\u200b\u548c\u200b pki/private
\u200b\u4e0b\u200b\u5c31\u200b\u6709\u200b\u4e86\u200b\u4e00\u5957\u200b\u8bc1\u4e66\u200b\u548c\u200b\u5bc6\u94a5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7528\u200b\u5b83\u4eec\u200b\u6765\u200b\u5236\u4f5c\u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e86\u200b\uff08\u200b\u89c1\u200b\u4e0b\u200b\uff09\u3002
\u200b\u590d\u5236\u200b\u4e00\u4efd\u200b\u6837\u4f8b\u200b server.conf
\uff1a
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/\ngunzip /etc/openvpn/server/server.conf.gz\n
\u200b\u7f16\u8f91\u200b server.conf
:
;proto tcp\n-proto udp\n+proto udp6\n
Note
\u200b\u4f7f\u7528\u200b proto udp6
\u200b\u53ef\u4ee5\u200b\u8ba9\u200b OpenVPN server \u200b\u4f7f\u7528\u200b v4+v6 \u200b\u53cc\u6808\u200b\u7684\u200b socket\uff0c\u200b\u89c1\u200b https://serverfault.com/a/651869/450575\u3002
;dev tap\n-dev tun\n+dev ovpn\n+dev-type tun\n
-;topology subnet\n+topology subnet\n
-server 10.8.0.0 255.255.255.0\n+server 192.168.254.0 255.255.255.0\n
-tls-auth ta.key 0 # This file is secret\n+;tls-auth ta.key 0 # This file is secret\n
-;push \"route 192.168.10.0 255.255.255.0\"\n-;push \"route 192.168.20.0 255.255.255.0\"\n+push \"route 172.31.0.0 255.255.0.0\"\n+push \"route 202.38.75.85 255.255.255.255\"\n+push \"route 202.38.75.4 255.255.255.255\"\n+push \"route 202.38.75.24 255.255.255.255\"\n
-cipher AES-256-CBC\n+cipher AES-256-GCM\n
-;user nobody\n-;group nogroup\n+user nobody\n+group nogroup\n
\u200b\u751f\u6210\u200b DH \u200b\u53c2\u6570\u200b\u6587\u4ef6\u200b\uff1a
openssl dhparam -out /etc/openvpn/server/dh2048.pem 2048\n
"},{"location":"testing/devvpn/#openvpn-client-conf","title":"\u7f16\u5199\u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6","text":"\u200b\u4e0e\u200b OpenVPN server \u200b\u7c7b\u4f3c\u200b\uff0c\u200b\u4e00\u4e2a\u200b\u57fa\u672c\u200b\u7684\u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5982\u4e0b\u200b\uff1a
OpenVPN \u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u6837\u4f8b\u200bclient\n\nproto udp\n\ndev vlabvpn\ndev-type tun\n\npersist-key\npersist-tun\n\nnobind\nremote <!-- \u200b\u670d\u52a1\u5668\u200b\u5730\u5740\u200b -->\ncipher AES-256-GCM\n\n<ca>\n<!-- CA \u200b\u8bc1\u4e66\u200b -->\n</ca>\n<cert>\n<!-- \u200b\u6b64\u200b\u5ba2\u6237\u7aef\u200b\u7684\u200b\u8bc1\u4e66\u200b -->\n</cert>\n<key>\n<!-- \u200b\u6b64\u200b\u5ba2\u6237\u7aef\u200b\u7684\u200b\u79c1\u94a5\u200b -->\n</key>\n
\u200b\u5176\u4e2d\u200b <ca>
\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u586b\u5165\u200b ca.crt \u200b\u6587\u4ef6\u200b\u7684\u200b\u5185\u5bb9\u200b\uff0c\u200b\u800c\u200b <cert>
\u200b\u548c\u200b <key>
\u200b\u9700\u8981\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u5ba2\u6237\u7aef\u200b\u7b7e\u53d1\u200b\u4e00\u4e2a\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u7f16\u5199\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u811a\u672c\u200b\uff0c\u200b\u8c03\u7528\u200b easyrsa
\u200b\u7b7e\u53d1\u200b\u5ba2\u6237\u7aef\u200b\u8bc1\u4e66\u200b\uff0c\u200b\u5e76\u200b\u5229\u7528\u200b\u6a21\u677f\u200b\u5728\u200b clients/
\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u751f\u6210\u200b\u5ba2\u6237\u7aef\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff1a
#!/bin/bash\n\n[ -n \"$BASH_VERSION\" ] || exit 1\ncd \"$(dirname \"$0\")\"\nPKI=\"$(dirname \"$0\")\"/pki\nOUTDIR=\"$(dirname \"$0\")\"/clients\n\ngen_conf() {\n local cafile=\"$1\"\n local certfile=\"$2\"\n local keyfile=\"$3\"\n cat << EOF\n#!/usr/bin/openvpn\nclient\n\nproto udp\n\ndev vlabvpn\ndev-type tun\n\npersist-key\npersist-tun\n\nnobind\nremote vpn.ibuglab.com\ncipher AES-256-GCM\n\n<ca>\n$(<\"$cafile\")\n</ca>\n<cert>\n$(<\"$certfile\")\n</cert>\n<key>\n$(<\"$keyfile\")\n</key>\nEOF\n}\n\nif [ $# -eq 0 ]; then\n echo \"Need an argument!\" >&2\n exit 1\nelif [ $# -gt 1 ]; then\n echo \"Too many arguments!\" >&2\n exit 1\nfi\nCN=\"$1\"\nOUTFILE=\"$OUTDIR\"/\"$CN\".ovpn\nif [ -f \"$OUTFILE\" ]; then\n echo \"Error: Output file $OUTFILE already exists. Remove it if you want to proceed.\" >&2\n exit 1\nfi\n\nrm -f \"$PKI\"/reqs/\"$CN\".req \"$PKI\"/issued/\"$CN\".crt \"$PKI\"/private/\"$CN\".key\n./easyrsa build-client-full \"$CN\" nopass\ngen_conf \"$PKI\"/ca.crt \"$PKI\"/issued/\"$CN\".crt \"$PKI\"/private/\"$CN\".key > \"$OUTFILE\"\nrm -f \"$PKI\"/reqs/\"$CN\".req \"$PKI\"/issued/\"$CN\".crt \"$PKI\"/private/\"$CN\".key\n
\u200b\u8be5\u200b\u811a\u672c\u200b\u7684\u200b\u4f7f\u7528\u200b\u65b9\u5f0f\u200b\u89c1\u200b\u672c\u6587\u200b\u6700\u200b\u4e0a\u65b9\u200b\u3002
"},{"location":"ui/rdpproxy/","title":"RDP Proxy \u200b\u914d\u7f6e","text":"\u200b\u53c2\u8003\u200b .rdp
\u200b\u6587\u4ef6\u200b\uff1a
connection type:i:7\ndisable wallpaper:i:0\nallow font smoothing:i:1\nallow desktop composition:i:1\ndisable full window drag:i:0\ndisable menu anims:i:0\nfull address:s:vlab.ustc.edu.cn\nloadbalanceinfo:s:Cookie: msts=example_token\n
"},{"location":"ui/vncmux/","title":"\u8fdc\u7a0b\u684c\u9762\u200b\u914d\u7f6e\u200b\u4e0e\u200b\u7ba1\u7406","text":"vnc-multiplexer (\u200b\u4ee5\u4e0b\u200b\u7b80\u79f0\u200b vncmux) \u200b\u7528\u4e8e\u200b\u5b9e\u73b0\u200b VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u3002vncmux \u200b\u7528\u6237\u200b\u5728\u200b\u767b\u5f55\u200b\u4e2d\u200b\u8f93\u5165\u200b\u7684\u200b\u7528\u6237\u540d\u200b\u3001\u200b\u5bc6\u7801\u200b\uff0c\u200b\u5c06\u200b\u88ab\u200b\u7a0b\u5e8f\u200b\u901a\u8fc7\u200b API \u200b\u53d1\u9001\u7ed9\u200b Django \u200b\u540e\u200b\u7aef\u200b\uff0c\u200b\u5e76\u200b\u5f97\u5230\u200b\u5185\u200b\u7f51\u200b\u5ba2\u6237\u673a\u200b\u7684\u200b VNC \u200b\u670d\u52a1\u5668\u200b\u8fde\u63a5\u200b\u4fe1\u606f\u200b\uff0c\u200b\u4ee5\u6b64\u200b\u5b9e\u73b0\u200b\u8f6c\u53d1\u200b\u3002\u200b\u9664\u4e86\u200b\u7b80\u5355\u200b\u7684\u200b\u8f6c\u53d1\u200b\u6570\u636e\u200b\uff0cvncmux \u200b\u8fd8\u4f1a\u200b\u5bf9\u200b VNC \u200b\u534f\u8bae\u200b\u7684\u200b\u6d88\u606f\u200b\u8fdb\u884c\u200b\u89e3\u6790\u200b\u3001\u200b\u4fee\u6539\u200b\uff0c\u200b\u4ee5\u6b64\u200b\u5b9e\u73b0\u200b\u901a\u77e5\u200b\u529f\u80fd\u200b\u3002\u200b\u4ee5\u4e0b\u200b\u7b80\u4ecb\u200b vncmux \u200b\u7684\u200b\u914d\u7f6e\u200b\u548c\u200b\u7ba1\u7406\u200b\u65b9\u6cd5\u200b\u3002
"},{"location":"ui/vncmux/#\u914d\u7f6e\u6587\u4ef6","title":"\u914d\u7f6e\u6587\u4ef6","text":"vncmux \u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5b58\u50a8\u200b\u5728\u200b /etc/vnc_multiplexer/config.json
\uff0c\u200b\u76ee\u524d\u200b\u5982\u4e0b\u200b\uff1a
{\n \"port\": 5900,\n \"api\": \"http://127.0.0.1:8000/vm/vnc/\",\n \"cert_chain_file\": \"/etc/letsencrypt/live/vlab.ustc.edu.cn/fullchain.pem\",\n \"private_key_file\": \"/etc/letsencrypt/live/vlab.ustc.edu.cn/privkey.pem\",\n \"dhparam_file\": \"/etc/vnc_multiplexer/dhparam.pem\",\n \"ra2_private_key_file\": \"/etc/vnc_multiplexer/ra2.pem\",\n \"enabled_protocol\": [\"RA2r_256\", \"RA2r\", \"RA2_256\", \"RA2\", \"VeNCrypt\"],\n \"enable_log\": true,\n \"logger_ip\": \"127.0.0.1\",\n \"logger_port\": 5555,\n \"enable_notification\": true,\n \"notification_file\": \"/etc/vnc_multiplexer/notification.png\",\n \"enable_admin\": true,\n \"admin_path\": \"\",\n \"enable_websocket\": true,\n \"websocket_port\": 5801,\n \"enable_tight_translation\": true,\n \"tight_jpeg_level\": 7,\n \"threads\": 8\n}\n
\u200b\u5176\u4e2d\u200b\u5404\u9879\u200b\u610f\u4e49\u200b\u5982\u4e0b\u200b\uff1a
api
\uff1a Django \u200b\u540e\u200b\u7aef\u200b API \u200b\u7684\u200b URL \uff0c\u200b\u8bf7\u200b\u6ce8\u610f\u200b\u4e0d\u5f97\u200b\u4f7f\u7528\u200b HTTPS\u3002
cert_chain_file
\uff1a TLS \u200b\u8bc1\u4e66\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e0d\u7528\u200b\u66f4\u6539\u200b\u3002
private_key_file
\uff1a TLS \u200b\u79c1\u94a5\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e0d\u7528\u200b\u66f4\u6539\u200b\u3002
dhparam_file
\uff1a DH \u200b\u5bf9\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e0d\u7528\u200b\u66f4\u6539\u200b\u3002
ra2_private_key_file
\uff1a RealVNC \u200b\u534f\u8bae\u200b\u79c1\u94a5\u200b\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u8bc1\u660e\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u8eab\u4efd\u200b\u3002\u200b\u5fc5\u987b\u200b\u4e3a\u200b PKCS#8 RSA 2048 \u200b\u79c1\u94a5\u200b\u6587\u4ef6\u200b\u3002
enabled_protocol
\uff1a \u200b\u5141\u8bb8\u200b\u7684\u200b\u534f\u8bae\u200b\u3002VeNCrypt
\u200b\u4e3a\u200b TigerVNC \u200b\u4f7f\u7528\u200b\u7684\u200b\u534f\u8bae\u200b\u3002 RA2
, RA2r
, RA2_256
, RA2r_256
\u200b\u5747\u200b\u4e3a\u200b RealVNC \u200b\u7684\u200b\u52a0\u5bc6\u534f\u8bae\u200b, RA2ne
, RA2ne_256
\u200b\u4e3a\u200b RealVNC \u200b\u4f7f\u7528\u200b\u7684\u200b\u975e\u200b\u52a0\u5bc6\u534f\u8bae\u200b\uff0c\u200b\u5efa\u8bae\u200b\u5173\u95ed\u200b\u3002
enable_log
\uff1a \u200b\u662f\u5426\u200b\u5f00\u542f\u200b\u65e5\u5fd7\u200b\u3002\u200b\u65e5\u5fd7\u200b\u5c06\u200b\u5728\u200b\u6bcf\u4e2a\u200b\u8fde\u63a5\u200b\u5173\u95ed\u200b\u540e\u200b\u901a\u8fc7\u200b UDP \u200b\u62a5\u6587\u200b\u53d1\u9001\u7ed9\u200b\u65e5\u5fd7\u200b\u670d\u52a1\u5668\u200b\u3002
logger_ip
\uff1a \u200b\u65e5\u5fd7\u200b\u670d\u52a1\u5668\u200b IP
logger_port
\uff1a \u200b\u65e5\u5fd7\u200b\u670d\u52a1\u5668\u7aef\u200b\u53e3\u200b
enable_notification
\uff1a \u200b\u662f\u5426\u200b\u5f00\u542f\u200b\u901a\u77e5\u200b\u529f\u80fd\u200b\u3002\u200b\u82e5\u200b\u5f00\u542f\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u7528\u6237\u200b\u8fde\u63a5\u200b\u540e\u200b vncmux \u200b\u90fd\u200b\u5c06\u200b\u5728\u200b\u753b\u9762\u200b\u4e0a\u200b\u6ce8\u5165\u200b\u4e00\u4e2a\u200b\u53ef\u200b\u5173\u95ed\u200b\u7684\u200b\u5bf9\u8bdd\u6846\u200b\u7528\u4ee5\u200b\u663e\u793a\u200b\u901a\u77e5\u200b\u3002
notification_file
\uff1a \u200b\u901a\u77e5\u200b\u56fe\u7247\u200b\u6587\u4ef6\u200b\u3002\u200b\u5fc5\u987b\u200b\u4e3a\u200b PNG \u200b\u683c\u5f0f\u200b\u3002
enable_admin
\uff1a \u200b\u662f\u5426\u200b\u5f00\u542f\u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b\u3002\u200b\u82e5\u200b\u5f00\u542f\u200b\uff0c vncmux \u200b\u5c06\u200b\u5728\u200b\u4e00\u4e2a\u200b Unix domain socket \u200b\u4e0a\u200b\u63a5\u6536\u200b\u7ba1\u7406\u200b\u547d\u4ee4\u200b\uff0c\u200b\u4ee5\u6b64\u200b\u4e0e\u200b vncmux-cli \u200b\u5de5\u5177\u200b\u8fde\u63a5\u200b\u3002
admin_path
\uff1a \u200b\u7ba1\u7406\u200b\u7aef\u53e3\u200b\u7684\u200b\u8def\u5f84\u200b\uff0c\u200b\u7559\u7a7a\u200b\u5219\u200b\u4e3a\u200b\u9ed8\u8ba4\u503c\u200b /var/run/vncmux.sock
enable_websocket
\uff1a \u200b\u662f\u5426\u200b\u5f00\u542f\u200b WebSocket \u200b\u529f\u80fd\u200b\u3002noVNC \u200b\u5fc5\u987b\u200b\u4f7f\u7528\u200b\u6b64\u200b\u529f\u80fd\u200b\uff0c\u200b\u56e0\u6b64\u200b\u603b\u662f\u200b\u5e94\u8be5\u200b\u5f00\u542f\u200b\u3002\u200b\u8fd9\u91cc\u200b\u7684\u200b WebSocket \u200b\u8fde\u63a5\u200b\u662f\u200b\u672a\u200b\u52a0\u5bc6\u200b\u7684\u200b\uff0c\u200b\u9700\u8981\u200b\u4f7f\u7528\u200b Nginx \u200b\u53cd\u4ee3\u200b\u3002
websocket_port
\uff1a WebSocket \u200b\u670d\u52a1\u200b\u7aef\u53e3\u200b
enable_tight_translation
\uff1a \u200b\u662f\u5426\u200b\u7ed9\u200b RealVNC \u200b\u5f00\u542f\u200b\u6709\u635f\u538b\u7f29\u200b\u3002\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b RealVNC \u200b\u8fde\u63a5\u200b TigerVNC \u200b\u670d\u52a1\u7aef\u200b\u53ea\u200b\u652f\u6301\u200b\u65e0\u635f\u538b\u7f29\u200b\u3002\u200b\u6b64\u200b\u529f\u80fd\u200b\u5c06\u200b TigerVNC \u200b\u53d1\u51fa\u200b\u7684\u200b Tight \u200b\u7f16\u7801\u6570\u636e\u200b\u8f6c\u6362\u6210\u200b RealVNC \u200b\u53ef\u8bfb\u200b\u7684\u200b\u683c\u5f0f\u200b\uff0c\u200b\u4ee5\u6b64\u200b\u5b9e\u73b0\u200b\u4f7f\u7528\u200b JPEG \u200b\u538b\u7f29\u200b\u3002\u200b\u5f00\u542f\u200b\u540e\u200b\u53ef\u4ee5\u200b\u8ba9\u200b RealVNC \u200b\u6d41\u7545\u200b\u5f88\u591a\u200b\uff0c\u200b\u4f46\u662f\u200b\u53ef\u80fd\u200b\u964d\u4f4e\u200b\u753b\u8d28\u200b\u3002
tight_jpeg_level
\uff1a RealVNC \u200b\u6709\u635f\u538b\u7f29\u200b\u7684\u200b\u8d28\u91cf\u200b\u7b49\u7ea7\u200b\u3002\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u662f\u200b 0 \u200b\u5230\u200b 9\u3002\u200b\u5982\u679c\u200b\u4e3a\u200b 8 \u200b\u63a5\u8fd1\u200b\u65e0\u635f\u200b\u3002
threads
\uff1a \u200b\u5de5\u4f5c\u200b\u7ebf\u7a0b\u200b\u6570\u200b
vncmux-cli \u200b\u5de5\u5177\u200b\u7528\u4e8e\u200b\u7ba1\u7406\u200b\u8fd0\u884c\u200b\u4e2d\u200b\u7684\u200b vncmux \u200b\u670d\u52a1\u5668\u200b\u3002\u200b\u8fde\u63a5\u200b\u5230\u200b vncmux \u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u65b9\u6cd5\u200b\u5982\u4e0b\u200b\uff1a
vncmux-cli [path]\n
\u200b\u8fde\u63a5\u200b\u540e\u200b\u8f93\u5165\u200b exit
\u200b\u53ef\u4ee5\u200b\u9000\u51fa\u200b\uff0c\u200b\u8f93\u5165\u200b help
\u200b\u53ef\u4ee5\u200b\u663e\u793a\u200b\u5e2e\u52a9\u200b\uff0c\u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u8fdb\u884c\u200b\u4ee5\u4e0b\u200b\u64cd\u4f5c\u200b\uff1a
\u200b\u8f93\u5165\u200b list
\u200b\u5373\u53ef\u200b\u5217\u51fa\u200b\u5728\u7ebf\u200b\u7528\u6237\u200b\u7684\u200b\u4fe1\u606f\u200b\uff0c\u200b\u5305\u62ec\u200b\u8fde\u63a5\u200b ID \u3001\u200b\u8fde\u63a5\u65f6\u95f4\u200b\u3001\u200b\u7528\u6237\u540d\u200b\u3001\u200b\u4e3b\u673a\u200b IP \u3001\u200b\u7528\u6237\u200b IP \u3001\u200b\u5ba2\u6237\u7aef\u200b\u7c7b\u578b\u200b\u3002
\u200b\u8f93\u5165\u200b disconnect <id>
\u200b\u53ef\u4ee5\u200b\u628a\u200b ID \u200b\u5bf9\u5e94\u200b\u7684\u200b\u8fde\u63a5\u200b\u65ad\u5f00\u200b\u3002
\u200b\u8f93\u5165\u200b load-notification <image file>
\u200b\u53ef\u4ee5\u200b\u66f4\u6362\u200b\u901a\u77e5\u200b\u6587\u4ef6\u200b\uff0c\u200b\u901a\u77e5\u200b\u6587\u4ef6\u200b\u6700\u597d\u200b\u662f\u200b\u7edd\u5bf9\u8def\u5f84\u200b\u3002\u200b\u5f53\u524d\u200b\u5df2\u200b\u5728\u7ebf\u200b\u7684\u200b\u7528\u6237\u200b\u5c06\u200b\u4e0d\u4f1a\u200b\u770b\u5230\u200b\u65b0\u200b\u7684\u200b\u901a\u77e5\u200b\u3002
\u200b\u53ef\u4ee5\u200b\u53d1\u9001\u200b PNG \u200b\u683c\u5f0f\u200b\u7684\u200b\u56fe\u7247\u200b\u7ed9\u200b\u4e00\u4e2a\u200b\u6216\u200b\u591a\u4e2a\u200b\u7528\u6237\u200b\u3002\u200b\u547d\u4ee4\u200b\u683c\u5f0f\u200b\u4e3a\u200b send-image <image file> <id> [id] ...
\uff0c\u200b\u5176\u4e2d\u200b id \u200b\u53ef\u4ee5\u200b\u4ece\u200b list
\u200b\u7684\u200b\u8f93\u51fa\u200b\u5f97\u77e5\u200b\u3002
\u200b\u547d\u4ee4\u200b\u5206\u522b\u200b\u4e3a\u200b enable-notification
\u200b\u548c\u200b disable-notification
\u200b\u547d\u4ee4\u200b\u5206\u522b\u200b\u4e3a\u200b enable-realvnc-lossy
\u200b\u548c\u200b disable-realvnc-lossy
\u200b\u547d\u4ee4\u200b\u4e3a\u200b set-realvnc-jpeg-level <0-9>
Vlab Software \u200b\u662f\u200b\u5b58\u653e\u200b\u4e8e\u200b\u5404\u4e2a\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b /opt/vlab
\u200b\u7684\u200b\u8f6f\u4ef6\u200b\u7ec4\u5408\u200b\uff0c\u200b\u901a\u8fc7\u200b bind mount \u200b\u6302\u8f7d\u200b\u8fdb\u200b\u865a\u62df\u673a\u200b\u7684\u200b /opt/vlab
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u4e3a\u200b\u7528\u6237\u200b\u63d0\u4f9b\u200b\u9884\u88c5\u200b\u7684\u200b\u8f6f\u4ef6\u200b\u3002\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u4e5f\u200b\u7ecf\u5e38\u200b\u79f0\u4e3a\u200b /opt/vlab\u3002
\u200b\u4e3a\u4e86\u200b\u4fdd\u8bc1\u200b\u5404\u200b\u7528\u6237\u200b\u80fd\u591f\u200b\u53ca\u65f6\u200b\u7528\u200b\u4e0a\u200b\u7edf\u4e00\u200b\u7248\u672c\u200b\u7684\u200b Vlab Software\uff0c\u200b\u6211\u4eec\u200b\u5728\u200b pv1 \u200b\u4e0a\u200b\u4f7f\u7528\u200b crontab \u200b\u6bcf\u5929\u200b\u51cc\u6668\u200b\u5c06\u200b /opt/vlab
\u200b\u540c\u6b65\u200b\u81f3\u200b\u5176\u4ed6\u200b\u4e3b\u673a\u200b\u4e0a\u200b\uff08pv9 \u200b\u9664\u5916\u200b\uff09\uff0c\u200b\u5176\u4e2d\u200b crontab \u200b\u6761\u76ee\u200b\u5982\u4e0b\u200b\uff1a
47 4 * * * /root/sync-software.sh\n
\u200b\u5bf9\u5e94\u200b\u7684\u200b shell \u200b\u811a\u672c\u200b\u5982\u4e0b\u200b\uff1a
/root/sync-software.sh#!/bin/bash\n\nexec >/dev/null 2>/dev/null\n\nfor node in pv{2..8} pvg{1,2} pv{10..14}; do\n rsync -avz --delete /opt/vlab/ \"$node\":/opt/vlab/ &\ndone\nwait\n
\u200b\u5982\u679c\u200b\u6709\u200b\u5bf9\u200b /opt/vlab
\u200b\u4fee\u6539\u200b\u540e\u200b\u9700\u8981\u200b\u7acb\u523b\u200b\u540c\u6b65\u200b\u7684\u200b\uff08\u200b\u4e00\u822c\u200b\u4e0d\u200b\u9700\u8981\u200b\uff09\uff0c\u200b\u624b\u52a8\u200b\u6267\u884c\u200b /root/sync-software.sh
\u200b\u5373\u53ef\u200b\u3002
\u200b\u5728\u200b /etc/skel/.config/menus/
\u200b\u4e0b\u200b\u65b0\u5efa\u200b mate-applications.menu
\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a
<?xml version=\"1.0\" ?>\n<!DOCTYPE Menu\n PUBLIC '-//freedesktop//DTD Menu 1.0//EN'\n 'http://standards.freedesktop.org/menu-spec/menu-1.0.dtd'>\n<Menu>\n <Name>Applications</Name>\n <MergeFile type=\"parent\">/etc/xdg/menus/mate-applications.menu</MergeFile>\n\n <!-- Vlab -->\n <Menu>\n <Name>Vlab</Name>\n <Directory>Vlab.directory</Directory>\n <AppDir>/opt/vlab/applications</AppDir>\n <Include><And><Category>Vlab</Category></And></Include>\n </Menu>\n</Menu>\n
\uff08\u200b\u5176\u4ed6\u200b\u684c\u9762\u73af\u5883\u200b\u4e0b\u200b\u6587\u4ef6\u540d\u200b\u9700\u8981\u200b\u505a\u200b\u7c7b\u4f3c\u200b\u4fee\u6539\u200b\uff09
\u200b\u65e7\u200b\u7684\u200b\u76f4\u63a5\u200b\u4fee\u6539\u200b\u7cfb\u7edf\u6587\u4ef6\u200b\u7684\u200b\u65b9\u6cd5\u200b\u200b\u53d6\u51b3\u4e8e\u200b\u6240\u200b\u5b89\u88c5\u200b\u7684\u200b\u684c\u9762\u73af\u5883\u200b\uff0c\u200b\u5728\u200b /etc/xdg/menus
\u200b\u4e0b\u200b\u7684\u200b\u67d0\u4e2a\u200b .menu
\u200b\u6587\u4ef6\u200b\u6700\u540e\u200b\u7684\u200b\u5173\u95ed\u200b\u6807\u7b7e\u200b\u524d\u200b\u63d2\u5165\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5728\u200b\u6700\u200b\u5916\u5c42\u200b\u7684\u200b <Menu>
\u200b\u4e0b\u200b\u6dfb\u52a0\u200b\u4e00\u4e2a\u200b\u5b50\u952e\u200b\u3002
<!-- Vlab -->\n<Menu>\n <Name>Vlab</Name>\n <Directory>Vlab.directory</Directory>\n <AppDir>/opt/vlab/applications</AppDir>\n <Include><And><Category>Vlab</Category></And></Include>\n</Menu>\n
\u200b\u4f8b\u5982\u200b\uff0c\u200b\u5bf9\u4e8e\u200b MATE \u200b\u684c\u9762\u73af\u5883\u200b\uff0c\u200b\u6587\u4ef6\u200b\u662f\u200b /etc/xdg/menus/mate-applications.menu
\uff1b\u200b\u5bf9\u4e8e\u200b Xfce \u200b\u6587\u4ef6\u540d\u200b\u662f\u200b xfce-applications.menu
\u3002
\u200b\u540c\u65f6\u200b\u4e3a\u4e86\u200b\u4f7f\u200b\u547d\u4ee4\u884c\u200b\u73af\u5883\u200b\u80fd\u591f\u200b\u6b63\u786e\u200b\u52a0\u8f7d\u200b PATH\uff0c\u200b\u9700\u8981\u200b\u5728\u200b /etc/profile.d
\u200b\u4e0b\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u6587\u4ef6\u200b vlab.sh
\uff1a
if [ -e /opt/vlab/path.sh ]; then\n source /opt/vlab/path.sh\nfi\n
\u200b\u5982\u679c\u200b\u6ca1\u6709\u200b /etc/profile.d
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u5c31\u200b\u5c06\u200b\u8fd9\u200b\u51e0\u884c\u200b\u4ee3\u7801\u200b\u52a0\u200b\u5728\u200b /etc/profile
\u200b\u7684\u200b\u672b\u5c3e\u200b\u3002
\u200b\u6700\u540e\u200b\uff0c\u200b\u8bb0\u5f97\u200b\u66ff\u6362\u200b\u4e0a\u200b Vlab \u200b\u7684\u200b\u4e13\u5c5e\u200b\u684c\u9762\u200b\uff1ahttps://vlab.ustc.edu.cn/downloads/background.jpg\uff08wget \u200b\u4e0b\u6765\u200b\u653e\u5728\u200b\u5408\u9002\u200b\u7684\u200b\u4f4d\u7f6e\u200b\u914d\u7f6e\u200b\u597d\u200b\u684c\u9762\u200b\u8bbe\u7f6e\u200b\uff09
"},{"location":"vlab-software/installation/","title":"\u5404\u200b\u8f6f\u4ef6\u200b\u7684\u200b\u5b89\u88c5\u200b\u65b9\u5f0f","text":""},{"location":"vlab-software/installation/#code-server","title":"Code Server","text":"\u200b\u4ed3\u5e93\u200b\uff1a coder/code-server
\u200b\u66f4\u65b0\u200b\u811a\u672c\u200b\uff1a
pv1:/root/vlab-software/code-server.sh#!/bin/sh\n\nLOCALDIR=/opt/vlab/code-server\nLOCALVERSION=\"$(jq -r .version \"$LOCALDIR/package.json\")\"\n\nURL=\"https://github.com/coder/code-server/releases/latest\"\nVERSION=\"$(curl -sI \"$URL\" | perl -ne '/^location:/ && /v([\\d.]*)\\s*$/ && print $1')\"\n\nif [ \"$VERSION\" = \"$LOCALVERSION\" ]; then\n echo \"Already up-to-date.\"\n exit 0\nfi\n\nURL=\"https://github.com/coder/code-server/releases/download/v$VERSION/code-server-$VERSION-linux-amd64.tar.gz\"\nBASENAME=\"$(basename -s .tar.gz \"$URL\")\"\n\nset -e\ncd /tmp\nwget -O \"$BASENAME.tar.gz\" \"$URL\"\ntar zxf \"$BASENAME.tar.gz\"\nrsync -avAX \"$BASENAME\"/ \"$LOCALDIR\"/\nrm -rf \"$BASENAME\" \"$BASENAME.tar.gz\"\n
"},{"location":"vlab-software/misc/","title":"Vlab \u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\u5957\u88c5\u200b\u76f8\u5173\u200b\u8bb0\u5f55","text":""},{"location":"vlab-software/misc/#\u5728-lxc-\u4e2d\u4ee5-ubuntu-1804-docker-\u5bb9\u5668\u8fd0\u884c-vivado-20191","title":"\u5728\u200b LXC \u200b\u4e2d\u4ee5\u200b Ubuntu 18.04 Docker \u200b\u5bb9\u5668\u200b\u8fd0\u884c\u200b Vivado 2019.1","text":"\u200b\u8fd0\u884c\u200b Ubuntu 18.04 \u200b\u5bb9\u5668\u200b\uff1a
sudo docker run -it -e DISPLAY=$DISPLAY -e LANG=\"zh_CN.UTF-8\" -v /tmp/.X11-unix/:/tmp/.X11-unix -v /opt/vlab:/opt/vlab -v /home/ubuntu:/user --rm ustclug/ubuntu:18.04\n
\u200b\u5728\u200b\u542f\u52a8\u200b\u7684\u200b Docker \u200b\u5bb9\u5668\u200b\u4e2d\u200b:
connect(3, {sa_family=AF_UNIX, sun_path=@\"/tmp/.X11-unix/X0\"}, 20) = -1 ECONNREFUSED (Connection refused)
\uff09\uff1aapt update\napt install libx11-6 libxext6 libxrender1 libxtst6 libxi6 locales\nlocale-gen zh_CN.UTF-8\nadduser vlab # \u200b\u9700\u8981\u200b\u8ba9\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7528\u6237\u200b PID \u200b\u4e0e\u200b\u5916\u9762\u200b\u76f8\u540c\u200b\nsu vlab\n/opt/vlab/bin/vivado\n
"},{"location":"workflow/miscellaneous/","title":"\u6742\u9879","text":""},{"location":"workflow/miscellaneous/#list-all-vms","title":"\u5217\u51fa\u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u6240\u6709\u200b\u5bb9\u5668","text":"\u200b\u9996\u5148\u200b apt install jq
\uff08\u200b\u8fd9\u4e2a\u200b\u5de5\u5177\u200b\u5f88\u5c0f\u200b\uff0c\u200b\u4e0d\u7528\u200b\u62c5\u5fc3\u200b\u5f04\u4e71\u200b\u7cfb\u7edf\u200b\u73af\u5883\u200b\uff09\uff0c\u200b\u7136\u540e\u200b
jq -r '.ids | to_entries[] | select(.value.type == \"lxc\") | .key' /etc/pve/.vmlist\n
\u200b\u5982\u679c\u200b\u8981\u200b\u5217\u51fa\u200b\u865a\u62df\u673a\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5c06\u200b select type \u200b\u6362\u6210\u200b qemu \u200b\u5373\u53ef\u200b\uff1b\u200b\u5982\u679c\u200b\u4e24\u8005\u200b\u90fd\u200b\u8981\u200b\u5217\u51fa\u200b\u7684\u8bdd\u200b\uff0c\u200b\u76f4\u63a5\u200b\u53bb\u6389\u200b select \u200b\u8fd9\u4e2a\u200b filter\u3002
\u200b\u53c2\u8003\u8d44\u6599\u200b\uff1a
\u200b\u4f7f\u7528\u200b Vlab Container Tool \u200b\u5de5\u5177\u200b
\u200b\u6211\u4eec\u200b\u5df2\u200b\u5c06\u200b\u65b9\u6cd5\u200b 1 \u200b\u6574\u5408\u200b\u8fdb\u200b Vlab Container Tool \u200b\u5de5\u5177\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b vct findpid <pid>...
\u200b\u6765\u200b\u67e5\u627e\u200b PID \u200b\u6240\u5c5e\u200b\u7684\u200b\u5bb9\u5668\u200b\u3002
\u200b\u8fdb\u7a0b\u200b\u7684\u200b cgroup \u200b\u7ed3\u6784\u200b\u91cc\u200b\u5305\u542b\u200b\u4e86\u200b\u5bb9\u5668\u200b ID\uff0c\u200b\u4f8b\u5982\u200b\uff1a
# cat /proc/114514/cgroup\n0::/lxc/6666/ns/system.slice/lightdm.service\n
\u200b\u6240\u4ee5\u200b\u53ea\u200b\u9700\u8981\u200b\u5bf9\u200b\u7740\u200b\u8fd9\u4e2a\u200b cgroup \u200b\u6587\u4ef6\u200b grep \u200b\u51fa\u6765\u200b\u5373\u53ef\u200b\uff1a
grep -Po '/lxc/\\K\\d+' /proc/$PID/cgroup\n
"},{"location":"workflow/miscellaneous/#\u65b9\u6cd5-2","title":"\u65b9\u6cd5\u200b 2","text":"\u200b\u601d\u8def\u200b\uff1a\u200b\u4ece\u200b /proc
\u200b\u91cc\u200b\u4e0d\u65ad\u200b\u8bfb\u53d6\u200b\u5176\u7236\u200b PID \u200b\u76f4\u5230\u200b\u627e\u5230\u200b\u5bb9\u5668\u200b\u91cc\u200b\u7684\u200b PID 1\uff0c\u200b\u8fd9\u4e2a\u200b \"PID 1\" \u200b\u7684\u200b\u7236\u200b\u8fdb\u7a0b\u200b lxc-start
\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\u91cc\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u5bb9\u5668\u200b ID\u3002
\u200b\u53c2\u8003\u200b\u4ee3\u7801\u200b\uff1a
#!/bin/sh\n\nPID=\"$1\"\n\nwhile :; do\n procfile=\"/proc/$PID/status\"\n name=$(awk '$1==\"Name:\"{print $2}' \"$procfile\")\n ppid=$(awk '$1==\"PPid:\"{print $2}' \"$procfile\")\n if [ \"$name\" = \"lxc-start\" ]; then\n tr '\\0' ' ' < \"/proc/$PID/cmdline\" | cut -d' ' -f4\n break\n elif [ \"$ppid\" -eq 1 ]; then\n echo Failed\n exit 1\n else\n PID=\"$ppid\"\n fi\ndone\n
"},{"location":"workflow/miscellaneous/#\u8c03\u8bd5\u5bb9\u5668\u542f\u52a8\u5931\u8d25\u7684\u539f\u56e0","title":"\u8c03\u8bd5\u200b\u5bb9\u5668\u200b\u542f\u52a8\u200b\u5931\u8d25\u200b\u7684\u200b\u539f\u56e0","text":"PVE \u200b\u7684\u200b\u5bb9\u5668\u200b\u91c7\u7528\u200b systemd \u200b\u7ba1\u7406\u200b\uff0c\u200b\u6240\u4ee5\u200b\u9996\u5148\u200b\u53ef\u4ee5\u200b systemctl status pve-container@114514
\u200b\u67e5\u770b\u200b\u60c5\u51b5\u200b\u3002\u200b\u5982\u679c\u200b\u8fd9\u91cc\u200b\u6ca1\u6709\u200b\u8db3\u591f\u200b\u7684\u200b\u65e5\u5fd7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u628a\u200b ExecStart \u200b\u547d\u4ee4\u200b\u62f7\u200b\u4e0b\u6765\u200b\u624b\u52a8\u200b\u8fd0\u884c\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a
/usr/bin/lxc-start -F -n 114514\n
\u200b\u7136\u540e\u200b\u6309\u200b\u63d0\u793a\u200b\u52a0\u4e0a\u200b --logfile /dev/stdout --logpriority INFO
\uff08\u200b\u6216\u8005\u200b DEBUG\uff09\uff0c\u200b\u5e94\u8be5\u200b\u5c31\u200b\u6709\u200b\u8db3\u591f\u200b\u8be6\u7ec6\u200b\u7684\u200b\u65e5\u5fd7\u200b\u6765\u200b\u5224\u65ad\u200b\u95ee\u9898\u200b\u4e86\u200b\u3002
\u200b\u4f7f\u7528\u200b U \u200b\u76d8\u200b\u5b89\u88c5\u200b\u597d\u200b Proxmox VE\uff0c\u200b\u4e3b\u673a\u540d\u200b\u4e3a\u200b pv#.ibuglab.com
\uff08Proxmox \u200b\u5b89\u88c5\u7a0b\u5e8f\u200b\u8981\u6c42\u200b\uff0c\u200b\u88c5\u597d\u200b\u540e\u200b\u53ef\u4ee5\u200b\u6539\u200b\uff09\uff0c\u200b\u5176\u4e2d\u200b #
\u200b\u4e3a\u200b\u6570\u5b57\u200b\u6216\u200b\u5176\u4ed6\u200b\u6807\u8bb0\u200b\uff0c\u200b\u624b\u52a8\u200b\u9012\u589e\u200b\u3002
\u200b\u5148\u914d\u200b\u597d\u200b SSH \u200b\u8bbf\u95ee\u200b\uff0c\u200b\u5bf9\u200b SSH Host Key \u200b\u7b7e\u540d\u200b\uff0c\u200b\u5e76\u200b\u52a0\u5165\u200b TrustedUserCAKeys\u3002\u200b\u89c1\u200b SSH \u200b\u8bc1\u4e66\u200b\u8ba4\u8bc1\u200b \u200b\u4e00\u9875\u200b\u3002
\u200b\u5728\u200b\u52a0\u5165\u200b\u73b0\u6709\u200b\u7684\u200b Proxmox VE \u200b\u96c6\u7fa4\u200b\u540e\u200b\u5220\u9664\u200b root \u200b\u5bc6\u7801\u200b\uff08passwd -d root
\uff09\uff0c\u200b\u65b9\u4fbf\u200b\u4ee5\u540e\u200b\u7ef4\u62a4\u200b\u3002
\u200b\u4fee\u6539\u200b /etc/apt/sources.list
\uff0c\u200b\u5c06\u200b\u8f6f\u4ef6\u200b\u6e90\u200b\u66ff\u6362\u200b\u4e3a\u200b TUNA\uff1a
deb https://mirrors.ustc.edu.cn/debian bullseye main contrib\ndeb https://mirrors.ustc.edu.cn/debian bullseye-updates main contrib\ndeb https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib\n
\u200b\u5220\u9664\u200b /etc/apt/sources.list.d/pve-enterprise.list
\uff0c\u200b\u65b0\u5efa\u200b /etc/apt/sources.list.d/pve.list
\uff0c\u200b\u5199\u5165\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\uff1a
deb https://mirrors.ustc.edu.cn/proxmox/debian bullseye pve-no-subscription\n
\u200b\u5237\u65b0\u200b\u8f6f\u4ef6\u200b\u6e90\u200b\u5e76\u200b\u5b89\u88c5\u200b\u66f4\u65b0\u200b\u3002
"},{"location":"workflow/new-host/#\u5b89\u88c5\u8f6f\u4ef6\u53ef\u9009","title":"\u5b89\u88c5\u200b\u8f6f\u4ef6\u200b\uff08\u200b\u53ef\u200b\u9009\u200b\uff09","text":"\u200b\u4ece\u200b APT \u200b\u5b89\u88c5\u200b\u4e00\u4e9b\u200b\u8f6f\u4ef6\u200b\u4ee5\u4fbf\u200b\u7ba1\u7406\u200b\u548c\u200b\u8c03\u8bd5\u200b\u3002\u200b\u8bf7\u200b\u5c3d\u53ef\u80fd\u200b\u4fdd\u6301\u200b\u4e3b\u673a\u200b\u7cfb\u7edf\u200b\u7b80\u6d01\u200b\u3002
--no-install-recommends
\uff09\u200b\u53c2\u89c1\u200b\u4e3b\u673a\u200b\u7f51\u5361\u200b\u4e00\u9875\u200b\u3002
"},{"location":"workflow/new-host/#\u914d\u7f6e\u9632\u706b\u5899","title":"\u914d\u7f6e\u200b\u9632\u706b\u5899","text":"\u200b\u9700\u8981\u200b\u5b89\u88c5\u200b iptables-persistent
\u200b\u548c\u200b ipset-persistent
\u200b\u8f6f\u4ef6\u5305\u200b\uff0c\u200b\u4ece\u200b\u53e6\u4e00\u53f0\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u590d\u5236\u200b /etc/iptables
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u4fee\u6539\u200b\u76f8\u5173\u200b\u6587\u4ef6\u200b\u4e2d\u200b\u7684\u200b\u7f51\u5361\u200b\u540d\u79f0\u200b\uff08\u200b\u5982\u200b\u6709\u200b\u9700\u8981\u200b\uff09\u200b\u5e76\u200b\u91cd\u542f\u200b netfilter-persistent.service
\u3002
\u200b\u5728\u200b /etc/lvm/lvm.conf
\u200b\u672b\u5c3e\u200b\u8ffd\u52a0\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\uff0c\u200b\u66ff\u6362\u200b\u6389\u200b pve-manager \u200b\u751f\u6210\u200b\u7684\u200b devices section\uff1a
devices {\n # added by pve-manager to avoid scanning ZFS zvols\n global_filter = [\"r|/dev/disk/by-id/usb.*|\", \"r|/dev/zd.*|\", \"r|/dev/mapper/pve-.*|\" \"r|/dev/mapper/.*-(vm|base)--[0-9]+--disk--[0-9]+|\"]\n}\nactivation {\n auto_activation_volume_list = [\"pve\", \"data\"]\n}\n
"},{"location":"workflow/new-host/#\u6302\u8f7d\u5b58\u50a8\u670d\u52a1\u5668","title":"\u6302\u8f7d\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668","text":"\u200b\u4f7f\u7528\u200b iSCSI \u200b\u547d\u4ee4\u884c\u200b\u7ba1\u7406\u5de5\u5177\u200b
iscsiadm -m discovery -t sendtargets -p 10.0.0.200\niscsiadm -m node -T iqn.2015-11.com.hpe:storage.msa1050.1840436ed4 -p 10.0.0.200 --login\n
\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u4f7f\u7528\u200b\u5730\u5740\u200b\u4e3a\u200b 10.0.0.200 \u200b\u4e0e\u200b 10.0.0.201\uff0c\u200b\u5206\u522b\u200b\u5f52\u5c5e\u200b\u4e24\u4e2a\u200b\u63a7\u5236\u5668\u200b\uff0c\u200b\u5efa\u8bae\u200b\u5404\u53f0\u200b\u8ba1\u7b97\u200b\u670d\u52a1\u5668\u200b\u4ea4\u66ff\u200b\u8fde\u63a5\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u5730\u5740\u200b\u4ee5\u200b\u300c\u200b\u8d1f\u8f7d\u200b\u5747\u8861\u200b\u300d\u3002
\u200b\u6302\u8f7d\u200b\u770b\u5230\u200b iSCSI \u200b\u7684\u200b\u5377\u200b\u4e4b\u540e\u200b\uff0c\u200b\u8fdb\u5165\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u7ba1\u7406\u200b\u9875\u9762\u200b\uff0c\u200b\u9009\u200b Hosts\uff0c\u200b\u4e3a\u200b\u521a\u624d\u200b\u65b0\u589e\u200b\u7684\u200b\u90a3\u4e2a\u200b\u4e3b\u673a\u200b\u8865\u200b\u4e0a\u200b\u540d\u79f0\u200b\u3002IQN \u200b\u53ef\u4ee5\u200b\u770b\u200b\u4e3b\u673a\u200b\u91cc\u200b\u7684\u200b /etc/iscsi/initiatorname.iscsi
\u200b\u6587\u4ef6\u200b\u6765\u200b\u786e\u8ba4\u200b\u3002
open-iscsi \u200b\u8f6f\u4ef6\u5305\u200b\u901a\u8fc7\u200b systemd \u200b\u670d\u52a1\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u5f00\u673a\u200b\u81ea\u52a8\u200b\u6302\u8f7d\u200b iSCSI \u200b\u7684\u200b\u529f\u80fd\u200b\uff0c\u200b\u4f46\u662f\u200b\u9ed8\u8ba4\u200b\u901a\u8fc7\u200b sendtargets \u200b\u65b9\u5f0f\u200b\u53d1\u73b0\u200b\u7684\u200b target \u200b\u4e0d\u4f1a\u200b\u81ea\u52a8\u200b\u767b\u5f55\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u6839\u636e\u200b\u9700\u8981\u200b\u81ea\u5df1\u200b\u8bbe\u7f6e\u200b\u6bcf\u53f0\u200b\u673a\u5668\u200b\u901a\u8fc7\u200b\u6307\u5b9a\u200b\u7684\u200b\u5730\u5740\u200b\u548c\u200b\u7aef\u53e3\u200b\u767b\u5f55\u200b\u6307\u5b9a\u200b\u7684\u200b target\u3002
\u200b\u53c2\u8003\u200b\u8fd9\u200b\u7bc7\u6587\u7ae0\u200b\uff0c\u200b\u9488\u5bf9\u200b\u60f3\u8981\u200b\u767b\u5f55\u200b\u7684\u200b target \u200b\u548c\u200b\u5730\u5740\u200b\uff0c\u200b\u4fee\u6539\u200b\u8bbe\u7f6e\u200b\uff1a
iscsiadm -m node -T iqn.2015-11.com.hpe:storage.msa1050.1840436ed4 -p 10.0.0.200 -o update -n node.startup -v automatic\niscsiadm -m node -T iqn.2015-11.com.hpe:storage.msa1050.1840436ed4 -p 10.0.0.200 -o update -n node.conn[0].startup -v automatic\n
\u200b\u6ce8\u610f\u200b\u6b63\u786e\u200b\u586b\u5199\u200b\u9009\u9879\u200b -T
\u200b\u548c\u200b -p
\u200b\u7684\u200b\u53c2\u6570\u200b\u3002
\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u7f16\u8f91\u200b\u914d\u7f6e\u6587\u4ef6\u200b
\u200b\u6216\u8005\u200b\uff0c\u200b\u4e00\u4e2a\u200b\u7b49\u4ef7\u200b\u7684\u200b\u505a\u6cd5\u200b\u662f\u200b\u7f16\u8f91\u200b /etc/iscsi/nodes/iqn.2015-11.com.hpe:storage.msa1050.1840436ed4/10.0.0.200,3260,1/default
\u200b\u6587\u4ef6\u200b\uff0c\u200b\u627e\u5230\u200b\u5982\u4e0b\u200b\u4e24\u884c\u200b\u5e76\u200b\u4fee\u6539\u200b\u4e3a\u200b automatic
\uff1a
node.startup = automatic\nnode.conn[0].startup = automatic\n
\u200b\u6ce8\u610f\u200b\u8def\u5f84\u200b\u4e2d\u200b\u7684\u200b 10.0.0.200,3260,1
\u200b\u76ee\u5f55\u540d\u200b\u5c31\u662f\u200b IP \u200b\u5730\u5740\u200b + \u200b\u7aef\u53e3\u53f7\u200b + \u200b\u63a7\u5236\u5668\u200b\u5e8f\u53f7\u200b\u3002\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u63a7\u5236\u5668\u200b\u4f4d\u4e8e\u200b 10.0.0.201,3260,2
\u3002
\u200b\u6302\u8f7d\u200b NFS \u200b\u5171\u4eab\u200b\u6240\u7528\u200b\u7684\u200b /etc/fstab
\u200b\u6761\u76ee\u200b\uff1a
10.0.0.1:/var/lib/vz /mnt/vz nfs rw,async,hard,intr,noexec 0 0\n
\u200b\u6ce8\u610f\u200b\u5148\u200b\u5728\u200b pv1 \u200b\u4e0a\u200b\u7f16\u8f91\u200b /etc/exports
\u200b\u5e76\u200b\u8fd0\u884c\u200b exportfs -a
\u200b\u5237\u65b0\u200b\u6302\u8f7d\u200b\u6743\u9650\u200b\u3002
\u200b\u53c2\u89c1\u200b PVE \u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u989d\u5916\u200b\u8bbe\u7f6e\u200b\u3002
"},{"location":"workflow/pack-ct-image/","title":"\u6253\u5305\u200b\u5bb9\u5668\u200b\u955c\u50cf","text":"Success
\u200b\u6211\u4eec\u200b\u5df2\u200b\u5c06\u200b\u6b64\u200b\u4efb\u52a1\u200b\u5b8c\u5168\u200b\u81ea\u52a8\u5316\u200b\uff0c\u200b\u811a\u672c\u200b\u548c\u200b\u76f8\u5173\u200b\u8d44\u6e90\u200b\u5728\u200b labstrap \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u3002
\u200b\u7ba1\u7406\u5458\u200b\uff08\u200b\u6709\u200b\u4ed3\u5e93\u200b\u6743\u9650\u200b\u7684\u200b\u4eba\u200b\uff09\u200b\u53ef\u4ee5\u200b\u5728\u200b Image Build CI \u200b\u9875\u9762\u200b\u70b9\u51fb\u200b Run workflow \u200b\u542f\u52a8\u200b\u4e00\u6b21\u200b\u6784\u5efa\u200b\uff0c\u200b\u6784\u5efa\u200b\u5b8c\u6210\u200b\u540e\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u4e0a\u200b\u4f20\u5230\u200b Auto builds \u200b\u8fd9\u4e2a\u200b release\u3002
Tip
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u662f\u200b\u6211\u4eec\u200b\u5728\u200b\u81ea\u52a8\u5316\u200b\u4e4b\u524d\u200b\u7684\u200b\u624b\u52a8\u200b\u6253\u5305\u200b\u6d41\u7a0b\u200b\uff0c\u200b\u7559\u200b\u4f5c\u200b\u53c2\u8003\u200b\u3002
Proxmox VE \u200b\u7684\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u548c\u200b LXC \u200b\u7565\u6709\u4e0d\u540c\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4ece\u200b LXC \u200b\u4e0b\u8f7d\u200b\u7684\u200b\u955c\u50cf\u200b\u4e0d\u5b9c\u200b\u76f4\u63a5\u200b\u7528\u4e8e\u200b Proxmox VE\u3002\u200b\u57fa\u51c6\u200b\u955c\u50cf\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b\u5df2\u6709\u200b\u7684\u200b vlab \u200b\u955c\u50cf\u200b\uff08\u200b\u63a8\u8350\u200b\uff09\uff0c\u200b\u6216\u8005\u200b\u4f7f\u7528\u200b pveam
\u200b\u547d\u4ee4\u200b\u4ece\u200b Proxmox \u200b\u5b98\u65b9\u200b\u4e0b\u8f7d\u200b\u3002
\u200b\u540c\u6837\u200b\u7531\u4e8e\u200b\u955c\u50cf\u200b\u5185\u5bb9\u200b\u7684\u200b\u4e0d\u200b\u4e00\u81f4\u200b\u4ee5\u53ca\u200b\u4e0b\u9762\u200b\u63d0\u5230\u200b\u7684\u200b\u4e00\u4e9b\u200b\u4e0e\u200b\u7f51\u7edc\u200b\u76f8\u5173\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u5c1d\u8bd5\u200b\u5728\u200b\u81ea\u5df1\u200b\u7684\u200b LXC / LXD \u200b\u73af\u5883\u200b\u4e2d\u200b\u8fdb\u884c\u200b\u955c\u50cf\u200b\u7684\u200b\u914d\u7f6e\u200b\u5de5\u4f5c\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u9047\u5230\u200b\u5404\u79cd\u5404\u6837\u200b\u7684\u200b\u56f0\u96be\u200b\uff0c\u200b\u4f8b\u5982\u200b\u6743\u9650\u200b\u95ee\u9898\u200b\u3001\u200b\u7f51\u7edc\u200b\u95ee\u9898\u200b\u7b49\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u76f4\u63a5\u200b\u5728\u200b\u73b0\u6709\u200b\u7684\u200b Proxmox \u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u64cd\u4f5c\u200b\u5c31\u884c\u4e86\u200b\u3002
\u200b\u6253\u5305\u200b\u7684\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u5e94\u5f53\u200b\u5728\u200b\u529f\u80fd\u200b\u5b8c\u6574\u200b\u3001\u200b\u8ffd\u6c42\u200b\u5f00\u7bb1\u200b\u5373\u7528\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u5c3d\u53ef\u80fd\u200b\u4fdd\u6301\u200b\u7cbe\u7b80\u200b\uff0c\u200b\u4f8b\u5982\u200b build-essential \u200b\u53ef\u4ee5\u200b\u5b89\u88c5\u200b\uff0c\u200b\u4f46\u662f\u200b Clang / LLVM \u200b\u6700\u597d\u200b\u4e0d\u8981\u200b\uff08
"},{"location":"workflow/pack-ct-image/#prepare-ct","title":"\u4e00\u200b\u3001\u200b\u51c6\u5907\u200b\u65b0\u200b\u7684\u200b\u5bb9\u5668\u200b\u73af\u5883","text":"\u200b\u767b\u5f55\u200b\u96c6\u7fa4\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u5bb9\u5668\u200b\uff0c\u200b\u6311\u200b\u4e00\u4e2a\u200b\u8d1f\u8f7d\u200b\u8f83\u200b\u4f4e\u200b\u7684\u200b\u8282\u70b9\u200b\uff08\u200b\u4f8b\u5982\u200b pv8\uff09\uff0c\u200b\u628a\u200b Unprivileged container \u200b\u53d6\u6d88\u200b\u52fe\u9009\u200b\uff08\u200b\u9ed8\u8ba4\u200b\u662f\u200b\u9009\u4e2d\u200b\u7684\u200b\uff0c\u200b\u4e0d\u200b\u53d6\u6d88\u200b\u7684\u8bdd\u200b\u540e\u9762\u200b\u6253\u5305\u200b\u65f6\u8981\u200b\u989d\u5916\u200b\u5904\u7406\u200b\u4e00\u4e0b\u200b\uff09\uff0c\u200b\u6a21\u677f\u200b\u9009\u200b\u4e00\u4e2a\u200b\u57fa\u7840\u200b\u955c\u50cf\u200b\uff0c\u200b\u786c\u76d8\u200b\u5927\u5c0f\u200b\u6839\u636e\u200b\u8981\u88c5\u200b\u7684\u200b\u4e1c\u897f\u200b\u4f30\u8ba1\u200b\uff0c\u200b\u5178\u578b\u200b\u7684\u200b Ubuntu 20.04 \u200b\u955c\u50cf\u200b\u53ea\u8981\u200b 4 GB \u200b\u5c31\u591f\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u5b58\u50a8\u200b\u4e3a\u200b local-lvm \u200b\u4ee5\u200b\u83b7\u5f97\u200b\u66f4\u597d\u200b\u7684\u200b\u786c\u76d8\u200b\u6027\u80fd\u200b\uff08\u200b\u4e3b\u673a\u200b\u7684\u200b SSD\uff09\u3002CPU \u200b\u548c\u200b\u5185\u5b58\u200b\u53ef\u4ee5\u200b\u968f\u610f\u200b\uff0c\u200b\u53cd\u6b63\u200b\u8fd9\u4e2a\u200b\u5bb9\u5668\u200b\u662f\u200b\u4e34\u65f6\u200b\u4f7f\u7528\u200b\u7684\u200b\u3002\u200b\u5bb9\u5668\u200b\u7f51\u7edc\u8fde\u63a5\u200b\u5230\u200b vmbr1\uff0c\u200b\u968f\u4fbf\u200b\u53d6\u200b\u4e00\u4e2a\u200b\u6ca1\u7528\u8fc7\u200b\u7684\u200b IPv4 \u200b\u5730\u5740\u200b\uff08\u200b\u5efa\u8bae\u200b 172.31.0.240 - 172.31.0.255 \u200b\u4e4b\u95f4\u200b\uff09\uff0c\u200b\u63a9\u7801\u200b\u662f\u200b /16\uff0c\u200b\u7f51\u5173\u200b\u4e3a\u200b 172.31.0.1\uff0c\u200b\u7136\u540e\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4e0b\u200b\u4e00\u6b65\u200b\u521b\u5efa\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-ct-image/#base-works","title":"\u4e8c\u200b\u3001\u200b\u57fa\u7840\u200b\u5de5\u4f5c","text":"\u200b\u672c\u200b\u8282\u200b\u5de5\u4f5c\u200b\u53ea\u200b\u9700\u8981\u200b\u5bf9\u200b\u4ece\u200b Proxmox \u200b\u76f4\u63a5\u200b\u4e0b\u8f7d\u200b\u7684\u200b\u201c\u200b\u6700\u200b\u539f\u59cb\u200b\u201d\u200b\u7684\u200b\u955c\u50cf\u200b\u5904\u7406\u200b\u3002
mirrors.ustc.edu.cn
\u200b\u52a0\u5165\u200b SSH CA \u200b\u516c\u94a5\u200b\uff1a\u200b\u8fd9\u91cc\u200b\u8bf7\u200b\u52a0\u5165\u200b Vlab User CA\uff08SSH \u200b\u8bc1\u4e66\u200b\u8ba4\u8bc1\u200b\u8fd9\u200b\u4e00\u9875\u200b\u4e0b\u9762\u200b\u90a3\u4e2a\u200b\uff09
\u200b\u5bf9\u4e8e\u200b Ubuntu 20.04 \u200b\u7cfb\u7edf\u200b\uff0c\u200b\u5176\u200b\u9ed8\u8ba4\u200b\u7684\u200b sshd_config
\u200b\u91cc\u200b\u6709\u200b\u4e00\u884c\u200b Include\uff0c\u200b\u6240\u4ee5\u200b\u53ef\u4ee5\u200b\u5f88\u200b\u65b9\u4fbf\u200b\u5730\u200b\u5728\u200b /etc/ssh/sshd_config.d
\u200b\u4e0b\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u6587\u4ef6\u200b\u7528\u6765\u200b\u5199\u200b TrustedUserCAKeys
\u3002\u200b\u5bf9\u4e8e\u200b\u5176\u4ed6\u200b\u7cfb\u7edf\u200b\uff0c\u200b\u8fd8\u662f\u200b\u5c06\u200b\u914d\u7f6e\u200b\u76f4\u63a5\u200b\u8ffd\u52a0\u200b\u81f3\u200b\u7cfb\u7edf\u200b\u7684\u200b sshd_config
\u3002
\u200b\u8bbe\u7f6e\u200b\u7cfb\u7edf\u200b\u8bed\u8a00\u200b\uff1a\u200b\u4f7f\u7528\u200b dpkg-reconfigure locales
\u200b\u751f\u6210\u200b en_US.UTF-8
\u200b\u548c\u200b zh_CN.UTF-8
\u200b\u7684\u200b\u8bed\u8a00\u200b\u5e76\u200b\u5c06\u200b\u4e2d\u6587\u200b\u8bbe\u200b\u4e3a\u200b\u9ed8\u8ba4\u200b\u3002\u200b\u4e0d\u8981\u200b\u5b89\u88c5\u200b locales-all
\u200b\u5305\u200b\uff0c\u200b\u5b83\u200b\u592a\u5927\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u7528\u4e0d\u4e0a\u200b
\u200b\u4e0b\u9762\u200b\u8fd9\u4e9b\u200b\u5de5\u4f5c\u200b\u53ef\u4ee5\u200b\u51ed\u200b\u81ea\u5df1\u200b\u559c\u597d\u200b\u9009\u505a\u200b\uff1a
build-essential
, Git, Vim \u200b\u7b49\u200b\u5e38\u7528\u200b\u8f6f\u4ef6\u5de5\u5177\u200b\u3002\u200b\u8bf7\u200b\u5c3d\u91cf\u200b\u4fdd\u6301\u200b\u7cbe\u7b80\u200b/etc/skel
\uff1a\u200b\u4f8b\u5982\u200b\uff0c\u200b\u5728\u200b .bashrc
\u200b\u91cc\u200b\u9ed8\u8ba4\u200b\u542f\u7528\u200b\u6709\u200b\u989c\u8272\u200b\u7684\u200b PS1\uff08\u200b\u9650\u200b Ubuntu / Debian\uff09\uff0c\u200b\u6216\u8005\u200b\u63d0\u4f9b\u200b\u9ed8\u8ba4\u200b\u7684\u200b rc \u200b\u7c7b\u200b\u914d\u7f6e\u6587\u4ef6\u200b/etc/motd
\uff1a\u200b\u4e5f\u200b\u5c31\u200b SSH \u200b\u767b\u5f55\u200b\u7684\u200b\u65f6\u5019\u200b\u663e\u793a\u200b\u4e00\u4e0b\u200b\uff0c\u200b\u6539\u4e0d\u6539\u200b\u6ca1\u200b\u5565\u200b\u533a\u522b\u200b\u200b\u5982\u679c\u200b\u6253\u5305\u200b\u7684\u200b\u76ee\u6807\u200b\u4e0d\u662f\u200b\u5e26\u200b\u684c\u9762\u73af\u5883\u200b\u7684\u200b\u955c\u50cf\u200b\u7684\u8bdd\u200b\uff0c\u200b\u7b2c\u4e09\u6b65\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8df3\u8fc7\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-ct-image/#install-desktop-environment","title":"\u4e09\u200b\u3001\u200b\u5b89\u88c5\u200b\u4e0e\u200b\u6d4b\u8bd5\u200b\u684c\u9762\u73af\u5883","text":"\u200b\u684c\u9762\u73af\u5883\u200b\u7684\u200b\u914d\u7f6e\u200b\u8f83\u4e3a\u200b\u590d\u6742\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u8981\u200b\u8fd0\u884c\u200b VNC server \u200b\u5e76\u200b\u5c06\u200b\u5176\u200b\u4f5c\u4e3a\u200b\u684c\u9762\u200b\u7ba1\u7406\u5668\u200b\u7684\u200b\u4e3b\u200b\u663e\u793a\u200b\u8f93\u51fa\u200b\u3002\u200b\u7ecf\u8fc7\u200b pdlan \u200b\u7684\u200b\u8c03\u8bd5\u200b\uff0c\u200b\u91c7\u7528\u200b LightDM + TigerVNC server \u200b\u7684\u200b\u7ec4\u5408\u200b\uff0c\u200b\u4f7f\u7528\u200b\u4e00\u4e2a\u200b\u81ea\u5df1\u200b\u7f16\u5199\u200b\u7684\u200b\u542f\u52a8\u200b\u811a\u672c\u200b\u53ef\u4ee5\u200b\u6b63\u5e38\u200b\u8fd0\u884c\u200b\u3002\u200b\u8fd9\u90e8\u5206\u200b\u914d\u7f6e\u200b\u5de5\u4f5c\u200b\u6211\u4eec\u200b\u5df2\u7ecf\u200b\u6253\u5305\u200b\u6210\u200b\u4e86\u200b\u4e00\u4e2a\u200b Debian package\uff0c\u200b\u653e\u5728\u200b https://vlab.ustc.edu.cn/repo/vlab-vnc.deb\uff0c\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5b89\u88c5\u200b\uff0c\u200b\u6ce8\u610f\u200b\u4f7f\u7528\u200b --no-install-recommends
\u3002
\u200b\u7531\u4e8e\u200b\u540e\u53f0\u200b VNC server \u200b\u91c7\u7528\u200b\u4e86\u200b\u65e0\u200b\u5bc6\u7801\u200b\u7684\u200b\u8ba4\u8bc1\u200b\u65b9\u5f0f\u200b\uff0c\u200b\u56e0\u6b64\u200b\u989d\u5916\u200b\u4f7f\u7528\u200b iptables \u200b\u9632\u706b\u5899\u200b\u6765\u200b\u9650\u5236\u200b\u53ea\u80fd\u200b\u4ece\u200b web \u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u5730\u5740\u200b\u8fde\u63a5\u200b VNC server\uff0c\u200b\u8be5\u200b\u90e8\u5206\u200b\u5904\u7406\u200b\u653e\u5728\u200b\u4e86\u200b deb \u200b\u7684\u200b postinst \u200b\u64cd\u4f5c\u200b\u4e2d\u200b\uff0c\u200b\u4f1a\u200b\u52a0\u4e0a\u200b\u4e00\u6761\u200b IPv4 \u200b\u89c4\u5219\u200b\u9650\u5236\u200b\u6765\u6e90\u200b\u548c\u200b\u4e00\u6761\u200b IPv6 \u200b\u89c4\u5219\u200b\u62d2\u7edd\u200b\u6240\u6709\u200b\u8fde\u63a5\u200b\u3002
\u200b\u684c\u9762\u73af\u5883\u200b\u6211\u4eec\u200b\u4e00\u822c\u200b\u9009\u7528\u200b\u8f7b\u91cf\u200b\u7684\u200b Xfce\uff08\u200b\u5b89\u88c5\u200b xfce4
\uff0c\u200b\u4e5f\u200b\u8981\u200b\u4f7f\u7528\u200b --no-install-recommends
\uff09\uff0c\u200b\u88c5\u200b\u597d\u200b\u4e4b\u540e\u200b\u542f\u52a8\u200b lightdm.service
\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u6d4b\u8bd5\u200b\u4e86\u200b\u3002
\u200b\u4e3a\u4e86\u200b\u505a\u5230\u200b\u201c\u200b\u5f00\u7bb1\u200b\u5373\u7528\u200b\u201d\uff0c\u200b\u4e00\u822c\u200b\u8fd8\u4f1a\u200b\u5b89\u88c5\u200b\u4e00\u4e9b\u200b\u5e38\u7528\u8f6f\u4ef6\u200b\uff0c\u200b\u5982\u200b\u6d4f\u89c8\u5668\u200b\u3001\u200b\u6587\u672c\u7f16\u8f91\u200b\u5668\u200b\u7b49\u200b\uff0c\u200b\u540c\u65f6\u200b\u5b89\u88c5\u200b\u5408\u9002\u200b\u7684\u200b\u5b57\u4f53\u200b\u548c\u200b\u8f93\u5165\u6cd5\u200b\u786e\u4fdd\u200b\u4e2d\u6587\u200b\u80fd\u591f\u200b\u6b63\u5e38\u200b\u4f7f\u7528\u200b\u3002\u200b\u5177\u4f53\u6765\u8bf4\u200b\uff0c\u200b\u6211\u4eec\u200b\u4f1a\u200b\u5b89\u88c5\u200b\uff1a
xfce-goodies
\uff0c\u200b\u8fd9\u4e2a\u200b\u5305\u4f1a\u200b\u5e26\u4e0a\u200b\u8bb0\u4e8b\u672c\u200b\u8ba1\u7b97\u5668\u200b\u7b49\u200b\u5c0f\u200b\u5de5\u5177\u200bibus-pinyin
\u200b\u6216\u200b fcitx-libpinyin
\u200b\u5e76\u200b\u914d\u7f6e\u200b\u597d\u200b\uff0c\u200b\u4f5c\u4e3a\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u4e2d\u6587\u200b\u62fc\u97f3\u8f93\u5165\u200b\u6cd5\u200bfonts-droid-fallback
\u200b\u6216\u200b fonts-wqy-microhei
\u200b\u4f5c\u4e3a\u200b\u4e2d\u6587\u5b57\u4f53\u200b\u3002\u200b\u4e0d\u8981\u200b\u5b89\u88c5\u200b fonts-noto-sans
\u200b\u7b49\u200b\u5b57\u4f53\u200b\uff0c\u200b\u5b83\u4eec\u200b\u592a\u5927\u200b\u4e86\u200b\u200b\u91cd\u8981\u200b\uff1alibncurses5
\uff0cVivado \u200b\u9700\u8981\u200b\u5b83\u200b
\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u529e\u6cd5\u200b\u662f\u200b\uff0c\u200b\u8fdb\u5165\u200b /lib/x86_64-linux-gnu/
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u5c06\u200b libncurses.so.5
\u200b\u8f6f\u200b\u94fe\u63a5\u200b\u5230\u200b libncurses.so.6
\uff0c\u200b\u540c\u6837\u200b\u4e5f\u200b\u94fe\u63a5\u200b\u4e00\u4e0b\u200b libtinfo.so.5
\u200b\u5373\u53ef\u200b\u3002
cd /lib/x86_64-linux-gnu/\nln -s libncurses.so.6 libncurses.so.5\nln -s libtinfo.so.6 libtinfo.so.5\n
\u200b\u7531\u4e8e\u200b\u684c\u9762\u73af\u5883\u200b\u7ecf\u5e38\u200b\u9644\u5e26\u200b\u4e00\u5806\u200b\u7528\u4e0d\u4e0a\u200b\u7684\u200b\u4e1c\u897f\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6253\u5305\u200b\u524d\u591a\u82b1\u70b9\u200b\u65f6\u95f4\u200b\u6e05\u7406\u200b\u3002
"},{"location":"workflow/pack-ct-image/#\u914d\u7f6e-vlab-software","title":"\u914d\u7f6e\u200b Vlab Software","text":"\u200b\u4e3b\u200b\u6587\u7ae0\u200b\uff1aVlab Software
\u200b\u53c2\u8003\u200b\u4e3b\u200b\u6587\u7ae0\u200b\u914d\u7f6e\u200b menu\u3002
\u200b\u521b\u5efa\u200b /etc/profile.d/vlab.sh
\uff0c\u200b\u586b\u5165\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff1a
if [ -e /opt/vlab/path.sh ]; then\n . /opt/vlab/path.sh\nfi\n
\u200b\u5982\u679c\u200b\u6ca1\u6709\u200b /etc/profile.d
\u200b\u76ee\u5f55\u200b\uff0c\u200b\u5c31\u200b\u5c06\u200b\u8fd9\u200b\u51e0\u884c\u200b\u4ee3\u7801\u200b\u52a0\u200b\u5728\u200b /etc/profile
\u200b\u7684\u200b\u672b\u5c3e\u200b\u3002
\u200b\u975e\u200b Ubuntu \u200b\u865a\u62df\u673a\u200b\u7684\u200b lightdm \u200b\u53ef\u80fd\u200b\u4e0d\u4f1a\u200b\u52a0\u8f7d\u200b profile\uff0c\u200b\u6240\u4ee5\u200b\u9700\u8981\u200b\uff1a
ln -s /etc/profile.d/vlab.sh /etc/X11/Xsession.d/99vlab\n
\u200b\u8ba9\u200b lightdm \u200b\u542f\u52a8\u200b\u65f6\u200b\u66f4\u65b0\u200b vlab \u200b\u4fe1\u606f\u200b\u3002
\u200b\u6700\u540e\u200b\uff0c\u200b\u8bb0\u5f97\u200b\u66ff\u6362\u200b\u4e0a\u200b Vlab \u200b\u7684\u200b\u4e13\u5c5e\u200b\u684c\u9762\u200b\uff1ahttps://vlab.ustc.edu.cn/downloads/background.jpg
"},{"location":"workflow/pack-ct-image/#test-desktop-environment","title":"\u6d4b\u8bd5\u200b\u684c\u9762\u73af\u5883","text":"\u200b\u53ea\u200b\u63a5\u5165\u200b\u5185\u7f51\u200b\u7684\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u8f6c\u53d1\u200b\u4ec0\u4e48\u200b\u7684\u200b\u6bd4\u8f83\u200b\u9ebb\u70e6\u200b\uff08\u200b\u5982\u679c\u200b\u4f60\u4f1a\u7528\u200b SSH \u200b\u8f6c\u53d1\u200b ssh -L
\u200b\u7684\u8bdd\u200b\u5f53\u7136\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\uff09\uff0c\u200b\u8fd9\u91cc\u200b\u63d0\u4f9b\u200b\u4e00\u4e2a\u200b\u4f7f\u7528\u200b VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u7684\u200b\u529e\u6cd5\u200b\uff0c\u200b\u5c31\u662f\u200b\u81ea\u5df1\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u8bb0\u5f55\u200b\u4e0b\u200b IP \u200b\u4e4b\u540e\u200b\u5173\u673a\u200b\uff0c\u200b\u518d\u200b\u628a\u200b IP \u200b\u5207\u6362\u200b\u5230\u200b\u6b63\u5728\u200b\u5b89\u88c5\u200b\u914d\u7f6e\u200b\u7684\u200b\u8fd9\u4e2a\u200b\u5bb9\u5668\u200b\u4e0a\u200b\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b VNC \u200b\u7edf\u4e00\u200b\u767b\u5f55\u200b\u4e86\u200b\u3002
LightDM \u200b\u7684\u200b\u5173\u673a\u200b\u91cd\u542f\u200b\u529f\u80fd\u200b\u65e0\u6548\u200b\u662f\u200b\u6b63\u5e38\u200b\u73b0\u8c61\u200b\uff0c\u200b\u653e\u5fc3\u200b\u5ffd\u7565\u200b\uff0c\u200b\u53ea\u8981\u200b Logout \u200b\u80fd\u7528\u200b\u5c31\u200b\u57fa\u672c\u200b OK \u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-ct-image/#pre-packaging","title":"\u56db\u200b\u3001\u200b\u6253\u5305\u200b\u524d\u200b\u7684\u200b\u5de5\u4f5c","text":"\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u6e05\u7406\u200b\u5de5\u4f5c\u200b\uff0c\u200b\u907f\u514d\u200b\u628a\u200b\u4e0d\u5fc5\u8981\u200b\u7684\u200b\u5185\u5bb9\u200b\u6253\u5305\u200b\u8fdb\u200b\u955c\u50cf\u200b\u3002\u200b\u4e0b\u9762\u200b\u662f\u200b\u4e00\u4e9b\u200b\u9700\u8981\u200b\u6e05\u7406\u200b\u7684\u200b\u4e1c\u897f\u200b\uff1a\uff08\u200b\u5047\u8bbe\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u7684\u200b\u6302\u8f7d\u200b\u70b9\u4e3a\u200b/\u200b\u89e3\u538b\u200b\u5230\u200b\u4e86\u200b $MOUNT
\uff09
$MOUNT/etc/ssh
\uff1a\u200b\u5c06\u200b\u751f\u6210\u200b\u7684\u200b Host Key \u200b\u5168\u90e8\u200b\u5220\u6389\u200b\uff08\u200b\u5982\u679c\u200b\u6709\u200b\uff09\uff0c\u200b\u8fd9\u6837\u200b\u521b\u5efa\u200b\u65b0\u200b\u5bb9\u5668\u200b\u7684\u200b\u65f6\u5019\u200b\u53ef\u4ee5\u200b\u751f\u6210\u200b\u65b0\u200b\u7684\u200b\u4e3b\u673a\u200b\u5bc6\u94a5\u200b\u5bf9\u200b$MOUNT/run
, $MOUNT/tmp
, $MOUNT/var/{backups,cache,crash,log,tmp}
\uff1a\u200b\u5168\u90e8\u200b\u6e05\u7a7a\u200b\uff0c\u200b\u6ce8\u610f\u200b $MOUNT/tmp
, $MOUNT/var/crash
\u200b\u548c\u200b $MOUNT/var/tmp
\u200b\u8fd9\u200b\u4e09\u4e2a\u200b\u76ee\u5f55\u200b\u7684\u200b\u6743\u9650\u200b\u662f\u200b 1777 (rwxrwxrwt)\uff0c\u200b\u5176\u4ed6\u200b\u76ee\u5f55\u200b\u6743\u9650\u200b\u90fd\u200b\u662f\u200b 0755 (rwxr-xr-x)\u3002$MOUNT/root
\u200b\u548c\u200b $MOUNT/home/<user>
\uff1a\u200b\u628a\u200b .bash_history
\u200b\u4e4b\u7c7b\u200b\u7684\u200b\u6587\u4ef6\u200b\u90fd\u200b\u5220\u6389\u200b\uff0c\u200b\u53ea\u200b\u7559\u4e0b\u200b\u6700\u200b\u57fa\u672c\u200b\u7684\u200b\u5185\u5bb9\u200b\uff08\u200b\u5982\u679c\u200b\u914d\u7f6e\u200b\u4e86\u200b\u684c\u9762\u73af\u5883\u200b\uff0c\u200b\u8c28\u614e\u200b\u6e05\u7406\u200b .config
\uff09\u3002$MOUNT/var/spool/postfix/dev
\u200b\u548c\u200b $MOUNT/dev
\uff1a\u200b\u5426\u5219\u200b\u65b0\u5efa\u200b\u5bb9\u5668\u200b\u65f6\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u51fa\u9519\u200b\u3002\u200b\u6e05\u7406\u200b\u7684\u200b\u65f6\u5019\u200b\u5207\u6362\u200b\u76ee\u5f55\u200b\u65f6\u200b\u8bf7\u52ff\u200b\u4f7f\u7528\u200b\u7edd\u5bf9\u8def\u5f84\u200b\uff0c\u200b\u5e76\u4e14\u200b\u52a1\u5fc5\u200b\u770b\u6e05\u695a\u200b\uff0c\u200b\u4e0d\u8981\u200b\u628a\u200b host \u200b\u7684\u200b\u6587\u4ef6\u200b\u5220\u200b\u4e86\u200b\uff01
\u200b\u5bf9\u4e8e\u200b Ubuntu/Debian \u200b\u955c\u50cf\u200b\uff0c\u200b\u8fd8\u200b\uff08\u200b\u6700\u597d\u200b\uff09\u200b\u8981\u200b\u6e05\u9664\u200b apt \u200b\u7684\u200b\u7f13\u5b58\u200b\u3002\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b chroot \u200b\u8fdb\u5165\u200b\u955c\u50cf\u200b\u8fd0\u884c\u200b apt-get clean
\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u624b\u52a8\u200b\u6e05\u7a7a\u200b $MOUNT/var/lib/apt/lists
\u200b\u76ee\u5f55\u200b\u3002
\u200b\u5f53\u7136\u200b\u6e05\u7406\u200b\u4e4b\u524d\u200b\u8981\u200b\u628a\u200b\u5bb9\u5668\u200b\u5173\u673a\u200b\u4e86\u200b\uff0c\u200b\u4e0d\u7136\u200b tmp \u200b\u548c\u200b cache \u200b\u4e4b\u7c7b\u200b\u7684\u200b\u4e1c\u897f\u200b\u8fd8\u4f1a\u200b\u6e90\u6e90\u4e0d\u65ad\u200b\u5730\u200b\u5192\u51fa\u6765\u200b\u3002
"},{"location":"workflow/pack-ct-image/#packaging","title":"\u4e94\u200b\u3001\u200b\u6253\u5305","text":"\u200b\u6839\u636e\u200b\u7b2c\u4e00\u6b65\u200b\u521b\u5efa\u200b\u5bb9\u5668\u200b\u65f6\u200b\u9009\u62e9\u200b\u7684\u200b\u5b58\u50a8\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u6d89\u53ca\u200b\u5230\u200b\u7684\u200b VG \u200b\u53ef\u80fd\u200b\u662f\u200b user-data
\u200b\u6216\u200b pve
\u3002
\u200b\u901a\u8fc7\u200b\u547d\u4ee4\u884c\u200b\u767b\u5f55\u200b\u4e3b\u673a\u200b\uff0c\u200b\u9996\u5148\u200b\u6fc0\u6d3b\u200b\u5bb9\u5668\u200b\u7684\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\uff1a
lvchange -a y {vg}/vm-{id}-disk-0\nmkdir tmp\nmount /dev/{vg}/vm-{id}-disk-0 tmp\n
\u200b\u7136\u540e\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8fdb\u5165\u200b tmp \u200b\u8fdb\u884c\u200b\u6e05\u7406\u200b\u5de5\u4f5c\u200b\u4e86\u200b\u3002
\u200b\u6700\u540e\u200b\u6253\u5305\u200b\u8981\u200b\u5728\u200b tmp \u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff08\u200b\u5373\u200b\u5bb9\u5668\u200b\u7684\u200b\u6839\u76ee\u5f55\u200b\uff09\u200b\u8fdb\u884c\u200b\uff0c\u200b\u56e0\u4e3a\u200b\uff08\u200b\u663e\u7136\u200b\uff09tar \u200b\u538b\u7f29\u5305\u200b\u4e2d\u200b\u7684\u200b\u8def\u5f84\u200b\u662f\u200b\u6709\u200b\u5f71\u54cd\u200b\u7684\u200b\u3002
tar zcvf /mnt/vz/template/cache/vlab99-example.tar.gz .\n
"},{"location":"workflow/pack-ct-image/#process-uid-for-unprivileged-containers","title":"Unprivileged container \u200b\u6253\u5305\u200b\u540e\u200b\u7684\u200b UID/GID \u200b\u5904\u7406","text":"\u200b\u5982\u679c\u200b\u5bb9\u5668\u200b\u521b\u5efa\u200b\u65f6\u200b\u8bbe\u7f6e\u200b\u4e3a\u4e86\u200b unprivileged\uff0c\u200b\u5219\u200b\u5176\u200b\u5b58\u5728\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u4e2d\u200b\u7684\u200b UID/GID \u200b\u7b49\u200b\u90fd\u200b\u88ab\u200b LXC \u200b\u6620\u5c04\u200b\u5230\u200b\u4e86\u200b +100000\uff0810 \u200b\u4e07\u200b\uff09\u200b\u7684\u200b\u6570\u503c\u200b\uff0c\u200b\u6253\u5305\u200b\u540e\u200b\u9700\u8981\u200b\u5c06\u200b\u8fd9\u200b\u589e\u52a0\u200b\u7684\u200b\u6570\u503c\u200b\u4fee\u6539\u200b\u56de\u6765\u200b\u3002\u200b\u53c2\u8003\u200b\u8fd9\u4e2a\u200b Stack Overflow \u200b\u4e3b\u9898\u200b\uff0c\u200b\u4f7f\u7528\u200b\u8fd9\u4e2a\u200b Go \u200b\u7a0b\u5e8f\u200b\u53ef\u4ee5\u200b\u6539\u5199\u200b tar \u200b\u4e2d\u200b\u7684\u200b\u6587\u4ef6\u200b\u4fe1\u606f\u200b\uff1a
Go \u200b\u4ee3\u7801\u200bpackage main\n\nimport (\n \"archive/tar\"\n \"io\"\n \"log\"\n \"os\"\n)\n\nfunc main() {\n tr := tar.NewReader(os.Stdin)\n tw := tar.NewWriter(os.Stdout)\n\n for {\n hdr, err := tr.Next()\n if err == io.EOF {\n break\n } else if err != nil {\n log.Fatal(err)\n }\n\n hdr.Uid -= 100000\n hdr.Gid -= 100000\n if err := tw.WriteHeader(hdr); err != nil {\n log.Fatal(err)\n }\n\n if hdr.Typeflag == tar.TypeReg {\n if _, err := io.Copy(tw, tr); err != nil {\n log.Fatal(err)\n }\n }\n }\n\n if err := tw.Close(); err != nil {\n log.Fatal(err)\n }\n}\n
\u200b\u4f7f\u7528\u200b Go \u200b\u7a0b\u5e8f\u200b\u6539\u5199\u200b tar \u200b\u5305\u200b
\u200b\u4e0a\u9762\u200b\u7684\u200b Go \u200b\u793a\u4f8b\u200b\u7a0b\u5e8f\u200b\u53ea\u80fd\u200b\u5904\u7406\u200b\u672a\u200b\u538b\u7f29\u200b\u7684\u200b tar \u200b\u5305\u200b\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u5728\u200b\u6253\u5305\u200b\u65f6\u200b\u52a0\u5165\u200b\u4e86\u200b z
\u200b\u6216\u200b\u5176\u4ed6\u200b\u538b\u7f29\u200b\u53c2\u6570\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u200b\u89e3\u538b\u200b\u518d\u200b\u8f93\u5165\u200b\u7a0b\u5e8f\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a
gunzip -c original.tar.gz | go run uidfix.go | gzip -c9 > processed.tar.gz\n
\u200b\u6253\u5305\u200b\u5b8c\u6210\u200b\u540e\u8981\u200b\u628a\u200b Django \u200b\u524d\u7aef\u200b reload \u200b\u4e00\u4e0b\u200b\u624d\u80fd\u200b\u5728\u200b\u201c\u200b\u65b0\u5efa\u200b\u865a\u62df\u673a\u200b\u201d\u200b\u7684\u200b\u9875\u9762\u200b\u770b\u5230\u200b\u65b0\u200b\u955c\u50cf\u200b\u3002
"},{"location":"workflow/pack-vm-image/","title":"\u6253\u5305\u200b\u865a\u62df\u673a\u200b\u955c\u50cf","text":"Success
\u200b\u6211\u4eec\u200b\u5df2\u200b\u5c06\u200b\u6b64\u200b\u4efb\u52a1\u200b\u90e8\u5206\u200b\u81ea\u52a8\u5316\u200b\uff0c\u200b\u811a\u672c\u200b\u548c\u200b\u76f8\u5173\u200b\u8d44\u6e90\u200b\u5728\u200b labstrap \u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u3002\u200b\u76f8\u5173\u200b\u6587\u4ef6\u200b\u4e3a\u200b kvmstrap
\uff08shell \u200b\u811a\u672c\u200b\uff09\u200b\u548c\u200b\u5176\u200b\u5f15\u7528\u200b\u7684\u200b rootfs \u200b\u76f8\u5173\u200b\u5185\u5bb9\u200b\uff0c\u200b\u7279\u522b\u200b\u662f\u200b /etc/cloud/cloud.cfg
\u200b\u6587\u4ef6\u200b\u3002
\u200b\u7531\u4e8e\u200b Proxmox VE \u200b\u4e0a\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u4f7f\u7528\u200b cloud-init \u200b\u8fdb\u884c\u200b\u5b9a\u5236\u200b\uff0c\u200b\u6211\u4eec\u200b\u63a8\u8350\u200b\u4ee5\u200b\u53d1\u884c\u7248\u200b\u5b98\u65b9\u200b\u7684\u200b cloud image \u200b\u4e3a\u200b\u57fa\u7840\u200b\u8fdb\u884c\u200b\u989d\u5916\u200b\u914d\u7f6e\u200b\u3002
"},{"location":"workflow/pack-vm-image/#\u4f7f\u7528-kvmstrap-\u6784\u5efa\u955c\u50cf","title":"\u4f7f\u7528\u200b kvmstrap \u200b\u6784\u5efa\u200b\u955c\u50cf","text":"\u200b\u9996\u5148\u200b\u4ece\u200b ubuntu-cloud-images \u200b\u83b7\u53d6\u200b\u4e00\u4e2a\u200b cloud image \u200b\u955c\u50cf\u200b\uff0c\u200b\u4ee5\u200b Ubuntu 22.04 LTS \u200b\u4e3a\u4f8b\u200b\uff0c\u200b\u4ece\u200b\u79d1\u5927\u200b\u955c\u50cf\u200b\u7ad9\u200b\u4e0b\u8f7d\u200b\u6587\u4ef6\u200b\uff1a
\u200b\u867d\u7136\u200b\u8be5\u200b\u6587\u4ef6\u200b\u4ee5\u200b .img \u200b\u7ed3\u5c3e\u200b\uff0c\u200b\u4f46\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u4e00\u4e2a\u200b qcow2 \u200b\u683c\u5f0f\u200b\u7684\u200b\u955c\u50cf\u200b\u3002\u200b\u5728\u200b\u5f53\u524d\u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u51c6\u5907\u200b\u597d\u200b qemu-img
\uff08\u200b\u8f6f\u4ef6\u5305\u200b qemu-utils\uff09\u200b\u548c\u200b guestmount
\uff08\u200b\u8f6f\u4ef6\u5305\u200b libguestfs-tools\uff09\u200b\u4e4b\u540e\u200b\u5373\u53ef\u200b\u4f7f\u7528\u200b kvmstrap \u200b\u811a\u672c\u200b\u4fee\u6539\u200b\u955c\u50cf\u200b\uff1a
./kvmstrap jammy-server-cloudimg-amd64.img\n
\u200b\u4fee\u6539\u200b\u597d\u200b\u7684\u200b\u955c\u50cf\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4e0a\u200b\u4f20\u5230\u200b Proxmox VE \u200b\u670d\u52a1\u5668\u200b\u4e0a\u200b\uff0c\u200b\u7136\u540e\u200b\u5728\u200b web \u200b\u754c\u9762\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u5e76\u7528\u200b\u4e0a\u200b\u4f20\u4e0a\u53bb\u200b\u7684\u200b\u955c\u50cf\u200b\u66ff\u6362\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u78c1\u76d8\u200b\u5373\u53ef\u200b\u3002
Tip
\u200b\u4ee5\u4e0b\u5185\u5bb9\u200b\u662f\u200b\u6211\u4eec\u200b\u5728\u200b\u81ea\u52a8\u5316\u200b\u4e4b\u524d\u200b\u7684\u200b\u624b\u52a8\u200b\u6253\u5305\u200b\u6d41\u7a0b\u200b\uff0c\u200b\u7559\u200b\u4f5c\u200b\u53c2\u8003\u200b\u3002
"},{"location":"workflow/pack-vm-image/#\u4e00\u4ece-ubuntu-cloud-images-\u5f00\u59cb\u51c6\u5907\u865a\u62df\u673a","title":"\u4e00\u200b\u3001\u200b\u4ece\u200b Ubuntu cloud images \u200b\u5f00\u59cb\u200b\u51c6\u5907\u200b\u865a\u62df\u673a","text":"\u200b\u4ee5\u200b Ubuntu 20.04 LTS \u200b\u4e3a\u4f8b\u200b\uff0c\u200b\u9996\u5148\u200b\u4e0b\u8f7d\u200b https://mirrors.ustc.edu.cn/ubuntu-cloud-images/focal/current/focal-server-cloudimg-amd64.img \u200b\u5230\u200b\u672c\u5730\u200b\u3002
\u200b\u9996\u5148\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u4e34\u65f6\u200b\u865a\u62df\u673a\u200b\uff08\u200b\u6ce8\u610f\u200b\u5c06\u200b ID 910 \u200b\u6362\u6210\u200b\u4e00\u4e2a\u200b\u5408\u9002\u200b\u7684\u200b\u7a7a\u95f2\u200b ID\uff09
qm create 910 --memory 2048 --net0 virtio,bridge=vmbr1\n
\u200b\u5c06\u200b\u521a\u200b\u4e0b\u8f7d\u200b\u7684\u200b\u955c\u50cf\u200b\u5bfc\u5165\u200b\u65b0\u200b\u865a\u62df\u673a\u200b\uff08\u200b\u8fd9\u4e2a\u200b img \u200b\u955c\u50cf\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b qcow2 \u200b\u683c\u5f0f\u200b\uff09\u200b\u5e76\u200b\u6302\u8f7d\u200b\u4e3a\u200b SCSI \u200b\u786c\u76d8\u200b\uff0c\u200b\u5c06\u200b\u65b0\u200b\u786c\u76d8\u200b\u8bbe\u200b\u4e3a\u200b\u542f\u52a8\u76d8\u200b
qm importdisk 910 focal-server-cloudimg-amd64.img local-lvm\nqm set 910 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-910-disk-1\nqm set 910 --boot c --bootdisk scsi0\n
"},{"location":"workflow/pack-vm-image/#\u4e8c\u914d\u7f6e-cloud-init","title":"\u4e8c\u200b\u3001\u200b\u914d\u7f6e\u200b Cloud-init","text":"\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u53ef\u4ee5\u200b\u5b8c\u5168\u200b\u5728\u200b Proxmox VE web \u200b\u754c\u9762\u200b\u4e0a\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u4e0b\u9762\u200b\u8fd8\u662f\u200b\u7ed9\u51fa\u200b\u547d\u4ee4\u884c\u200b\u6307\u5bfc\u200b\u3002
\u200b\u6dfb\u52a0\u200b Cloud-init \u200b\u914d\u7f6e\u200b\u76d8\u200b\uff08\u200b\u5b98\u65b9\u200b\u6587\u6863\u200b\u91cc\u200b\u662f\u200b\u6dfb\u52a0\u200b\u4e3a\u200b IDE \u200b\u76d8\u200b\uff0c\u200b\u5b9e\u9645\u200b\u52a0\u6210\u200b SCSI \u200b\u7684\u200b\u4e5f\u200b\u6ca1\u200b\u95ee\u9898\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u8ddf\u968f\u200b\u5b98\u65b9\u200b\uff09
qm set 910 --ide2 local-lvm:cloudinit\n
\u200b\u4e3a\u200b\u865a\u62df\u673a\u200b\u63d0\u4f9b\u200b\u7f51\u7edc\u200b\u4fe1\u606f\u200b\uff08\u200b\u6ce8\u610f\u200b\u628a\u200b IP \u200b\u5730\u5740\u200b\u6539\u6389\u200b\uff09\uff1a
qm set 910 --ipconfig0 ip=172.31.0.256/16,gw=172.31.0.1,ip6=auto\n
\u200b\u53ef\u200b\u9009\u200b\u9879\u76ee\u200b\uff1a\u200b\u5c06\u200b console \u200b\u8bbe\u200b\u4e3a\u200b\u4e32\u53e3\u200b Proxmox VE \u200b\u5b98\u65b9\u200b\u6587\u6863\u200b\u91cc\u200b\u7684\u200b\u8bf4\u660e\u200b\uff1a
Many Cloud-Init images rely on this, as it is an requirement for OpenStack images.
qm set 910 --serial0 socket --vga serial0\n
\u200b\u53ef\u200b\u9009\u200b\u9879\u76ee\u200b\uff1a\u200b\u5f00\u673a\u200b
\u200b\u73b0\u5728\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b qm start 910
\u200b\u542f\u52a8\u200b\u865a\u62df\u673a\u200b\u8fdb\u884c\u200b\u9ad8\u7ea7\u200b\u914d\u7f6e\u200b\u4e86\u200b\u3002
\u200b\u770b\u200b\u5b8c\u200b\u7b2c\u4e09\u7ae0\u200b\u548c\u200b\u7b2c\u56db\u7ae0\u200b\u4e4b\u540e\u200b\u4f60\u200b\u5c31\u200b\u77e5\u9053\u200b\u4e3a\u4ec0\u4e48\u200b\u5c06\u200b\u865a\u62df\u673a\u200b\u5f00\u673a\u200b\u662f\u200b\u53ef\u9009\u200b\u7684\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-vm-image/#\u4e09\u955c\u50cf\u7684\u5904\u7406","title":"\u4e09\u200b\u3001\u200b\u955c\u50cf\u200b\u7684\u200b\u5904\u7406","text":"\u200b\u6211\u4eec\u200b\u8ba4\u4e3a\u200b KVM \u200b\u865a\u62df\u673a\u200b\u7684\u200b\u53d7\u4f17\u200b\u662f\u200b\u4e0d\u200b\u9700\u8981\u200b\u684c\u9762\u73af\u5883\u200b\u548c\u200b Vlab Software \u200b\u8fdb\u884c\u200b\u8f83\u4e3a\u200b\u201c\u200b\u901a\u7528\u200b\u201d\u200b\u7684\u200b\u5b9e\u9a8c\u200b\u548c\u200b\u8ba1\u7b97\u200b\u7684\u200b\u7528\u6237\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u5728\u200b KVM \u200b\u955c\u50cf\u200b\u4e2d\u200b\u4e0d\u200b\u63d0\u4f9b\u200b\u684c\u9762\u73af\u5883\u200b\u548c\u200b /opt/vlab
\uff08\u200b\u5176\u5b9e\u200b\u8981\u200b\u5f04\u200b\u8fd8\u200b\u6709\u70b9\u200b\u9ebb\u70e6\u200b\uff09\uff0c\u200b\u6240\u4ee5\u200b\u5bf9\u4e8e\u200b\u4e0b\u8f7d\u200b\u4e0b\u6765\u200b\u7684\u200b\u5b98\u65b9\u200b\u955c\u50cf\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u200b\u9700\u8981\u200b\u8fdb\u884c\u200b\u6700\u200b\u57fa\u672c\u200b\u7684\u200b\u4fee\u6539\u200b\u5373\u53ef\u200b\u3002
\u200b\u4e0e\u200b\u6253\u5305\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u524d\u200b\u7684\u200b\u6e05\u7406\u200b\u5de5\u4f5c\u200b\u4e00\u6837\u200b\u3002
"},{"location":"workflow/pack-vm-image/#\u6302\u8f7d\u865a\u62df\u673a\u78c1\u76d8","title":"\u6302\u8f7d\u200b\u865a\u62df\u673a\u200b\u78c1\u76d8","text":"\u200b\u6ce8\u610f\u200b KVM \u200b\u7684\u200b\u201c\u200b\u5377\u200b\u201d\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5b8c\u6574\u200b\u7684\u200b\u78c1\u76d8\u200b\uff0c\u200b\u800c\u200b\u5bb9\u5668\u200b\u7684\u200b\u201c\u200b\u5377\u200b\u201d\u200b\u53ea\u200b\u5305\u542b\u200b rootfs \u200b\u6240\u5728\u200b\u7684\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\uff0c\u200b\u56e0\u6b64\u200b\u8981\u200b\u6302\u8f7d\u200b KVM \u200b\u7684\u200b rootfs \u200b\u9700\u8981\u200b\u5148\u200b\u5904\u7406\u200b\u78c1\u76d8\u5206\u533a\u200b\u7684\u200b\u95ee\u9898\u200b\u3002\u200b\u6211\u4eec\u200b\u63a8\u8350\u200b\u4f7f\u7528\u200b kpartx \u200b\u5de5\u5177\u200b\u3002
kpartx -av /dev/pve/vm-910-disk-0\n
\u200b\u4f60\u200b\u4f1a\u200b\u770b\u5230\u200b\u7c7b\u4f3c\u200b\u8fd9\u6837\u200b\u7684\u200b\u8f93\u51fa\u200b\uff1a
add map pve-vm--910--disk--0p1 (253:19): 0 4384735 linear 253:14 227328\nadd map pve-vm--910--disk--0p14 (253:23): 0 8192 linear 253:14 2048\nadd map pve-vm--910--disk--0p15 (253:24): 0 217088 linear 253:14 10240\n
\u200b\u6839\u636e\u200b\u5bb9\u91cf\u200b\u5224\u65ad\u200b\uff0cp1 \u200b\u5c31\u662f\u200b\u865a\u62df\u673a\u200b\u7684\u200b rootfs\uff0c\u200b\u6b64\u65f6\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u6302\u8f7d\u200b /dev/mapper/pve-vm--910--disk--0p1
\u200b\u8fdb\u884c\u200b\u6e05\u7406\u200b\u5de5\u4f5c\u200b\u4e86\u200b\u3002
\u200b\u6e05\u7406\u200b\u5b8c\u6210\u200b\u5e76\u200b umount \u200b\u540e\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b kpartx -d /dev/pve/vm-910-disk-0
\u200b\u5220\u9664\u200b\u5206\u533a\u200b\u6620\u5c04\u200b\u3002
\u200b\u540c\u6837\u200b\u7684\u200b\uff0c\u200b\u53d6\u51b3\u4e8e\u200b\u865a\u62df\u200b\u78c1\u76d8\u200b\u7684\u200b\u4f4d\u7f6e\u200b\uff0cPVE \u200b\u6709\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u5728\u200b\u5173\u673a\u200b\u540e\u200b\u5c06\u200b\u865a\u62df\u200b\u78c1\u76d8\u200b\u7684\u200b LVM \u200b\u5377\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b inactive\uff0c\u200b\u9700\u8981\u200b\u4f7f\u7528\u200b lvchange
\u200b\u5148\u200b\u6fc0\u6d3b\u200b\uff0c\u200b\u53c2\u89c1\u200b\u6253\u5305\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u7684\u200b\u7ae0\u8282\u200b\u3002
\u200b\u5982\u679c\u200b\u6253\u5305\u200b\u597d\u200b\u7684\u200b\u955c\u50cf\u200b\u8981\u200b\u4f5c\u4e3a\u200b VM \u200b\u6a21\u677f\u200b\u4f7f\u7528\u200b\uff0c\u200b\u9700\u8981\u200b\u8fc1\u79fb\u200b\u81f3\u200b\u5404\u200b pve \u200b\u4e3b\u673a\u200b\u95f4\u200b\u7684\u200b\u5171\u4eab\u200b\u5b58\u50a8\u200b\u4e0a\u200b\uff0c\u200b\u5982\u200b user-data\u3002
"},{"location":"workflow/pack-vm-image/#references","title":"\u53c2\u8003\u8d44\u6599","text":"\u200b\u8b66\u544a\u200b
\u200b\u6253\u5305\u200b\u548c\u200b\u7ef4\u62a4\u200b Windows \u200b\u955c\u50cf\u200b\u975e\u5e38\u200b\u9ebb\u70e6\u200b\u5e76\u4e14\u200b\u5f88\u96be\u200b debug\uff0c\u200b\u5feb\u200b\u8dd1\u200b\uff01\uff01\uff01
You have been warned. Run!!!
\u200b\u7531\u4e8e\u200b Proxmox VE \u200b\u4e0a\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u4f7f\u7528\u200b cloud-init \u200b\u8fdb\u884c\u200b\u5b9a\u5236\u200b\uff0c\u200b\u5e76\u4e14\u200b Windows \u200b\u548c\u200b Unix \u200b\u4e00\u5957\u200b\u4f53\u7cfb\u200b\u5b8c\u5168\u200b\u4e0d\u200b\u5728\u200b\u4e00\u4e2a\u200b\u9891\u9053\u200b\u4e0a\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5236\u4f5c\u200b\u53ef\u4ee5\u200b\u7528\u200b cloud-init \u200b\u5373\u4f7f\u200b\u53ea\u662f\u200b\u7b80\u5355\u200b\u5b9a\u5236\u200b\u7684\u200b Windows \u200b\u955c\u50cf\u200b\u4e5f\u200b\u975e\u5e38\u200b\u6298\u817e\u200b\u3002\u200b\u4e0b\u9762\u200b\u8ba9\u200b\u6211\u4eec\u200b\u4e00\u200b\u8d77\u6765\u200b\u53d7\u7f6a\u200b\u5427\u200b\uff01
"},{"location":"workflow/pack-windows-image/#setup-vm","title":"\u4e00\u200b\u3001\u200b\u51c6\u5907\u200b\u865a\u62df\u673a","text":""},{"location":"workflow/pack-windows-image/#install-vm","title":"\u5b89\u88c5\u200b\u865a\u62df\u673a","text":"\u200b\u5b66\u6821\u200b\u4e70\u200b\u4e86\u200b\u6b63\u7248\u200b\u7684\u200b Windows 10\uff0c\u200b\u53ef\u4ee5\u200b\u5728\u200b\u8f6f\u4ef6\u200b\u6b63\u7248\u200b\u5316\u200b\u7f51\u7ad9\u200b\u4e0a\u200b\u4e0b\u8f7d\u200b\uff0c\u200b\u5efa\u8bae\u200b\u9009\u200b\u4e2d\u6587\u7248\u200b\uff08\u200b\u56e0\u4e3a\u200b\u662f\u200b\u9762\u5411\u7528\u6237\u200b\u7684\u200b\uff09\u3002\u200b\u65c1\u8fb9\u200b\u7684\u200b KMS \u200b\u6ce8\u518c\u200b\u6587\u4ef6\u200b\u4e0d\u7528\u200b\u4e0b\u8f7d\u200b\uff0c\u200b\u5b9e\u9645\u200b\u53ea\u200b\u9700\u8981\u200b\u4e00\u884c\u200b\u547d\u4ee4\u200b\u5c31\u200b\u80fd\u200b\u89e3\u51b3\u200b\uff0c\u200b\u540e\u9762\u200b\u4f1a\u200b\u63d0\u5230\u200b\u3002
\u200b\u540c\u65f6\u200b\u4e5f\u200b\u8981\u200b\u4e0b\u8f7d\u200b VirtIO Windows \u200b\u9a71\u52a8\u200b\uff0c\u200b\u9009\u200b Stable ISO\u3002
\u200b\u548c\u200b\u4e00\u822c\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u5b89\u88c5\u200b\u8fc7\u7a0b\u200b\u4e00\u6837\u200b\uff0c\u200b\u5c06\u200b ISO \u200b\u6dfb\u52a0\u200b\u4e3a\u200b CD/DVD Drive\uff0c\u200b\u8ddf\u7740\u200b\u5b89\u88c5\u7a0b\u5e8f\u200b\u8d70\u200b\u5b8c\u200b\u6d41\u7a0b\u200b\u5373\u53ef\u200b\uff0c\u200b\u7248\u672c\u200b\u8bf7\u200b\u9009\u62e9\u200b\u6559\u80b2\u200b\u7248\u200b\u3002
\u200b\u7b2c\u4e00\u6b21\u200b\u91cd\u542f\u200b\u540e\u200b\u8fdb\u5165\u200b Windows \u200b\u7684\u200b OOBE\uff0c\u200b\u73b0\u5728\u200b\u53ef\u4ee5\u200b\u5728\u200b\u540e\u53f0\u200b\u628a\u200b\u5149\u9a71\u200b\u6362\u6210\u200b VirtIO \u200b\u7684\u200b\u9a71\u52a8\u200b\u76d8\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-windows-image/#windows-oobe","title":"Windows OOBE","text":"OOBE \u200b\u9636\u6bb5\u200b\u53ef\u4ee5\u200b\u81ea\u884c\u200b\u914d\u7f6e\u200b\uff0c\u200b\u4e0d\u8fc7\u200b\u65e2\u7136\u200b\u662f\u200b\u8981\u200b\u7528\u4f5c\u200b\u9762\u5411\u7528\u6237\u200b\u7684\u200b\u6a21\u677f\u200b\uff0c\u200b\u9009\u62e9\u200b\u4e00\u4e9b\u200b\u8bbe\u7f6e\u200b\u65f6\u200b\u7a0d\u5fae\u200b\u8003\u8651\u4e00\u4e0b\u200b\u3002
\u200b\u5730\u533a\u200b\u8bed\u8a00\u200b\u5f53\u7136\u200b\u662f\u200b\u4e2d\u6587\u200b\u4e86\u200b\uff0c\u200b\u952e\u76d8\u200b\u5fae\u8f6f\u62fc\u97f3\u200b\uff08\u200b\u8fd9\u662f\u200b\u9ed8\u8ba4\u200b\uff0c\u200b\u4e0b\u200b\u4e00\u6b65\u200b\uff09\uff0c\u200b\u7136\u540e\u200b\u4e00\u8def\u200b\u5230\u200b\u521b\u5efa\u200b\u8d26\u6237\u200b\u8fd9\u91cc\u200b\u4f1a\u200b\u6709\u200b\u4e2a\u200b\u9519\u8bef\u200b\u63d0\u793a\u200b\u7801\u200b OOBEAADV10\uff0c\u200b\u5ffd\u7565\u200b\u6389\u200b\u5b83\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u672c\u5730\u200b\u8d26\u6237\u200b\uff0c\u200b\u547d\u540d\u200b\u4e3a\u200b Vlab\uff0c\u200b\u5bc6\u7801\u200b\u7559\u7a7a\u200b\uff08\u200b\u4e0d\u7136\u200b\u540e\u9762\u200b\u8981\u200b\u4f60\u200b\u586b\u200b\u4e09\u4e2a\u200b\u5b89\u5168\u200b\u95ee\u9898\u200b\uff0cWTF?\uff09\u3002
\u200b\u9519\u8bef\u7801\u200b OOBEAADV10\u200b\u8fd9\u662f\u200b Windows \u200b\u5728\u200b\u5c1d\u8bd5\u200b\u8fde\u63a5\u200b\u5230\u200b Azure Active Directory \u200b\u65f6\u62a5\u200b\u7684\u200b\u9519\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u8fd9\u4e2a\u200b\u65f6\u5019\u200b\u53ea\u6709\u200b IPv6 \u200b\u7f51\u7edc\u200b\u662f\u200b\u901a\u200b\u7684\u200b\uff08\u200b\u6709\u200b SLAAC\uff09\uff0c\u200b\u7528\u6237\u200b\u5185\u200b\u7f51\u200b\u6ca1\u6709\u200b DHCP\u3002
\u200b\u4f4d\u7f6e\u670d\u52a1\u200b\u3001\u200b\u5e7f\u544a\u200b\u6807\u8bc6\u7b26\u200b\u8fd9\u4e2a\u200b\u9875\u9762\u200b\u5168\u90e8\u200b\u5173\u6389\u200b\uff0cCortana \u200b\u4e5f\u200b\u522b\u5f00\u200b\uff0c\u200b\u90fd\u200b\u662f\u200b\u4e9b\u200b\u6d6a\u8d39\u65f6\u95f4\u200b\u548c\u200b\u8d44\u6e90\u200b\u7684\u200b\u4e1c\u897f\u200b\u3002
\u200b\u5230\u200b\u8fd9\u91cc\u200b\u5c31\u200b\u5dee\u4e0d\u591a\u200b\u8fdb\u5165\u200b\u684c\u9762\u200b\u4e86\u200b\uff0c\u200b\u76ee\u524d\u4e3a\u6b62\u200b\u6ca1\u6709\u200b\u592a\u591a\u5751\u200b\uff0c\u200b\u9664\u4e86\u200b\u5bc6\u7801\u200b\u5fc5\u987b\u200b\u7559\u7a7a\u200b\u4e4b\u5916\u200b\uff08\u200b\u55ef\u200b\uff0c\u200b\u8fd9\u79cd\u200b\u5730\u65b9\u200b\u8981\u6c42\u200b\u586b\u200b\u5b89\u5168\u200b\u95ee\u9898\u200b\u662f\u200b\u4e2a\u200b\u5947\u602a\u200b\u7684\u200b\u8bbe\u5b9a\u200b\uff09\u3002
"},{"location":"workflow/pack-windows-image/#configure-vm","title":"\u4e8c\u200b\u3001\u200b\u914d\u7f6e\u200b\u865a\u62df\u673a","text":""},{"location":"workflow/pack-windows-image/#pause-windows-update","title":"\u6682\u505c\u200b Windows \u200b\u66f4\u65b0","text":"\u200b\u4e0d\u7136\u200b\u7f51\u7edc\u200b\u901a\u7545\u200b\u540e\u200b\u5f00\u59cb\u200b\u81ea\u52a8\u66f4\u65b0\u200b\u4e86\u200b\uff0c\u200b\u540e\u9762\u200b\u4f60\u200b\u5c31\u200b\u9ebb\u70e6\u200b\u4e86\u200b
"},{"location":"workflow/pack-windows-image/#configure-networking","title":"\u8bbe\u7f6e\u200b\u7f51\u7edc","text":"\u200b\u53f3\u952e\u200b\u70b9\u51fb\u200b\u53f3\u4e0b\u89d2\u200b\u7684\u200b\u7f51\u7edc\u200b\u56fe\u6807\u200b\uff0c\u200b\u6253\u5f00\u200b\u201c\u200b\u7f51\u7edc\u200b\u548c\u200b Internet\u201d\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u5728\u200b\u4e0b\u9762\u200b\u9009\u62e9\u200b\u201c\u200b\u66f4\u6539\u200b\u9002\u914d\u5668\u200b\u9009\u9879\u200b\u201d\uff0c\u200b\u6253\u5f00\u200b\u201c\u200b\u4ee5\u592a\u7f51\u200b\u5b9e\u4f8b\u200b 0\u201d\u200b\u7684\u200b\u5c5e\u6027\u200b\uff0c\u200b\u518d\u200b\u9009\u4e2d\u200b Internet \u200b\u534f\u8bae\u200b\u7248\u672c\u200b 4\uff0c\u200b\u5728\u200b\u8fd9\u91cc\u200b\u6307\u5b9a\u200b\u4e00\u4e2a\u200b\u4e34\u65f6\u200b\u7684\u200b IPv4 \u200b\u5730\u5740\u200b\uff08\u200b\u53c2\u8003\u200b\u6253\u5305\u200b\u5bb9\u5668\u200b\u7684\u200b\u6d41\u7a0b\u200b\uff09\uff0c\u200b\u63a9\u7801\u200b\u662f\u200b 255.255.0.0
\uff0c\u200b\u7f51\u5173\u200b\u662f\u200b 172.31.0.1
\uff0cDNS \u200b\u670d\u52a1\u5668\u200b\u548c\u200b\u7f51\u5173\u200b\u4e00\u6837\u200b\uff0c\u200b\u786e\u5b9a\u200b\u5b8c\u6210\u200b\u540e\u200b\u5c31\u200b\u80fd\u200b\u4e0a\u7f51\u200b\u4e86\u200b\u3002
\u200b\u4e0d\u8981\u200b\u76f4\u63a5\u200b\u5728\u200b\u201c\u200b\u8bbe\u7f6e\u200b\u201d\u200b\u5e94\u7528\u200b\u91cc\u200b\u6539\u200b
\u201c\u200b\u8bbe\u7f6e\u200b\u201d\u200b\u91cc\u200b\u76f4\u63a5\u200b\u6539\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u6307\u5b9a\u200b\u9759\u6001\u200b IPv4 \u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u6ca1\u6709\u200b IPv6 \u200b\u81ea\u52a8\u200b\u914d\u7f6e\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-windows-image/#activate-windows","title":"\u6fc0\u6d3b\u200b Windows","text":"\u200b\u53f3\u952e\u200b\u70b9\u51fb\u200b\u5de6\u4e0b\u89d2\u200b\u7684\u200b Windows\uff0c\u200b\u6253\u5f00\u200b\u4e00\u4e2a\u200b\u6709\u200b\u7ba1\u7406\u5458\u200b\u6743\u9650\u200b\u7684\u200b PowerShell \u200b\u7a97\u53e3\u200b\uff0c\u200b\u914d\u7f6e\u200b\u5b66\u6821\u200b\u7684\u200b KMS \u200b\u6fc0\u6d3b\u200b\uff1a
slmgr.vbs /skms kms.ustc.edu.cn\n
\u200b\u73b0\u5728\u200b\u53ef\u4ee5\u200b\u8fdb\u200b\u8bbe\u7f6e\u200b\u5e94\u7528\u200b\u91cc\u200b\u67e5\u770b\u200b\u6fc0\u6d3b\u72b6\u6001\u200b\u4e86\u200b\u3002\u200b\u5982\u679c\u200b\u8fd8\u200b\u6ca1\u200b\u6fc0\u6d3b\u200b\u7684\u8bdd\u200b\uff0c\u200b\u70b9\u200b\u7591\u96be\u89e3\u7b54\u200b\uff0c\u200b\u7b49\u200b\u5b83\u200b\u8dd1\u200b\u5b8c\u200b\u5c31\u200b\u4f1a\u200b\u544a\u8bc9\u200b\u4f60\u200b\u5df2\u200b\u6fc0\u6d3b\u200b\u3002
"},{"location":"workflow/pack-windows-image/#install-virtio-drivers","title":"\u5b89\u88c5\u200b VirtIO \u200b\u9a71\u52a8","text":"\u200b\u6253\u5f00\u200b\u5149\u9a71\u200b\u8fd0\u884c\u200b virtio-win-guest-tools.exe
\uff0c\u200b\u4e00\u8def\u4e0b\u200b\u4e00\u6b65\u200b\u5b89\u88c5\u200b\u5373\u53ef\u200b\u3002
\u200b\u8fd9\u91cc\u200b\u552f\u4e00\u200b\u7684\u200b\u5751\u70b9\u200b\u662f\u200b\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u5728\u200b\u521b\u5efa\u200b\u865a\u62df\u673a\u200b\u65f6\u200b\u6ca1\u6709\u200b\u591a\u200b\u4e00\u6b65\u200b\u6dfb\u52a0\u200b\u4e00\u4e2a\u200b\u4e32\u53e3\u200b\u8bbe\u5907\u200b\u7684\u8bdd\u200b\uff0c\u200b\u90a3\u4e48\u200b VirtIO \u200b\u4e32\u53e3\u200b\u9a71\u52a8\u200b\u5c31\u200b\u4e0d\u4f1a\u200b\u5b89\u88c5\u200b\uff0c\u200b\u9700\u8981\u200b\u5173\u673a\u200b\u52a0\u200b\u597d\u200b\u8bbe\u5907\u200b\u540e\u200b\u518d\u200b\u91cd\u65b0\u5b89\u88c5\u200b\u3002
QEMU Guest Agent (Qemu GA) \u200b\u4ee5\u540e\u200b\u4f1a\u200b\u5f88\u200b\u6709\u7528\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u628a\u200b\u5b83\u200b\u88c5\u4e0a\u200b\u5427\u200b\u3002
"},{"location":"workflow/pack-windows-image/#enable-rdp","title":"\u8bbe\u7f6e\u200b RDP","text":"\u200b\u8bbe\u7f6e\u200b \u2192 \u200b\u7cfb\u7edf\u200b \u2192 \u200b\u8fdc\u7a0b\u684c\u9762\u200b\uff0c\u200b\u542f\u7528\u200b\u8fdc\u7a0b\u684c\u9762\u200b\u3002
\u200b\u914d\u7f6e\u200b Windows \u200b\u9632\u706b\u5899\u200b\u4ec5\u200b\u8fd0\u884c\u200b\u6765\u81ea\u200b web \u200b\u670d\u52a1\u5668\u200b\u7684\u200b\u8fde\u63a5\u200b\uff1a
wf.msc
\uff09\u200b\u5165\u7ad9\u200b\u89c4\u5219\u200b\uff0c\u200b\u627e\u5230\u200b \u200b\u8fdc\u7a0b\u684c\u9762\u200b - \u200b\u7528\u6237\u200b\u6a21\u5f0f\u200b (TCP-In) \u200b\u542f\u7528\u200b\uff0c\u200b\u6253\u5f00\u200b\u5c5e\u6027\u200b\uff0c\u200b\u5207\u6362\u200b\u5230\u200b\u201c\u200b\u4f5c\u7528\u57df\u200b\u201d\u200b\u9009\u9879\u5361\u200b\uff0c\u200b\u8bbe\u7f6e\u200b\u8fdc\u7a0b\u200b IP \u200b\u4ec5\u9650\u200b 172.31.0.2
\uff0c\u200b\u5982\u56fe\u200b\uff1a
\uff08\u200b\u53ef\u200b\u9009\u200b\uff0c\u200b\u63a8\u8350\u200b\uff09\u200b\u5165\u7ad9\u200b\u89c4\u5219\u200b\u91cc\u200b\u201c\u200b\u6838\u5fc3\u200b\u7f51\u7edc\u200b\u8bca\u65ad\u200b - ICMP \u200b\u56de\u663e\u200b\u8bf7\u6c42\u200b\u201d\u200b\u56db\u4e2a\u200b\u90fd\u200b\u6253\u5f00\u200b\uff08Windows \u200b\u9ed8\u8ba4\u200b\u8fd1\u5e73\u7981\u200b ping\uff0c\u200b\u6253\u5f00\u200b\u4f1a\u200b\u65b9\u4fbf\u200b\u4ee5\u540e\u200b\u8c03\u8bd5\u200b\u7f51\u7edc\u200b\u548c\u200b\u76d1\u6d4b\u200b\u72b6\u6001\u200b\uff09
\u200b\u4efb\u52a1\u680f\u200b\u91cc\u200b\u90a3\u5757\u200b\u5de8\u5927\u200b\u7684\u200b\u80f6\u5e03\u200b\uff08\u200b\u641c\u7d22\u200b\u6846\u200b\uff09\u200b\u53ef\u4ee5\u200b\u9690\u85cf\u200b\u8d77\u6765\u200b\uff0cCortana \u200b\u56fe\u6807\u200b\u9690\u85cf\u200b\u8d77\u6765\u200b\uff0cTask View \u200b\u7684\u200b\u56fe\u6807\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u9690\u85cf\u200b\u8d77\u6765\u200b\uff0c\u200b\u8fd9\u200b\u51e0\u4e2a\u200b\u90fd\u200b\u662f\u200b\u53f3\u952e\u200b\u4efb\u52a1\u680f\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u52fe\u9009\u200b\u7684\u200b\u9009\u9879\u200b\u3002
\u200b\u4efb\u52a1\u680f\u200b\u8bbe\u7f6e\u200b\u91cc\u200b\u7684\u200b\u201c\u200b\u4f7f\u7528\u200b\u2018\u200b\u901f\u89c8\u200b\u2019\u200b\u9884\u89c8\u200b\u684c\u9762\u200b\u201d\u200b\u51fa\u4e8e\u200b\u6027\u80fd\u200b\u8003\u8651\u200b\u5efa\u8bae\u200b\u4e0d\u8981\u200b\u5f00\u200b\uff0c\u200b\u5176\u4ed6\u200b\u968f\u610f\u200b\uff0c\u200b\u4f8b\u5982\u200b\u201c\u200b\u5408\u5e76\u200b\u4efb\u52a1\u680f\u200b\u6309\u94ae\u200b\u201d\u200b\u53ef\u4ee5\u200b\u6539\u6210\u200b\u201c\u200b\u4efb\u52a1\u680f\u200b\u5df2\u6ee1\u65f6\u200b\u201d\u200b\u7b49\u7b49\u200b\uff0c\u200b\u5176\u4ed6\u200b\u7684\u200b\u684c\u9762\u80cc\u666f\u200b\u3001\u200b\u989c\u8272\u200b\u3001\u200b\u5f00\u59cb\u83dc\u5355\u200b\u7b49\u200b\u90fd\u200b\u968f\u610f\u200b\u3002
\u200b\u5f00\u59cb\u83dc\u5355\u200b\u91cc\u200b\u9884\u88c5\u200b\u7684\u200b UWP \u200b\u5e94\u7528\u200b\u73b0\u5728\u200b\u4e0d\u8981\u200b\u52a8\u200b\uff0c\u200b\u5426\u5219\u200b\u540e\u9762\u200b Sysprep \u200b\u7684\u200b\u65f6\u5019\u200b\u4f1a\u200b\u51fa\u9519\u200b\u3002\uff08\u200b\u5982\u679c\u200b\u4f60\u200b\u7279\u522b\u200b\u60f3\u200b\u5220\u6389\u200b\u5176\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u200b\u6216\u200b\u591a\u4e2a\u200b\u65f6\u200b\uff0c\u200b\u7b2c\u56db\u8282\u200b\u6e05\u7406\u200b\u6709\u200b\u8be6\u7ec6\u200b\u8bf4\u660e\u200b\u3002\uff09
Windows \u200b\u68c0\u6d4b\u200b\u7f51\u7edc\u8fde\u63a5\u200b\u7684\u200b\u529f\u80fd\u200b\u7ecf\u5e38\u200b\u574f\u200b\uff0c\u200b\u539f\u56e0\u200b\u662f\u200b msftconnecttest.com \u200b\u670d\u52a1\u5668\u200b\u5728\u200b\u56fd\u5916\u200b\uff0c\u200b\u5f88\u200b\u6162\u200b\u800c\u4e14\u200b\u4e0d\u200b\u7a33\u5b9a\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4fee\u6539\u200b\u6ce8\u518c\u8868\u200b\u5c06\u200b\u8fd9\u4e2a\u200b\u529f\u80fd\u200b\u66ff\u6362\u6210\u200b\u4f7f\u7528\u200b\u6821\u5185\u200b\u7684\u200b\u670d\u52a1\u200b\u3002
\u200b\u6ce8\u518c\u8868\u200b\u6587\u4ef6\u200b\u200b\u4e0b\u8f7d\u200b\u76f4\u94fe\u200b
Windows Registry Editor Version 5.00\n\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\NlaSvc\\Parameters\\Internet]\n\"ActiveDnsProbeContent\"=\"202.38.64.1\"\n\"ActiveDnsProbeContentV6\"=\"2001:da8:d800::1\"\n\"ActiveDnsProbeHost\"=\"ns.ustc.edu.cn\"\n\"ActiveDnsProbeHostV6\"=\"ns.ustc.edu.cn\"\n\"ActiveWebProbeContent\"=\"USTC Mirrors Connect Test\"\n\"ActiveWebProbeContentV6\"=\"USTC Mirrors Connect Test\"\n\"ActiveWebProbeHost\"=\"mirrors.ustc.edu.cn\"\n\"ActiveWebProbeHostV6\"=\"ipv6.mirrors.ustc.edu.cn\"\n\"ActiveWebProbePath\"=\"connecttest.txt\"\n\"ActiveWebProbePathV6\"=\"connecttest.txt\"\n\"EnableActiveProbing\"=dword:00000001\n
"},{"location":"workflow/pack-windows-image/#cloudbase-init","title":"\u4e09\u200b\u3001\u200b\u5b89\u88c5\u200b Cloudbase-init","text":"\u200b\u8b66\u544a\u200b\uff1a\u200b\u524d\u65b9\u200b\u96f7\u533a\u200b
\u200b\u4e0b\u8f7d\u200b\u5730\u5740\u200b https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi\uff0c\u200b\u53ef\u4ee5\u200b\u6d4f\u89c8\u5668\u200b\u4e0b\u8f7d\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b PowerShell \u200b\u547d\u4ee4\u884c\u200b\uff1a
Invoke-WebRequest -Uri https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi -OutFile C:\\cloudbase-init.msi\n
\u200b\u987a\u7740\u200b Cloudbase-init \u200b\u7684\u200b\u6d41\u7a0b\u200b\u5b89\u88c5\u200b\u5c31\u884c\u200b\uff0c\u200b\u5728\u200b\u9009\u62e9\u200b\u7528\u6237\u540d\u200b\u7684\u200b\u90a3\u4e2a\u200b\u754c\u9762\u200b\u586b\u200b Administrator\uff0c\u200b\u4e0b\u9762\u200b\u4e32\u53e3\u200b\u8bbe\u5907\u200b\u9009\u62e9\u200b COM1\uff0c\u200b\u7ee7\u7eed\u200b\u5b89\u88c5\u200b\u5b8c\u6210\u200b\u3002\u200b\u6700\u540e\u200b\u4e00\u4e2a\u200b\u754c\u9762\u200b\u4e0d\u8981\u200b\u9009\u200b Sysprep\uff0c\u200b\u76f4\u63a5\u200b\u5173\u95ed\u200b\u9000\u51fa\u200b\uff0c\u200b\u7b49\u200b\u6539\u5b8c\u200b\u8bbe\u7f6e\u200b\u540e\u200b\u624b\u52a8\u200b\u5904\u7406\u200b\u3002
\u200b\u5b89\u88c5\u200b\u5b8c\u6210\u200b\u540e\u200b\u6253\u5f00\u200b C:\\Program Files\\Cloudbase Solutions\\Cloudbase-init\\conf
\uff0c\u200b\u7f16\u8f91\u200b cloudbase-init-unattend.conf
\uff0c\u200b\u4fee\u6539\u200b\u4ee5\u4e0b\u200b\u51e0\u5904\u200b\uff1a
first_logon_behaviour=no
config_drive_raw_hhd
\u200b\u548c\u200b config_drive_vfat
\uff08\u200b\u6216\u8005\u200b\u6539\u6210\u200b false \u200b\u4e5f\u200b\u884c\u200b\uff09metadata_services
\u200b\u91cc\u200b\u5220\u6389\u200b\u5176\u4ed6\u200b\u914d\u7f6e\u200b\uff0c\u200b\u53ea\u200b\u4fdd\u7559\u200b\u4e00\u4e2a\u200b ConfigDriveService
\u3002\u200b\u6ce8\u610f\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u9017\u53f7\u200b\u5206\u9694\u200b\u7684\u200b\u5217\u8868\u200b\uff0c\u200b\u4e0d\u8981\u200b\u770b\u9519\u200b\u4e86\u200bcheck_latest_version
\u200b\u6539\u6210\u200b false[DEFAULT]\nusername=Administrator\ngroups=Administrators\ninject_user_password=true\nfirst_logon_behaviour=no\nconfig_drive_cdrom=true\nbsdtar_path=C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\bin\\bsdtar.exe\nmtools_path=C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\bin\\\nverbose=true\ndebug=true\nlogdir=C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\log\\\nlogfile=cloudbase-init-unattend.log\ndefault_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN\nlogging_serial_port_settings=COM1,115200,N,8\nmtu_use_dhcp_config=true\nntp_use_dhcp_config=true\nlocal_scripts_path=C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\LocalScripts\\\ncheck_latest_version=false\nmetadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService\nplugins=cloudbaseinit.plugins.common.mtu.MTUPlugin,cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin\nallow_reboot=false\nstop_service_on_exit=false\n
"},{"location":"workflow/pack-windows-image/#cleanup","title":"\u56db\u200b\u3001\u200b\u6253\u5305\u200b\u524d\u200b\u7684\u200b\u6e05\u7406\u200b\u5de5\u4f5c","text":"\u200b\u542f\u7528\u200b Windows Update
\u200b\u53ef\u4ee5\u200b\u653e\u5728\u200b\u6700\u540e\u200b\u4e00\u6b65\u200b\u5173\u673a\u200b\u524d\u200b\u518d\u200b\u542f\u7528\u200b\uff0c\u200b\u907f\u514d\u200b\u540e\u9762\u200b\u6e05\u7406\u200b\u65f6\u95f4\u200b\u592a\u200b\u957f\u200b\u5bfc\u81f4\u200b WU \u200b\u5f00\u59cb\u8fd0\u884c\u200b\uff0c\u200b\u6216\u8005\u200b\u76f4\u63a5\u200b\u65ad\u7f51\u200b\u4e5f\u200b\u884c\u200b\u3002
\u200b\u6e05\u7406\u200b Windows \u200b\u8d44\u6e90\u7ba1\u7406\u200b\u5668\u200b\u7684\u200b\u5386\u53f2\u8bb0\u5f55\u200b
\u200b\u6309\u200b Windows + E \u200b\u6253\u5f00\u200b Windows \u200b\u8d44\u6e90\u7ba1\u7406\u200b\u5668\u200b\uff0c\u200b\u5220\u6389\u200b\u6240\u6709\u200b\u201c\u200b\u6700\u8fd1\u200b\u6587\u4ef6\u200b\u201d\u3002\u200b\u6ce8\u610f\u200b\u4e0d\u662f\u200b\u5c06\u200b\u6587\u4ef6\u200b\u4ece\u200b\u78c1\u76d8\u200b\u4e0a\u200b\u5220\u9664\u200b\uff0c\u200b\u800c\u662f\u200b\u53f3\u952e\u200b\u201c\u200b\u4ece\u200b\u5feb\u901f\u8bbf\u95ee\u200b\u4e2d\u200b\u5220\u9664\u200b\u201d\u3002
\u200b\u6e05\u7406\u200b\u201c\u200b\u8fd0\u884c\u200b\u2026\u2026\u201d\u200b\u7684\u200b\u5386\u53f2\u8bb0\u5f55\u200b
\u200b\u6e05\u7a7a\u200b\uff08\u200b\u4e0d\u662f\u200b\u5220\u9664\u200b\uff09\u200b\u6ce8\u518c\u8868\u200b\u9879\u200b HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU
\u200b\u4e2d\u200b\u7684\u200b\u6240\u6709\u200b\u5185\u5bb9\u200b\u3002
\u200b\u6e05\u7406\u200b\u6d4f\u89c8\u5668\u200b\u8bb0\u5f55\u200b
\u200b\u5bf9\u4e8e\u200b Internet Explorer\uff1a\u200b\u8bf7\u200b\u53c2\u8003\u200b Microsoft Docs\uff08\u200b\u4e2d\u6587\u200b / English)
\u200b\u5bf9\u4e8e\u200b Microsoft Edge\uff1a\u200b\u5220\u9664\u200b\u76ee\u5f55\u200b C:\\Users\\Vlab\\AppData\\Local\\Microsoft\\Edge\\User Data
\u200b\u8fdb\u884c\u200b\u78c1\u76d8\u6e05\u7406\u200b
\u200b\u6253\u5f00\u200b\u201c\u200b\u6b64\u200b\u7535\u8111\u200b\u201d\uff0c\u200b\u53f3\u952e\u200b\u70b9\u51fb\u200b C \u200b\u76d8\u200b\u9009\u62e9\u200b\u201c\u200b\u5c5e\u6027\u200b\u201d\uff0c\u200b\u7136\u540e\u200b\u5728\u200b\u5bf9\u8bdd\u6846\u200b\u4e2d\u200b\u627e\u5230\u200b\u201c\u200b\u78c1\u76d8\u6e05\u7406\u200b\u201d\u200b\u9009\u9879\u200b\u3002\u200b\u5148\u200b\u70b9\u51fb\u200b\u5de6\u4e0b\u89d2\u200b\u201c\u200b\u6e05\u7406\u200b\u7cfb\u7edf\u6587\u4ef6\u200b\u201d\uff0c\u200b\u7136\u540e\u200b\u52fe\u9009\u200b\u5168\u90e8\u5185\u5bb9\u200b\u786e\u8ba4\u200b\u6e05\u7406\u200b\u3002
\u200b\u5173\u95ed\u200b\u4f11\u7720\u200b\u548c\u200b\u5feb\u901f\u200b\u542f\u52a8\u200b\uff08\u200b\u63a8\u8350\u200b\uff09
\u200b\u4ee5\u200b\u7ba1\u7406\u5458\u200b\u6253\u5f00\u200b PowerShell\uff0c\u200b\u8fd0\u884c\u200b powercfg /h off
\u3002
\uff08\u200b\u53ef\u200b\u9009\u200b\uff09\u200b\u5220\u9664\u200b\u9884\u88c5\u200b\u7684\u200b UWP \u200b\u5e94\u7528\u200b
\u200b\u8fd9\u662f\u200b\u9ad8\u7ea7\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u5efa\u8bae\u200b\u4ec5\u200b\u5f53\u200b\u4f60\u200b\u719f\u6089\u200b Windows 10 \u200b\u65f6\u200b\u8fdb\u884c\u200b\u200b\u4ee5\u200b\u7ba1\u7406\u5458\u200b\u6253\u5f00\u200b PowerShell\uff0c\u200b\u8fd0\u884c\u200b Get-AppxProvisionedPackage -Online
\u200b\u6765\u200b\u5217\u51fa\u200b\u5f53\u524d\u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u5df2\u200b\u9884\u88c5\u200b\u7684\u200b UWP \u200b\u5e94\u7528\u200b\u3002\u200b\u5bf9\u4e8e\u200b\u6bcf\u200b\u4e00\u4e2a\u200b\u60f3\u8981\u200b\u5220\u9664\u200b\u7684\u200b\u5e94\u7528\u200b\uff0c\u200b\u8bb0\u5f55\u200b\u4e0b\u200b PackageName\u3002
\u200b\u7ee7\u7eed\u200b\u5728\u200b PowerShell \u200b\u4e2d\u200b\uff0c\u200b\u8fd0\u884c\u200b Remove-AppxProvisionedPackage -Online -PackageName $PackageName
\uff0c\u200b\u5176\u4e2d\u200b $PackageName
\u200b\u66ff\u6362\u6210\u200b\u521a\u624d\u200b\u8bb0\u5f55\u4e0b\u6765\u200b\u7684\u200b PackageName\u3002\u200b\u5220\u9664\u200b\u9884\u88c5\u200b\u540e\u200b\uff0c\u200b\u4e5f\u200b\u8981\u200b\u540c\u65f6\u200b\u5220\u9664\u200b\u5f53\u524d\u200b\u7528\u6237\u200b\u5df2\u200b\u5b89\u88c5\u200b\u7684\u200b\u8fd9\u200b\u4e00\u4efd\u200b\u76f8\u540c\u200b\u5e94\u7528\u200b\u3002\u200b\u4f60\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b Remove-AppxPackage -PackageName $PackageName
\u200b\u547d\u4ee4\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5728\u200b\u5f00\u59cb\u83dc\u5355\u200b\u4e2d\u200b\u627e\u5230\u200b\u5b83\u200b\u9009\u62e9\u200b\u201c\u200b\u5378\u8f7d\u200b\u201d\uff08\u200b\u5982\u679c\u200b\u4f60\u200b\u627e\u200b\u5f97\u5230\u200b\u7684\u8bdd\u200b\uff09\u3002
\u200b\u4f5c\u4e3a\u200b\u7ec3\u4e60\u200b\uff0c\u200b\u4f60\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u5220\u9664\u200b Microsoft Solitaire Collection \u200b\u548c\u200b Skype \u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u5e94\u7528\u200b\uff0c\u200b\u6216\u8005\u200b\u9009\u62e9\u200b\u8df3\u8fc7\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u3002
\u200b\u5148\u200b\u5173\u673a\u200b\u6253\u200b\u4e00\u4e2a\u200b\u5feb\u7167\u200b
Sysprep \u200b\u540e\u200b\u7684\u200b\u955c\u50cf\u200b\u65e0\u6cd5\u200b\u6062\u590d\u200b\uff0c\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u63a8\u8350\u200b\u5728\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u4e4b\u524d\u200b\u5c06\u200b\u865a\u62df\u200b\u673a\u5173\u200b\u673a\u200b\uff0c\u200b\u5728\u200b Proxmox \u200b\u7684\u200b\u754c\u9762\u200b\u4e2d\u200b\u6253\u200b\u4e00\u4e2a\u200b\u5feb\u7167\u200b\uff0c\u200b\u65b9\u4fbf\u200b\u4ee5\u540e\u200b\u4ee5\u200b\u5f53\u524d\u200b\u72b6\u6001\u200b\u4e3a\u200b\u57fa\u7840\u200b\u8fdb\u4e00\u6b65\u200b\u5b9a\u5236\u200b\u955c\u50cf\u200b\u3002
\u200b\u8fd8\u662f\u200b\u4ee5\u200b\u7ba1\u7406\u5458\u200b\u6253\u5f00\u200b PowerShell\uff0c\u200b\u5b9a\u4f4d\u200b\u5230\u200b C:\\Program Files\\Cloudbase Solutions\\Cloudbase-init\\conf
\uff0c\u200b\u8fd0\u884c\u200b Sysprep\uff1a
C:\\Windows\\System32\\Sysprep\\sysprep.exe /generalize /oobe /unattend:Unattend.xml\n
\u200b\u8fd9\u4e2a\u200b Unattend.xml
\u200b\u7531\u200b Cloudbase-init \u200b\u63d0\u4f9b\u200b\uff0c\u200b\u6240\u4ee5\u200b\u9700\u8981\u200b\u5148\u200b cd
\u200b\u5230\u200b\u4e0a\u8ff0\u200b\u76ee\u5f55\u200b\u3002
\u200b\u5982\u679c\u200b Sysprep \u200b\u51fa\u73b0\u200b\u9519\u8bef\u200b\uff0c\u200b\u8bf7\u200b\u68c0\u67e5\u200b C:\\Windows\\System32\\Sysprep\\Panther\\setupact.log
\u200b\u5e76\u200b\u5229\u7528\u200b Google \u200b\u6392\u67e5\u200b\u3002
setupact.log
\u200b\u4e2d\u200b\u80fd\u200b\u770b\u5230\u200b\u4ee5\u4e0b\u200b\u9519\u8bef\u4fe1\u606f\u200b\uff0c\u200b\u4ee5\u200b Microsoft Solitaire Collection \u200b\u4e3a\u4f8b\u200b\uff1a
Package Microsoft.MicrosoftSolitaireCollection_4.10.7290.0_neutral_~_8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.\n
\u200b\u8bf7\u56de\u5230\u200b\u7b2c\u56db\u8282\u200b\u6b63\u786e\u200b\u5378\u8f7d\u200b\u9519\u8bef\u4fe1\u606f\u200b\u7ed9\u51fa\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u3002
Sysprep \u200b\u8fd0\u884c\u200b\u5b8c\u6210\u200b\u540e\u200b Windows \u200b\u4f1a\u200b\u81ea\u52a8\u5173\u673a\u200b\uff0c\u200b\u6b64\u65f6\u200b\u5c31\u200b\u4e0d\u8981\u200b\u518d\u200b\u5f00\u673a\u200b\u4e86\u200b\uff0c\u200b\u628a\u200b\u5f53\u524d\u200b\u7248\u672c\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u955c\u50cf\u200b\u63d0\u53d6\u200b\u51fa\u6765\u200b\uff0c\u200b\u5c31\u7b97\u200b\u6253\u5305\u200b\u5b8c\u6210\u200b\u4e86\u200b\u3002\u200b\u4f60\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u9009\u62e9\u200b\u76f4\u63a5\u200b\u5c06\u200b\u8fd9\u4e2a\u200b\u865a\u62df\u673a\u200b\u8f6c\u6362\u200b\u4e3a\u200b Template\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4ece\u200b\u5b83\u200b\u521b\u5efa\u200b\u51fa\u65b0\u200b\u865a\u62df\u673a\u200b\u4e86\u200b\u3002
"},{"location":"workflow/pack-windows-image/#packaging","title":"\u63d0\u53d6\u200b\u865a\u62df\u673a\u200b\u955c\u50cf","text":"\u200b\u9996\u5148\u200b\u8bf7\u200b\u53c2\u8003\u200b\u6253\u5305\u200b\u5bb9\u5668\u200b\u955c\u50cf\u200b\u5bf9\u5e94\u200b\u7684\u200b\u4e00\u8282\u200b\u6fc0\u6d3b\u200b\u865a\u62df\u673a\u200b\u5bf9\u5e94\u200b\u7684\u200b LVM \u200b\u5377\u200b\u3002
\u200b\u63d0\u53d6\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u5feb\u7167\u200b\u200b\u5982\u679c\u200b\u4f60\u200b\u60f3\u200b\u63d0\u53d6\u200b\u865a\u62df\u673a\u200b\u7684\u200b\u67d0\u4e2a\u200b\u5feb\u7167\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u5176\u200b\u5f53\u524d\u200b\u72b6\u6001\u200b\uff0c\u200b\u9700\u8981\u200b\u5728\u200b lvchange
\u200b\u547d\u4ee4\u200b\u4e2d\u200b\u989d\u5916\u200b\u6dfb\u52a0\u200b -Ky
\u200b\u53c2\u6570\u200b\u3002
lvchange -ay -Ky /dev/{vg}/{snap-lv}\n
\u200b\u7136\u540e\u200b\uff0c\u200b\u4f7f\u7528\u200b QEMU \u200b\u7684\u200b\u78c1\u76d8\u5de5\u5177\u200b\u5c06\u200b\u5b58\u50a8\u200b\u5728\u200b LVM \u200b\u4e2d\u200b\u7684\u200b\u539f\u59cb\u200b\uff08raw\uff09\u200b\u78c1\u76d8\u955c\u50cf\u200b\u63d0\u53d6\u200b\u51fa\u6765\u200b\uff1a
qemu-img convert -p -f raw -O qcow2 /dev/{vg}/{lv} win10.qcow2\n
\u200b\u6b64\u65f6\u200b win10.qcow2
\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4e86\u200b\u3002\u200b\u5b83\u200b\u7684\u200b\u5bb9\u91cf\u200b\u901a\u5e38\u200b\u5728\u200b 20 GB \u200b\u4ee5\u4e0a\u200b\uff0c\u200b\u53ef\u80fd\u200b\u8fd8\u200b\u4e0d\u591f\u200b\u65b9\u4fbf\u200b\u79fb\u52a8\u200b\uff0c\u200b\u4e0b\u9762\u200b\u63d0\u4f9b\u200b\u4e00\u79cd\u200b\u7b80\u5355\u200b\u7684\u200b\u4f18\u5316\u200b\u65b9\u6cd5\u200b\u3002
Linux \u200b\u4e0b\u200b\u5bf9\u200b NTFS \u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u5199\u5165\u200b\u6ca1\u6709\u200b\u5f88\u200b\u597d\u200b\u7684\u200b\u4f18\u5316\u200b\uff0c\u200b\u5bb9\u6613\u200b\u635f\u574f\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\uff0c\u200b\u56e0\u6b64\u200b\u8bf7\u200b\u5c06\u200b\u4e0a\u200b\u4e00\u6b65\u200b\u63d0\u53d6\u200b\u5f97\u5230\u200b\u7684\u200b qcow2 \u200b\u6587\u4ef6\u200b\u4f5c\u4e3a\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u865a\u62df\u200b\u78c1\u76d8\u200b\u6302\u8f7d\u200b\u8fdb\u200b Windows \u200b\u865a\u62df\u673a\u200b\uff0c\u200b\u4ece\u200b Windows \u200b\u4e2d\u200b\u64cd\u4f5c\u200b\u3002
\u200b\u5220\u9664\u200b\u9875\u9762\u200b\u6587\u4ef6\u200b\u548c\u200b\u4ea4\u6362\u6587\u4ef6\u200b
\u200b\u6253\u5f00\u200b\u521a\u200b\u6302\u8f7d\u200b\u7684\u200b\u78c1\u76d8\u200b\u4e2d\u200b\u7684\u200b\u7cfb\u7edf\u200b\u5206\u533a\u200b\uff08\u200b\u5b83\u200b\u7684\u200b\u76d8\u7b26\u200b\u73b0\u5728\u200b\u5e94\u8be5\u200b\u4e0d\u662f\u200b C \u200b\u4e86\u200b\uff0c\u200b\u6ce8\u610f\u200b\u8fa8\u522b\u200b\uff09\uff0c\u200b\u5220\u9664\u200b pagefile.sys
\u200b\u548c\u200b swapfile.sys
\u3002
\u200b\u4f60\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u540c\u65f6\u200b\u6e05\u7a7a\u200b C:\\Windows\\Logs
\u200b\u548c\u200b\u4e00\u4e9b\u200b\u5176\u4ed6\u200b\u6587\u4ef6\u5939\u200b\uff0c\u200b\u4f46\u200b\u8fd9\u200b\u901a\u5e38\u200b\u662f\u200b\u4e0d\u5fc5\u8981\u200b\u7684\u200b\uff0c\u200b\u5b83\u4eec\u200b\u4e0d\u4f1a\u200b\u6e05\u7406\u200b\u51fa\u200b\u51e0\u5341\u200b MB \u200b\u7684\u200b\u5bb9\u91cf\u200b\u3002
\u200b\u5bf9\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u6267\u884c\u200b Trim
\u200b\u518d\u6b21\u200b\u4ee5\u200b\u7ba1\u7406\u5458\u200b\u8eab\u4efd\u200b\u6253\u5f00\u200b PowerShell\uff0c\u200b\u6267\u884c\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b\uff1a
Optimize-Volume -DriveLetter X -ReTrim -Defrag -SlabConsolidate -Verbose\n
\uff08\u200b\u5982\u679c\u200b\u547d\u4ee4\u200b\u8fd0\u884c\u200b\u5f97\u200b\u592a\u6162\u200b\u4e86\u200b\uff0c\u200b\u4f60\u200b\u53ef\u4ee5\u200b\u53bb\u6389\u200b -SlabConsolidate
\u200b\u53c2\u6570\u200b\u3002\uff09
\u200b\u4ee5\u4e0a\u200b\u4efb\u52a1\u200b\u5b8c\u6210\u200b\u540e\u200b\uff0c\u200b\u5173\u95ed\u200b Windows \u200b\u865a\u62df\u673a\u200b\u5e76\u200b\u89e3\u9664\u200b\u6302\u8f7d\u200b\u786c\u76d8\u200b\uff0c\u200b\u7136\u540e\u200b\u518d\u6b21\u200b\u8f6c\u6362\u200b\u5e76\u200b\u538b\u7f29\u200b\u955c\u50cf\u200b\uff1a
qemu-img convert -p -c -f qcow2 -O qcow2 win10.qcow2 win10-new.qcow2\n
\u200b\u6b64\u65f6\u200b\u7684\u200b win10-new.qcow2
\u200b\u5bb9\u91cf\u200b\u5e94\u8be5\u200b\u80fd\u200b\u7f29\u51cf\u200b\u81f3\u200b 10-12 GB\uff0c\u200b\u53ef\u4ee5\u200b\u4fdd\u5b58\u200b\u4f5c\u4e3a\u200b\u6b63\u5f0f\u200b\u955c\u50cf\u200b\u4e86\u200b\uff0c\u200b\u521a\u624d\u200b\u7684\u200b win10.qcow2
\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5220\u9664\u200b\u6216\u200b\u8986\u76d6\u200b\u6389\u200b\u4e86\u200b\u3002