Ubuntu Weekly Recipe

第898回Ubuntuにおけるミラーサーバーとその付き合い

Ubuntuイメージを配布する日本のミラーサーバーとして動いていた富山大学のサーバーubuntutym.u-toyama.ac.jpが、1月末にその役割を終えてシャットダウンされました。今回はUbuntuにおけるミラーサーバーとは何か、そしてより高速にリポジトリへとアクセスするにはどうすればいいのかを紹介しましょう。

富山大学のUbuntuミラーサーバーについて

Ubuntuはインストール時の言語設定等を元にして、パッケージリポジトリに対する適切なミラーサーバーを選択する仕組みになっています。

日本ならjp.archive.ubuntu.comが選択されます。他の設定でもこれは適切な各国のミラーサーバーを向いていることが多いです[1]。日本の場合、数年前まで富山大学のご厚意により、jp.archive.ubuntu.comとして富山大学のネットワーク・サーバーを使う設定になっていました。

同様に、インストール用のISOイメージのダウンロードサーバーとしてjp.releases.ubuntu.comが存在しています。こちらは先日まで、同じ富山大学のサーバーでした。

この富山大学のミラーサーバーは、2026年1月をもって一旦運用終了となりました。Ubuntuの登場から数年しか経っていない2007年11月ぐらいから20年近く、何度かサーバーをリプレース・増強しながら日本の公式ミラーサーバーとして運用されてきたシステムです。関係者の皆様おつかれさまでした。

この運用終了に伴って、Ubuntuユーザー側が何か設定を変更する必要は、原則としてありません。ほとんどのユーザーがjp.archive.ubuntu.comをそのまま使っているはずで、このアドレス自体はこれまで通り利用できます。また、別途ミラーサーバーを指定している場合も、そのままで大丈夫です[2]

唯一気をつけなくてはいけないのがubuntutym.u-toyama.ac.jpを直接設定しているケースです。そのような設定のマシンは、パッケージの更新ができなくなります。後ほど紹介する手順で、リポジトリのミラーサーバーを変更してください。

Ubuntuには2種類のミラーサーバーがある

先にUbuntuにおけるミラーサーバーの扱いについて説明しておきましょう。Ubuntuにはミラーサーバーの参照元として、次の2種類が存在します

アーカイブサーバー:
主にパッケージを配布するサーバー。日常的にアクセスするのはこちらで、archive.ubuntu.comのようなドメイン名が使われる。3.6TiB以上の容量が必要で、Ubuntuのサポート期間の延長に合わせて今後もどんどん増えていく見込み。
リリースサーバー:
主にISOイメージ等を配布するサーバー。インストール用イメージを取得するために使われ、releases.ubuntu.comのようなドメイン名が使われる。必要なのは50GiB以上とアーカイブに比べて少なめだが、リリース直後のアクセスはそれなりに高負荷になる。

すべて公開されているデータですので、サーバー側を適切にセットアップすれば誰でもミラーサーバーを構築できます。また、品質の良いアーカイブミラーはパッケージ管理システムのミラーサーバーリストに登録されます。ISOイメージダウンロード時の選択対象としても選ばれることがあるようです。

実際に登録されているアーカイブミラー・リリースミラーは次のページから確認できます。

国ごとのミラーサーバーのリストと、ミラーサーバーごとのサポートしている通信手段(HTTP/HTTPS/RSYNC)と回線速度、同期状況が列挙されています。

さらにこれらのミラーサーバーのうち1台のサーバー[3]は、⁠Country Mirror」として<国名コード>.{archive,releases}.ubuntu.comが付けられます。これはコミュニティ内で適切な手続きを経る必要があります。

ちなみに適切な国別ミラーサーバーがない場合は、自動的に本家のサーバーが向くようになっています。たとえば北朝鮮の国名コードである「kp」を指定したkp.archive.ubuntu.comを確認すると、archive.ubuntu.comと同じIPアドレスになっていることがわかります。

富山大学の場合、ハードウェア障害や一部組織からの通信負荷等の事情により、数年前からjp.archive.ubuntu.comは、archive.ubuntu.comを向くようになっていました。さらに、今回の対応でjp.releases.ubuntu.comreleases.ubuntu.comを向くようになったというわけです。

Portsに対するミラーについて

特殊なアーカイブミラーとして「Ports」が存在します。

Ubuntuのアーカイブミラーは、基本的にamd64(とi386)のパッケージしか提供しません。これだけでも膨大な量になりますし、ミラーサーバーの負荷をできるだけ下げる意図があるためです。

