From 81a1d743a13de3af43a49e10205902d97874c16a Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 4 Jul 2024 19:43:50 +0000 Subject: [PATCH] Auto deploy from GitHub Actions build 360 --- changelog/index.html | 2 +- search/search_index.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog/index.html b/changelog/index.html index 59208cfc..99bebf73 100644 --- a/changelog/index.html +++ b/changelog/index.html @@ -2080,7 +2080,7 @@

2024 年42b2075 @ USTC-vlab/sshmux

diff --git a/search/search_index.json b/search/search_index.json index f1d0239e..b8149e32 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\u200b\\u3000\\-\u3001\u3002\uff0c\uff0e\uff1f\uff01\uff1b]+","pipeline":["stemmer"]},"docs":[{"location":"","title":"\u8fdc\u7a0b\u6559\u5b66\u200b\u4e91\u200b\u684c\u9762\u200b\u5e73\u53f0","text":"

\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

"},{"location":"#resources","title":"\u8d44\u6e90","text":""},{"location":"changelog/","title":"\u66f4\u65b0\u200b\u5386\u53f2","text":"

\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

golang.org/x/crypto/ssh/handshake.go
// 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

7 \u200b\u6708\u200b 4 \u200b\u65e5\u200b

\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

\u200b\u7ec6\u8282\u200b

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

4 \u200b\u6708\u200b 13 \u200b\u65e5\u200b

\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

2 \u200b\u6708\u200b 14 \u200b\u65e5\u200b

\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

"},{"location":"changelog/#2023-\u5e74","title":"2023 \u200b\u5e74","text":"11 \u200b\u6708\u200b 16 \u200b\u65e5\u200b

\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\u200b

Vlab 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

10 \u200b\u6708\u200b 1 \u200b\u65e5\u200b

\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

9 \u200b\u6708\u200b 4 \u200b\u65e5\u200b

\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

8 \u200b\u6708\u200b 22 \u200b\u65e5\u200b

\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

\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

4 \u200b\u6708\u200b 10 \u200b\u65e5\u200b

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

3 \u200b\u6708\u200b 5 \u200b\u65e5\u200b

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

"},{"location":"changelog/#2021-\u5e74","title":"2021 \u200b\u5e74","text":"10 \u200b\u6708\u200b 27 \u200b\u65e5\u200b

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

10 \u200b\u6708\u200b 22 \u200b\u65e5\u200b

\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

10 \u200b\u6708\u200b 1 \u200b\u65e5\u200b

\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

3 \u200b\u6708\u200b 30 \u200b\u65e5\u200b

\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\u200b

Vivado \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\u200b

SSH \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\u200b

2019 \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\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

"},{"location":"traps/","title":"\u8e29\u200b\u5751\u200b\u8bb0\u5f55","text":""},{"location":"traps/#proxmox-ve","title":"Proxmox VE","text":""},{"location":"traps/#\u5728\u5411\u96c6\u7fa4\u6dfb\u52a0\u8282\u70b9\u65f6\u9700\u8981\u4fdd\u8bc1\u96c6\u7fa4\u4e2d\u5df2\u6709\u7684\u8282\u70b9\u5168\u90e8\u5f00\u542f\u5e76\u6b63\u5e38\u8fde\u63a5","title":"\u5728\u200b\u5411\u200b\u96c6\u7fa4\u200b\u6dfb\u52a0\u200b\u8282\u70b9\u200b\u65f6\u200b\uff0c\u200b\u9700\u8981\u200b\u4fdd\u8bc1\u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u5df2\u6709\u200b\u7684\u200b\u8282\u70b9\u200b\u5168\u90e8\u200b\u5f00\u542f\u200b\u5e76\u200b\u6b63\u5e38\u200b\u8fde\u63a5","text":"

\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

\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a

  1. \u200b\u5173\u95ed\u200b pve-cluster.service
  2. \u200b\u6267\u884c\u200b pmxcfs -l\uff0c\u200b\u5c06\u200b\u96c6\u7fa4\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u4ee5\u200b local mode \u200b\u542f\u52a8\u200b
  3. \u200b\u4ece\u200b\u6b63\u5e38\u200b\u8fd0\u884c\u200b\u7684\u200b\u8282\u70b9\u200b\u4e0a\u200b\u590d\u5236\u200b /etc/pve/corosync.conf\uff0c\u200b\u8986\u76d6\u200b\u9519\u8bef\u200b\u8282\u70b9\u200b\u7684\u200b\u76f8\u5e94\u200b\u6587\u4ef6\u200b
  4. killall pmxcfs
  5. \u200b\u91cd\u542f\u200b pve-cluster.service \u200b\u548c\u200b corosync.service
"},{"location":"traps/#ha-\u63d0\u793a-service-ct100-in-error-state-must-be-disabled-and-fixed-first","title":"HA \u200b\u63d0\u793a\u200b 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

"},{"location":"traps/#migrate-\u63d0\u793a-error-migration-aborted-duration-000000-ct-is-locked-migrate","title":"Migrate \u200b\u63d0\u793a\u200b 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

"},{"location":"traps/#\u89e3\u51b3\u6b65\u9aa4","title":"\u89e3\u51b3\u200b\u6b65\u9aa4","text":"
  1. \u200b\u5f00\u673a\u200b\u5931\u8d25\u200b\uff0c\u200b\u8fdb\u5165\u200b initramfs\uff0c\u200b\u8fd9\u91cc\u200b\u6709\u4e2a\u200b busybox \u200b\u548c\u200b lvm \u200b\u5de5\u5177\u200b
  2. \u200b\u7f16\u8f91\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\uff09
  3. lvm 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\u200b
  4. lvm 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
  5. chroot \u200b\u8fdb\u53bb\u200b\uff0c\u200b\u628a\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\uff09
  6. update-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

"},{"location":"traps/#ct-100-\u548c-ct-101-\u65e0\u6cd5\u542f\u52a8","title":"CT 100 \u200b\u548c\u200b CT 101 \u200b\u65e0\u6cd5\u200b\u542f\u52a8","text":"

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

"},{"location":"traps/#\u5c06-pveroot-\u6539\u4e3a-lvm-mirror-\u5377\u540e\u5f00\u673a\u5361\u5728-loading-initial-ramdisk","title":"\u5c06\u200b pve/root \u200b\u6539\u4e3a\u200b LVM mirror \u200b\u5377\u540e\u200b\u5f00\u673a\u200b\u5361\u200b\u5728\u200b Loading initial ramdisk","text":"

\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

  1. \u200b\u7f16\u8f91\u200b /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
  2. \u200b\u76f4\u63a5\u200b\u5b89\u88c5\u200b 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\u200b lvs \u200b\u4e2d\u200b\u663e\u793a","text":"

\u200b\u75c7\u72b6\u200b\uff1a

\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

ifupdownifupdown2
auto 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

"},{"location":"traps/#linux-arp","title":"ARP \u200b\u95ee\u9898","text":"

\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\u200b
flowchart 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

"},{"location":"traps/#iptables-legacy-nft","title":"iptables-legacy \u200b\u4e0e\u200b iptables-nft","text":"

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

"},{"location":"traps/#docker-in-lxc-\u542f\u52a8\u5931\u8d25-proxmox-ve-7","title":"Docker in LXC \u200b\u542f\u52a8\u200b\u5931\u8d25\u200b (Proxmox VE 7)","text":"

\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

"},{"location":"traps/#tcpdump-\u8fd0\u884c\u65e0\u8f93\u51fa","title":"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

"},{"location":"traps/#\u5904\u7406-fork-bomb","title":"\u5904\u7406\u200b fork bomb","text":"
  1. \u200b\u627e\u5230\u200b\u95ee\u9898\u200b\u4e3b\u673a\u200b\uff0c\u200b\u4ece\u200b /proc/<\u200b\u5f88\u5927\u200b\u7684\u200b PID>/mounts \u200b\u83b7\u5f97\u200b VMID
  2. echo 1 > /sys/fs/cgroup/lxc/<VMID>/cgroup.kill
  3. \u200b\u7b49\u200b\u4e00\u6bb5\u65f6\u95f4\u200b\uff0c\u200b\u8ba9\u200b kernel \u200b\u6162\u6162\u200b\u6740\u200b\uff08cgroup.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\uff09
"},{"location":"traps/#\u8c03\u8bd5-failed-to-run-lxchookpre-start-for-container","title":"\u8c03\u8bd5\u200b \"Failed to run lxc.hook.pre-start for container\"","text":"
  1. \u200b\u5728\u200b\u5bf9\u5e94\u200b\u7684\u200b\u8282\u70b9\u200b\u4e0a\u200b\u6267\u884c\u200b lvchange -ay \u200b\u6fc0\u6d3b\u200b\u7528\u6237\u200b\u76d8\u200b
  2. \u200b\u6267\u884c\u200b lxc-start -n <vmid> -F -I DEBUG -o debug.log
  3. \u200b\u542f\u52a8\u200b\u5931\u8d25\u200b\u540e\u200b\u67e5\u770b\u200b debug.log \u200b\u5185\u5bb9\u200b

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.list
deb 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

"},{"location":"history/gen1/","title":"Vlab \u200b\u7b2c\u4e00\u4ee3\u200b\u670d\u52a1\u5668","text":"

\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

"},{"location":"history/gen1/#containerization","title":"\u865a\u62df\u5316","text":"

