Linuxをインストールする時に知っておきたいパーティショニングの基礎
2024-02-11
2024-02-11
今回はLinuxをインストールするときには避けて通れないパーティショニング話に関する基礎の話を書きたいと思います。Linuxの導入を考える初心者が最初にぶつかる壁かも知れません。最近はインストーラが自動でパーティショニングをしてくれるので考える必要がない場合もありますが、中級者のLinux使いになるために知っておくと良いと思うことをまとめてみました。
パーティショニングとは
まずパーティショニングとは何でしょうか?パーティショニングはシステムを入れるためのストレージに対してどのようなテーブル構成を構築し、どのような容量のパーティションごとに区切るのか?各パーティションにはどのような役割を与えるのか?ということを決めることです。各パーティションにはシステムを保持するだけでなく、システムの起動時に使われたりやメモリが足りない際に一時的に容量を補う役割を担ったりといろいろな役割があります。その役割分担と容量を決めることがパーティショニングです。
パーティションテーブルの種類
現在ハードディスクのパーティショニングのテーブル構成として大きく2つの方式があります。MBR(Master Boot Record)パーティションテーブルとGPT(GUID Partition Table)です。かつて多くのシステムがBIOS(現在BIOSと呼ばれるLegacy BIOS)システムで起動した時代にはMBRテーブルパーティション(MS-DOSパーティションとも)でした。
GPTは古いMBRに対して新しい規格のため多くの利点があります。その一つにパーティションの数があります。MBRではプライマリパーティションは4つまでしか持つことはできず、5つ以上のパーティションを持ちたい場合には論理パーティションの中に拡張パーティションを作成する必要がありました。GPTではこのような制限はなく任意の数のパーティションを作成することが可能です。
UEFI BIOSとLegacy BIOS
BIOSとは(Basic Input Output System)であり、電源が入れられた際に立ち上がりシステムを起動する役割を担っています。BIOSは電源が入れられるとハードウェアの状態をチェックし初期化した上でOSの起動をします。この時システムを起動するためにBIOSから呼ばれるのがブートローダーと呼ばれるものです。
従来のBIOSよりも新しいシステムとしてUEFI(Unfied Extensible Firmware Interface) BIOSが登場しました。UEFI自体はインターフェースの仕様であるので特定のプロセッサには依存しません。BIOSという言葉はUEIF BIOSと従来のBIOS(Legacy BIOS)を含んでいます。BIOS vs. UEFIという構図で語られがちですが、それは正確ではなくBIOSの中にLegacy BIOS(一般的にBIOSとよばれるもの)とUEFI BIOSがあるということです。Legacy BIOSでの起動をBIOSブート、UEFI BIOSでの起動をUEFIブートと呼ぶ場合もあります。
少しややこしいのですが、多くのUEFIシステムではLegacy BIOSとの互換性を保つためにCSM(Compatibility Support Module)サポートがあり「レガシーモード」や「BIOSモード」等の名前でLegacy BIOSの挙動で起動することができるものがあります。これによりUEFIJ BIOSのマシンであってもLegacy BIOSマシンのように振る舞いEFI起動に未対応のOSを起動することができます。
UEFI BIOSはLegacy BIOSに対して様々な技術的な利点を持っています。GPTをサポートし2TiBを超えるハードディスクからのシステム起動が可能になりました。この他にも高速な起動や16bitのシステムインターフェースに縛られないインターフェース設計が可能などの利点があります。
BIOSの種類とパーティションテーブルの組み合わせ
BIOSの種類(BIOSブート/UIFEブート)とパーティションテーブルには推奨される組み合わせがあります。パーティショニングを行う際にはお使いのマシンがUEFI BIOSなのかLegacy BIOSなのかを知っておく必要があります。推奨される組み合わせは以下の通りです。
- UEFIブート — GPT
- BIOSブート — MBR
上記の組み合わせでパーティショニングを行えばほぼ間違いありません。多くのディストリビューションでこの組み合わせでのインストールを推奨しています。
では、他の組み合わせではOSが起動できないのかというと不可能ではありません。例えばUEFI BIOSとMBRパーティションの組み合わせであってもUEFI BIOSのシステムがMBRをサポートしていれば起動はできますが、一部のサポートしていないUEFI BIOSでは起動できません。また、Legacy BIOSとGPTの組み合わせで起動するためにBIOSブートパーティションが必要ですし、2010年より古い一部のLegacy BIOSではMBRパーティションがない場合は起動を拒否するケースもあり個別の対応が必要です。
UEFIシステムにはESPが必要
UEFIがシステムを起動する際にはESP(EFI System Partition)という領域が必要です。ここにはUEFIシステムから呼び出されるUEFIブートローダ、アプリケーション、ドライバが格納される場所でありUEFIブートでは必須のパーティションです。
ESPはFAT32という規格でフォーマットされる必要があります。容量としてはディストリビューションにより推奨値が異なりますが、最低でも512MiBは確保した方が良いでしょう(*3)。ESPの作成の仕方はパーティショニングツールによって異なります。以下に一例を示します。
- fdisk: パーティションタイプをEFI Systemに設定
- gdisk: パーティションタイプをEF00に設定
- GParted: フラグ設定でespにチェックを入れる
スワップについて
スワップはシステムのRAM(Read Access Memory: 一般的にメモリーと呼ばれるものです)が不足した際にオーバーフローした分を記憶しておき、RAMの不足分を一部ハードディスク側で肩代わりするための容量です。このように聞くとスワップを多めに有効にすればメモリーが小さくても大丈夫、と思うかも知れませんが、そう簡単ではありません。RAMの読み書き速度にくらべハードディスクの読み書き速度は遅いので、スワップを使うと非常に処理時間がかかってしまいます。あくまで救済措置であり、スワップの仕様が頻繁に発生している状況はシステムのRAM不足と捉えるべきでしょう。
スワップ容量をどれぐらい取れば良いのか?というのはパーティショニング時のよくある疑問です。メモリー容量が2GB未満の頃はRAM容量の2倍などと言われていました。しかし現在、メモリーの容量が16〜64GBと大容量化してきており、スワップ領域をRAMの2倍確保するというのは当てはまらなくなってきました。参考までにRed Hat社がRHEL(Red Hat Enterprize Linux)向けに推奨している設定をこちら(*1)に示します。
パーティショニングツール
Linuxで使えるパーティショニングツールはいくつかあります。マウス操作で初心者にも簡単に扱えるものからコマンド操作でパーティショニングを行うものまで種類も多くあります。Linuxで使えるパーティショニングツールの比較検討については以下リンクに記事を書いています。ご参考まで。
rootとhomeはパーティションを分けるべきか?
パーティショニングに正解はないので、これが正解という答えはないですが、私はLinuxディストリビューションを頻繁に入れ替えるのでrootディレクトリとhomeディレクトリはパーティションを分けています。これにより作成したファイルやデスクトップ環境に関する設定、homeディレクトリ下にインストールしたフォントなどをシステム更新の度に失わずに済みます。
一方で、デスクトップ環境の設定ファイルなどはディストリビューション側で推奨しているものなどもあり、homeディレクトリが更新されないことでディストリビューションが推奨しない設定ファイルのまま使用することになるリスクもあります。rootとhomeは同一パーティションにしてデータ保管用のディレクトリを別パーティショニングにするという方法もあります。
パーティションの話とは少し離れますが、OSの起動速度を高めるためシステムをインストールするrootディレクトリのみSSDとし、データを保管するhomeディレクトリは不揮発性のHDDにするという手段もあります。
システムが認識しているデヴァイス名が知りたい
パーティショニングツールを用いてパーティションを行うにしても、現在システムがどんな名前(sdaやsdcなど)でデバイスを認識しているか知りたいということもあるかも知れません。そのときには以下のコマンドを実行してみてください。
lsblk
これにより現在システムが認識しているストレージデバイスが表示されます。ちなみにこの`lsblkd`はlist block deviceからコマンド名をとっています。
まとめ
比較的短く簡単にパーティショニングに関する知識が頭に入るようにまとめたつもりですが、まだ抜けや漏れがあったかも知れません。内容には注意を払い正確に伝えられるよう書いたつもりですが、誤りがある場合はご連絡いただいけると幸いです。
参考資料: