玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?

玩转,pi,系列,如何,rockchip,arm,开发板,安装,docker,tailscale,k3s,cilium · 浏览次数 : 167

小编点评

**Arm 开发板优势:** * **便宜可玩性高** * **高功耗低散热** * **运行安静** * **开发板生态友好** **主要技术分享:** * **RKernel** * **k3s** * **tailscale** * **cilium** * **Rkernel ParameterTool** * **RK ParameterTool_v1.2** * **Android/Linux固件及烧录手册** * **Purple-Pi OH Linux SDK 编译手册** * **RK ParameterTool_v1.2** **其他建议:** * **x86**主机生态更完善,拥有更广泛的软件和工具。 * **Rkernel ParameterTool_v1.2**工具可以帮助优化内核配置,提高性能。 * **开发板调试工具**可以帮助开发者更好地调试开发板。

正文

概述

618 买了几个便宜的 Purple PI OH 开发板 (500 块多一点买了 3 个🤑), 这个开发板类似树莓派,是基于 Rockchip(瑞芯微) 的 rx3566 arm64 芯片。如下:

Purple PI OH

买来是用作家庭服务器或家庭实验室的。主要考虑就是:

  1. 便宜
  2. 可玩性高
  3. 功耗低
  4. 散热小,运行安静
  5. Arm64 现在生态还凑活

其配置如下(选择部分说明):

  • SOC: RockChip RK3566
  • CPU: 四核 64 位 Cortex-A55 处理器,主频最高 1.8GHz
  • 最高支持 8GB 高速 LPDDR4,速率高达 1066Mbps (我买的是 2G 版本的)
  • 存储:eMMC 默认 8GB(可选 16GB/32GB/64GB)(我买的是 16G 版本的)
  • 1 路 HDMI2.0 支持 4K@60Hz 或 1080P@120Hz
  • 1 路自适应千兆以太网口
  • WIFI 蓝牙无线通信
  • 板载 1 路 USB3.0,3 路 USB2.0
  • 极小型 PCBA 尺寸,85mm*56mm

系统支持:

  • Android 11
  • Debian 10
  • Buildroot + QT
  • 鸿蒙 OpenHarmony3.2
  • Ubuntu
  • 麒麟 OS

刷入官方提供的 Debian 10 后,发现无法安装 Docker/Tailscale/K3s/Cilium 等,这是为什么?

原因解析

很多开发板的操作系统,都是没有 UEFI 的,也不能直接使用 Debian Linux 官网提供的 iso 等安装介质直接进行安装的。而是自编译的 Debian Linux.

编译后的 Debian 里,会带有 uboot 作为启动引导的工具,同时将开发板对应的芯片/接口驱动集成进去。

官方提供的自编译 Debian Linux 里,只开启了一小部分的 Kernel 内核参数。而 Docker/Tailscale/K3s/Cilium 等,是需要直接用到 Kernel 紧密相关的功能,但是这些功能在官方提供的 Debian Linux 中又没有,就需要我们按照官方提供的《Linux SDK 编译手册》自行编译。

需要哪些内核配置

Docker 需要哪些内核配置

Docker 需要的内核配置,可以通过 https://github.com/opencontainers/runc/blob/main/script/check-config.sh 这个检查脚本进行检验的。运行示例如下:

# ./check_config.sh
info: reading kernel config from ./kernel/.config ...

Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- apparmor: enabled and tools installed
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: missing
- CONFIG_KEYS: enabled
- CONFIG_VETH: missing
- CONFIG_BRIDGE: missing
- CONFIG_BRIDGE_NETFILTER: missing
- CONFIG_IP_NF_FILTER: missing
- CONFIG_IP_NF_TARGET_MASQUERADE: missing
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: missing
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: missing
- CONFIG_NETFILTER_XT_MATCH_IPVS: missing
- CONFIG_IP_NF_NAT: missing
- CONFIG_NF_NAT: missing
- CONFIG_POSIX_MQUEUE: missing