\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

"},{"location":"kvm/cloud-init/#\u89e3\u51b3\u4ece\u540c\u4e00\u6a21\u677f\u4e2d\u521b\u5efa\u7684\u865a\u62df\u673a\u6709\u76f8\u540c\u7684-machine-id-\u95ee\u9898","title":"\u89e3\u51b3\u200b\u4ece\u200b\u540c\u4e00\u200b\u6a21\u677f\u200b\u4e2d\u200b\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u6709\u200b\u76f8\u540c\u200b\u7684\u200b machine-id \u200b\u95ee\u9898","text":""},{"location":"kvm/cloud-init/#\u65b9\u6cd5-1","title":"\u65b9\u6cd5\u200b 1","text":"

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

"},{"location":"kvm/cloud-init/#\u5b89\u88c5\u5fc5\u8981\u8f6f\u4ef6\u5305","title":"\u5b89\u88c5\u200b\u5fc5\u8981\u200b\u8f6f\u4ef6\u5305","text":"

\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

  1. generator

    \u200b\u6b64\u200b\u9636\u6bb5\u200b\u68c0\u6d4b\u200b ci \u200b\u662f\u5426\u200b\u88ab\u200b\u7981\u7528\u200b

  2. 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

  3. 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

  4. 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

  5. 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

"},{"location":"kvm/cloud-init/#user-data-\u683c\u5f0f","title":"User-Data \u200b\u683c\u5f0f","text":""},{"location":"kvm/cloud-init/#user-data-script","title":"User-Data Script","text":"

\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

"},{"location":"kvm/cloud-init/#cloud-config-data","title":"Cloud Config Data","text":"

\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

"},{"location":"kvm/cloud-init/#\u90e8\u7f72\u65b9\u5f0f","title":"\u90e8\u7f72\u200b\u65b9\u5f0f","text":"
  1. \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

  2. 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
"},{"location":"kvm/cloud-init/#\u5176\u4ed6\u95ee\u9898","title":"\u5176\u4ed6\u200b\u95ee\u9898","text":"

\u200b\u4fee\u590d\u200b\u62a5\u9519\u200b:

  1. \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

"},{"location":"networking/","title":"\u7f51\u7edc\u200b\u914d\u7f6e","text":"

\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

"},{"location":"networking/firewall/#config","title":"\u914d\u7f6e\u6587\u4ef6","text":"

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

"},{"location":"networking/firewall/#config-host","title":"\u4e3b\u673a\u200b\u8bbe\u7f6e","text":"

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.conf
install 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

ifupdown2ifupdown
auto 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

"},{"location":"networking/intranet/","title":"\u5bb9\u5668\u200b\u5185\u200b\u7f51","text":"

\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\uff09

Info

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":""},{"location":"networking/ips/#\u5185\u7f51-ipv6","title":"\u5185\u200b\u7f51\u200b IPv6","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":""},{"location":"records/2020-03-31/#\u672a\u5b8c\u6210","title":"\u672a\u200b\u5b8c\u6210","text":""},{"location":"records/2020-03-31/#\u9047\u5230\u95ee\u9898","title":"\u9047\u5230\u200b\u95ee\u9898","text":""},{"location":"records/2020-03-31/#\u7f3a\u5c11\u7269\u8d44\u9700\u8981\u91c7\u8d2d","title":"\u7f3a\u5c11\u200b\u7269\u8d44\u200b\uff08\u200b\u9700\u8981\u200b\u91c7\u8d2d\u200b\uff09","text":""},{"location":"records/2020-08-01/","title":"2020 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":""},{"location":"records/2020-08-01/#\u7cfb\u7edf\u7ef4\u62a4mtu-\u8bbe\u7f6e","title":"\u7cfb\u7edf\u7ef4\u62a4\u200b\uff08MTU \u200b\u8bbe\u7f6e\u200b\uff09","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

"},{"location":"records/2020-08-01/#pv8-\u5149\u7ea4\u7f51\u7edc\u95ee\u9898","title":"pv8 \u200b\u5149\u7ea4\u7f51\u7edc\u200b\u95ee\u9898","text":"

\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":""},{"location":"records/2021-03-18/#page-3---\u7528\u91cf\u7edf\u8ba1","title":"Page 3 - \u200b\u7528\u91cf\u200b\u7edf\u8ba1","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":""},{"location":"records/2021-03-18/#page-5---vlab-\u8f6f\u4ef6\u7ec4\u5408","title":"Page 5 - Vlab \u200b\u8f6f\u4ef6\u200b\u7ec4\u5408","text":""},{"location":"records/2021-03-18/#page-6---\u6d4f\u89c8\u5668-vs-code","title":"Page 6 - \u200b\u6d4f\u89c8\u5668\u200b VS Code","text":""},{"location":"records/2021-03-18/#page-7---\u5f00\u53d1\u6587\u6863\u7ef4\u62a4\u6587\u6863","title":"Page 7 - \u200b\u5f00\u53d1\u200b\u6587\u6863\u200b/\u200b\u7ef4\u62a4\u200b\u6587\u6863","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":""},{"location":"records/2021-03-18/#\u4f1a\u8bae\u7b14\u8bb0\u6539\u8fdb\u5efa\u8bae--\u63a8\u5e7f\u8ba1\u5212","title":"\u4f1a\u8bae\u200b\u7b14\u8bb0\u200b\uff08\u200b\u6539\u8fdb\u200b\u5efa\u8bae\u200b & \u200b\u63a8\u5e7f\u200b\u8ba1\u5212\u200b\uff09","text":""},{"location":"records/2021-06-13/","title":"2021 \u200b\u5e74\u200b 6 \u200b\u6708\u200b 13 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":""},{"location":"records/2021-06-13/#\u79fb\u9664-django-\u4ee3\u7801\u91cc\u7684\u865a\u62df\u673a-id-\u504f\u79fb\u91cf","title":"\u79fb\u9664\u200b Django \u200b\u4ee3\u7801\u200b\u91cc\u200b\u7684\u200b\u201c\u200b\u865a\u62df\u673a\u200b ID \u200b\u504f\u79fb\u91cf\u200b\u201d","text":"

\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":""},{"location":"records/2021-08-21/","title":"2021 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 21 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":""},{"location":"records/2021-08-21/#\u89e3\u9664\u56fa\u6001\u786c\u76d8\u7684-raid","title":"\u89e3\u9664\u200b\u56fa\u6001\u200b\u786c\u76d8\u200b\u7684\u200b RAID","text":"

\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

  1. \u200b\u4f7f\u7528\u200b testdisk \u200b\u627e\u5230\u200b /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\u3002
  2. \u200b\u4f7f\u7528\u200b vgscan \u200b\u52a0\u8f7d\u200b LVM \u200b\u4fe1\u606f\u200b\u3002\u200b\u5047\u8bbe\u200b rootfs \u200b\u662f\u200b /dev/pve/root
  3. \u200b\u8fd0\u884c\u200b 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!\u3002
  4. \u200b\u8fd0\u884c\u200b lvresize -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
  5. \u200b\u4f7f\u7528\u200b testdisk \u200b\u627e\u5230\u200b /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\u3002
  6. \u200b\u4f7f\u7528\u200b fdisk -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\u3002
  7. lvconvert -m1 pve/root\uff0c\u200b\u8bbe\u7f6e\u200b rootfs \u200b\u4e3a\u200b RAID 1.
  8. \u200b\u6309\u7167\u200b https://ibug.io/blog/2021/08/proxmox-disassemble-hardware-raid1/#fix-grub \u200b\u7684\u200b\u8bf4\u660e\u200b\u6302\u8f7d\u200b\u5fc5\u8981\u200b\u7684\u200b\u5377\u200b\uff0c\u200b\u7136\u540e\u200b 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\u3002
"},{"location":"records/2021-08-21/#\u5347\u7ea7\u81f3-proxmox-ve-7","title":"\u5347\u7ea7\u200b\u81f3\u200b Proxmox VE 7","text":"

PVE \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

\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

"},{"location":"records/2021-08-21/#\u66f4\u6362-apt-\u6e90\u81f3\u4e2d\u79d1\u5927\u955c\u50cf\u7ad9\u53ca\u7f29\u51cf\u7528\u6237\u78c1\u76d8\u7a7a\u95f4","title":"\u66f4\u6362\u200b APT \u200b\u6e90\u81f3\u200b\u4e2d\u79d1\u5927\u200b\u955c\u50cf\u200b\u7ad9\u200b\u53ca\u200b\u7f29\u51cf\u200b\u7528\u6237\u200b\u78c1\u76d8\u7a7a\u95f4","text":"

\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\u200b change-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":""},{"location":"records/2021-08-28/","title":"2021 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 28 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","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

"},{"location":"records/2021-08-28/#\u5bb9\u5668\u5907\u4efd\u9519\u8bef","title":"\u5bb9\u5668\u200b\u5907\u4efd\u200b\u9519\u8bef","text":"

\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

\u200b\u76ee\u524d\u200b\u7684\u200b\u4e34\u65f6\u200b\u89e3\u51b3\u65b9\u6848\u200b\uff1a

