普通视图

发现新文章,点击刷新页面。

探索网络实验的神器 Mininet

作者 Teacher Du
2025年9月28日 00:00

在计算机网络的学习与研究领域,Mininet 是款极具价值的工具。它就像是一个迷您网络世界的构建者,为我们提供便捷的网络实验环境。本文将带您深入了解 Mininet 魅力所在,并手把手教您安装与使用它。

简介

Mininet 是一个用于创建虚拟化网络环境的平台。

它能够在一台计算机上快速构建出包含多个交换机、主机、路由器等网络设备拓扑结构。

对于网络研究人员、开发者以及网络课程的学生来说,Mininet 是一个理想实验平台。

通过它可以模拟大规模网络环境,进行各种网络协议研究、网络应用的开发测试以及网络教学演示等。

例如,如果您想研究一种新的网络路由算法,借助 Mininet 就可以轻松搭建出实验所需的网络场景,无需搭建实体网络设备,大大节省了成本和时间。

它的核心优势在于轻量级以及灵活性。Mininet 是基于 Linux 的用户模式 Linux 网络命名空间技术实现的,这使得它能很方便地在各种 Linux 系统上运行。

而且,Mininet 的网络拓扑结构可以灵活定制,无论是简单的链式拓扑、树形拓扑,还是复杂的自定义拓扑,都能通过简单的配置文件或命令行参数来实现。

同时,Mininet 还支持多种网络仿真工具集成,例如 Wireshark 等,方便针对网络流量进行分析。

安装

安装 Mininet 的过程相对简便,但需要确保您的系统满足一定的前提条件。以下是基于 Ubuntu 系统安装步骤。

首先,需要更新系统的软件包列表。在终端输入命令 sudo apt update,让系统获取最新软件包信息。

然后安装必要的依赖库。可通过运行 sudo apt -y install build-essential autoconf automake libtool pkg-config gawk git python python-pip python-dev tcpdump wireshark sqlite3 curl bzip2 openvswitch-datapath-dkms openvswitch-switch openvswitch-common 命令,可一次性安装这些依赖,它们是 Mininet 正常运行和后续功能扩展的基础。

接下来就是安装 Mininet 本身。可从 Mininet 的官方仓库克隆代码,可使用命令 git clone git://github.com/mininet/mininet,然后进入 Mininet 目录中,再运行 mininet/util/install.sh -a 命令进行安装。这个安装脚本会自动完成编译和安装过程,在安装完成后,系统会提示安装成功的相关信息。

使用

安装 Mininet 后,就可以开始体验它强大的功能了。最基本的使用方式是通过命令行来创建和操作网络拓扑。

创建网络拓扑。Mininet 提供了简单的命令行参数来快速创建常见的网络拓扑。

如运行命令 sudo mn,就会自动创建一个包含两个主机、一个交换机和一个控制器的简单网络拓扑。

主机间通过交换机进行通信,控制器用于管理交换机行为。

如果想要创建更复杂的拓扑,可使用--topo 参数。如使用命令 sudo mn --topo linear,4,就会创建四个主机呈线性连接的拓扑,主机 1 连接到交换机 1,交换机 1 连接到主机 2,依此类推,形成一条链式结构。

操作网络设备。创建好网络拓扑后,Mininet 会进入交互式命令行界面。在这个界面中,可对网络设备进行各种操作。

例如,可以通过 h1 命令进入主机 1 的命令行界面,在主机 1 上执行网络相关的命令,如 ping h2 来测试主机 1 和主机 2 之间的连通性。如果网络配置正确,应该可以看到主机 1 向主机 2 发送 ICMP 请求并收到回复的信息,这就表明网络通信是正常的。

对于交换机可以使用 ovs-vsctl 命令来查看和配置交换机的端口信息、流表等等。例如,ovs-vsctl show 命令可显示交换机的详细信息,包括交换机的名称、连接主机、端口号等。

可自定义脚本。当然,Mininet 也支持使用 Python 脚本来自定义更复杂的网络行为和实验场景。您可以编写自己的 Python 脚本来定义网络拓扑、配置网络设备参数及实现特定的网络功能。

例如,您可以通过继承 Mininet 的拓扑类,创建个包含多个子网络、不同带宽和延迟设置的复杂拓扑,并在脚本中对交换机的流表进行编程,实现特定流量转发策略,例如负载均衡、流量过滤等等。这种方式为用户提供了极大的自由度,能够满足各种个性化的网络实验需求。

总结

总之,Mininet 可作为一款网络实验工具,凭借简单易用、功能强大特点,在网络领域有着广泛的应用。

无论是初学者入门网络知识,还是专业研究人员进行深度网络研究,Mininet 都是一个不可或缺的得力助手。通过掌握 Mininet 安装与使用方法,就可以开启一段精彩的网络实验之旅,探索网络世界无限奥秘。

昨天以前首页

老派博主的博客体验笔记

作者 William
2026年1月14日 16:35
最近看了一篇文章,触动挺大。我也根据文章整理了自己对博客的一些感受。写博客,其实是给别人看的。技术再炫也不能抢走阅读感受。好的博客,是读者想打开就能顺利读完、想用功能就能轻松找到,也能感受到用心和舒服,让人愿意一次次回来的那种地方。