Optional Features:
- CONFIG_USER_NS: enabled
- CONFIG_SECCOMP: enabled
- CONFIG_SECCOMP_FILTER: enabled
- CONFIG_CGROUP_PIDS: missing
- CONFIG_MEMCG_SWAP: missing
- CONFIG_MEMCG_SWAP_ENABLED: missing
- CONFIG_BLK_CGROUP: missing
- CONFIG_BLK_DEV_THROTTLING: missing
- CONFIG_CGROUP_PERF: missing
- CONFIG_CGROUP_HUGETLB: missing
- CONFIG_NET_CLS_CGROUP: missing
- CONFIG_CGROUP_NET_PRIO: missing
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_RT_GROUP_SCHED: missing
- CONFIG_IP_NF_TARGET_REDIRECT: missing
- CONFIG_IP_VS: missing
- CONFIG_IP_VS_NFCT: missing
- CONFIG_IP_VS_PROTO_TCP: missing
- CONFIG_IP_VS_PROTO_UDP: missing
- CONFIG_IP_VS_RR: missing
- CONFIG_SECURITY_SELINUX: missing
- CONFIG_SECURITY_APPARMOR: missing

所以其需要的 Kernel config 为:

# Docker Generally Necessary
CONFIG_NAMESPACES=y
CONFIG_NET_NS=y
CONFIG_PID_NS=y
CONFIG_IPC_NS=y
CONFIG_UTS_NS=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_SCHED=y
CONFIG_CPUSETS=y
CONFIG_MEMCG=y
CONFIG_KEYS=y
CONFIG_VETH=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_IPVS=y
CONFIG_IP_NF_NAT=y
CONFIG_NF_NAT=y
CONFIG_POSIX_MQUEUE=y

# Optional Features:=y
CONFIG_USER_NS=y
CONFIG_SECCOMP=y
CONFIG_SECCOMP_FILTER=y
CONFIG_CGROUP_PIDS=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
CONFIG_BLK_CGROUP=y
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_HUGETLB=y
CONFIG_NET_CLS_CGROUP=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_VS=y
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_RR=y
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_APPARMOR=y

Tailscale 需要哪些内核配置

Tailscale 出于广泛适用性的考虑,主要都是基于用户空间的实现,不加任何内核配置也可以基于 sock5 代理的方式运行。如果要正常状态运行,其只依赖于一个内核配置:

# Tailscale
CONFIG_TUN=y

如果是 Wireguard 或其他对内核依赖较多的相关软件,请自行查找相关内核配置需求。

K3s 需要哪些内核配置

K3s 的 Cli 做的很完善,直接可以检查内核配置需求,在我编译好的 Debian 10 上运行具体如下:

$ k3s check-config

Verifying binaries in /var/lib/rancher/k3s/data/ef31d9f1b153134534c2b9664540479f3071940e08ee95dd2877e102a31d235e/bin:
- sha256sum: good
- aux/ip6tables: symlink to xtables-legacy-multi
- aux/ip6tables-restore: symlink to xtables-legacy-multi
- aux/ip6tables-save: symlink to xtables-legacy-multi
- aux/iptables: symlink to xtables-legacy-multi
- aux/iptables-restore: symlink to xtables-legacy-multi
- aux/iptables-save: symlink to xtables-legacy-multi
- links: good

System:
- /var/lib/rancher/k3s/data/ef31d9f1b153134534c2b9664540479f3071940e08ee95dd2877e102a31d235e/bin/aux iptables v1.8.8 (legacy): ok
- swap: disabled
- routes: ok

Limits:
- /proc/sys/kernel/keys/root_maxkeys: 1000000

modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.232/modules.dep.bin'
modprobe: FATAL: Module configs not found in directory /lib/modules/4.19.232
info: reading kernel config from /proc/config.gz ...

