编者注(2022.11):
从2018年7月至今,已有4年多时间,这期间工作岗位变化非常多,开发(Java/Go/前端)、运维、测试、产品、项目管理等等,从架构师、技术主管到CTO,干的事情杂,电脑上的资料和软件非常非常多,电脑桌面处于“常清常满”状态。但是,至今个人的办公及开发环境一直采用如下模式,收效非常好,再也没有为重装系统或软件发过愁,期间几乎没有重装过系统和软件(只有一次机械式的Windows LTS版本升级,只涉及到少量软件无脑安装,而且LTS升级一次可以管2~3年),而且结合《个人文件管理和备份策略》,个人所有资料得以完整有效保存。
这套方案设计,可以在全公司推广,特别是研发团队。
一、背景
办公及开发环境:
怎么能做到一次搭建,永久使用,一劳永逸?甚至还可以快速复制和分享。
如何做到快速搭建,快速恢复。
如何避免重装系统?
如何避免重装软件?
如何避免资料丢失?
如何避免重新配置?
包括几个方面问题:
1、更换电脑或重装系统时,如何快速拥有全面的办公能力、开发能力?
通常情况:
各种软件(常用的、不常用的)都得重新安装,包括各种插件、补丁等;
系统配置,软件配置,都得重新来过;
某些软件中的资料、历史记录,无法完全恢复(比如无法备份,浏览器的历史记录,XSHELL的登录密码等);
其他一些问题……
遇到这种情况,是很头疼的,特别是像我这样,各种配置、软件非常多的情况。
2、更换网络环境时,如何拥有以前花大力气搭建起来的实验环境(Linux下)?
比如,以前搭了一套Kafka集群,Kubernetes集群,换了公司,现在想用一下,怎么办?
面临的主要问题在于:
IP变更,网络变更(要做到不变,可以用本地192 IP或者云服务器固定外网IP)
资源占用(CPU/内存/存储/带宽)有些很大
有些维护及使用的复杂度高
二、解决方案
先回答 问题1:
主力办公环境使用Windows(它支持U盘便携系统:WTG,可以随身携带,而且本人是资深Windows和Linux玩家,对这两个系统知根知底、完全可控)。
我的方案是:
Windows系统整体备份(WTG)
+ Vagrant虚拟机(Windows、Ubuntu、CentOS和DockerOS)
+ 各种Docker镜像
其中:
WTG是系统级重量级复制(也是日常使用系统的常规备份,可100%还原,非常可靠)
Vagrant虚拟机是比较重量级的复制(主力系统需要备份,其他躯壳类系统在Docker加持下无需备份)
Docker镜像是比较轻量级的复制(复制100%可靠,简单易用)
三重可复制备份及还原的系统,相当于是有三重保障。
在它们的加持下,办公及开发环境的搭建,可以做到一劳永逸:
我MySQL、Redis等,都安装在Vagrant的DockerOS中,分分钟启动,数据持久化并有整体备份。
我的一堆偶尔用到的软件(比如Music文件制作工具)安装在Windows虚拟机(VMWare或VirtualBox)中,分分钟启动。
我偶尔用到的专业开发环境(比如Android开发)安装在专用Ubuntu虚拟机中(VMWare或VirtualBox)中,分分钟启动。
我日常用到的所有常用软件和代码,都在Windows WTG系统中,一个小U盘,定期备份,随身携带,无论何时何地,分分钟启动我日常使用的完整系统。
注意,由于文件越用越多、会膨胀,结合《个人文件管理和备份策略》方案一起实施效果更佳。
再回答 问题2:
通常来说,换了大环境、网络环境,以前那些实验性的东西,就不会再用了。试想一下,什么情况下,我们换了公司后,还会想把以前搭建的东西跑起来呢?可以是可以,但是代价比较大,需要衡量。第一,成本,要考虑的是,怎么以最小的代价,恢复以前搭建和使用的东西。第二,价值,要考虑值不值得,这个东西以后用到的概率大不大。
下面就说说解决方案:
1、在自己个人的环境中搭建
将实验环境搭在自己本地,而不是公司网络中,或者在本地打包成Docker镜像,拿到公司网络中去运行,甚至像Oracle这样的数据库,都是由Docker镜像安装的。
但是像Kubernetes这种成套非常复杂的Docker镜像集群,还得对宿主机进行一些配置,要整套重新配置搭建,也是很费劲的。
所以,解决方法就是,虚拟机+Docker的方式混合,能封装成Docker,一键或者简单安装的,就用Docker,如果需要用到宿主机,且有很多配置、安装很多软件的,则用虚拟机,恢复的方式就是直接把虚拟机启动起来。要管理这么多虚拟机,建议使用Vagrant。如果要用到Windows环境,也可以用Windows的虚拟机整体备份,这样所有的软件、开发环境都在里面了,启动起来就能用。
关于数据存储,数据量不大的情况下(例如1G以内),可以放在容器内方便备份和恢复。但大的文件也不宜直接存到虚拟机中,所以存储得单独拿出来,Docker支持挂外部存储,恢复的时候,要和Docker或虚拟机对应起来。
最后,就是要写文档,把搭建步骤,存储的对应关系,使用方法等,都写出来。以便以后能很快恢复和上手。
注意:
虚拟机的方式运行,需要本地电脑有强悍的配置,比如要运行Kubernetes集群,运行TiDB,运行Spark Yarn等。我觉得,6个节点应该是足够了,每个节点最多8G,最多也就48G,算上宿主电脑自身需要,64G内存应该绰绰有余。放宽一点,32G可以将就用。
数据存储的备份,要做到100%能恢复,一般来说,只要数据文件完全一致(包括时间戳、权限)就没问题,备份的时候要原封不动、万无一失。
2、个人办公环境的组成
1)个人办公及开发环境:
软件非常多,虽然大部分都是一键安装少量配置,但是加在一起就还是非常费时费力。而且大部分软件配置及插件是后期逐步完善的,如果重新安装,可能多少有些欠缺。
2)个人准生产环境
部署那些自己的重要资产和作品,保持准生产可用的数据及状态,必要时可以启动起来供学习及回顾,以及作为交流演示用。
基础设施组成:
1、日常开发办公主力机:高配16英寸2k便携笔记本(i7标压+32G、4G+独显,接口齐全,口红充电器,1.8KG内)+高性能SSD U盘
自带接口不少于:3.5耳机口,USB-A鼠标口,USB-A U盘口,USB-C/雷电拓展坞孔口,USB-C电源口或独立电源口,HDMI口
其他:背光键盘,如果带高端显卡允许重量在2.2kg以内。
2、日常开发办公主力显示器:1~4个
主力(必备)(横屏)1个:主选 27寸4k,次选 24寸2k,窄边框,超广角,A+级屏幕材质。
辅助(可选)(竖屏)1个:24寸2k,窄边框,超广角。
辅助(可选)(近屏)1~2个:14寸
个人专用PC辅助办公(1台):i7+64G、
服务器:个人PC 1~2台。
三、总结
上述方案,我已经做到了,从2018年至今,效果很好!