两款moviepilot-v2插件,实现115网盘strm302播放

作者 老张
2026年1月5日 10:58

两款moviepilot-v2插件,实现115网盘strm302播放 - 第1张图片

去年11月初的时候,配置了真正意义上的第一台NAS,《DIY人生第一台NAS-硬件篇》。虽然当时花了七千多块,很多人都认为是大冤种,但是这才过两个月,硬件又涨了一千多上去,看了一些新报报道,内存、固态等今年还会持续上涨。本来想把这台NAS转成台式机再配置一个低配的NAS用的,还是算了吧!

这台NAS本是不准备搞影视库的,但是老婆这段时间天天追剧、几个视频平台的年度会员也都连续买了几年,所以也就想着干脆买了115会员,自己来折腾算了。先在论坛上收了一个原石会员,不到30T的空间几十块钱,然后再充值8年会员再送永久40T空间,基本上够用了。

拿网盘来做影视库,最需要解决的就是“网盘直链播放”,也就是大家正常说的302重定向播放。简单的理解就是播放网盘视频时,流量不经过你的NAS或服务器,即使是你家宽带上行很低或是你的服务器VPS在国外,都可以流畅的播放网盘视频。所以,有些没有NAS的朋友,用国外便宜的VPS也可以搭建网盘影视库。飞牛fnos是原生的支持网盘直链播放的,但是经过测试,飞牛影视刮削准确率不高,同一网盘我在单位和在家分别进行了测试,刮削出的影视总量相差近千,所以,不得不再折腾起来。

实现115网盘302播放的,目前主流有moviepilot-v2、CloudMediaSynC(cms)和symedia,后面两者都是那收费版的,今天我们先折腾moviepilot-v2。moviepilot-v2部署好之后,只需要通过115网盘STRM助手、mediawarp这两款插件,就可以实现115网盘strm302播放了。

部署moviepilot-v2

version: '3'

services:
  moviepilot-v2:
    image: jxxghp/moviepilot-v2:latest
    container_name: moviepilot-v2
    stdin_open: true
    tty: true
    hostname: moviepilot-v2
    network_mode: bridge
	
    ports:
      - "4000:3000"
      - "9000:9000"
    volumes:
      - /vol1/1000/Docker/moviepilot/media:/media
      - /vol1/1000/Docker/moviepilot/config:/config
      - /vol1/1000/Docker/moviepilot/core:/moviepilot/.cache/ms-playwright
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      NGINX_PORT: "3000"
      PORT: "3001"
      PUID: "0"
      PGID: "0"
      UMASK: "000"
      TZ: "Asia/Shanghai"
      SUPERUSER: "admin"
      SUPERUSER_PASSWORD: "你的用户名和密码"
	restart:wlways  
	  

部署emby

version: '3'

services:
  emby:
    image: amilys/embyserver:latest
    container_name: emby
    restart: unless-stopped
    ports:
      - "8096:8096"
      - "8920:8920"
      - "65039:7359/udp"
      - "65040:1900/udp"
    volumes:
      - /vol1/1000/Docker/emby/config:/config
	  - /vol1/1000/Docker/emby/data:/data
      - /vol1/1000/Docker/moviepilot/media:/video
    environment:
      PUID: "0"
      PGID: "0"
      GIDLIST: "0"
      TZ: "Asia/Shanghai"
      EMBY_PublishedServerUrl: "xxx.xxx.xxx.xxx"
    privileged: true	

安装这个amilys/embyserver版本,能让你很开心!你懂的!

安装115网盘STRM助手、mediawarp插件

在moviepilot-v2插件中心中,搜索安装即可。

必要配置

moviepilot-v2设定,系统设置最下清加媒体服务器。(IP地址自定)

两款moviepilot-v2插件,实现115网盘strm302播放 - 第2张图片

moviepilot-v2的API令牌刷新,这点必须注意,是一个坑,否则生成的strm文件缺少api代码,不可用!我就掉在这个坑里折腾了几个小时。

moviepilot-v2-设定-系统-API令牌-刷新即可。

115网盘strm助手配置

两款moviepilot-v2插件,实现115网盘strm302播放 - 第3张图片

mediawarp配置

两款moviepilot-v2插件,实现115网盘strm302播放 - 第4张图片

emby添加媒体库

这个就不赘述了!

写在最后

moviepilot-v2主要功能是PT玩家的影视“一条龙”服务,我们只是使用了他的两款插件。

不要太“迷信”AI,我在部署moviepilot-v2的时候,AI直接把network_mode: bridge这行给去掉了,说是Docker默认就是bridge。结果emby302端口界面老是打不开,又是折腾了几个小时。即使在中途把docker停掉修改配置也不行。最后重新部署才成功。

这篇教程说的比较粗略,只是列出了基本的核心操作,也可以参考网上其他教程进行。

 

快来解锁你的年度互动报告

作者 William
2025年12月26日 15:37
前几天在瓦匠那儿看到了博友的年度报告,再加上年底各种 APP 都在发总结,就想着不如也从评论者的角度做一份试试。前端页面交给 AI 出,我来处理数据获取,折腾了几个晚上,最后就有了这份博友的年度互动报告。数据不复杂,主要图个好玩,欢迎点进来看看。