Generally Necessary:
- cgroup hierarchy: cgroups Hybrid mounted, cpuset|memory controllers status: good
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_PIDS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled
- CONFIG_KEYS: enabled
- CONFIG_VETH: enabled
- CONFIG_BRIDGE: enabled
- CONFIG_BRIDGE_NETFILTER: enabled
- CONFIG_IP_NF_FILTER: enabled
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled
- CONFIG_NETFILTER_XT_MATCH_IPVS: enabled
- CONFIG_NETFILTER_XT_MATCH_COMMENT: enabled
- CONFIG_NETFILTER_XT_MATCH_MULTIPORT: enabled
- CONFIG_IP_NF_NAT: enabled
- CONFIG_NF_NAT: enabled
- CONFIG_POSIX_MQUEUE: enabled

Optional Features:
- CONFIG_USER_NS: enabled
- CONFIG_SECCOMP: enabled
- CONFIG_BLK_CGROUP: enabled
- CONFIG_BLK_DEV_THROTTLING: enabled
- CONFIG_CGROUP_PERF: enabled
- CONFIG_CGROUP_HUGETLB: enabled
- CONFIG_NET_CLS_CGROUP: enabled
- CONFIG_CGROUP_NET_PRIO: enabled
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_RT_GROUP_SCHED: enabled
- CONFIG_IP_NF_TARGET_REDIRECT: enabled
- CONFIG_IP_SET: enabled
- CONFIG_IP_VS: enabled
- CONFIG_IP_VS_NFCT: enabled
- CONFIG_IP_VS_PROTO_TCP: enabled
- CONFIG_IP_VS_PROTO_UDP: enabled
- CONFIG_IP_VS_RR: enabled
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:
  - "overlay":
    - CONFIG_VXLAN: enabled
      Optional (for encrypted networks):
      - CONFIG_CRYPTO: enabled
      - CONFIG_CRYPTO_AEAD: enabled
      - CONFIG_CRYPTO_GCM: enabled
      - CONFIG_CRYPTO_SEQIV: enabled
      - CONFIG_CRYPTO_GHASH: enabled
      - CONFIG_XFRM: enabled
      - CONFIG_XFRM_USER: enabled
      - CONFIG_XFRM_ALGO: enabled
      - CONFIG_INET_ESP: enabled
      - CONFIG_INET_XFRM_MODE_TRANSPORT: enabled
- Storage Drivers:
  - "overlay":
    - CONFIG_OVERLAY_FS: enabled

STATUS: pass

根据上面输出,得出 K3s 需要的内核配置有:

# K3s Generally Necessary:
CONFIG_NAMESPACES=y
CONFIG_NET_NS=y
CONFIG_PID_NS=y
CONFIG_IPC_NS=y
CONFIG_UTS_NS=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_SCHED=y
CONFIG_CPUSETS=y
CONFIG_MEMCG=y
CONFIG_KEYS=y
CONFIG_VETH=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_IPVS=y
CONFIG_NETFILTER_XT_MATCH_COMMENT=y
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
CONFIG_IP_NF_NAT=y
CONFIG_NF_NAT=y
CONFIG_POSIX_MQUEUE=y

# Optional Features:
CONFIG_USER_NS=y
CONFIG_SECCOMP=y
CONFIG_BLK_CGROUP=y
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_HUGETLB=y
CONFIG_NET_CLS_CGROUP=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_SET=y
CONFIG_IP_VS=y
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_RR=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# Network Drivers
CONFIG_VXLAN=y
# Optional (for encrypted networks):
CONFIG_CRYPTO=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_GCM=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_GHASH=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=y
CONFIG_XFRM_ALGO=y
CONFIG_INET_ESP=y
CONFIG_INET_XFRM_MODE_TRANSPORT=y
# Storage Drivers
CONFIG_OVERLAY_FS=y

相比 Docker, 主要多了以下内核需求:

  • Overlay 网络
  • Overlay 存储

Cilium 需要哪些内核配置

Cilium 需要的内核配置,可以在这里查看:System Requirements — Cilium 1.13.4 documentation

