怎样快速部署多台装有同样软件的 Linux 系统?

2020-11-15 21:21:28 +08:00
 gxgxxn

目前有一台 Ubuntu 机器已经安装好各类所需的软件,另外有几台设备也需要安装同样的软件环境,由于软件安装较为负责,所以有没有什么方法将已有的软件环境复制其他机器上?

8388 次点击
所在节点    Linux
68 条回复
naoh1000
2020-11-15 23:10:14 +08:00
dd if=/dev/原硬盘 of=/dev/目标硬盘
如果目标硬盘容量和原硬盘相等,你将得到数据完全相同的两块硬盘
KENNHI
2020-11-16 00:10:13 +08:00
打包镜像,PXE 自动安装
Jirajine
2020-11-16 00:13:29 +08:00
都是相同型号的电脑的话,直接 rsync 一下。
laminux29
2020-11-16 00:36:34 +08:00
WinPE 启动,各种网络克隆工具。
skydiver
2020-11-16 00:36:37 +08:00
直接 rsync
systemcall
2020-11-16 00:52:30 +08:00
硬盘取下来丢对拷机里按一下就行了,注意方向
Osk
2020-11-16 01:40:50 +08:00
不推荐 dd,这方法很不合适,适合用来划水,dd 一开始,然后半天后才完成,中间可以划水,这么大负荷的读写操作有些硬盘万一没扛住就糟了。


通常是基于文件的复制,做成 tar 包或者 rsync 复制都行,通常来说,由于文件系统 uuid 变了,需要重新生成 grub.cfg 和调整 /etc/fstab,linux 在这方面没啥玄学。

如果非要用基于块设备的克隆,也要选择能够理解文件系统的工具,只拷贝有效数据块,不过工具比较少。
ik
2020-11-16 02:19:07 +08:00
@gxgxxn 因为没有实践经验,所以也帮不了你了…
会不会是硬件配置不一样?
smartyang
2020-11-16 02:51:03 +08:00
diskgunis 试试
msg7086
2020-11-16 04:17:56 +08:00
rsync 对拷,然后网络配置和 fstab 改一下,重新生成一下 grub 配置,就行了。

Linux 系统的安装过程是很透明很简单的,本质上就是把所有的软件包解压出来放进分区里,然后执行配置脚本,最后改改常见的配置(时区啊语言啊 fstab 啊之类),安装并配置一下 grub,就完事了。你自己写个系统安装程序也是分分钟的事情。
dayeye2006199
2020-11-16 05:04:06 +08:00
可以用 chef 或者 puppet
AmrtaShiva
2020-11-16 07:55:02 +08:00
rsync+27 楼方法搞好几次了 没毛病
alfred42
2020-11-16 07:55:44 +08:00
chef
gxgxxn
2020-11-16 08:08:03 +08:00
@ik 同一台设备不同硬盘测试,除了硬盘其他都是一样的。今天再试试看
gxgxxn
2020-11-16 08:09:19 +08:00
@opengps 我比较希望能做出系统镜像,这样文件体积不会很大,安装也不比较方便。
gxgxxn
2020-11-16 08:12:53 +08:00
@Osk
@msg7086
@AmrtaShiva
谢谢,这个方法是很方便。请问是不是这种方法要求是配置完成相同吗?
Osk
2020-11-16 08:23:26 +08:00
@gxgxxn 不要求
一般流程:
启动到 live-cd.
解压备份或复制.
chroot 到新系统.
编辑 fstab,hostname.
update-initcpio/mkinitcpio (视发行版),这一步可消除大部分硬件差异导致的启动问题.
grub-install /dev/xxx 安装 bootloader.
update-grub / grub-mkconfig 重新生成 grub.cfg.

只要把启动流程理清楚了也就那么回事儿。硬件方面,只要没有啥需要单独安装驱动的硬件都还好
popil1987
2020-11-16 08:58:44 +08:00
必须全新安装后用脚本自动化安装你的软件。因为安装成功后会生成一些以你的硬件为来源的信息文件,比如 udev 设备之类。批量部署可以用 cobbler,全新安装后会运行指定脚本,配置比较复杂,坑比较多。或者批量部署后用自动化软件部署你的软件,比如 ansible (比较麻烦),pyinfra (比较简洁)等
另外,docker 也是可以的,docker 可以有图形界面,docker hub 上有 xfce 这种安装桌面的 docker 。然后通过 vnc 或者 html 访问。不过得些 Dockerfile,写好 Dockerfile 部署不用担心出错,用脚本担心出错
msg7086
2020-11-16 10:30:23 +08:00
@gxgxxn 相对类似的比较好,但不是很大的问题。
ungrown
2020-11-16 10:34:31 +08:00
我想说,虚拟机不行吗?
这年头主流虚拟机的性能损耗都非常微小了(虽然有些接口的 IO 还是有拉胯的可能)
如果能接受虚拟机部署的话,那么一个虚拟机镜像比此楼其他方案都方便得多得多得多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/725536

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX