记一次由于buff/cache导致服务器内存爆满的问题
前言我目前在使用pve作为我的虚拟化系统,我在pve中开了一个centos7作为我的mc服务器系统
我写了个定时任务使用python每天凌晨3点将磁盘中的游戏数据备份到pve宿主机中的raid5阵列中,但是我发现服务器内存总是爆满,我初步判断是执行备份脚本导致的,后面实际测试后发现确实是
复现我先手动触发一次备份 (后台备份)
1nohup python server.py &
等待数据备份完成,在pve中查看服务器内存占用
发现服务器内存已经爆满了
登录服务器查看占用内存进程排行1top -o %MEM
123456789101112131415161718192021222324252627282930313233343536373839404142top - 18:09:07 up 9:45, 1 user, load average: 0.84, 0.36, 0.19Tasks: 241 total, 2 running, 239 sleeping, 0 stopped, 0 zombie%Cpu(s): 4.1 us, 4.8 sy, 0 ...
【zerotier组网系列】Zerotier异地组网方案初探
前言我之前想要异地组网的话,一般都采用内网穿透的方法,但是这个内网穿透有弊端就是都是要通过公网服务器转发流量,对于大流量的传输就比较不方便,我发现了Zerotier 这个工具非常的好用,是基于p2p的
这是一个类似于 ZooKeeper 的工具,一款异地组网工具。每台服务器上只需要安装对应的客户端,连接到同一个网络,就可以实现 IP 互相访问。在此之上,还有自定义 DNS 服务器的功能,将通过 IP 这个步骤转换为通过域名进行访问,相当实用。
概念所有的设备都是客户端,连接方式是点对点。在路由器下面的话是用 uPnP 的方式进行转发实现客户端到客户端的直接连接。如果 uPnP 没有开启,会通过传统的服务器转发的方式进行连接。
Earth根据其介绍,将地球上的所有设备连起来。那这里的 Earth 指的就是整体的一个服务。
Network每一个 Network 包含的所有设备都在同一个网络里。每个网络有一个 Network ID。各客户端通过这个 ID 连接到此网络。当然,一个账号是可以创建多个网络的。
网络氛围 Public 和 Private。一般我们自己组网是要用 Private,需 ...
【zerotier组网系列】OpenWRT+zeroTier旁路由组网
前言我之前写过一篇文章,探究了zeroTier的最基础的玩法,那篇文章结尾我提到了使用zeroTier虽然实现组网了,但是我只能访问局域网中制定的设备,局域网中其他设备无法访问,这篇文章我又研究了一套方案openwrt+zeroTier旁路由,完美的解决了这个问题
【zerotier组网系列】Zerotier异地组网方案初探
安装Openwrt对于OpenWRT我选择了比较简单省事的istoreos
X86固件下载地址:KoolCenter 固件下载服务器
安装完成之后
我们点击网络 然后点接口
没有配置旁路由可以先配置一下 (上图已经配置完成了,不会配置可以看看我之前的文章)
配置完成之后我们点网络中的防火墙,将转发设置为接受 下面lan的IP 动态伪装也勾上
然后再iStore中安装zeroTier填写网络id启动
zeroTier配置先找到openwrt连接上分配的虚拟IP地址
然后Destination写上你的目标局域网网段,Via写openwrt的虚拟IP地址
这个意思就是说,192.168.3.0 这个网段的流量都会经过10.147.17.180这台设备的转发
测 ...
Linux无分区表
前言最近我在研究pve + bcache ,发现了bcache默认创建的分区bcache0默认的分区是MBR
也就是说,这个分区最大只能存2T数据,我硬盘是6T的,浪费了很多空间
解决1234567891011121314151617181920root@pve:~# fdisk /dev/bcache0 Welcome to fdisk (util-linux 2.38.1).Changes will remain in memory only, until you decide to write them.Be careful before using the write command. The device contains 'ext4' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details. Device does not contain a recognized partition tab ...
MC服务器备份脚本
前言最近开了个mc服务器,为了提高数据的安全性,使用python写了个简单的备份脚本
备份存档数据 (包含三个世界的数据)
代码如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273# -*- coding: utf-8 -*- import osimport zipfileimport datetimeimport logging # 设置备份目录和备份文件名backup_dir = "/home/minecraft/backups"server_path = "/root/mc" # 配置日志输出logging.basicConfig(filename=os.path.join(backup_dir, "backup.log"), level=logging.ERROR, ...
Linux内核编译添加bcache
前言由于我需要使用bcache,但是我们安装的centos系统的内核比较老默认不包含bcache, Bcache内核模块仅在Linux 3.10及以上版本支持
我就想自己编译一个稍微版本高点的Linux内核替换下现在的内核,也顺便学习一下内核编译,当然这篇文章是比较简单的记录
不涉及编译内核参数的解释
环境系统: CentOS7.6
内核:4.19.307
安装编译依赖软件包1yum install -y gcc make git ctags ncurses-devel openssl-develyum install -y bison flex elfutils-libelf-devel bc
创建内核编译目录使用 home 下的 kernelbuild 目录
1mkdir ~/kernelbuild
获取内核源码[清华大学镜像])站:Index of /kernel/v4.x/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
linux-4.xx.xx.tar.xz
linux-4.xx.xx.tar.gz ...
Linux使用bcache让SSD加速硬盘
前言在Linux下,使用SSD为HDD加速,目前较为成熟的方案有:flashcache,enhanceIO,dm-cache,bcache等,多方面比较以后最终选择了bcache。 bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或多个高速磁盘驱动器(例如 SSD)作为一个或多个速度低得多的硬盘的超速缓存。bcache 支持直写和写回,不受所用文件系统的约束。默认情况下,它只超速缓存随机读取和写入,这也是 SSD 的强项。它还适合用于台式机、服务器和高端储存阵列。CentOS和Ubuntu都可以使用bcache。bcache是在3.10以后的版本加入mainline的,因此需要3.10以上的内核版本。但是笔者使用Centos 7在3.10.0的内核上进行配置时,发现无法生成相应的配置文件节点,测试过程中使用4.3.3版的内核。
首先我们先明白几个概念
既然是缓存,那自然就会想到缓存策略,bcache支持三种缓存策略:
writeback:回写策略,所有的数据将先写入缓存盘,然后等待系统将数据回写入后端数据盘中。(性能最好)
writethrough:直写策略(默认策 ...
docker部署aria2-pro
前言我平时有一些下载视频和一些资源文件的需求,有时候需要离线下载,也要速度比较快的方式
之前我是用家里的玩客云绝育之后不再写盘当下载机用的,但是限制很多
我发现了aria2 这个下载器非常适合我,而有个大佬又在原来的基础上进行了大量的配置等优化
发布了aria2-pro的项目,而且提供了docker部署
项目说明
BT 下载率高、速度快
重启后不丢失任务进度、不重复下载
删除正在下载的任务自动删除未完成的文件
下载错误自动删除未完成的文件
下载完成自动删除控制文件(.aria2后缀名文件)
下载完成自动删除种子文件(.torrent后缀名文件)
下载完成自动删除空目录
BT 下载完成自动清除垃圾文件(文件类型过滤功能)
BT 下载完成自动清除小文件(文件大小过滤功能)
有一定的防版权投诉、防迅雷吸血效果
更好的 PT 下载支持
使用 Aria2 Pro Core 项目最新静态编译二进制文件
多平台:amd64, i386, arm64, armhf(VPS、群辉、树莓派等常见平台完美支持)
全功能:Async DNS, BitTorrent, Firefox3 Cookie, ...
Bililive-go实现直播自动监控录制
前言最近有直播录制的需求,但是自己手动录制太麻烦繁琐,于是用了开源项目Bililive-go进行全自动监控录制,目前这个项目已经有3K stars了
部署为了方便我使用了docker compose 部署
123456789101112version: '3.8'services: bililive: image: 'chigusa/bililive-go:latest' container_name: bililive restart: unless-stopped network_mode: bridge ports: - '5009:8080' volumes: - /data/bililive-go/config/config.yml:/etc/bililive-go/config.yml - /data/bililive-go/videos:/srv/bililive
把容器内的配置文件映射到本地服务器/data/bililiv ...
基于SSH打通隧道实现异地组网
前言最近有异地组网的需求,我目前的是用蒲公英X1盒子来进行组网,但是蒲公英X1非会员账号有设备限制3个(这个是硬伤),虽然说可以打通P2P但是在复杂的网络环境下概率不是特别高
所以研究下SSH异地组网的方式,想要打通两个局域网只需要登录SSH即可,也就是说只需要在想连接的局域网端部署一台可以ssh的主机,并且将ssh端口开放到公网即可
本文的内容只用于学习研究,请勿作为违法用途,若用于违规用途出现的任何问题,作者概不负责登录SSH经过我测试Xshell命令行中使用会出现问题,推荐使用windows以及各操作系统的自带命令行进行连接,下面以windows为例
如果命令行输入ssh显示没有命令的话先按照OpenSSH
官网下载地址:https://www.mls-software.com/opensshd.html
下载完成之后,输入命令
1ssh -D 2222 -p Port username@host
Port 写上SSH的端口,一般是22端口, 但是如果你是内网穿透出来的写穿透的外部端口
username 写ssh要登录的用户名
host 写主机名,也就是ssh的目标主机
-D ...