# Cilium Base Requirements
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_NET_CLS_BPF=y
CONFIG_BPF_JIT=y
CONFIG_NET_CLS_ACT=y
CONFIG_NET_SCH_INGRESS=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_USER_API_HASH=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_BPF=y
CONFIG_PERF_EVENTS=y
# Optional: Iptables-based Masquerading
CONFIG_NETFILTER_XT_SET=m
CONFIG_IP_SET=m
CONFIG_IP_SET_HASH_IP=m
# Optional: L7 and FQDN Policies
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_CT=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_SOCKET=m
# Optional: IPSec
CONFIG_XFRM=y
CONFIG_XFRM_OFFLOAD=y
CONFIG_XFRM_STATISTICS=y
CONFIG_XFRM_ALGO=m
CONFIG_XFRM_USER=m
CONFIG_INET{,6}_ESP=m
CONFIG_INET{,6}_IPCOMP=m
CONFIG_INET{,6}_XFRM_TUNNEL=m
CONFIG_INET{,6}_TUNNEL=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_AEAD2=m
CONFIG_CRYPTO_GCM=m
CONFIG_CRYPTO_SEQIV=m
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_HMAC=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_AES=m
# Optional: Bandwidth Manager
CONFIG_NET_SCH_FQ=m

另外 Cilium 对于 Kernel 版本也有严格要求,Cilium 的部分功能依赖于高版本的 Kernel. 请自行查阅。

修改内核配置并编译

Linux SDK 官方一般都会提供,基于 Rockchip 芯片系列的 Linux SDK 文件目录结构大差不差。我这里以 Purple Pi OH 为例,相信如果您也正好有相关需求,且是 Rockchip 的其他开发板,也能很快找到对应目录。

一般内核配置的目录为:xxxxxxx\kernel\arch\arm64\configs\xxxxx_linux_defconfig

将上方提供的 Kernel 配置添加到该文件末尾(注意去重)并保存。

然后直接编译即可:

./build.sh kernel

编译后在./rockdev目录生成boot.img镜像。

然后利用 Rockchip 提供的烧录工具:RKDevTool.exe, 单独将 boot.img 烧录即可。

编译是真的耗资源啊,耗时间,耗 CPU, 耗磁盘😂

可能出现的异常情况

分区超出

我在编译过程中碰到 recovery 分区超过的报错,报错如下:

rk356x_linux_sdk/buildroot/output/rockchip_rk356x_recovery/images/recovery.img's size exceed parameter.txt's limit!
ERROR: Running build_firmware failed!

解决办法是要修改分区大小,具体就是修改对应的 parameter.txt 文件。修改后再重新完整编译:

./build.sh

并重新烧录整个固件。

Docker 安装后启动失败

根据官方文档:Install Docker Engine on Debian | Docker Documentation, Docker 安装后启动失败。

官方明确提到目前最新版本需要的 Debian 版本为:

Debian Bookworm 12 (stable)
Debian Bullseye 11 (oldstable)

可能是 Deibian 10 兼容性有问题导致的。但是有 workaround.

具体的报错为 nftables 相关的报错。

解决方案为:

update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
update-alternatives --set arptables /usr/sbin/arptables-legacy
update-alternatives --set ebtables /usr/sbin/ebtables-legacy

重启后 Docker 可以正常运行。

总结

玩了一周末的 Rockchip arm64 开发板,现在 2G 内存的板子上终于可以跑 docker,k3s,tailscale,cilium 了。🎉🎉🎉

Arm 开发板如我之前所说,有这些优势:

  1. 便宜
  2. 可玩性高
  3. 功耗低
  4. 散热小,运行安静
  5. Arm64 现在生态还凑活

但是相比 x86, 这类 arm 开发板生态还是太差了,没有 bios/uefi,装前面几个软件都要调 kernel 参数然后编译,刷机烧录。玩起来太累了。..

x86 也有这些优势:

  1. 便宜
  2. 可玩性高

但是 x86 的生态太好了,玩起来省心多了。

