镜子是什么?

我知道镜像是另一个服务器,它保存着与原始服务器相同的可下载数据。这很容易理解,但除此之外,我对Ubuntu中的"镜像"一词有一种更精确的含义,我无法直观地理解。我看到人们谈论如何选择最快的镜像等等,但我无法跟上他们的步伐。
你能给我一个关于Ubuntu镜像的简要解释,并给我一些相关的术语,比如与镜像相关的文件或重要应用程序,以便我可以自己搜索更多信息吗?
4个回答

你基本上已经了解了 - 镜像服务器保存了主服务器上所有数据的副本。这是为了冗余和速度而存在的。从更广泛的意义上讲,镜像只是为了相同的目的而复制一些数据。但是,我将只关注镜像服务器来回答这个问题。
在Canonical(以及大多数情况下),镜像服务器分布在全球各地的战略位置。这样可以使服务器单独处理较少的负载,并允许每个人连接到他们最近的服务器。
在互联网上,距离很重要。事实上,它非常重要。长距离连接可能导致高延迟、较慢的连接速度以及数据在穿越海洋和半个大陆时出现的其他典型问题。因此,我们有了这些分布式镜像。人们连接到物理上最近的一个(通常是最快的 - 当然也有例外),以获得最低的延迟和最高的下载速度。其他时候,用户会连接到几个镜像并手动比较速度,选择最快的那个。在一些罕见的情况下,用户可能会手动覆盖使用特定的镜像,即使它不是他们最快的 - 通常是为了可靠性或者与那个特定服务器有关的一些特殊原因。
在某些情况下,公司会建立自己内部的 APT 软件库镜像。这些镜像存在的目的是保护敏感知识产权或者只允许员工使用特定版本。镜像不一定需要是父服务器的完全复制品。

2@FranckDernoncourt 这里有数百个镜像,这是一个非常著名的故事。此外,那个服务器属于麻省理工学院,每天都有很多访问量。我认为这是一个安全的链接。 - Kaz Wolfe
我明白了,谢谢你的回复。我认为指向archive.org的链接不太容易失效,但这取决于你。 - Franck Dernoncourt
这个电子邮件无法传输超过3毫微秒的距离...真是个有趣的故事 :D - Byte Commander
我想提一下,“距离很重要”下面的链接真是一篇令人愉快的阅读。(起初我没有点开它,直到看到了评论。) - YoungFrog

你问了两个不同的问题,或者说你在问题上有两个不同的标签 - 仓库和镜像。
大部分回答已经解释了镜像背后的原因和方法。作为一个补充(而且众所周知,多个案例可以构成数据!),我在计算机实验室中运行了一个Mint、Ubuntu和Debian的镜像,只是为了提供更快的访问速度。当20个人同时获取更新或进行网络安装时,使用千兆速度比建筑物提供的5mb互联网速度要快得多。
但是仓库...
Ubuntu仓库的理念实际上都源自Debian(Ubuntu在很大程度上基于Debian)和Debian的软件包管理系统,其中包括各种版本和形式的apt工具(apt、apt-get、aptitude等)。通过Debian的软件包管理系统,标准的基础系统会告诉从哪里获取软件包和更新。这可以是任何数量的来源 - 硬盘、光盘/ DVD、网络共享,或通过http(s)、ftp和rsync等网络协议。其中一部分信息包括可用的软件以及哪些软件包依赖于其他软件包,一直到基础系统。
这允许您运行命令,如apt-get install task-mate-desktop,包管理系统会说:“好的,您需要安装此版本的libraryA,那个版本的libraryB和foo版本3.14等...”,因为它知道您已经安装了什么,所以它知道它需要从源(很可能是您询问的那些镜像之一)检索并安装它所有需要的内容。请注意,Ubuntu等中的GUI软件管理工具只是apt和dpkg的前端。
现在,不仅Debian / Ubuntu / Mint等人在做这样的事情。BSD发行版和端口收集以及Redhat等发行版的pkg工具,来自Gentoo的portage收集以及其他工具也都是这样的。

我读到,大多数发行版都分为两种软件包工具:rpm和dpkg。rpm和dpkg是低级别的软件包工具,它们没有自己处理依赖关系的智能。但是有一些高级软件包工具是构建在它们之上的,如rpm的yum和dpkg的apt-get。我不知道还有哪些。这是我理解的情况。那么apt是什么,它和apt-get是一样的吗?还是另一种低级别的软件包工具,或者是另一种高级软件包工具,或者其他什么东西? - sharkant

如你自己发现的那样,镜像是另一个服务器,它可以从主服务器上镜像/克隆所有内容。
使用镜像有很多优点,比如:冗余、更可靠、备份、容错性、节省成本、提高性能、速度等等。
  1. 你可以选择一个位于你所在国家或离你更近的镜像,或者以其他方式更可靠、更快速地访问它。

  2. 我们拥有冗余备份。冗余备份意味着拥有超过一个(副本/备份)的资源(硬件或软件),从而提高可靠性。当我可以访问成千上万个镜像时,我很少会错过什么或失去对存储库的访问权限。

  3. 通过冗余备份,我能够实现容错性,也就是说,在任何事故发生的情况下,我的服务都能正常运行并对用户可用。

  4. 它有助于降低服务器成本。如果我们都使用同一个镜像,那么它应该具备巨大的资源和带宽,因此所有者需要支付大量费用。

  5. 它通过避免一个服务器被数百万人使用来提高性能。

  6. 我们可以将其镜像到我们的本地网络中,数百台机器可以与该存储库一起工作,无需连接到互联网。

等等。


镜像可以指的是具有与其他计算机相同数据的服务器,比如Ubuntu存储库的镜像...但它也可以指的是“磁盘镜像”或RAID。
简单来说...
磁盘镜像是指如何设置磁盘子系统以实现最大的正常运行时间和可靠性。想象一下,你有一个关键任务的计算机系统在运行公司的工资或库存系统。它必须保持100%的正常运行时间。在非镜像环境中,如果由于硬件故障而丢失了引导硬盘,通常系统会随之崩溃。如果丢失了数据库驱动器,数据就会丢失,系统无法运行,需要更换硬盘,并从备份中恢复数据库。数据丢失是很有可能的。
在同样的例子中,如果引导硬盘有一个镜像(另一个与引导硬盘完全相同的磁盘),并且你因为硬件故障而丢失了主要的引导硬盘,镜像可以“接替”有问题的磁盘的位置,使计算机系统继续运行。这还允许系统管理员将有问题的硬盘脱机修复,并在不中断计算机系统的情况下重新投入使用。

好的回答,但我觉得问题错了... - ivanivan
@ivanivan 谢谢!我是在回答问题部分,其中问到“Ubuntu中有一个术语叫做镜像,我无法直观地理解它,它可能有更专门的含义”。RAID。 - heynnema
而且您的微小修改很好地澄清了这个问题 :) - ivanivan