"},{"location":"records/2021-09-20/","title":"2021 \u200b\u5e74\u200b 9 \u200b\u6708\u200b 20 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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

  1. \u200b\u66f4\u65b0\u200b\u4e86\u200b\u6240\u6709\u200b\u8282\u70b9\u200b\u7684\u200b Linux \u200b\u5185\u6838\u200b\u7248\u672c\u200b\uff0c\u200b\u4ee5\u200b\u4fee\u590d\u200b CVE-2022-0185 \u200b\u5b89\u5168\u6f0f\u6d1e\u200b\u3002
  2. \u200b\u4e3a\u200b\u6240\u6709\u200b\u5b66\u751f\u200b\u5bb9\u5668\u200b\u8c03\u6574\u200b\u4e86\u200b\u4ee5\u4e0b\u200b\u914d\u7f6e\u200b\uff1a
    1. \u200b\u91cd\u65b0\u200b\u8bbe\u7f6e\u200b\u4e86\u200b\u7528\u6237\u200b CA \u200b\u8bc1\u4e66\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u76f8\u5e94\u200b\u7684\u200b\u914d\u7f6e\u200b\u9879\u200b\uff1b
    2. \u200b\u8c03\u6574\u200b\u4e86\u200b apparmor \u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u4fee\u6b63\u200b tcpdump \u200b\u65e0\u6cd5\u200b\u6b63\u5e38\u200b\u4f7f\u7528\u200b\u7684\u200b\u95ee\u9898\u200b\uff1b
    3. \u200b\u6dfb\u52a0\u200b\u4e86\u200b Vlab \u200b\u8f6f\u4ef6\u200b\u6e90\u200b\uff1b
    4. \u200b\u5220\u9664\u200b\u4e86\u200b\u5bb9\u5668\u200b\u684c\u9762\u73af\u5883\u200b\u4e0d\u200b\u9700\u8981\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u3002
  3. \u200b\u5c1d\u8bd5\u200b\u4e3a\u200b\u5b66\u751f\u200b\u5bb9\u5668\u200b\u4fee\u590d\u200b Policykit-1 \u200b\u7684\u200b\u672c\u5730\u200b\u63d0\u6743\u200b\u6f0f\u6d1e\u200b\uff0c\u200b\u4f46\u662f\u200b\u7531\u4e8e\u200b 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

\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

  1. \u200b\u5220\u9664\u200b\u5c11\u91cf\u200b LV\uff0c\u200b\u4f7f\u5f97\u200b MDA \u200b\u6709\u200b\u5c11\u91cf\u200b\u7684\u200b\u7a7a\u95f4\u200b\u53ef\u4ee5\u200b\u8bb0\u5f55\u200b\u5728\u200b VG \u200b\u4e2d\u200b\u52a0\u5165\u200b\u65b0\u76d8\u200b\u7684\u200b\u4fe1\u606f\u200b\u3002\u200b\u901a\u5e38\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u5220\u6389\u200b\u4e00\u4e2a\u200b\u5c31\u591f\u200b\u4e86\u200b\uff08\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5c06\u200b\u5176\u200b\u79fb\u52a8\u200b\u81f3\u200b\u5176\u4ed6\u200b VG \u200b\u4e2d\u200b\uff09\u3002
  2. \u200b\u6dfb\u52a0\u200b\u4e00\u5757\u200b\u5c0f\u76d8\u200b\uff081G\uff0c\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u66b4\u9732\u200b\u4e00\u4e2a\u200b\u5c0f\u200b LUN\uff09\uff0c\u200b\u5728\u200b\u5404\u200b\u8282\u70b9\u200b\u4e0a\u200b\u8fd0\u884c\u200b iscsiadm -m session --rescan\uff0c\u200b\u65e0\u987b\u200b\u505c\u673a\u200b\u6216\u200b\u4e2d\u65ad\u200b\u4efb\u4f55\u200b\u670d\u52a1\u200b\u3002
  3. pvcreate --metadatasize 64m /dev/XXX
  4. \u200b\u5c06\u200b\u65b0\u76d8\u200b\u52a0\u5165\u200b VG \u200b\u4e2d\u200b\uff08vgextend\uff09\u3002
  5. \u200b\u8bbe\u7f6e\u200b\u539f\u200b\u78c1\u76d8\u200b metadataignore \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

"},{"location":"records/2022-11-21/","title":"2022 \u200b\u5e74\u200b 11 \u200b\u6708\u200b 21 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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

  1. \u200b\u767b\u51fa\u200b\u6240\u6709\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\uff0c\u200b\u91cd\u7f6e\u200b\u5b58\u50a8\u9635\u5217\u200b\u8ba4\u8bc1\u200b\u51ed\u636e\u200b\u5e76\u200b\u91cd\u542f\u200b\u9635\u5217\u200b\uff1b
  2. \u200b\u4fee\u6539\u200b\u5bb9\u5668\u200b user namespace idmap \u200b\u8303\u56f4\u200b\u4ee5\u200b\u652f\u6301\u200b rootless podman\uff1b
  3. \u200b\u66f4\u65b0\u200b\u6240\u6709\u200b\u4e3b\u673a\u200b\u8282\u70b9\u200b\u8f6f\u4ef6\u5305\u200b\u3002
"},{"location":"records/2022-11-21/#\u767b\u51fa-iscsi-\u4f1a\u8bdd\u8fc7\u7a0b","title":"\u767b\u51fa\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\u8fc7\u7a0b","text":"
  1. \u200b\u9996\u5148\u200b\u505c\u6b62\u200b\u6240\u6709\u200b\u5b66\u751f\u200b\u5bb9\u5668\u200b\u53ca\u5176\u200b\u4ed6\u200b\u4f9d\u8d56\u4e8e\u200b\u5b58\u50a8\u9635\u5217\u200b\u7684\u200b\u670d\u52a1\u200b\uff1b
  2. \u200b\u5728\u200b\u5404\u200b\u8282\u70b9\u200b\u8fd0\u884c\u200b iscsiadm -m node -T <target-name> -U all \u200b\u767b\u51fa\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\uff1b
  3. \u200b\u5728\u200b\u5404\u200b\u8282\u70b9\u200b\u8fd0\u884c\u200b iscsiadm -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

"},{"location":"records/2022-11-21/#\u4fee\u6539\u5bb9\u5668-user-namespace-idmap-\u8303\u56f4","title":"\u4fee\u6539\u200b\u5bb9\u5668\u200b user namespace idmap \u200b\u8303\u56f4","text":"

\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

"},{"location":"records/2022-11-21/#\u5b58\u50a8\u9635\u5217","title":"\u5b58\u50a8\u9635\u5217","text":"

\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

"},{"location":"records/2023-01-28/#vivado-2019-\u4e0e-ubuntu-2204-\u7684\u517c\u5bb9\u6027\u95ee\u9898","title":"Vivado 2019 \u200b\u4e0e\u200b Ubuntu 22.04 \u200b\u7684\u200b\u517c\u5bb9\u6027\u95ee\u9898","text":"

\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

"},{"location":"records/2023-01-28/#\u5b9a\u65f6\u4efb\u52a1\u5bfc\u81f4\u7684-io-\u62e5\u5835\u95ee\u9898","title":"\u5b9a\u65f6\u200b\u4efb\u52a1\u200b\u5bfc\u81f4\u200b\u7684\u200b I/O \u200b\u62e5\u5835\u200b\u95ee\u9898","text":"

\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

"},{"location":"records/2023-02-17/#filestash-\u5347\u7ea7","title":"Filestash \u200b\u5347\u7ea7","text":"

\u200b\u66f4\u65b0\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a

"},{"location":"records/2023-02-17/#\u5176\u4ed6","title":"\u5176\u4ed6","text":""},{"location":"records/2023-03-05/","title":"2023 \u200b\u5e74\u200b 3 \u200b\u6708\u200b 5 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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":""},{"location":"records/2023-08-06/","title":"2023 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 6 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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

"},{"location":"records/2023-10-01/#\u4e3a\u6240\u6709\u865a\u62df\u673a\u542f\u7528\u9632\u706b\u5899","title":"\u4e3a\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u542f\u7528\u200b\u9632\u706b\u5899","text":""},{"location":"records/2023-10-01/#vm-firewall","title":"\u865a\u62df\u673a\u200b\u5c42\u9762\u200b\u7684\u200b\u9632\u706b\u5899","text":"

\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

"},{"location":"records/2023-10-01/#miscellaneous","title":"\u5176\u4ed6\u200b\u6742\u9879","text":"

\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

"},{"location":"records/2023-10-01/#traps","title":"\u8e29\u200b\u5751","text":""},{"location":"records/2023-11-18/","title":"2023 \u200b\u5e74\u200b 11 \u200b\u6708\u200b 18 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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

