Personal Blog

轶哥

轶哥的头像

妄图改变世界的全栈程序员。

Latest Stories

最新文章 · 第 12 页

记录技术实践、产品思考,以及持续探索世界的过程。

云服务器Linux磁盘扩容

云服务器云盘扩容相关文章挺多的,坑也比较多。特整理正确操作如下。

支持的发行版

  • Ubuntu
  • CentOS
  • Debain
  • Alpine
  • Arch

Ubuntu 16.04Ubuntu 18.04Ubuntu 20.04测试过。

CentOS 6CentOS 7CentOS 8测试过。

阿里云腾讯云AWS EC2实测过扩容,以上云服务商都支持云盘扩容。

需要注意的是,虽然扩容方法支持系统盘和数据盘,然而部分云服务提供商并不支持系统盘扩容,只支持在购买云服务器/VPS的时候选择系统盘大小。通常这些服务商都支持对系统盘进行备份,可以通过新购服务器还原系统盘镜像然后再执行此文操作的方式进行迁移扩容。

此方法不支持ARM服务器扩容。一般来说,ARM服务器、Raspberry Pi、NanoPi等arm架构的设备都有专门的扩容方法,需要查阅相应文档进行扩容。

Node.js在VM环境使用ECMAScript modules

vm模块允许在V8虚拟机上下文中编译和运行代码。但是不是安全机制,如果有沙箱(sandbox)需求,可以考虑https://github.com/patriksimek/vm2

在VM环境中使用ECMAScript modules,即在VM环境中可以用import代替require引入某个模块,避免Cannot use import statement outside a module错误,也可以用export代替module.exports

我的使用场景:

通过Node.js在VM环境使用ECMAScript modules之目的,是为了构建一个虚拟环境(可控的上下文内容)动态执行一些代码,方便在复杂系统中构建小型脚本动态的快速验证一些想法。

https://github.com/yi-ge/api-proxy这个小项目中也有用到vm模块。

Node.js 获取项目根目录

介绍一个非常实用的小技巧获取node.js项目根目录

假设我们的js文件写在server目录中,但是我们的资源文件存储在app/img目录中。如下图,我们需要在server/index.js文件中使用fs读取app/img/favicon.ico文件。

获取node项目根目录

在node.js只提供了一个__dirname全局变量。通过__dirname可以获得“C:\wwwroot\yidata\server”。这时需要用到path。

ESXi + Frp 内网穿透

ESXi + Frp 实现内网穿透,可以做到远程管理ESXi。由于ESXi默认启用了SSL本地证书,因此配置方法与传统http站点反向代理有所不同。

[esxi-web]
type = tcp
local_ip = 10.10.10.254
local_port = 443
remote_port = 6012

可以看到上述绑定的本地端口号是443。这里的type只设置为tcp,远程访问地址:https://xx.xx.xx.xx:6012,注意,需要以https开头并忽略证书错误。

ESXi 7.0 安装教程

VMware vSphereVMware虚拟化平台VMwarev Sphere的两个核心组件是ESXivCenter ServerESXi是用于创建并运行虚拟机和虚拟设备的虚拟化平台。vCenter Server是一项服务,用于管理网络中连接的多个主机,并将主机资源池化

可以简单理解为ESXi是安装在物理机上的,通过vCenter Server将多个物理机资源整合起来。

目前ESXi可以独立运行在某个物理设备上,为设备提供虚拟化平台(虚拟机)。例如在软路由中安装ESXi 7.0,以实现爱快+OpenWrt等组合搭配。

ESXi 7.0.0 升级到 ESXi 7.0 Update 1

ESXi 7.0 Update 1 升级说明:《VMware ESXi 7.0 Update 1 Release Notes》,解决了诸多Bug。

随着VMware vSphere 7 Update 1的发布,不少VMware用户正在考虑将生产基础架构升级到新版本。

如何安装ESXi 7 Update 1

有多种安装ESXi 7 Update1的方法。

  1. 全新安装ESXi 7 Update 1
  2. 命令行升级
  3. vSphere Update Manager
  4. vSphere Lifecycle Manager

升级前需参考《ESXi宿主机联网配置》让ESXi宿主机联网。

也可以下载最新版的ISO文件,通过刻录光盘或U盘进行升级安装(方法一)。

以下以第二种方式为例。

ESXi无法添加网络适配器问题解决

netselect.png

ESXi有可能会出现无法添加网络适配器,即无法选择虚拟网卡,网络适配器没有选项(如图)。这个问题是错误的配置导致的,并非系统BUG。

netnumber.png

此时网络数量可能显示为0,或者与实际网络数量不符。

斐讯N1刷OpenWrt及开启旁路由/单臂路由教程(Mac&Win)

经常被朋友安x,由于可玩性强近期涨价了,最终还是忍不住入手。真香!😂

准备

  • 公对公USB数据线
  • U盘
  • 显示器 + USB鼠标 + HDMI线

原理

N1默认系统是Android,不过开机只显示一个简单界面。

  1. 先通过adb远程连接设备,然后发命令重启至fastboot模式,刷入bootbootloaderrecovery进行降级。
  2. 降级后使用U盘启动U盘中的OpenWrt系统(无需刷Armbian),然后使用ssh连接到设备,将U盘中的系统写入到emmc

ESXi宿主机联网配置

ESXi宿主机联网后可以通过SSH在线升级系统版本(例如《ESXi7.0.0 升级到 ESXi 7.0 Update 1》),获得更多新特性。

联网必备条件

  • 至少一根联网线路接入到ESXi宿主机虚拟机中存在一个同网段可联网网关
  • 拥有VMware vSphere clientESXi管理员权限

注:上述“虚拟机中存在一个同网段可联网网关”,例如ESXi + OpenWrt/LEDEESXi + iKuai组合,其中的OpenWrt/LEDEiKuai可以作为联网网关。比如说将ESXi管理地址设置为10.10.10.252,而爱快负责pppoeDHCP Server,且DHCP网段10.10.10.254在同一个网段。

Json Schema定义“既可以是对象,又可以是数组”

如果我想定义json的内容(root)既可以是一个对象,又可以是一个数组,应该如何书写json schema?

这个问题换一种描述方式,“json schema定义了一个对象,但是希望内容也可以是这个对象的数组,如何书写json schema?”。

例如,Typescript中:root: object | [object]

例如,我希望数据可以是下面这样的一个对象:

{
  "method": "GET"
}

也可以是这样的数组:

[
  {
    "method": "GET"
  }
]
  上一页 下一页