前言
在这篇文章中,我提供了如何使用安装本地Ubuntu镜像的说明debmirror.
简介
默认情况下,Ubuntu系统直接从internet获取更新archive.ubuntu.com.在一个有很多Ubuntu系统(服务器和/或台式机)的环境中,这可能会导致大量的互联网流量,因为每个系统都需要下载相同的更新。
在这样的环境中,如果一个系统能够下载所有的Ubuntu更新,那么效率会更高一次然后分发给客户。在这种情况下,更新是使用本地网络分发的,消除了internet链路上的任何压力1.
我们称这样的系统为本地镜像,它只是一个web服务器,有足够的存储空间来保存Ubuntu存档(或部分存档)。本地镜像尤其适用于网络带宽有限的网站,但它还有一些额外的好处。
总结一下主要的好处:
- 减少互联网带宽使用
- 使用本地网络更快的更新过程(通常比internet链接更快)
- 更新或安装系统,即使在互联网或上游中断
本地镜像的主要缺点有:
- 需要维护和监控的额外服务
- 存储要求:1TB起步
- 初始同步可能需要很长时间,具体取决于网速
镜像解决方案
Ubuntu镜像脚本
这个解决方案面向的是喜欢运行自己的区域镜像的isp或公司。它的目的是镜像整个,未经过滤的Ubuntu包存档。
到2023年,archive.ubuntu.com应该有2.5TB, ports.ubuntu.com (ARM/RISCV和其他)也有2.5TB左右。
这是很大的存储空间,可能不是大多数环境所需要的。即便如此,如果这是你想要的,你可以咨询此网页并使用这里提到的脚本。
debmirror
根据我自己的研究,对于Jammy AMD64(22.04)和Focal AMD64(20.04)来说,Debmirror工具似乎是创建本地Ubuntu镜像的最简单和直接的方法,它的数据占用空间合理,大约为480 GB(2023)。欧宝体育直播官网
根据您的需要,您可以进一步调整Debmirror,以只下载您的环境所需的包。
apt-cacher-ng
这个工具apt-cacher-ng充当缓存代理,仅存储客户端请求的更新。丢失的或新的更新只会在第一个客户端请求此下载时下载,尽管似乎有预下载更新的选项。
尽管我希望占用空间比debmirror小得多,但我找不到任何关于实际磁盘使用情况的信息。欧宝体育直播官网
使用debmirror创建一个Ubuntu镜像
尽管apt-cache -ng是一个非常有用的解决方案,有许多附加特性,但我觉得像debmirror这样的简单镜像解决方案非常容易设置和维护。本文将重点讨论debmirror。
准备
1 -电脑
首先,我们需要一台计算机——可以是物理的,也可以是虚拟的——来充当本地镜像。我曾使用树莓派4B+作为带有外置USB硬盘的镜像,它可以轻松饱和本地1gbit网络。ob体育下载
最小存储容量为2tb ~ 1TB
我正在为AMD64架构镜像Ubuntu 22.04和20.04,它使用了大约480 GB(2023)。对于ARM64,应该会有类似的存储空间。应该有一些空间可以用于未来的增长,这就是为什么我建议至少有1tb的可用空间。
除了容量之外,您还应该考虑冗余的重要性:如果镜像存储设备失效,您必须重新下载所有数据,欧宝体育直播官网该怎么办?这种影响值得在冗余/ RAID上投资吗?
如果最近的同步出现问题,使用像ZFS或LVM这样支持快照的文件系统(层)来快速将镜像恢复到已知的良好状态可能会很有趣。
3 -选择一个本地公共Ubuntu存档
最好将本地镜像与Ubuntu公共档案靠近你的实际位置。这提供了最佳的互联网性能,也减少了对全局存档的压力。使用链接镜像列表为您的位置选择最佳镜像。
就我而言,我使用nl.archive.ubuntu tu.com,因为我在荷兰。
Ubuntu镜像配置
01 -添加存储设备/卷到“fstab . sh”目录
如果您还没有这样做,请确保您创建了一个目录作为我们将用于镜像的存储的挂载点。
在我的例子中,我创建了/mirror目录…
mkdir /镜子
...并像这样更新了fstab(示例!):
/dev/disk/by-uuid/154d28fb-83d0-4848-ac1d-da1420252422 /mirror XFS noatime 0 0
我建议使用by-uuid或by-id路径来挂载存储设备,因为这是最稳定的,并且不要忘记使用正确的文件系统(xfs/ext4)。
现在我们可以发布:
挂载/镜子
安装所需的软件
我们需要在镜像上安装一个web服务器来为客户端提供deb包。安装非常简单,不需要进一步配置。在这个例子中,我使用Apache2,但你可以使用任何你喜欢的web服务器。
如果您想使用常规HTTP与上游镜像同步,则不需要额外的软件。
update apt install apache2 debmirror gnupg xz-utils
我认为使用rsync进行同步更有效和更快,但您必须配置您的防火墙,以允许出站流量到TCP端口873(这超出了本教程的范围)
安装rsync
提示:确保你在20.04或22.04系统上运行debmirror,因为旧版本不支持当前的ubuntu镜像,一些必需的文件将无法下载。
03 -创建文件路径
我已经创建了这个目录结构来托管我的本地镜像回购。
/mirror/debmirror──debmirror/amd64 mkdir /mirror/debmirror/mirrorkeyring mkdir /mirror/debmirror/mirrorkeyring mkdir /mirror/scripts│├──││├──pool││├──
amd64目录中的文件夹将由debmirror创建,因此不需要预先创建。
04 -安装GPG钥匙圈
GPG——no-default-keyring——keyring/ mirror/debmirror/mirrorkeyring/trustedkeys。导入/usr/share/keyrings/ubuntu-archive-keyring.gpg
创建符号链接
我们需要在apache2 /var/www/html目录中创建指向镜像的符号链接,如下所示:
cd/var/www/html ln -s /mirror/debmirror/amd64 ubuntu
06 -配置debmirror
Debmirror只是一个带有许多参数的命令行工具。如果我们想每天运行这个工具来保持本地镜像的同步,最好使用一个可以被cron调用的包装器脚本。
提供了这样的包装器脚本这个页面我还附上了我自己定制的版本ob电竞平台 .
你可以下载这个脚本并把它放在/mirror/scripts中,就像这样:
cd/mirror/scripts wget https://欧宝体育登陆首页官网下载www.buy-gems.com/files/debmirroramd64.sh.txt -O debmirroramd64.sh chmod +x debmirroramd64.sh
现在我们需要编辑这个脚本,并根据您的特定需求更改一些参数。与示例相比,我所做的更改如下:
出口GNUPGHOME=/镜子/ debmirror / mirrorkeyring释放=焦、focal-security focal-updates focal-backports,适意的,jammy-security, jammy-updates jammy-backports服务器=nl.archive.ubuntu.com原型=rsyncoutPath=/镜子/ debmirror / amd64
Ubuntu 20.04和22.04的安装程序ISO似乎也需要-backports版本,所以它们也包括在内。
限制我还不能(到目前为止)使执行-发布-升级过程能够将一个系统从焦点升级到干扰。我发现了这个旧资源但这些指示似乎对我不起作用。
07 -限制带宽
默认情况下,脚本不提供限制rsync带宽使用的方法。在我的脚本中,我添加了一些行,使带宽限制作为一个选项。
添加一个必须不加注释的新变量,可以将其设置为所需的限制。在这种情况下,1000意味着每秒1000千字节。
bwlimit = 1000
你还需要取消这一行的注释:
——rsync-options "-aIL -partial -bwlimit=$bwlimit" \
08 -初始同步
建议不要先运行初始同步,然后再配置周期性cron作业来执行每日同步。第一次同步可能会花费很长时间,并且可能会干扰cron作业。建议在初始同步完成后才启用cronjob。
由于初始同步可能需要一段时间,所以我喜欢在屏幕上运行这个作业。如果您不小心关闭了终端,rsync进程不会被中断(尽管如果发生这种情况,这不是什么大问题,它只是继续它停止的地方)。
安装screen /mirror/scripts/debmirroramd64.sh
09 -设置cron作业
当初始同步完成后,我们可以配置cron作业定期同步。
01* * * /mirror/scripts/debmirroramd64.sh
在这种情况下,同步在每天凌晨1点运行。
镜像包含所有安全更新,因此根据您的环境,建议至少每天同步镜像一次。
10 -客户端配置
所有客户端都应该指向/etc/apt/sources中的本地镜像文件列表。您可以使用镜像的ip地址,但如果您运行本地DNS,那么设置一个像mirror.your.domain这样的DNS记录并重新配置所有客户端以连接到该域名并不需要太多工作。
这是/etc/apt/sources.客户端列表
黛比http://mirror.your.domain/ubuntu释放主要限制宇宙多元宇宙黛比http://mirror.your.domain/ubuntuRELEASE-security主要限制宇宙多元宇宙黛比http://mirror.your.domain/ubuntu发布更新主要限制宇宙多元宇宙
RELEASE值应该更改为适当的ubuntu版本,如bionic, focal或jammy。
如果你有一个有很多Ubuntu系统的环境,这个配置很可能是用ansible这样的工具配置的。
11 -监控
虽然系统监视超出了本文的范围,但是有两个主题需要监视:
- 磁盘空间使用情况(如果空间即将耗尽则发出警报)
- 同步脚本执行成功(如果脚本失败会发出警报)
如果您不监视同步过程,镜像将过时,将缺乏最新的安全更新。
关闭的话
由于许多环境要么是云原生的,要么正在迁移到云环境,运行本地镜像似乎越来越无关紧要。然而,仍然有一些环境可以从本地镜像设置中受益。也许这个说明是有帮助的。
你可能会注意到,云提供实际上也运行他们自己的Ubuntu存档镜像,以减少他们的上游和对等链路上的负载。当你部署一个基于Ubuntu的标准虚拟机时,它默认配置为使用本地镜像。↩