"},{"location":"references/desktop/","title":"X Desktop \u200b\u56fe\u6807\u200b\u914d\u7f6e","text":""},{"location":"references/desktop/#xilinx-vivado","title":"Xilinx Vivado","text":"
[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

  1. \u200b\u6709\u200b\u6559\u5e08\u200b\u7684\u200b glzjh \u200b\u503c\u4e3a\u200b \"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
  2. \u200b\u6709\u200b SA \u200b\u65b0\u751f\u200b\u7684\u200b glzjh \u200b\u503c\u4e3a\u200b \"U0000000\"
  3. \u200b\u6709\u200b SA \u200b\u65b0\u751f\u200b\u7684\u200b glzjh \u200b\u503c\u4e3a\u200b \"null\"
"},{"location":"references/ustccas/#\u4eba\u5458\u5728\u6821\u72b6\u6001\u7801","title":"\u4eba\u5458\u200b\u5728\u6821\u200b\u72b6\u6001\u200b\u7801","text":"
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

"},{"location":"servers/ct100/#\u8f6c\u53d1-nat-\u90e8\u5206","title":"\u8f6c\u53d1\u200b NAT \u200b\u90e8\u5206","text":"
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

"},{"location":"servers/ct100/#mtu-\u8bbe\u7f6e","title":"MTU \u200b\u8bbe\u7f6e","text":"

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

"},{"location":"servers/ct100/#vlab-dev-vpn","title":"Vlab Dev VPN","text":"

\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

  1. Logging from iptables to rsyslog inside container fails. - Linux Continers Mailing Lists\u00a0\u21a9

  2. iptables logging inside LXC containers - Proxmox Support Forum\u00a0\u21a9

"},{"location":"servers/ct101/","title":"Web \u200b\u670d\u52a1\u5668\u200b (CT 101)","text":"

\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

/etc/nginx/snippets/well-known
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

"},{"location":"servers/ct101/#user-docs","title":"Webhook \u200b\u4e0e\u200b\u7528\u6237\u6587\u6863","text":"

\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

  1. \u200b\u68c0\u67e5\u200b https://grafana.com/docs/grafana/latest/setup-grafana/upgrade-grafana \u200b\u662f\u5426\u200b\u5305\u542b\u200b\u53ef\u80fd\u200b\u7834\u574f\u200b\u5f53\u524d\u200b\u529f\u80fd\u200b\u7684\u200b\u4fee\u6539\u200b\u3002
  2. \u200b\u6267\u884c\u200b docker pull grafana/grafana:latest
  3. \u200b\u6267\u884c\u200b ~/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

/etc/nginx/snippets/nginx-pass
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-location
error_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

/etc/cron.daily/sync-cert
#!/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

"},{"location":"servers/pve/#recovery-sshd","title":"Recovery SSHd","text":"

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

"},{"location":"servers/pve/#extra-settings","title":"\u989d\u5916\u200b\u7684\u200b\u7cfb\u7edf\u914d\u7f6e","text":"

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/subgid
root: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.conf
lxc.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.conf
lxc.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

"},{"location":"testing/#\u4e0e\u751f\u4ea7\u73af\u5883\u7684\u8054\u7cfb","title":"\u4e0e\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u7684\u200b\u8054\u7cfb","text":""},{"location":"testing/#\u767b\u5f55","title":"\u767b\u5f55","text":"

\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

"},{"location":"testing/devvpn/#configure","title":"\u914d\u7f6e\u200b OpenVPN Server","text":"

\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

"},{"location":"testing/devvpn/#openvpn-server","title":"OpenVPN Server","text":"

\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\u200b
client\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

/etc/openvpn/ca/genconf.sh
#!/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

"},{"location":"ui/vncmux/#vncmux-cli-\u5de5\u5177","title":"vncmux-cli \u200b\u5de5\u5177","text":"

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

"},{"location":"ui/vncmux/#\u5217\u51fa\u5728\u7ebf\u7528\u6237","title":"\u5217\u51fa\u200b\u5728\u7ebf\u200b\u7528\u6237","text":"

\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

"},{"location":"ui/vncmux/#\u65ad\u5f00\u7528\u6237\u8fde\u63a5","title":"\u65ad\u5f00\u200b\u7528\u6237\u200b\u8fde\u63a5","text":"

\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

"},{"location":"ui/vncmux/#\u66f4\u6362\u901a\u77e5\u56fe\u7247","title":"\u66f4\u6362\u200b\u901a\u77e5\u200b\u56fe\u7247","text":"

\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

"},{"location":"ui/vncmux/#\u53d1\u9001\u56fe\u7247","title":"\u53d1\u9001\u200b\u56fe\u7247","text":"

\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

"},{"location":"ui/vncmux/#\u6253\u5f00\u548c\u5173\u95ed\u901a\u77e5","title":"\u6253\u5f00\u200b\u548c\u200b\u5173\u95ed\u200b\u901a\u77e5","text":"

\u200b\u547d\u4ee4\u200b\u5206\u522b\u200b\u4e3a\u200b enable-notification \u200b\u548c\u200b disable-notification

"},{"location":"ui/vncmux/#\u6253\u5f00\u548c\u5173\u95ed-realvnc-\u6709\u635f\u538b\u7f29","title":"\u6253\u5f00\u200b\u548c\u200b\u5173\u95ed\u200b RealVNC \u200b\u6709\u635f\u538b\u7f29","text":"

\u200b\u547d\u4ee4\u200b\u5206\u522b\u200b\u4e3a\u200b enable-realvnc-lossy \u200b\u548c\u200b disable-realvnc-lossy

"},{"location":"ui/vncmux/#\u8bbe\u5b9a-realvnc-\u6709\u635f\u538b\u7f29\u8d28\u91cf\u7b49\u7ea7","title":"\u8bbe\u5b9a\u200b RealVNC \u200b\u6709\u635f\u538b\u7f29\u200b\u8d28\u91cf\u200b\u7b49\u7ea7","text":"

\u200b\u547d\u4ee4\u200b\u4e3a\u200b set-realvnc-jpeg-level <0-9>

"},{"location":"vlab-software/","title":"Vlab \u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\u5957\u88c5","text":"

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

"},{"location":"vlab-software/#\u4e3a\u865a\u62df\u673a\u914d\u7f6e-vlab-software","title":"\u4e3a\u200b\u865a\u62df\u673a\u200b\u914d\u7f6e\u200b Vlab Software","text":"

\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:

apt 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

"},{"location":"workflow/miscellaneous/#\u4ece\u4e3b\u673a\u4e0a\u5bfb\u627e-pid-\u6240\u5c5e\u7684\u5bb9\u5668","title":"\u4ece\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u5bfb\u627e\u200b PID \u200b\u6240\u5c5e\u200b\u7684\u200b\u5bb9\u5668","text":"

\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

"},{"location":"workflow/miscellaneous/#\u65b9\u6cd5-1","title":"\u65b9\u6cd5\u200b 1","text":"

\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

"},{"location":"workflow/new-host/","title":"\u914d\u7f6e\u200b\u65b0\u200b\u4e3b\u673a\u200b\u5e76\u200b\u52a0\u5165\u200b\u96c6\u7fa4","text":"

\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

"},{"location":"workflow/new-host/#\u8fdc\u7a0b\u8bbf\u95ee","title":"\u8fdc\u7a0b\u200b\u8bbf\u95ee","text":"

\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

"},{"location":"workflow/new-host/#\u8f6f\u4ef6\u6e90","title":"\u8f6f\u4ef6\u200b\u6e90","text":"

\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

"},{"location":"workflow/new-host/#\u914d\u7f6e\u7f51\u5361","title":"\u914d\u7f6e\u200b\u7f51\u5361","text":"

\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

"},{"location":"workflow/new-host/#\u914d\u7f6e-lvm","title":"\u914d\u7f6e\u200b LVM","text":"

\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

"},{"location":"workflow/new-host/#\u6302\u8f7d-nfs-\u955c\u50cf\u5171\u4eab","title":"\u6302\u8f7d\u200b NFS \u200b\u955c\u50cf\u200b\u5171\u4eab","text":"

\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

"},{"location":"workflow/new-host/#\u989d\u5916\u7684\u7cfb\u7edf\u8bbe\u7f6e","title":"\u989d\u5916\u200b\u7684\u200b\u7cfb\u7edf\u200b\u8bbe\u7f6e","text":"

\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

\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

\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

\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

\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\u200b
package 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

"},{"location":"workflow/pack-vm-image/#pre-packaging","title":"\u56db\u200b\u3001\u200b\u6253\u5305\u200b\u524d\u200b\u7684\u200b\u5de5\u4f5c","text":"

\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

"},{"location":"workflow/pack-vm-image/#packaging","title":"\u4e94\u200b\u3001\u200b\u6253\u5305","text":"

\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":""},{"location":"workflow/pack-windows-image/","title":"\u6253\u5305\u200b Windows \u200b\u955c\u50cf","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

"},{"location":"workflow/pack-windows-image/#extra-customizations","title":"\u5176\u4ed6\u200b\u81ea\u5b9a\u4e49\u200b\u8bbe\u7f6e","text":"

\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

\u200b\u53c2\u8003\u200b\uff1a\u200b\u4fee\u6539\u200b\u540e\u200b\u7684\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b
[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":""},{"location":"workflow/pack-windows-image/#sysprep","title":"\u4e94\u200b\u3001Sysprep \u200b\u548c\u200b\u6253\u5305","text":"

\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

\u200b\u4e0d\u200b\u6b63\u786e\u200b\u5730\u200b\u5378\u8f7d\u200b\u9884\u88c5\u200b\u7684\u200b UWP \u200b\u5e94\u7528\u200b\u4f1a\u200b\u5bfc\u81f4\u200b Sysprep \u200b\u5931\u8d25\u200b

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

"},{"location":"workflow/pack-windows-image/#optimize-image","title":"\u4f18\u5316\u200b\u865a\u62df\u673a\u200b\u955c\u50cf","text":"

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\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

"},{"location":"workflow/pack-windows-image/#references","title":"\u53c2\u8003\u8d44\u6599","text":""}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\u200b\\u3000\\-\u3001\u3002\uff0c\uff0e\uff1f\uff01\uff1b]+","pipeline":["stemmer"]},"docs":[{"location":"","title":"\u8fdc\u7a0b\u6559\u5b66\u200b\u4e91\u200b\u684c\u9762\u200b\u5e73\u53f0","text":"

\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

"},{"location":"#resources","title":"\u8d44\u6e90","text":""},{"location":"changelog/","title":"\u66f4\u65b0\u200b\u5386\u53f2","text":"

\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

golang.org/x/crypto/ssh/handshake.go
// 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

7 \u200b\u6708\u200b 4 \u200b\u65e5\u200b

\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

\u200b\u7ec6\u8282\u200b

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

4 \u200b\u6708\u200b 13 \u200b\u65e5\u200b

\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

2 \u200b\u6708\u200b 14 \u200b\u65e5\u200b

\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

"},{"location":"changelog/#2023-\u5e74","title":"2023 \u200b\u5e74","text":"11 \u200b\u6708\u200b 16 \u200b\u65e5\u200b

\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\u200b

Vlab 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

10 \u200b\u6708\u200b 1 \u200b\u65e5\u200b

\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

9 \u200b\u6708\u200b 4 \u200b\u65e5\u200b

\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

8 \u200b\u6708\u200b 22 \u200b\u65e5\u200b

\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

\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

4 \u200b\u6708\u200b 10 \u200b\u65e5\u200b

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

3 \u200b\u6708\u200b 5 \u200b\u65e5\u200b

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

"},{"location":"changelog/#2021-\u5e74","title":"2021 \u200b\u5e74","text":"10 \u200b\u6708\u200b 27 \u200b\u65e5\u200b

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

10 \u200b\u6708\u200b 22 \u200b\u65e5\u200b

\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

10 \u200b\u6708\u200b 1 \u200b\u65e5\u200b

\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

3 \u200b\u6708\u200b 30 \u200b\u65e5\u200b

\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\u200b

Vivado \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\u200b

SSH \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\u200b

2019 \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\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

"},{"location":"traps/","title":"\u8e29\u200b\u5751\u200b\u8bb0\u5f55","text":""},{"location":"traps/#proxmox-ve","title":"Proxmox VE","text":""},{"location":"traps/#\u5728\u5411\u96c6\u7fa4\u6dfb\u52a0\u8282\u70b9\u65f6\u9700\u8981\u4fdd\u8bc1\u96c6\u7fa4\u4e2d\u5df2\u6709\u7684\u8282\u70b9\u5168\u90e8\u5f00\u542f\u5e76\u6b63\u5e38\u8fde\u63a5","title":"\u5728\u200b\u5411\u200b\u96c6\u7fa4\u200b\u6dfb\u52a0\u200b\u8282\u70b9\u200b\u65f6\u200b\uff0c\u200b\u9700\u8981\u200b\u4fdd\u8bc1\u200b\u96c6\u7fa4\u200b\u4e2d\u200b\u5df2\u6709\u200b\u7684\u200b\u8282\u70b9\u200b\u5168\u90e8\u200b\u5f00\u542f\u200b\u5e76\u200b\u6b63\u5e38\u200b\u8fde\u63a5","text":"

\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

\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\uff1a

  1. \u200b\u5173\u95ed\u200b pve-cluster.service
  2. \u200b\u6267\u884c\u200b pmxcfs -l\uff0c\u200b\u5c06\u200b\u96c6\u7fa4\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u4ee5\u200b local mode \u200b\u542f\u52a8\u200b
  3. \u200b\u4ece\u200b\u6b63\u5e38\u200b\u8fd0\u884c\u200b\u7684\u200b\u8282\u70b9\u200b\u4e0a\u200b\u590d\u5236\u200b /etc/pve/corosync.conf\uff0c\u200b\u8986\u76d6\u200b\u9519\u8bef\u200b\u8282\u70b9\u200b\u7684\u200b\u76f8\u5e94\u200b\u6587\u4ef6\u200b
  4. killall pmxcfs
  5. \u200b\u91cd\u542f\u200b pve-cluster.service \u200b\u548c\u200b corosync.service
"},{"location":"traps/#ha-\u63d0\u793a-service-ct100-in-error-state-must-be-disabled-and-fixed-first","title":"HA \u200b\u63d0\u793a\u200b 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

"},{"location":"traps/#migrate-\u63d0\u793a-error-migration-aborted-duration-000000-ct-is-locked-migrate","title":"Migrate \u200b\u63d0\u793a\u200b 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

"},{"location":"traps/#\u89e3\u51b3\u6b65\u9aa4","title":"\u89e3\u51b3\u200b\u6b65\u9aa4","text":"
  1. \u200b\u5f00\u673a\u200b\u5931\u8d25\u200b\uff0c\u200b\u8fdb\u5165\u200b initramfs\uff0c\u200b\u8fd9\u91cc\u200b\u6709\u4e2a\u200b busybox \u200b\u548c\u200b lvm \u200b\u5de5\u5177\u200b
  2. \u200b\u7f16\u8f91\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\uff09
  3. lvm 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\u200b
  4. lvm 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
  5. chroot \u200b\u8fdb\u53bb\u200b\uff0c\u200b\u628a\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\uff09
  6. update-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

"},{"location":"traps/#ct-100-\u548c-ct-101-\u65e0\u6cd5\u542f\u52a8","title":"CT 100 \u200b\u548c\u200b CT 101 \u200b\u65e0\u6cd5\u200b\u542f\u52a8","text":"

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

"},{"location":"traps/#\u5c06-pveroot-\u6539\u4e3a-lvm-mirror-\u5377\u540e\u5f00\u673a\u5361\u5728-loading-initial-ramdisk","title":"\u5c06\u200b pve/root \u200b\u6539\u4e3a\u200b LVM mirror \u200b\u5377\u540e\u200b\u5f00\u673a\u200b\u5361\u200b\u5728\u200b Loading initial ramdisk","text":"

\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

  1. \u200b\u7f16\u8f91\u200b /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
  2. \u200b\u76f4\u63a5\u200b\u5b89\u88c5\u200b 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\u200b lvs \u200b\u4e2d\u200b\u663e\u793a","text":"

\u200b\u75c7\u72b6\u200b\uff1a

\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

ifupdownifupdown2
auto 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

"},{"location":"traps/#linux-arp","title":"ARP \u200b\u95ee\u9898","text":"

\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\u200b
flowchart 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

"},{"location":"traps/#iptables-legacy-nft","title":"iptables-legacy \u200b\u4e0e\u200b iptables-nft","text":"

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

"},{"location":"traps/#docker-in-lxc-\u542f\u52a8\u5931\u8d25-proxmox-ve-7","title":"Docker in LXC \u200b\u542f\u52a8\u200b\u5931\u8d25\u200b (Proxmox VE 7)","text":"

\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

"},{"location":"traps/#tcpdump-\u8fd0\u884c\u65e0\u8f93\u51fa","title":"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

"},{"location":"traps/#\u5904\u7406-fork-bomb","title":"\u5904\u7406\u200b fork bomb","text":"
  1. \u200b\u627e\u5230\u200b\u95ee\u9898\u200b\u4e3b\u673a\u200b\uff0c\u200b\u4ece\u200b /proc/<\u200b\u5f88\u5927\u200b\u7684\u200b PID>/mounts \u200b\u83b7\u5f97\u200b VMID
  2. echo 1 > /sys/fs/cgroup/lxc/<VMID>/cgroup.kill
  3. \u200b\u7b49\u200b\u4e00\u6bb5\u65f6\u95f4\u200b\uff0c\u200b\u8ba9\u200b kernel \u200b\u6162\u6162\u200b\u6740\u200b\uff08cgroup.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\uff09
"},{"location":"traps/#\u8c03\u8bd5-failed-to-run-lxchookpre-start-for-container","title":"\u8c03\u8bd5\u200b \"Failed to run lxc.hook.pre-start for container\"","text":"
  1. \u200b\u5728\u200b\u5bf9\u5e94\u200b\u7684\u200b\u8282\u70b9\u200b\u4e0a\u200b\u6267\u884c\u200b lvchange -ay \u200b\u6fc0\u6d3b\u200b\u7528\u6237\u200b\u76d8\u200b
  2. \u200b\u6267\u884c\u200b lxc-start -n <vmid> -F -I DEBUG -o debug.log
  3. \u200b\u542f\u52a8\u200b\u5931\u8d25\u200b\u540e\u200b\u67e5\u770b\u200b debug.log \u200b\u5185\u5bb9\u200b

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.list
deb 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

"},{"location":"history/gen1/","title":"Vlab \u200b\u7b2c\u4e00\u4ee3\u200b\u670d\u52a1\u5668","text":"

\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

"},{"location":"history/gen1/#containerization","title":"\u865a\u62df\u5316","text":"

\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

"},{"location":"kvm/cloud-init/#\u89e3\u51b3\u4ece\u540c\u4e00\u6a21\u677f\u4e2d\u521b\u5efa\u7684\u865a\u62df\u673a\u6709\u76f8\u540c\u7684-machine-id-\u95ee\u9898","title":"\u89e3\u51b3\u200b\u4ece\u200b\u540c\u4e00\u200b\u6a21\u677f\u200b\u4e2d\u200b\u521b\u5efa\u200b\u7684\u200b\u865a\u62df\u673a\u200b\u6709\u200b\u76f8\u540c\u200b\u7684\u200b machine-id \u200b\u95ee\u9898","text":""},{"location":"kvm/cloud-init/#\u65b9\u6cd5-1","title":"\u65b9\u6cd5\u200b 1","text":"

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

"},{"location":"kvm/cloud-init/#\u5b89\u88c5\u5fc5\u8981\u8f6f\u4ef6\u5305","title":"\u5b89\u88c5\u200b\u5fc5\u8981\u200b\u8f6f\u4ef6\u5305","text":"

\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

  1. generator

    \u200b\u6b64\u200b\u9636\u6bb5\u200b\u68c0\u6d4b\u200b ci \u200b\u662f\u5426\u200b\u88ab\u200b\u7981\u7528\u200b

  2. 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

  3. 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

  4. 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

  5. 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

"},{"location":"kvm/cloud-init/#user-data-\u683c\u5f0f","title":"User-Data \u200b\u683c\u5f0f","text":""},{"location":"kvm/cloud-init/#user-data-script","title":"User-Data Script","text":"

\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

"},{"location":"kvm/cloud-init/#cloud-config-data","title":"Cloud Config Data","text":"

\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

"},{"location":"kvm/cloud-init/#\u90e8\u7f72\u65b9\u5f0f","title":"\u90e8\u7f72\u200b\u65b9\u5f0f","text":"
  1. \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

  2. 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
"},{"location":"kvm/cloud-init/#\u5176\u4ed6\u95ee\u9898","title":"\u5176\u4ed6\u200b\u95ee\u9898","text":"

\u200b\u4fee\u590d\u200b\u62a5\u9519\u200b:

  1. \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

"},{"location":"networking/","title":"\u7f51\u7edc\u200b\u914d\u7f6e","text":"

\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

"},{"location":"networking/firewall/#config","title":"\u914d\u7f6e\u6587\u4ef6","text":"

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

"},{"location":"networking/firewall/#config-host","title":"\u4e3b\u673a\u200b\u8bbe\u7f6e","text":"

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.conf
install 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

ifupdown2ifupdown
auto 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

"},{"location":"networking/intranet/","title":"\u5bb9\u5668\u200b\u5185\u200b\u7f51","text":"

\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\uff09

Info

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":""},{"location":"networking/ips/#\u5185\u7f51-ipv6","title":"\u5185\u200b\u7f51\u200b IPv6","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":""},{"location":"records/2020-03-31/#\u672a\u5b8c\u6210","title":"\u672a\u200b\u5b8c\u6210","text":""},{"location":"records/2020-03-31/#\u9047\u5230\u95ee\u9898","title":"\u9047\u5230\u200b\u95ee\u9898","text":""},{"location":"records/2020-03-31/#\u7f3a\u5c11\u7269\u8d44\u9700\u8981\u91c7\u8d2d","title":"\u7f3a\u5c11\u200b\u7269\u8d44\u200b\uff08\u200b\u9700\u8981\u200b\u91c7\u8d2d\u200b\uff09","text":""},{"location":"records/2020-08-01/","title":"2020 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 1 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":""},{"location":"records/2020-08-01/#\u7cfb\u7edf\u7ef4\u62a4mtu-\u8bbe\u7f6e","title":"\u7cfb\u7edf\u7ef4\u62a4\u200b\uff08MTU \u200b\u8bbe\u7f6e\u200b\uff09","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

"},{"location":"records/2020-08-01/#pv8-\u5149\u7ea4\u7f51\u7edc\u95ee\u9898","title":"pv8 \u200b\u5149\u7ea4\u7f51\u7edc\u200b\u95ee\u9898","text":"

\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":""},{"location":"records/2021-03-18/#page-3---\u7528\u91cf\u7edf\u8ba1","title":"Page 3 - \u200b\u7528\u91cf\u200b\u7edf\u8ba1","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":""},{"location":"records/2021-03-18/#page-5---vlab-\u8f6f\u4ef6\u7ec4\u5408","title":"Page 5 - Vlab \u200b\u8f6f\u4ef6\u200b\u7ec4\u5408","text":""},{"location":"records/2021-03-18/#page-6---\u6d4f\u89c8\u5668-vs-code","title":"Page 6 - \u200b\u6d4f\u89c8\u5668\u200b VS Code","text":""},{"location":"records/2021-03-18/#page-7---\u5f00\u53d1\u6587\u6863\u7ef4\u62a4\u6587\u6863","title":"Page 7 - \u200b\u5f00\u53d1\u200b\u6587\u6863\u200b/\u200b\u7ef4\u62a4\u200b\u6587\u6863","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":""},{"location":"records/2021-03-18/#\u4f1a\u8bae\u7b14\u8bb0\u6539\u8fdb\u5efa\u8bae--\u63a8\u5e7f\u8ba1\u5212","title":"\u4f1a\u8bae\u200b\u7b14\u8bb0\u200b\uff08\u200b\u6539\u8fdb\u200b\u5efa\u8bae\u200b & \u200b\u63a8\u5e7f\u200b\u8ba1\u5212\u200b\uff09","text":""},{"location":"records/2021-06-13/","title":"2021 \u200b\u5e74\u200b 6 \u200b\u6708\u200b 13 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":""},{"location":"records/2021-06-13/#\u79fb\u9664-django-\u4ee3\u7801\u91cc\u7684\u865a\u62df\u673a-id-\u504f\u79fb\u91cf","title":"\u79fb\u9664\u200b Django \u200b\u4ee3\u7801\u200b\u91cc\u200b\u7684\u200b\u201c\u200b\u865a\u62df\u673a\u200b ID \u200b\u504f\u79fb\u91cf\u200b\u201d","text":"

\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":""},{"location":"records/2021-08-21/","title":"2021 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 21 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":""},{"location":"records/2021-08-21/#\u89e3\u9664\u56fa\u6001\u786c\u76d8\u7684-raid","title":"\u89e3\u9664\u200b\u56fa\u6001\u200b\u786c\u76d8\u200b\u7684\u200b RAID","text":"

\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

  1. \u200b\u4f7f\u7528\u200b testdisk \u200b\u627e\u5230\u200b /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\u3002
  2. \u200b\u4f7f\u7528\u200b vgscan \u200b\u52a0\u8f7d\u200b LVM \u200b\u4fe1\u606f\u200b\u3002\u200b\u5047\u8bbe\u200b rootfs \u200b\u662f\u200b /dev/pve/root
  3. \u200b\u8fd0\u884c\u200b 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!\u3002
  4. \u200b\u8fd0\u884c\u200b lvresize -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
  5. \u200b\u4f7f\u7528\u200b testdisk \u200b\u627e\u5230\u200b /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\u3002
  6. \u200b\u4f7f\u7528\u200b fdisk -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\u3002
  7. lvconvert -m1 pve/root\uff0c\u200b\u8bbe\u7f6e\u200b rootfs \u200b\u4e3a\u200b RAID 1.
  8. \u200b\u6309\u7167\u200b https://ibug.io/blog/2021/08/proxmox-disassemble-hardware-raid1/#fix-grub \u200b\u7684\u200b\u8bf4\u660e\u200b\u6302\u8f7d\u200b\u5fc5\u8981\u200b\u7684\u200b\u5377\u200b\uff0c\u200b\u7136\u540e\u200b 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\u3002
"},{"location":"records/2021-08-21/#\u5347\u7ea7\u81f3-proxmox-ve-7","title":"\u5347\u7ea7\u200b\u81f3\u200b Proxmox VE 7","text":"

PVE \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

\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

"},{"location":"records/2021-08-21/#\u66f4\u6362-apt-\u6e90\u81f3\u4e2d\u79d1\u5927\u955c\u50cf\u7ad9\u53ca\u7f29\u51cf\u7528\u6237\u78c1\u76d8\u7a7a\u95f4","title":"\u66f4\u6362\u200b APT \u200b\u6e90\u81f3\u200b\u4e2d\u79d1\u5927\u200b\u955c\u50cf\u200b\u7ad9\u200b\u53ca\u200b\u7f29\u51cf\u200b\u7528\u6237\u200b\u78c1\u76d8\u7a7a\u95f4","text":"

\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\u200b change-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":""},{"location":"records/2021-08-28/","title":"2021 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 28 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","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

"},{"location":"records/2021-08-28/#\u5bb9\u5668\u5907\u4efd\u9519\u8bef","title":"\u5bb9\u5668\u200b\u5907\u4efd\u200b\u9519\u8bef","text":"

\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

\u200b\u76ee\u524d\u200b\u7684\u200b\u4e34\u65f6\u200b\u89e3\u51b3\u65b9\u6848\u200b\uff1a

"},{"location":"records/2021-09-20/","title":"2021 \u200b\u5e74\u200b 9 \u200b\u6708\u200b 20 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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

  1. \u200b\u66f4\u65b0\u200b\u4e86\u200b\u6240\u6709\u200b\u8282\u70b9\u200b\u7684\u200b Linux \u200b\u5185\u6838\u200b\u7248\u672c\u200b\uff0c\u200b\u4ee5\u200b\u4fee\u590d\u200b CVE-2022-0185 \u200b\u5b89\u5168\u6f0f\u6d1e\u200b\u3002
  2. \u200b\u4e3a\u200b\u6240\u6709\u200b\u5b66\u751f\u200b\u5bb9\u5668\u200b\u8c03\u6574\u200b\u4e86\u200b\u4ee5\u4e0b\u200b\u914d\u7f6e\u200b\uff1a
    1. \u200b\u91cd\u65b0\u200b\u8bbe\u7f6e\u200b\u4e86\u200b\u7528\u6237\u200b CA \u200b\u8bc1\u4e66\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u76f8\u5e94\u200b\u7684\u200b\u914d\u7f6e\u200b\u9879\u200b\uff1b
    2. \u200b\u8c03\u6574\u200b\u4e86\u200b apparmor \u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u4fee\u6b63\u200b tcpdump \u200b\u65e0\u6cd5\u200b\u6b63\u5e38\u200b\u4f7f\u7528\u200b\u7684\u200b\u95ee\u9898\u200b\uff1b
    3. \u200b\u6dfb\u52a0\u200b\u4e86\u200b Vlab \u200b\u8f6f\u4ef6\u200b\u6e90\u200b\uff1b
    4. \u200b\u5220\u9664\u200b\u4e86\u200b\u5bb9\u5668\u200b\u684c\u9762\u73af\u5883\u200b\u4e0d\u200b\u9700\u8981\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u3002
  3. \u200b\u5c1d\u8bd5\u200b\u4e3a\u200b\u5b66\u751f\u200b\u5bb9\u5668\u200b\u4fee\u590d\u200b Policykit-1 \u200b\u7684\u200b\u672c\u5730\u200b\u63d0\u6743\u200b\u6f0f\u6d1e\u200b\uff0c\u200b\u4f46\u662f\u200b\u7531\u4e8e\u200b 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

\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

  1. \u200b\u5220\u9664\u200b\u5c11\u91cf\u200b LV\uff0c\u200b\u4f7f\u5f97\u200b MDA \u200b\u6709\u200b\u5c11\u91cf\u200b\u7684\u200b\u7a7a\u95f4\u200b\u53ef\u4ee5\u200b\u8bb0\u5f55\u200b\u5728\u200b VG \u200b\u4e2d\u200b\u52a0\u5165\u200b\u65b0\u76d8\u200b\u7684\u200b\u4fe1\u606f\u200b\u3002\u200b\u901a\u5e38\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u5220\u6389\u200b\u4e00\u4e2a\u200b\u5c31\u591f\u200b\u4e86\u200b\uff08\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5c06\u200b\u5176\u200b\u79fb\u52a8\u200b\u81f3\u200b\u5176\u4ed6\u200b VG \u200b\u4e2d\u200b\uff09\u3002
  2. \u200b\u6dfb\u52a0\u200b\u4e00\u5757\u200b\u5c0f\u76d8\u200b\uff081G\uff0c\u200b\u5b58\u50a8\u200b\u670d\u52a1\u5668\u200b\u66b4\u9732\u200b\u4e00\u4e2a\u200b\u5c0f\u200b LUN\uff09\uff0c\u200b\u5728\u200b\u5404\u200b\u8282\u70b9\u200b\u4e0a\u200b\u8fd0\u884c\u200b iscsiadm -m session --rescan\uff0c\u200b\u65e0\u987b\u200b\u505c\u673a\u200b\u6216\u200b\u4e2d\u65ad\u200b\u4efb\u4f55\u200b\u670d\u52a1\u200b\u3002
  3. pvcreate --metadatasize 64m /dev/XXX
  4. \u200b\u5c06\u200b\u65b0\u76d8\u200b\u52a0\u5165\u200b VG \u200b\u4e2d\u200b\uff08vgextend\uff09\u3002
  5. \u200b\u8bbe\u7f6e\u200b\u539f\u200b\u78c1\u76d8\u200b metadataignore \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

"},{"location":"records/2022-11-21/","title":"2022 \u200b\u5e74\u200b 11 \u200b\u6708\u200b 21 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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

  1. \u200b\u767b\u51fa\u200b\u6240\u6709\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\uff0c\u200b\u91cd\u7f6e\u200b\u5b58\u50a8\u9635\u5217\u200b\u8ba4\u8bc1\u200b\u51ed\u636e\u200b\u5e76\u200b\u91cd\u542f\u200b\u9635\u5217\u200b\uff1b
  2. \u200b\u4fee\u6539\u200b\u5bb9\u5668\u200b user namespace idmap \u200b\u8303\u56f4\u200b\u4ee5\u200b\u652f\u6301\u200b rootless podman\uff1b
  3. \u200b\u66f4\u65b0\u200b\u6240\u6709\u200b\u4e3b\u673a\u200b\u8282\u70b9\u200b\u8f6f\u4ef6\u5305\u200b\u3002
"},{"location":"records/2022-11-21/#\u767b\u51fa-iscsi-\u4f1a\u8bdd\u8fc7\u7a0b","title":"\u767b\u51fa\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\u8fc7\u7a0b","text":"
  1. \u200b\u9996\u5148\u200b\u505c\u6b62\u200b\u6240\u6709\u200b\u5b66\u751f\u200b\u5bb9\u5668\u200b\u53ca\u5176\u200b\u4ed6\u200b\u4f9d\u8d56\u4e8e\u200b\u5b58\u50a8\u9635\u5217\u200b\u7684\u200b\u670d\u52a1\u200b\uff1b
  2. \u200b\u5728\u200b\u5404\u200b\u8282\u70b9\u200b\u8fd0\u884c\u200b iscsiadm -m node -T <target-name> -U all \u200b\u767b\u51fa\u200b iSCSI \u200b\u4f1a\u8bdd\u200b\uff1b
  3. \u200b\u5728\u200b\u5404\u200b\u8282\u70b9\u200b\u8fd0\u884c\u200b iscsiadm -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

"},{"location":"records/2022-11-21/#\u4fee\u6539\u5bb9\u5668-user-namespace-idmap-\u8303\u56f4","title":"\u4fee\u6539\u200b\u5bb9\u5668\u200b user namespace idmap \u200b\u8303\u56f4","text":"

\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

"},{"location":"records/2022-11-21/#\u5b58\u50a8\u9635\u5217","title":"\u5b58\u50a8\u9635\u5217","text":"

\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

"},{"location":"records/2023-01-28/#vivado-2019-\u4e0e-ubuntu-2204-\u7684\u517c\u5bb9\u6027\u95ee\u9898","title":"Vivado 2019 \u200b\u4e0e\u200b Ubuntu 22.04 \u200b\u7684\u200b\u517c\u5bb9\u6027\u95ee\u9898","text":"

\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

"},{"location":"records/2023-01-28/#\u5b9a\u65f6\u4efb\u52a1\u5bfc\u81f4\u7684-io-\u62e5\u5835\u95ee\u9898","title":"\u5b9a\u65f6\u200b\u4efb\u52a1\u200b\u5bfc\u81f4\u200b\u7684\u200b I/O \u200b\u62e5\u5835\u200b\u95ee\u9898","text":"

\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

"},{"location":"records/2023-02-17/#filestash-\u5347\u7ea7","title":"Filestash \u200b\u5347\u7ea7","text":"

\u200b\u66f4\u65b0\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a

"},{"location":"records/2023-02-17/#\u5176\u4ed6","title":"\u5176\u4ed6","text":""},{"location":"records/2023-03-05/","title":"2023 \u200b\u5e74\u200b 3 \u200b\u6708\u200b 5 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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":""},{"location":"records/2023-08-06/","title":"2023 \u200b\u5e74\u200b 8 \u200b\u6708\u200b 6 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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

"},{"location":"records/2023-10-01/#\u4e3a\u6240\u6709\u865a\u62df\u673a\u542f\u7528\u9632\u706b\u5899","title":"\u4e3a\u200b\u6240\u6709\u200b\u865a\u62df\u673a\u200b\u542f\u7528\u200b\u9632\u706b\u5899","text":""},{"location":"records/2023-10-01/#vm-firewall","title":"\u865a\u62df\u673a\u200b\u5c42\u9762\u200b\u7684\u200b\u9632\u706b\u5899","text":"

\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

"},{"location":"records/2023-10-01/#miscellaneous","title":"\u5176\u4ed6\u200b\u6742\u9879","text":"

\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

"},{"location":"records/2023-10-01/#traps","title":"\u8e29\u200b\u5751","text":""},{"location":"records/2023-11-18/","title":"2023 \u200b\u5e74\u200b 11 \u200b\u6708\u200b 18 \u200b\u65e5\u200b\u5de5\u4f5c\u200b\u603b\u7ed3","text":"

\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

"},{"location":"references/desktop/","title":"X Desktop \u200b\u56fe\u6807\u200b\u914d\u7f6e","text":""},{"location":"references/desktop/#xilinx-vivado","title":"Xilinx Vivado","text":"
[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

  1. \u200b\u6709\u200b\u6559\u5e08\u200b\u7684\u200b glzjh \u200b\u503c\u4e3a\u200b \"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
  2. \u200b\u6709\u200b SA \u200b\u65b0\u751f\u200b\u7684\u200b glzjh \u200b\u503c\u4e3a\u200b \"U0000000\"
  3. \u200b\u6709\u200b SA \u200b\u65b0\u751f\u200b\u7684\u200b glzjh \u200b\u503c\u4e3a\u200b \"null\"
"},{"location":"references/ustccas/#\u4eba\u5458\u5728\u6821\u72b6\u6001\u7801","title":"\u4eba\u5458\u200b\u5728\u6821\u200b\u72b6\u6001\u200b\u7801","text":"
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

"},{"location":"servers/ct100/#\u8f6c\u53d1-nat-\u90e8\u5206","title":"\u8f6c\u53d1\u200b NAT \u200b\u90e8\u5206","text":"
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

"},{"location":"servers/ct100/#mtu-\u8bbe\u7f6e","title":"MTU \u200b\u8bbe\u7f6e","text":"

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

"},{"location":"servers/ct100/#vlab-dev-vpn","title":"Vlab Dev VPN","text":"

\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

  1. Logging from iptables to rsyslog inside container fails. - Linux Continers Mailing Lists\u00a0\u21a9

  2. iptables logging inside LXC containers - Proxmox Support Forum\u00a0\u21a9

"},{"location":"servers/ct101/","title":"Web \u200b\u670d\u52a1\u5668\u200b (CT 101)","text":"

\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

/etc/nginx/snippets/well-known
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

"},{"location":"servers/ct101/#user-docs","title":"Webhook \u200b\u4e0e\u200b\u7528\u6237\u6587\u6863","text":"

\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

  1. \u200b\u68c0\u67e5\u200b https://grafana.com/docs/grafana/latest/setup-grafana/upgrade-grafana \u200b\u662f\u5426\u200b\u5305\u542b\u200b\u53ef\u80fd\u200b\u7834\u574f\u200b\u5f53\u524d\u200b\u529f\u80fd\u200b\u7684\u200b\u4fee\u6539\u200b\u3002
  2. \u200b\u6267\u884c\u200b docker pull grafana/grafana:latest
  3. \u200b\u6267\u884c\u200b ~/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

/etc/nginx/snippets/nginx-pass
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-location
error_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

/etc/cron.daily/sync-cert
#!/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

"},{"location":"servers/pve/#recovery-sshd","title":"Recovery SSHd","text":"

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

"},{"location":"servers/pve/#extra-settings","title":"\u989d\u5916\u200b\u7684\u200b\u7cfb\u7edf\u914d\u7f6e","text":"

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/subgid
root: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.conf
lxc.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.conf
lxc.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

"},{"location":"testing/#\u4e0e\u751f\u4ea7\u73af\u5883\u7684\u8054\u7cfb","title":"\u4e0e\u200b\u751f\u4ea7\u200b\u73af\u5883\u200b\u7684\u200b\u8054\u7cfb","text":""},{"location":"testing/#\u767b\u5f55","title":"\u767b\u5f55","text":"

\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

"},{"location":"testing/devvpn/#configure","title":"\u914d\u7f6e\u200b OpenVPN Server","text":"

\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

"},{"location":"testing/devvpn/#openvpn-server","title":"OpenVPN Server","text":"

\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\u200b
client\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

/etc/openvpn/ca/genconf.sh
#!/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

"},{"location":"ui/vncmux/#vncmux-cli-\u5de5\u5177","title":"vncmux-cli \u200b\u5de5\u5177","text":"

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

"},{"location":"ui/vncmux/#\u5217\u51fa\u5728\u7ebf\u7528\u6237","title":"\u5217\u51fa\u200b\u5728\u7ebf\u200b\u7528\u6237","text":"

\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

"},{"location":"ui/vncmux/#\u65ad\u5f00\u7528\u6237\u8fde\u63a5","title":"\u65ad\u5f00\u200b\u7528\u6237\u200b\u8fde\u63a5","text":"

\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

"},{"location":"ui/vncmux/#\u66f4\u6362\u901a\u77e5\u56fe\u7247","title":"\u66f4\u6362\u200b\u901a\u77e5\u200b\u56fe\u7247","text":"

\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

"},{"location":"ui/vncmux/#\u53d1\u9001\u56fe\u7247","title":"\u53d1\u9001\u200b\u56fe\u7247","text":"

\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

"},{"location":"ui/vncmux/#\u6253\u5f00\u548c\u5173\u95ed\u901a\u77e5","title":"\u6253\u5f00\u200b\u548c\u200b\u5173\u95ed\u200b\u901a\u77e5","text":"

\u200b\u547d\u4ee4\u200b\u5206\u522b\u200b\u4e3a\u200b enable-notification \u200b\u548c\u200b disable-notification

"},{"location":"ui/vncmux/#\u6253\u5f00\u548c\u5173\u95ed-realvnc-\u6709\u635f\u538b\u7f29","title":"\u6253\u5f00\u200b\u548c\u200b\u5173\u95ed\u200b RealVNC \u200b\u6709\u635f\u538b\u7f29","text":"

\u200b\u547d\u4ee4\u200b\u5206\u522b\u200b\u4e3a\u200b enable-realvnc-lossy \u200b\u548c\u200b disable-realvnc-lossy

"},{"location":"ui/vncmux/#\u8bbe\u5b9a-realvnc-\u6709\u635f\u538b\u7f29\u8d28\u91cf\u7b49\u7ea7","title":"\u8bbe\u5b9a\u200b RealVNC \u200b\u6709\u635f\u538b\u7f29\u200b\u8d28\u91cf\u200b\u7b49\u7ea7","text":"

\u200b\u547d\u4ee4\u200b\u4e3a\u200b set-realvnc-jpeg-level <0-9>

"},{"location":"vlab-software/","title":"Vlab \u200b\u5b9e\u9a8c\u200b\u8f6f\u4ef6\u200b\u5957\u88c5","text":"

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

"},{"location":"vlab-software/#\u4e3a\u865a\u62df\u673a\u914d\u7f6e-vlab-software","title":"\u4e3a\u200b\u865a\u62df\u673a\u200b\u914d\u7f6e\u200b Vlab Software","text":"

\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:

apt 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

"},{"location":"workflow/miscellaneous/#\u4ece\u4e3b\u673a\u4e0a\u5bfb\u627e-pid-\u6240\u5c5e\u7684\u5bb9\u5668","title":"\u4ece\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u5bfb\u627e\u200b PID \u200b\u6240\u5c5e\u200b\u7684\u200b\u5bb9\u5668","text":"

\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

"},{"location":"workflow/miscellaneous/#\u65b9\u6cd5-1","title":"\u65b9\u6cd5\u200b 1","text":"

\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

"},{"location":"workflow/new-host/","title":"\u914d\u7f6e\u200b\u65b0\u200b\u4e3b\u673a\u200b\u5e76\u200b\u52a0\u5165\u200b\u96c6\u7fa4","text":"

\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

"},{"location":"workflow/new-host/#\u8fdc\u7a0b\u8bbf\u95ee","title":"\u8fdc\u7a0b\u200b\u8bbf\u95ee","text":"

\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

"},{"location":"workflow/new-host/#\u8f6f\u4ef6\u6e90","title":"\u8f6f\u4ef6\u200b\u6e90","text":"

\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

"},{"location":"workflow/new-host/#\u914d\u7f6e\u7f51\u5361","title":"\u914d\u7f6e\u200b\u7f51\u5361","text":"

\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

"},{"location":"workflow/new-host/#\u914d\u7f6e-lvm","title":"\u914d\u7f6e\u200b LVM","text":"

\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

"},{"location":"workflow/new-host/#\u6302\u8f7d-nfs-\u955c\u50cf\u5171\u4eab","title":"\u6302\u8f7d\u200b NFS \u200b\u955c\u50cf\u200b\u5171\u4eab","text":"

\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

"},{"location":"workflow/new-host/#\u989d\u5916\u7684\u7cfb\u7edf\u8bbe\u7f6e","title":"\u989d\u5916\u200b\u7684\u200b\u7cfb\u7edf\u200b\u8bbe\u7f6e","text":"

\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

\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

\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

\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

\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\u200b
package 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

"},{"location":"workflow/pack-vm-image/#pre-packaging","title":"\u56db\u200b\u3001\u200b\u6253\u5305\u200b\u524d\u200b\u7684\u200b\u5de5\u4f5c","text":"

\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

"},{"location":"workflow/pack-vm-image/#packaging","title":"\u4e94\u200b\u3001\u200b\u6253\u5305","text":"

\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":""},{"location":"workflow/pack-windows-image/","title":"\u6253\u5305\u200b Windows \u200b\u955c\u50cf","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

"},{"location":"workflow/pack-windows-image/#extra-customizations","title":"\u5176\u4ed6\u200b\u81ea\u5b9a\u4e49\u200b\u8bbe\u7f6e","text":"

\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

\u200b\u53c2\u8003\u200b\uff1a\u200b\u4fee\u6539\u200b\u540e\u200b\u7684\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b
[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":""},{"location":"workflow/pack-windows-image/#sysprep","title":"\u4e94\u200b\u3001Sysprep \u200b\u548c\u200b\u6253\u5305","text":"

\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

\u200b\u4e0d\u200b\u6b63\u786e\u200b\u5730\u200b\u5378\u8f7d\u200b\u9884\u88c5\u200b\u7684\u200b UWP \u200b\u5e94\u7528\u200b\u4f1a\u200b\u5bfc\u81f4\u200b Sysprep \u200b\u5931\u8d25\u200b

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

"},{"location":"workflow/pack-windows-image/#optimize-image","title":"\u4f18\u5316\u200b\u865a\u62df\u673a\u200b\u955c\u50cf","text":"

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\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

"},{"location":"workflow/pack-windows-image/#references","title":"\u53c2\u8003\u8d44\u6599","text":""}]} \ No newline at end of file