typecho插件-MemosSync,Memos 同步插件

作者 老张
2025年12月22日 21:50

typecho插件-MemosSync,Memos 同步插件 - 第1张图片

这款插件是我找deepseek写的,主要功能是把typecho发布的内容自动同步到Memos上。应该是绝大部分博主都用不上,各取所需吧!也是想说,AI成熟了,我们每位都是程序员,都可以让AI写出自己想要的功能的代码!

一直以来,除老张博客外,还有一个后花园,老张随笔。老张随笔就是每天记一些点滴,发一点牢骚!字数都是在一两百字,到目前为止,也记录了近一千五百篇日志了。老张随笔最初选用的是较轻量的Typecho程序,后来Memos在博客圈流行的时候,老张随笔便换成了Memos程序,这样能更好的和五木大佬开发的哔哔广场融合。Typecho数据导入到Memos数据库中也非常的简单,这篇《简单几步,Typecho博客文章轻松导入到Memos》教程,便可以教大家很方便的把Typecho的文章导入到Memos中。Memos也使用了两三年吧,但是由于作者的任性更新,版本一直还停留在0.18.1上。加之大家对Memos热度的减少,现在玩Memos的人很少了,原来五木大佬的哔哔广场,每天都好几十条哔文,现在基本上很少有人发了。种种原因,老张随笔又换回了Typecho程序,但是老张又舍不得Memos,所以在Typecho上发布一篇文章后,便手动复制到Memos上,也算是做为备份吧!每天手动甚是麻烦,便有了这款Typecho插件-MemosSync,Memos同步插件。

typecho插件-MemosSync,Memos 同步插件 - 第2张图片

插件功能特点:

  • ✅ 文章发布时自动同步到Memos

  • ✅ 支持将文章分类作为Memos标签

  • ✅ 可配置可见性(公开/受保护/私有)

  • ✅ 完整的错误处理,不影响文章发布

  • ✅ 后台配置界面

安装和使用说明

1.安装插件

将下面的文件上传到 /usr/plugins/MemosSync/ 目录

在Typecho后台启用插件

2.配置插件:

进入插件设置页面

填写Memos地址(例如:https://memos.example.com)

输入Access Token(在Memos设置中生成)

选择可见性设置

启用同步功能

3.获取Access Token:

登录您的Memos实例

进入设置 → 权限 → Access Tokens

生成新的Token并复制到插件设置中

注意事项

  1. 确保您的Typecho服务器可以访问Memos实例

  2. 如果同步失败,会在Typecho日志中记录错误信息

  3. 标签会自动过滤特殊字符,只保留字母、数字、中文和下划线

插件结构

/usr/plugins/MemosSync/

├── Plugin.php ├── config.xml └── form.php

1. config.xml

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<name>MemosSync</name>
<description>将Typecho文章同步到Memos</description>
<author>Your Name</author>
<version>1.0.0</version>
<module>MemosSync</module>
</plugin>

2. form.php

<?php if(!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<h2>Memos 同步设置</h2>

<div class="typecho-page-title">
    <h2>Memos 配置</h2>
</div>

<div class="typecho-option">
    <label class="typecho-label" for="memos_url">Memos 地址</label>
    <input type="text" class="text" name="memos_url" id="memos_url" value="<?php $this->options->memos_url(); ?>" />
    <p class="description">请输入完整的Memos地址,例如:https://memos.example.com</p>
</div>

<div class="typecho-option">
    <label class="typecho-label" for="memos_token">Access Token</label>
    <input type="text" class="text" name="memos_token" id="memos_token" value="<?php $this->options->memos_token(); ?>" />
    <p class="description">在Memos设置中生成的Access Token</p>
</div>

<div class="typecho-option">
    <label class="typecho-label" for="memos_visibility">可见性</label>
    <select name="memos_visibility" id="memos_visibility">
        <option value="PUBLIC" <?php if($this->options->memos_visibility == 'PUBLIC') echo 'selected'; ?>>公开</option>
        <option value="PROTECTED" <?php if($this->options->memos_visibility == 'PROTECTED') echo 'selected'; ?>>受保护</option>
        <option value="PRIVATE" <?php if($this->options->memos_visibility == 'PRIVATE') echo 'selected'; ?>>私有</option>
    </select>
    <p class="description">选择同步到Memos的可见性设置</p>
</div>

<div class="typecho-option">
    <label class="typecho-label">
        <input type="checkbox" name="memos_enable_sync" value="1" <?php if($this->options->memos_enable_sync == '1') echo 'checked'; ?> />
        启用同步功能
    </label>
    <p class="description">启用后,发布文章时会自动同步到Memos</p>
</div>

<div class="typecho-option">
    <label class="typecho-label">
        <input type="checkbox" name="memos_include_tags" value="1" <?php if($this->options->memos_include_tags == '1') echo 'checked'; ?> />
        包含分类作为标签
    </label>
    <p class="description">将文章分类作为Memos的标签</p>
</div>

3. Plugin.php

<?php
/**
 * MemosSync - Typecho文章同步到Memos插件
 * 
 * @package MemosSync
 * @author Your Name
 * @version 1.0.0
 * @link https://yourblog.com
 */
class MemosSync_Plugin implements Typecho_Plugin_Interface
{
    /**
     * 激活插件
     */
    public static function activate()
    {
        Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('MemosSync_Plugin', 'syncToMemos');
        Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishSave = array('MemosSync_Plugin', 'syncToMemos');
        
        return _t('插件已激活,请配置Memos设置');
    }

 /**
     * 禁用插件
     */
    public static function deactivate()
    {
        return _t('插件已禁用');
    }

    /**
     * 插件配置面板
     */
    public static function config(Typecho_Widget_Helper_Form $form)
    {
        require_once 'form.php';
    }

    /**
     * 个人用户的配置面板
     */
    public static function personalConfig(Typecho_Widget_Helper_Form $form) {}

/**
     * 同步到Memos
     */
    public static function syncToMemos($contents, $post)
    {
        // 获取插件配置
        $options = Typecho_Widget::widget('Widget_Options');
        $memosUrl = $options->plugin('MemosSync')->memos_url;
        $memosToken = $options->plugin('MemosSync')->memos_token;
        $memosVisibility = $options->plugin('MemosSync')->memos_visibility;
        $enableSync = $options->plugin('MemosSync')->memos_enable_sync;
        $includeTags = $options->plugin('MemosSync')->memos_include_tags;
        
        // 检查是否启用同步
        if (!$enableSync) {
            return;
        }
        
        // 验证必要配置
        if (empty($memosUrl) || empty($memosToken)) {
            return;
        }
        
        try {
            // 准备请求数据
            $apiUrl = rtrim($memosUrl, '/') . '/api/v1/memos';
            
            $content = $contents['text'];
            
            // 如果启用了标签功能,获取分类作为标签
            $tags = array();
            if ($includeTags && isset($contents['category'])) {
                $category = $contents['category'];
                if (is_array($category)) {
                    $tags = $category;
                } else {
                    $tags = array($category);
                }
            }
            
            // 构建内容,包含标签
            $memoContent = $content;
            if (!empty($tags)) {
                $tagString = '';
                foreach ($tags as $tag) {
                    $tagString .= ' #' . self::formatTag($tag);
                }
                $memoContent .= "\n\n" . $tagString;
            }

// 准备请求数据
           $postData = array(
                'content' => $memoContent,
                'visibility' => $memosVisibility
            );
            
            // 发送请求到Memos
            $http = Typecho_Http_Client::get();
            if ($http) {
                $http->setHeader('Authorization', 'Bearer ' . $memosToken)
                     ->setHeader('Content-Type', 'application/json')
                     ->setData(json_encode($postData))
                     ->setTimeout(30)
                     ->send($apiUrl);
                
                $response = $http->getResponseBody();
                $status = $http->getResponseStatus();
                
                if ($status != 200) {
                    throw new Exception('Memos API 返回错误: ' . $status . ' - ' . $response);
                }
            }
            
        } catch (Exception $e) {
            // 记录错误日志,但不影响文章发布
            Typecho_Log::write('MemosSync Error: ' . $e->getMessage(), Typecho_Log::WARN);
        }
    }
    
    /**
     * 格式化标签
     */
    private static function formatTag($tag)
    {
        // 移除特殊字符,只保留字母、数字、中文、下划线
        $tag = preg_replace('/[^\p{L}\p{N}_]/u', '', $tag);
        return $tag;
    }
}

阿里云ESA体验及缓存规则配置

作者 William
2025年12月16日 22:42
阿里云近期也推出了边缘安全加速ESA免费版,我试了试还挺顺手。它操作和EdgeOne差不多,但号称无限流量,对我这种用阿里云服务器的小站也更友好。我照着教程配了缓存规则,把静态图片、CSS这些都缓存起来,登录用户和动态页面不缓存。网站速度明显快了不少。

typecho博客从宝塔面板搬到1panel面板踩的那些坑

作者 老张
2025年12月9日 10:57

typecho博客从宝塔面板搬到1panel面板踩的那些坑 - 第1张图片

老张博客搬家至酷鸭数据香港VPS》时,还算是比较顺利。想着既然老张博客已经搬到了酷鸭数据,那也把我的后花园“老张随笔”也搬过来吧,说干就干。

以前用的CC家服务器,安装的是宝塔面板,手里一直还有一个1panel的永久授权版,所以这次酷鸭数据的香港VPS我使用的是1panel。如果两台服务器都是宝塔,那搬家真的是分分钟的事,直接用应该商店里的“网站迁移”就行,而现在,只能通过备份网站文件、数据库文件后再上传到新服务器的方式来进行搬家了。

网站运行环境不一致

这块还比较顺利,因为两台服务器我都使用了相同版本的MYSQL、PHP等。另外需要特别注意的就是PHP的扩展、禁用函数也必须要保持一致。

链接不上数据库

这个问题非常好解决,宝塔面板链接数据库MYSQL默认的是localhost,而1panel面板连接MYSQL地址是MYSQL的容器的名称,这点必须要修改。

登录后台遇500,Unmatched '}'报错

这个是我折腾最久的一个坑,当把老张随笔搬过来后,登录后台发现出现500报错,提示为Unmatched '}'。这个坑一直折腾了几个小时。其实在这里,我也是犯了一个非常简单的错误,就是搬家之前没有关闭所有插件。所以建议像这样的搬家,最好在搬家之前把所有的插件停掉、主题换成默认的,搬家后再一个一个启用插件,以便可以更好的测试到错误。

把所有的插件和主题停用后,后台可以正常进入,这个时候再一个一个启用插件,当排查到LoveKKCommentModify这个插件,只要启用就会提示Unmatched '}'。因为对1panel不熟悉,找到AI解决了问题。修改了LoveKKCommentModify的Plugin.php文件第343行:将 <? 改为 <?php、第589行:将 <? 改为 <?php。

其实导致这个问题的最终原因是LoveKKCommentModify插件使用了PHP短标签,宝塔面板默认是开启的,而1panel默认是关闭的。只需要到1panel的运行环境中,把PHP短标签开启即可。根本就不需要修改什么代码。

开启伪静态,登录不了后台

登录1panel后台,为typecho网站设置未静态,代码是默认的,但是出问题了。登录后台出现404错误,并提示:“找不到以下 Web 地址的网页: https://zhangbo.net/index.php/action/login?_=5ca13260eXXXXXXX53adXXXXc92a HTTP ERROR 404。

deepseek分析原因为Typecho的路径处理与当前伪静态规则不匹配。我也就想不通了,为什么官方的默认的代码就不匹配了。最后解决方法添加break指令修正规则

if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
break;
}

搬了一个家,遇到很多坑,折腾N天!要是若干年前还没有AI的时候,估计请教N位大佬也不一定能把问题解决。现在好了,AI普及,遇到问题都可以自己解决,有了AI,人人都是程序员了!!

酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价

作者 老张
2025年12月6日 14:52

酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第1张图片

老张博客搬家至酷鸭数据香港VPS》,目前使用已有一段时间了,感觉还是不错的。所以这里推一推自己的AFF。我的推广链接:https://www.kooya.hk/recommend/3gwffST4RbTO

目前酷鸭数据推出2026年盼新活动,8核16G高性能配置,香港Colo数据中心,399续费同价。目前老张博客也是放在这台母鸡上。当我看到这款配置的时候,我和酷鸭交流过,首先问这样高的配置是不是超售,得到答案是绝不会超开。其实像我们这样的博主,根本用不了这样高的配置,我想着能不能把配置降一降比如降到4核4G,带宽从5M往上提一提,这样价格还可以更低。得到的答案是年底了需要向总公司提交年度报告,如果总公司发现容量空那么多就觉得没必要给那么多配置容量给这边市场。所以原来活动配置是8核8G,索性就多送了8G内存。带宽太贵,只能给到5M,对于博客来说,5M的带宽也是足够使用的了。

若有想购买的,用我的推广链接注册呀!首页会弹出活动配置链接。还是那句话,不管是大厂还是小厂,记得天天备份数据哟!

酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第2张图片

Basic System Information:
---------------------------------
Uptime     : 0 days, 0 hours, 21 minutes
Processor  : Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
CPU cores  : 8 @ 2299.984 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 15.4 GiB
Swap       : 0.0 KiB
Disk       : 130.0 GiB
Distro     : Debian GNU/Linux 12 (bookworm)
Kernel     : 4.18.0-358.el8.x86_64
VM Type    : KVM
IPv4/IPv6  : ✔ Online / ❌ Offline

IPv4 Network Information:
---------------------------------
ISP        : Cogent Communications
ASN        : AS401696 cognetcloud INC
Host       : FOJ IP TECHNOLOGY LIMITED
Location   : Mong Kok, Yau Tsim Mong District (KYT)
Country    : Hong Kong

fio Disk Speed Tests (Mixed R/W 50/50) (Partition -):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 227.97 MB/s  (56.9k) | 1.44 GB/s    (22.5k)
Write      | 228.57 MB/s  (57.1k) | 1.44 GB/s    (22.6k)
Total      | 456.54 MB/s (114.1k) | 2.88 GB/s    (45.1k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 1.56 GB/s     (3.0k) | 1.61 GB/s     (1.5k)
Write      | 1.64 GB/s     (3.2k) | 1.71 GB/s     (1.6k)
Total      | 3.20 GB/s     (6.2k) | 3.32 GB/s     (3.2k)

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 739                           
Multi Core      | 4879                          
Full Test       | https://browser.geekbench.com/v5/cpu/23949468

 SysBench CPU 测试 (Fast Mode, 1-Pass @ 5sec)
---------------------------------
 1 线程测试(单核)得分:          884 Scores
 8 线程测试(多核)得分:          6533 Scores
 SysBench 内存测试 (Fast Mode, 1-Pass @ 5sec)
---------------------------------
 单线程读测试:          18155.68 MB/s
 单线程写测试:          14202.38 MB/s

酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第3张图片
酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第4张图片
酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第5张图片

DIY人生第一台NAS-软件篇

作者 老张
2025年12月1日 22:16

DIY人生第一台NAS-软件篇 - 第1张图片

 

DIY人生第一台NAS-硬件篇》已经有十几天了,这段时间由于工作上的事情比较多也就没有怎么样去折腾,只是把手机里、台式机、笔记本、移动硬盘等零零散散的照片收集起来并上传到了NAS,本来想的跑N个服务的到目前为止还一个也没有安装。这个时候就会想到组的这台NAS真的是性能过剩了,提到性能过剩,就来聊聊硬件安装好后,对于软件的考虑。

NAS系统的选择

硬件组建好之后,对于系统我也有考虑。NAS必须要求稳,不能今天安装这个系统、明天再安装个那个系统,只要能稳定运行就行。所以首当选择的就是飞牛fnos,虽然之前一直玩的是黑群晖。在J4125小主机群里有几位大佬交流之后,他们说像这样性能的NAS,不搞个all in one的话,性能都不能发挥出来。他们的建议就是“算存分离”,也就是虚拟出黑群晖来存放数据,而各种应用使用飞牛,飞牛和黑群晖之间通过虚拟交换机的万兆网卡用SMB达到秒传输数据。直接点说,他们看好飞牛系统里的各项应用,但是并不看好飞牛存储数据的安全性,那也就是“即想,又要”的关系了。之前折腾J4125的时候一直用ESXI做底层,但是我的这台NAS网卡却是螃蟹卡,在海鲜上买了半高的I350T4,可是安装好之后,挡了CPU的排风,加之我也不是太想搞“算存分离”,就放弃吧。简单点,直接飞牛fnos走起。其实那时也想着搞Unraid,虽然之前在张大妈上看过阿文菌的教程,但是我想折腾起来的话又得要N久,算了吧。

硬盘陈列方案的选择

在组这台NAS前,手时就存有两块4T西数的红盘和一块4t的旧的监控盘。因为那块监控盘在我手里都运行了两种多,之前从监控上淘汰下来的时候也运行有三四年,一共是运行了五万多小时,所以准备重新买一块西数红盘,三块硬盘组RAID5的,这样8T的空间于我说来真的是足够使用了。但是群里大佬说RAID5如果有坏盘换新重建的时候,有极高的二次故障风险,这个是RAID5最为致命的缺点,而RAID1的重建风险就非常的低。想想自己使用场景也就是存个照片什么的,最终还是两块4T西数红盘组成了RAID1,用来放照片等数据。而那块旧的4T监控盘直接使用,用来放影视,就是这块盘坏了,数据丢了也无所谓。

文件系统类型选择

在我组这台NAS的前两三个月吧,飞牛正式推出了ZFS文件系统。当也有做了功课,请教了deepseek的回答就是,鉴于我的硬件配置,那是必须要上ZFS。ZFS虽然对内存的要求极高,但是32G内存安全可以应付得来。ZFS的受益:ZFS会愉快地使用10GB、甚至20GB的内存作为ARC缓存,这将让您的照片库浏览、文件搜索等操作快如闪电。最终效果是:您的NAS整体响应速度会更快,因为大量的数据请求被内存缓存消化掉了,避免了慢速的硬盘I/O。“请毫不犹豫地选择ZFS。 它的内存占用是一种积极的、提升整体系统性能的投资。您的32GB内存足以让ZFS和您所有的Docker服务和谐共处,并享受ZFS带来的极致数据安全和飞快的读取速度。这是一种“双赢”的局面,而不是一场“零和博弈”。”,虽然deepseek把ZFS说的这么好,但是考虑到后期扩容的灵活性、数据恢复等众多原因,最后还是选择了Btrfs。

其实总结下来,还是选择大众化的,安心、省心、不劳心!

 

 

老张博客搬家至酷鸭数据香港VPS

作者 老张
2025年11月26日 11:54

老张博客搬家至酷鸭数据香港VPS - 第1张图片

不知道从什么时候起,老张博客打开后台评论页面时非常卡顿,经常导致浏览器无响应,甚至有时候电脑都跟着一起卡,排查了好长时间没有找到原因所在。而目前手里有一台酷鸭数据的香港VPS在跑长毛象,这台酷鸭数据的香港VPS较CC的VPS配置要高一些,所以想着搬过去之后会不会问题可以解决。

酷鸭数据的香港VPS我在《酷鸭数据香港服务器简单测评》做过推荐,从9月份跑毛长象到现在,都一直非常的流畅,线路是没得说。但是价格方面呢,2H2G香港的一个月30块钱,不像什么狐蒂云16H16G香港的才111块钱,可想而知,你自己懂的!虽然酷鸭数据的母公司https://node.co.id/和https://www.ikubaru.co.id/在印尼已经创办多年,但是初到中国市场,大家的认可度还不是太高。如果选择酷鸭数据,可以先选择月付,数据记得每天备份。记得走我的推广链接哟:我的推广链接:https://www.kooya.hk/recommend/3gwffST4RbTO 。再来说说CloudCone,因为价格在那里,中规中矩吧,效果、线路不会惊艳到你,但是也不会太让你失望。

双十一的时候“抢”了雨云的香港活动机,正常价格是48元/每月,年付450元/年,当时活动价是99元,年抛机,当时想拿过来做线路机拉美西的。经过和酷鸭数据的这台香港VPS一比,线路真的是差的有一段距离。

因为跑不少Docker服务,所以本次选择用1panel面板,不管什么,都要尝试一下嘛。到底是才接触,新建一个网站都折腾了个把小时,把老张博客完成搬家后,折腾了三个多小时。要是用宝塔的话,自带的网站迁移,分分钟搞定。折腾这么长时间的原因还是对1panel不熟悉。都说1panel占用服务器资源,我这台服务器目前只把老张博客搬了过来,内存就占用了2.5G了。

博客搬家,目前可以正常访问,估计后续还会遇到这样或那样的小问题,再慢慢解决吧!

搬家成功后,再后博客后台评论页面,卡顿现象并没有解决,说明不是服务器配置问题了。最后还是请教了AI得到了解决,不过开始AI又是让我安装插件、又是让我优化数据库、又让我修改服务器配置。为什么要优化数据库呢,因为我的博客评论数已到20000条,查询数据必然会占用资源。提到了查询,AI最后给的建议是修改每页评论显示数。NND,这个时候我才看到评论页面显示数是999条,修改成每页面显示50条之后,问题立马解决。

自制 Ping 监控工具,助我监看网络链路疑难杂症

作者 Kevin
2025年11月21日 20:10

最近几天,我一直泡在客户现场,为一套出入管理系统做安装和调试。项目本身并不算特别复杂,但网络链路略长、设备层级较多,再叠加门禁前端设备对网络稳定性的敏感度,几乎把这个“小工程”变成了一次完整的网络排障实战。

在这个过程中,我发现仅靠临时敲几下 ping 命令远远不够:需要能够长期监控、按时间统计丢包、自动记录日志的“小工具”,帮我判断网络到底是偶发抖动,还是结构性不稳定。于是,就有了本文分享这个已经跑通、用着还不错的 BAT 监控小脚本。希望对你也有用~

1. 当前项目的网络拓扑结构

本次项目的系统依托园区现有网络架构,通过多级接入交换机构成一条从服务器到岗亭电脑、再到门禁前端设备的完整链路。整体设计看似规范,但只要其中某个环节出现问题,尤其是接入交换机 1 不稳定,后续所有设备便会受到连带影响。总体而言,这套网络结构属于典型的“业务分层 + VLAN 分区”模式:

  • 下层是门禁专网和办公终端网段
  • 上层是园区核心网络和服务器资源
  • 中间是三层/二层交换机级联

从后端服务器到岗亭电脑,大致链路如下:

Server 172.20.1.35
   │
   ▼
Core Network (Core Switch / Router / ...)
   │
   ▼
Access Switch 1 ── 10.255.18.21
   │
   ▼
Access Switc..... [ 阅读全文 ]

原文链接: https://www.shephe.com/post/pinglogger/
版权声明: Kevin's Space 版权所有,转载请用明链标明本文地址
本站相关: 随机文章 | 站长微博 | 关于本站 | 联系站长 | 捐助作者

让网站对 AI 更友好:一次关于 llms.txt 的探索与插件开发

作者 William
2025年11月14日 15:30
最近发现了llms.txt这个新东西。它就像是专门给AI看的“网站说明书”。为了给自己的博客配上标准规范的llms.txt,我试了好多WordPress插件都不满意,格式太乱。干脆自己动手写了一个,把页面、文章的分类和摘要都利用起来,让AI能更准确地抓取内容。算是为网站跟上AI潮流做了一点小努力。

使用 Total Uninstall 强力卸载顽固软件 & 清理残留

作者 Kevin
2025年10月27日 11:42

如果你想要找一款 Windows 平台的强力卸载工具,并尝试在网上搜索的话,通常会出现这么几个软件:Total Uninstall、Revo Uninstaller、Geek Uninstaller、IObit Uninstaller 等。Kevin 实际下载了它们所有的软件进行测试,最终选定了 Total Uninstall 作为长期使用。尽管它已经一段时间没有更新了,界面也不够现代化,但总体而言,作为一个对电脑系统结构略熟悉的用户,我更喜欢它在卸载逻辑上的可控性与结果的可验证性。

这几个软件在功能上最核心的点,都是围绕「卸载 Windows 系统中的软件、插件与系统残留」展开的。不同的是,有的偏重操作简便,比如 IObit Uninstaller;有的追求轻量与速度,比如 Geek Uninstaller;而 Revo Uninstaller 则以“扫描残留文件”著称。它们都能满足日常用户的需求,但如果你想进一步掌控系统变化、确保每个文件和注册表项都能被精准清理,那么 Total Uninstall 无疑是更高级的选择。

Total Uninstall 的优势在于,它采用“安装前后快照对比”的方式来识别软件的完整安装轨迹。它不仅能记录程序在系统中的文件变化、注册表写入、服务注册等细节,还能基于这些差异生成卸载方案。相比那些仅在卸载后扫描残留文件的工具,Total Uninstall 的清理更彻底、更有逻辑。


[ 阅读全文 ]

原文链接: https://www.shephe.com/post/total-uninstall-remove-clean-software/
版权声明: Kevin's Space 版权所有,转载请用明链标明本文地址
本站相关: 随机文章 | 站长微博 | 关于本站 | 联系站长 | 捐助作者

WordPress中使用ip2region实现评论者IP归属地

作者 William
2025年10月24日 09:31
我将博客的IP归属地查询从纯真IP数据库换成了ip2region。因为纯真dat版已停更,czdb版的IPv6没什么用,而ip2region v3.0+免费、格式规范且支持IPv6。对于博客评论,城市级精度完全足够。本地数据库还有稳定、快速、保护隐私三大优势。现已成功集成,效果不错。

探索网络实验的神器 Mininet

作者 Teacher Du
2025年9月28日 00:00

在计算机网络的学习与研究领域,Mininet 是款极具价值的工具。它就像是一个迷您网络世界的构建者,为我们提供便捷的网络实验环境。本文将带您深入了解 Mininet 魅力所在,并手把手教您安装与使用它。

简介

Mininet 是一个用于创建虚拟化网络环境的平台。

它能够在一台计算机上快速构建出包含多个交换机、主机、路由器等网络设备拓扑结构。

对于网络研究人员、开发者以及网络课程的学生来说,Mininet 是一个理想实验平台。

通过它可以模拟大规模网络环境,进行各种网络协议研究、网络应用的开发测试以及网络教学演示等。

例如,如果您想研究一种新的网络路由算法,借助 Mininet 就可以轻松搭建出实验所需的网络场景,无需搭建实体网络设备,大大节省了成本和时间。

它的核心优势在于轻量级以及灵活性。Mininet 是基于 Linux 的用户模式 Linux 网络命名空间技术实现的,这使得它能很方便地在各种 Linux 系统上运行。

而且,Mininet 的网络拓扑结构可以灵活定制,无论是简单的链式拓扑、树形拓扑,还是复杂的自定义拓扑,都能通过简单的配置文件或命令行参数来实现。

同时,Mininet 还支持多种网络仿真工具集成,例如 Wireshark 等,方便针对网络流量进行分析。

安装

安装 Mininet 的过程相对简便,但需要确保您的系统满足一定的前提条件。以下是基于 Ubuntu 系统安装步骤。

首先,需要更新系统的软件包列表。在终端输入命令 sudo apt update,让系统获取最新软件包信息。

然后安装必要的依赖库。可通过运行 sudo apt -y install build-essential autoconf automake libtool pkg-config gawk git python python-pip python-dev tcpdump wireshark sqlite3 curl bzip2 openvswitch-datapath-dkms openvswitch-switch openvswitch-common 命令,可一次性安装这些依赖,它们是 Mininet 正常运行和后续功能扩展的基础。

接下来就是安装 Mininet 本身。可从 Mininet 的官方仓库克隆代码,可使用命令 git clone git://github.com/mininet/mininet,然后进入 Mininet 目录中,再运行 mininet/util/install.sh -a 命令进行安装。这个安装脚本会自动完成编译和安装过程,在安装完成后,系统会提示安装成功的相关信息。

使用

安装 Mininet 后,就可以开始体验它强大的功能了。最基本的使用方式是通过命令行来创建和操作网络拓扑。

创建网络拓扑。Mininet 提供了简单的命令行参数来快速创建常见的网络拓扑。

如运行命令 sudo mn,就会自动创建一个包含两个主机、一个交换机和一个控制器的简单网络拓扑。

主机间通过交换机进行通信,控制器用于管理交换机行为。

如果想要创建更复杂的拓扑,可使用--topo 参数。如使用命令 sudo mn --topo linear,4,就会创建四个主机呈线性连接的拓扑,主机 1 连接到交换机 1,交换机 1 连接到主机 2,依此类推,形成一条链式结构。

操作网络设备。创建好网络拓扑后,Mininet 会进入交互式命令行界面。在这个界面中,可对网络设备进行各种操作。

例如,可以通过 h1 命令进入主机 1 的命令行界面,在主机 1 上执行网络相关的命令,如 ping h2 来测试主机 1 和主机 2 之间的连通性。如果网络配置正确,应该可以看到主机 1 向主机 2 发送 ICMP 请求并收到回复的信息,这就表明网络通信是正常的。

对于交换机可以使用 ovs-vsctl 命令来查看和配置交换机的端口信息、流表等等。例如,ovs-vsctl show 命令可显示交换机的详细信息,包括交换机的名称、连接主机、端口号等。

可自定义脚本。当然,Mininet 也支持使用 Python 脚本来自定义更复杂的网络行为和实验场景。您可以编写自己的 Python 脚本来定义网络拓扑、配置网络设备参数及实现特定的网络功能。

例如,您可以通过继承 Mininet 的拓扑类,创建个包含多个子网络、不同带宽和延迟设置的复杂拓扑,并在脚本中对交换机的流表进行编程,实现特定流量转发策略,例如负载均衡、流量过滤等等。这种方式为用户提供了极大的自由度,能够满足各种个性化的网络实验需求。

总结

总之,Mininet 可作为一款网络实验工具,凭借简单易用、功能强大特点,在网络领域有着广泛的应用。

无论是初学者入门网络知识,还是专业研究人员进行深度网络研究,Mininet 都是一个不可或缺的得力助手。通过掌握 Mininet 安装与使用方法,就可以开启一段精彩的网络实验之旅,探索网络世界无限奥秘。

❌
❌