2024年Linux最全迷你主机的AIO(All in one)实战记录【pve+openwrt+windows(2),蚂蚁金服4面Linux运维高级开发

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

一、实战背景

随着Arm芯片架构的普及,越来越多的arm电脑进入c端消费市场,其强大的性能,较低的功耗,较长的续航和良好的设计使得越来越的主机使用arm芯片。但与此带来的问题是,arm主机的虚拟化支持较差,精简指令集无法支持对复杂指令集的虚拟化,对于嵌套虚拟化的灵活需求也支持较差,相比于传统x86显得并不是那么通用。

因此,正是在此背景下,虽然已经有arm主机办公使用,但是无法得到良好的虚拟化,同时支持的游戏和软件少,入手一台x86的主机主机弥补x86的缺失和通用虚拟化的空白的需求非常急迫。

二、架构选型

当然,x86的主机千千万,怎么选用什么需要深思熟虑。由于已经有了一台arm的笔记本,再置办一台笔记本显得不那么合宜,因此范围从台式主机中开始选择。传统台式机,体型大,考虑到提及和后续的搬迁属性,觉得台式机的性价比并不如小主机来的那么实在。

因此,在迷你主机中开始选择。传统的迷你主机以intel的NUC制霸天下,但随着国内厂家的进入,越来越多的OEM厂商开始涌现出来。熟知的小米、联想、华硕、雷神、神舟都开始开始进军迷你主机,新兴的积核、铭凡、魔方也进入选择范围内。

但是在考虑品牌前,需要对整体的架构一个设计和构想,避免后期选择中反复横跳。本实践中主要考虑的架构有两种,两种方案的根本区别点是cpu的性能,不通的cpu决定了价格和使用方式,一种是低U多机的分布式的多主机方案,另一种的本文所述的高U单机的aio方案,在实践中,本人均做了实现,但是最后优选了aio方案下面做个对比。

架构选型
| | 分布式多机 | All in One 模式 |
| 优势 | 单机成本低,可扩展性极强 | 单机性能强 |
| 劣势 | 单机新能差,但组成集群后可以一搏,但最强性能虚拟机受制于单机性能 | 扩展性较差,无法实现多集扩展,可玩性差 |
| 难度 | 多机组网复杂,需要额外配置交换节和路由器 | 单机难度较低,仅需考虑本机的问题 |
| 综合 | 适合入门,进阶后,会发现性能一般般 | 适合有一定基础的中级玩家,如果对扩展性有要求,可以后期堆叠高性能主机 |

明确了架构后,在讨论选型,作者一开始先期使用了分布式方案,使用的是3台intel NUC8的i58beh,单机成本低,配置完成内存和硬盘后,综合单机价格1500元左右,但是由于网络管理复杂,需要进一步的交换机网络设备,综合布线、电源管理和安装集群配置繁琐,单虚拟机的最高新能受限于cpu性能,因此逐渐趋于放弃。

经过横跳后,最后选择了积核的i713700h的迷你主机,最新版本的有13700h和13900h两个选项,对比数字,我们简单的理解为,13700的主频比13900低0.4Ghz,但是价格便宜了很多,因此把它看作一个高性价比方案不为一种优选。

当然,大家可能还会有疑问,为什么要选择这个厂家,原因有三:1、积核的主机大小和intel的NUC一样,可以适配已有的散热模块;2、传统老牌厂家并没有推出13700,13900的迷你主机,可选范围直接拉到国内小厂家;3、积核有jd自营,个人感觉售后相对方便,半年内玩坏了能修,比tb有一些安全感(但实际都是听天由命)。

综上,本人选择了积核的13700h作为本次all in one的基座,配置了1T+ 1T +2T的全固态环境,配置了16G+16G的双通道内存。

三、规划设计

完成架构设计后,需要对功能和使用方式做进一步规划,对网络连接做进一步规划。对于整体架构,我们做如下设计。

首先有0号虚拟机:openWrt(1U,2G,10G-ssd)。作为整个主机中的软路由设备,代理虚拟机内的所有虚拟机的路由,进一步的可以作为旁路由介入家里的路由器。配置有三个虚拟网口:

1个2.5G的WAN,用于上行出口

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中关闭AIO(异步输入输出)可以通过以下步骤实现: 1. 首先,确保在程序中调用了`aio_cancel`函数来取消所有未完成的异步操作。这将确保在关闭AIO之前,所有的异步操作都被终止。 2. 然后,使用`aio_error`函数来检查异步操作的错误状态。如果返回值为`EINPROGRESS`,表示异步操作仍在进行中,需要等待操作完成。 3. 使用`aio_return`函数来获取异步操作的返回值。如果返回值大于0,表示操作已完成,并且可以获取到返回的数据。 4. 最后,使用`aio_suspend`函数来等待所有异步操作完成。这将阻塞程序,直到所有异步操作都完成。 5. 在所有异步操作都完成后,可以关闭文件描述符和释放相关的资源。 以下是一个示例代码,展示了如何关闭AIO: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <aio.h> #include <fcntl.h> int main() { struct aiocb cb = {0}; int fd = open("test.txt", O_RDONLY); if (-1 == fd) { printf("文件打开失败:%m\n"); exit(-1); } printf("文件打开成功!\n"); // 异步读取文件数据 cb.aio_fildes = fd; cb.aio_nbytes = BUFF_SIZE; cb.aio_offset = 0; int r = aio_read(&cb); if (-1 == r) { printf("异步读取失败:%m\n"); close(fd); exit(-2); } printf("异步读取成功!\n"); // 取消未完成的异步操作 aio_cancel(fd, &cb); // 等待所有异步操作完成 aio_suspend(&cb, 1, NULL); // 获取异步操作的返回值 r = aio_return(&cb); if (r > 0) { printf("拿到了数据: r:%d bytes, data: %s\n", r, cb.aio_buf); } // 关闭文件描述符和释放内存 close(fd); free(cb.aio_buf); return 0; } ``` 请注意,以上代码仅展示了关闭AIO的基本步骤,并不包含完整的错误处理和资源释放。在实际应用中,需要根据具体情况进行适当的错误处理和资源管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值