Arm 与 x86 相比,其实也就强在 功耗低,散热小。但是现在 Intel 的一些芯片,如 n100 等,TDP 为 6W 也是非常低了,通过被动散热也能压住也就静音。Arm 的优势所剩无几了。..

所以我的建议,想省心/静音/功率低,首推 x86 迷你主机;想折腾/静音/功率低,首推各类 arm pi 开发板或盒子;不在乎功耗/不在乎声音/高配,可以玩玩二手 x86 服务器。😂😂😂

以上。

📚️参考文档

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

与玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?相似的内容:

玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?

## 概述 618 买了几个便宜的 [Purple PI OH 开发板](http://www.industio.cn/product-item-37.html) (500 块多一点买了 3 个🤑), 这个开发板类似树莓派,是基于 Rockchip(瑞芯微) 的 rx3566 arm64 芯片。如

玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server

## 前言 基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s 等方案的测试验证。 考虑过使用二手服务器,比如 Dell R730, 还搞了一套配置清单,如下: * Dell R730 * 3.5 尺寸规格硬盘 * CPU: 2686v4*2 * 内存:16g*8 * 存储:4

玩转数据库索引

本篇文章将向大家介绍数据库中索引类型和使用场合,本文以SQL Server为例,对于其他技术平台的朋友也是有参考价值的,原理差不多。 查询数据时索引使数据库引擎执行速度更快,有针对性的数据检索,而不是简单地整表扫描(Full table scan)。 为了有效的使用索引,我们必须对索引的构成有所了解...

[转帖]玩转zabbix之超详细的二进制安装

https://zhuanlan.zhihu.com/p/212281069 #初始配置 #centos7添加阿里云镜像 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #安

[转帖]玩转 Ceph 的正确姿势

玩转 Ceph 的正确姿势 https://www.cnblogs.com/me115/p/6366374.html Ceph 客户端 Ceph 服务端 总结 参考 玩转 Ceph 的正确姿势本文先介绍 Ceph, 然后会聊到一些正确使用 Ceph 的姿势;在集群规模小的时候,Ceph 怎么玩都没问

[转帖]玩转REDIS-删除了两百万KEY,为什么内存依旧未释放?

https://www.freesion.com/article/87101375552/ 《玩转Redis》系列文章主要讲述Redis的基础及中高级应用。本文是《玩转Redis》系列第【12】篇,最新系列文章请前往公众号“zxiaofan”(点我点我)查看,或百度搜索“玩转Redis zxiaof

[转帖]玩转 Ceph 的正确姿势

https://www.cnblogs.com/me115/p/6366374.html 内容目录: Ceph 客户端 Ceph 服务端 总结 参考 玩转 Ceph 的正确姿势本文先介绍 Ceph, 然后会聊到一些正确使用 Ceph 的姿势;在集群规模小的时候,Ceph 怎么玩都没问题;但集群大了(

云小课|云小课带你玩转可视化分析ELB日志

阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。 云日志服务支持可视化查看日志,当ELB日志接入云日志服务后,可通过SQL语句查询分析日志,将日志结果保存为多种图表,并将图表

玩转GaussDB 中的SET操作符

摘要:关系数据库中提供了一个关于集合的运算符SET操作符,其中包括以下操作:UNION/UNION ALL 并集、INTERSECT 交集、MINUS 差集。 本文分享自华为云社区《GaussDB 中的SET操作符 (UNION, INTERSECT, MINUS)【玩转PB级数仓GaussDB(D

【玩转鲲鹏DevKit系列】何如快速迁移有源码应用

本文分享自华为云社区《【玩转鲲鹏DevKit系列】何如快速迁移有源码应用》,作者:华为云社区精选 。 源码(也称源程序)是程序员编写的计算机程序的文本形式,不同的编程语言有不同的语法和规则,常见类型包含解释型语言(JAVA/Python 等 )编译型语言(C/C++/GO等)、汇编语言等。程序员可以