一、WSL、influxdb 是啥?
(一)WSL 是啥
根据百度百科,WSL是Windows Subsystem for Linux 的简称,就是是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。目前WSL中的Linux系统已经升级到ubuntu 20.04LTS。
WSL分成WSL1和WSL2两个版本,有人认为WSL1是真实本机,WSL2是虚拟机。从性能上来说,WSL1的IO性能,尤其是相比WSL2要弱一些,具体的比较见这里:
理论上来说,windows10上安装了WSL后,既可以用windows,又可以用Linux。实际上,虽然对一般的应用来说,WSL已经够用,但是在细节上,还是有不少差异。具体的讨论见:
内置WSL 2的Windows 10可以完全取代桌面版Linux吗?
要提醒的是,WSL使用过程中会遇到各种坑,其解决办法有时不能完全参照真实ubuntu的。
(二)influxdb是啥
InfluxDB是一个由InfluxData开发的开源时序型数据库,它被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。也就是说,它是专门被开发出来,用于处理时序数据。
时序数据库全称为时间序列数据库,它跟传统的关系型数据库 RDBMS( 如 MySQL )、NoSQL 数据库( 如 MongoDB )、Key-Value 类型数据库( 如 redis )、Wide column 类型数据库( 如 HBase )最大的区别在于,它以时间为索引的规律性时间间隔记录数据。
比如:
因此,时序数据库天然就适合处理金融领域的数据。
(三)WSL、influxdb为什么放在一起
很不幸,influxdb数据库目前还没有出windows版,对一般人来说,易用性相对好一点的就是在Linux中使用,但是对于电脑数量不多,或者不想自己搭服务器的人来说,在自己的电脑上装两个系统是一个比较好(懒)的方案。
而相对于windows+虚拟机来说,windows+WSL是一个性能牺牲更小一点的方案。
二、安装 WSL 的常用步骤
(一)在线安装
具体见:
手把手教你启用Win10的Linux子系统(超详细)
(二)离线安装
具体见:
WSL(Ubuntu)绿色安装
补充一下,使用方法是在命令行状态下,输入 wsl 后回车,就能进入WSL系统中,在系统中输入 exit 就能回到命令行状态。
这个方法最麻烦的就是要先把整个安装文件从微软的官网上下载下来,现在最新的 20.04 版大小有400多M,如果网速不快的话,要下好一阵子。
手动下载适用于 Linux 的 Windows 子系统发行版包
(三)系统迁移
在线安装默认自动安装到系统盘,但是很多人都不希望把太多东西都集中装在系统盘上,此时可以将WSL系统迁移到非系统盘中。常见的迁移方法有两种:
1、使用工具 LxRunOffline 进行WSL系统的迁移
搞机:window10安装Linux子系统(WSL)及迁移到非系统盘
2、使用工具 mklink 创建软连接,让系统误以为是装在系统盘,其实是装在其他盘。
Windows下Linux子系统迁移到非系统盘
其他大文件也可以用 mklink 迁移到非系统盘后再创造软链接,这样可大大减少C盘的空间占用。
mklink使用介绍
(四)WSL1升级到WSL2
1、适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
2、
3、升级需要用到 win10易升将本机的win10升级到最新版,但是之后win易升平时会不定时弹出,普通的卸载不容易清除干净,可以用这个办法关闭:
完全关闭WIN10易升的方法
(五)可能会遇到的坑
这里说的坑,是针对不熟悉linux的人来说的。
1、及时授权
在ubuntu中用vim修改各类配置文件,最好每次都用sudo授权,以免改好后想保存退出,才发现文件是只读的。虽然到时候再授权也行,但总没那么方便。
2、无法使用systemd
WSL中初始化进程默认不是挂载systemd,因此用类似如下语句管理服务都会报错
sudo systemctl xxx_service_name start
System has not been booted with systemd as init system (PID 1). Can't operate.
解决这个问题有两个办法
1)用类似命令解决
输入以下命令,查看当前WSL使用的是哪个init系统
ps -p 1 -o comm=
如果显示的是 systemd,挂载的是 systemd,如果显示的是 init或者sysv等,说明挂载的是sysv init系统。
那么就用各个系统中对应的命令来管理服务就好了,常用的命令比较如图:
2)手动启用systemd
具体内容见 WSL启用systemd
3、无法安装包
安装某个包时报错 Unable to locate package xxxxx
说明按现在本地的更新源数据,无法安装对应的包,解决办法就是更新更新源的数据三连击:
sudo apt update
sudo apt-get update
sudo apt-get upgrade
4、无法开启服务
开启某个 service 时,比如
service sshd start
sshd: unrecognized service
原因可能是没有开启 ssh 服务,需要按照以下步骤逐步确认:
1)生成key文件
sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
如果上述两个文件存在,仍然出现这个错误,那么试试 chmod 600 上述两个文件。之后应该可以解决。
否则会报错
sshd re-exec requires execution with an absolute path
2)开启ssh服务
sudo /etc/init.d/ssh restart
# 或
sudo /etc/init.d/ssh start
3)现在可以去开启想开启的服务了
(六)安装图形界面
ubuntu是通过安装x windows的方式,在它的Linux核心之上添加一个GUI层,具体可安装的app包括X410、VcXsrv、MobaxTerm、Cygwin/C。我选择VcXsrv,安装过程是:
win10+WSL+安装VcXsrv Windows X Server
相关的注意事项看这里:
ubuntu wiki -- WSL
(七)安装其他应用
WSL刚刚装好时,是只有几个核心功能的纯净版,需要自己将各种应用及其依赖装上,如果想装了应用后直接使用,基本上都会出错。
比如将anaconda、pycharm装上之后,想直接进入pycharm,会因为没有安装javasdk和图形界面工具而报错。
三、安装 influxdb 的一般步骤
1、下载安装包
通过wget或者在问0中下载安装包
https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.4-linux-amd64.tar.gz
在WSL中解压
tar xvfz influxdb2-2.0.4-linux-amd64.tar.gz
2、将 influx,influxd 添加到环境变量$PATH中
sudo cp influxdb2-2.0.4-linux-amd64/{influx,influxd} /usr/local/bin/
3、启用 influxdb
1)直接运行 influxdb
influxd
此时可以通过windows的浏览器访问 localhost:8086来管理influxdb数据库。
2)将 influxdb 以服务的形式启动
新增 influxdb 用户并创建用户目录
useradd -rs /bin/false influxdb
mkdir /home/influxdb
chown influxdb /home/influxdb
创建influxdb2.service
# 在/lib/systemd/system目录下
sudo vi influxdb2.service
内容如下:
[Unit]
Description=InfluxDB 2.0 service file.
Documentation=https://v2.docs.influxdata.com/v2.0/get-started/
After=network-online.target
[Service]
User=influxdb
Group=influxdb
ExecStart=/usr/local/bin/influxd
Restart=on-failure
[Install]
WantedBy=multi-user.target
# 启动
sudo service influxdb start
# 查看状态
sudo service influxdb status
# 开机启动
sudo systemctl enable influxdb
# 或者直接
sudo service influxdb start
sudo service influxdb status
sudo service influxdb stop
4、相关数据的保存地址
时间序列数据:/var/lib/influxdb/engine/
key-value 数据:/var/lib/influxdb/influxd.bolt
influxdb CLI 配置:~/.influxdbv2/configs
四、其他安装 WSL的方法
通过 kali 也能在win10上安装WSL,但是这个方法目前尚未尝试过,以后有需要再试试看。具体见:
通过 kali 在win10上安装SWL(官网)
其他参考资料
1、百度百科——WSL
2、浅谈时序数据库
3、sshd: no hostkeys available — exiting
4、InfluxDB 2.0 安装
5、InfluxDB 2.0 以服务形式启动
6、修复 "System has not been booted with systemd as init system "的错误。