しかしながらUbuntuは他にも以下のCPUアーキテクチャーをサポートしています。

  • Raspberry Piなどでも使われるarm64(とarmhf)
  • Powerアーキテクチャー向けのppc64el
  • メインフレームであるIBM Z向けのs390x
  • 新興勢力であるRISC-V用のriscv64

これらのアーキテクチャーはamd64に比べて利用者が少ないため、ports.ubuntu.comとして別管理されています。このPortsも他のアーカイブミラーと同じく、ミラーリングが可能です。たとえば先ほどのアーカイブミラーのページには、⁠ports」と名の付いたミラーがいくつか存在することがわかります。

過去には富山大のサーバーでもPortsをミラーリングしていました。しかしながらUbuntu側のサポート状況に応じて、ある日突然ストレージの使用量が増えてしまうこともあって、最近は同期しない状態になっていました。

アーカイブミラーの切り替え方

現在のUbuntuではアーカイブミラーを明示的に切り替える必要はほとんどありません。これは適切なサーバーを選んでくれるというよりは、公式のサーバーがそこまで遅くないため、余計な設定をしないほうが、管理が楽できるという若干後ろ向きな理由によるものです。

どうしても近いサーバーを選んでレイテンシーを下げたい理由がある場合のみ、ミラーサーバーを選択しましょう。ここではデスクトップとサーバーの双方でその手順を紹介します。

デスクトップ版の切り替え方

デスクトップ版はGUIからお手軽にミラーサーバーを切り替えられます。

図1 最初に「Super + A」を入力し、⁠software」と入力すれば表示される、⁠ソフトウェアとアップデート」⁠画像の一番左にあるアイコン)を開く
図2 ⁠Ubuntuのソフトウェア」タブにある「ダウンロード元」から「その他」を選択する

通常は「日本のミラー」が選択されているはずです。これはjp.archive.ubuntu.comであることを意味します。

図3 ⁠日本」もしくは所在地の国から、適切なサーバーを指定する

ここで「最適なサーバーを探す」ボタンを押すと、すべてのミラーサーバーに対して順番にICMP Echoを送り、その結果から最も近いサーバーを選択します。つまりあまり正確性は期待しないほうが良さそうです。全然違う国になることもありました。

あとは「サーバーの選択」ボタンを押せば、そのミラーサーバーからパッケージリポジトリの情報を取得してくれます。

ちなみに、当面はまだこのサーバーからubuntutym.u-toyama.ac.jpを選択できるようになっています。これは/usr/share/python-apt/templates/ubuntu.mirrorsにリストアップされた情報が表示されているためです[4]。ミラーサーバーのリストファイルはpython-apt-commonパッケージの更新によって反映されます。あまり高頻度で反映されるわけではないため、たまに古いサーバーが残っていたり、新しいサーバーが追加されていなかったりします。

GUIからリストにないアーカイブミラーを追加し、選択する手段は存在しません。リストにないアーカイブミラーを使いたい場合は、次のサーバー版の手順を参照してください[5]

サーバー版の切り替え方

CLIからアーカイブミラーを切り替える公式のツールはありません。Debianにあるnetselect-aptも、Ubuntuでは無効化されています。

そのためCLIから設定するには、sources.list(22.04以前)もしくはubuntu.sources(24.04以降)を直接編集するしかありません。また、これはミラーリストに存在しないサーバーを指定したい場合にも有効です。

ただし編集対象となるファイルは22.04以前と24.04以降で異なる点に注意してください。

Ubuntu 24.04 LTS以降で編集する方法

第812回のaptの新機能あれこれ ⁠Ubuntu 24.04 LTS版]でも紹介したように、Ubuntuのリポジトリ設定ファイルが「deb822形式」に変更されました。Ubuntu 24.04 LTS以降において、公式リポジトリのURLを変更したい場合は/etc/apt/sources.list.d/ubuntu.sourcesを修正します。

Types: deb
URIs: http://jp.archive.ubuntu.com/ubuntu/
Suites: questing questing-updates questing-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: questing-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

security.ubuntu.comにミラーはないため、jp.archive.ubuntu.comを変更することになります。

たとえばアーカイブミラーのページから「Tsukuba WIDE」を選ぶとしましょう。そのページからTsukuba WIDEのページ移動すると、⁠Mirror location information」にリポジトリURLが書かれています。このURLであるhttp://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/URIsに書けば良いだけです。

URIs: http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/

あとはsudo apt updateしておけば、次のパッケージインストール・更新時から、新しいリポジトリが参照されます。

Ubuntu 22.02 LTS以前で編集する方法

Ubuntu 22.04 LTS以前では、古いフォーマットでリポジトリ情報が記述されています。具体的には/etc/apt/sources.listを参照してください。

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://jp.archive.ubuntu.com/ubuntu noble main restricted
# deb-src http://jp.archive.ubuntu.com/ubuntu noble main restricted
(以下略)

debの後ろにURLがあるのですが、これが複数行存在します。これをすべて変更する必要があるのです。テキストエディタでファイルを開いて書き換えていくか、sedコマンドなどを使って一括変換してしまいましょう。

$ sudo sed -i 's,http://jp.archive.ubuntu.com,http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/,' /etc/apt/sources.list

変更後にsudo apt updateが必要な点は同じです。

MirrorSelectで最も近いミラーサーバーを探す

Debianにはnetselectという、ネットワーク状態に応じてミラーを選択してくれるツールが存在します。しかしながらUbuntuではこのツールは使えません。

一応、URIsにmirror:http://mirrors.ubuntu.com/mirrors.txtと書けば、最適なミラーを選ぶ仕組みも存在します。ただしaptコマンドを実行するたびに最適なミラーを探すのも、無駄が多いと感じるでしょう。

そんな状況で作られたのがMirrorSelectコマンドです。

  • ICMPではなくHTTPリクエストを送ってその完了までの時間を計測
  • さらに上位にあるサーバーに対して実際にダウンロードして速度を確認
  • 特定の国リストのみを選択可能

インストールとその使い方はかんたんです。

$ sudo snap install mirrorselect
$ mirrorselect -c jp -m 10
Testing TCP latency for 28 mirrors
Testing download speed for 10 mirrors
1. 206.87 Mbps http://mirror.nishi.network/ubuntu/
2. 199.91 Mbps http://mirror.hashy0917.net/ubuntu-ports/
3. 149.48 Mbps http://mirror.nishi.network/ubuntu-ports/
4. 129.63 Mbps http://mirror.hashy0917.net/ubuntu/
5. 113.03 Mbps https://ftp.udx.icscoe.jp/Linux/ubuntu/
6. 112.17 Mbps http://ftp.udx.icscoe.jp/Linux/ubuntu/
7. 86.61 Mbps https://mirror.nishi.network/ubuntu-ports/
8. 67.78 Mbps https://mirror.hashy0917.net/ubuntu-ports/
9. 67.07 Mbps http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/
10. 58.59 Mbps http://ftp.riken.jp/Linux/ubuntu/

-cオプションで国名コードを入力します。このオプションを指定しなければGeoIPによる自動的な国の判定をしてくれるようですが、手元の環境では動作しませんでした。-mでダウンロードテストをする最大のサーバー数を設定します。通常は5台分しか表示してくれませんので、ここでは比較しやすいように10台表示してみました。

ubuntu-portsとなっているのはおそらくPortsも込みのリポジトリです。アーカイブミラーによってはamd64などもPortsと一緒に提供していることがあるようです。-a amd64でアーキテクチャーを限定できるものの、今回のように両方を同じリポジトリで提供している場合は、上記のようにリストアップされてしまいます。

あまり何度も実行すると、サーバーに不必要に負荷を与えてしまうので注意してください。

ミラーサーバーが遅いと感じたら?

Ubuntuに限らず、このようなミラーサーバーは基本的に個人・組織のボランティア精神によって成り立っています。つまり状況によってはうまく動かないときもありますし、すぐに復旧できない場合もあります。そんな時も広い心で受け入れるようにしてください。

特に近年ではDockerをはじめとするコンテナや、高密度サーバー、クラスタ、IoT機器によって大量のマシンがミラーサーバーにアクセスします。もし組織内部で大規模にUbuntuマシンを運用しているのであれば、まずはその組織向けのミラーサーバーを建てることを検討してください。そのほうが各種CI・デプロイも高速に完了しますし、公式サーバー・ミラーサーバーにも不必要な負荷をかけずに済みます。

  • 第315回で紹介されているapt-cacher-ngを使えば、APT用のキャッシュサーバーを作れる。フルミラーをするほどのサーバー性能は不要ですので、コンテナクラスタの1段前に入れておくと便利
  • 第47回で紹介されているapt-mirrorを使えば、ローカルミラーサーバーを構築できる。公式ミラーリストに載せるまでもないフルミラーであればこれでも十分
  • 第485回で紹介したaptlyを使えば、フルミラーとキャッシュ、そして独自リポジトリを併用できる。スナップショット機能もあるため、特定のタイミングのリポジトリの再現性の確保もできる

フルミラーからただのキャッシュまで、様々な仕組みが存在します。ぜひこれらも活用して、快適なリポジトリライフを送りましょう。

おすすめ記事

記事・ニュース一覧