序2-4.デバイスとパーティション
序2-4.デバイスとパーティション
あなたは最近、新しい家に引っ越してきました。ワンルームですが、自分1人で気ままに過ごすことの出来る快適なスペースです。さて、もうすぐ引っ越し業者が荷物を持ってきてくれます。このワンルームのスペースをどのように区切って、どこを遊び場にして、どこを勉強スペースにして、どこに生活必需品を置いてこうか・・・。
突然の例え話ですが、ストレージデバイスを用途などに応じて分割することをパーティション(Partition)と呼びます(前項で少し触れましたね)。ディスクを分割する(Partする)ことからPartitionといい、パーティションを行うことをパーティショニングといいます。冒頭の例え話ではさも夢のあるような感じで書きましたが、実際のところLinuxの利用においては必須で現実的な作業だったりします。
例えば32GBのHDDが内蔵されたPCを持っていたとして、そのPCに新規にLinuxをインストールしようとしたとします。
まず、前項の「序2-3-3. そのほかのOS機能 > ブートローダ」で触れましたが、ブートデバイスとして決定された、つまりOSが使用するデバイスにはブートストラップローダが必要なのでそのための領域が必要です。
また、ブートストラップローダがロードする起動フラグのついたパーティションも必要です。
ディストリビューションによって違いはありますが、カーネル本体や必須ソフトウェア、ディストリビューション固有の設定ファイルやプログラムなど、ディストリビューションをインストールするのに必須ファイルがたくさんありますのでこれを格納する領域も必要です。
このように、OSをインストールしようと思ったらHDD/SSDを用途ごとに細かくパーティションに分けていく必要が出てきます。これを理解するためには、まずデバイスのことを理解する必要があります。
Linuxが認識するデバイスは、CPUやストレージ、HDDやリムーバブルディスクやNICなど多岐に渡ります。今回はパーティション及びインストールに関わる話として、ブートデバイスとして使われることの多いPC内臓のHDD/SDDに絞って記述していきます。
通常、Linuxのデバイスファイルは/devに格納されています。前章のファイルシステムで書きましたが、Linuxのファイルシステム(FHS)の最上位は /(ルート) なので、ルートの1つ下にあるディレクトリですね。
認識されたデバイスの情報は、デバイスファイルとして/devに格納されていきます。HDDやSSDなどの物理デバイスは、/dev/sdaや/dev/sdbという名称で格納されています。/dev/sdaが1番目に認識されたもの、/dev/sdbが2番目に認識されたものと、順番に採番されていきます。例えばですが、外付けHDDなどをUSBで接続した状態でPCを起動すると2つめの物理デバイスとして/dev/sdbが出来たりしています。
Linuxをインストールするには、この/dev/sd*をパーティショニングして起動用のファイルを入れていくことになります。こう書くと複雑そうですが、昨今のディストリビューションではインストール時にナビゲーションが出てきてパーティショニングのやり方を教えてくれたり、あるいはやってくれたりします。ただし、自動でやってもらうと予期せぬ事態もあったりします。
例えば、今Windowsが入っているPCに新しくLinuxをインストールしています。インストールはしますが、Windowsは消さずに両方のOSを使いたいというニーズがあったりします。こうした複数のOSがインストールされたPCをデュアルブートPCと言います。もしパーティションを自動でやらせると、もともとあったWindowsOS用のパーティションを消してしまう可能性があります。一般的に、新しくパーティションを作る際にはパーティショニングしようとしている領域内のデータを消してしまうからです。ある土地の1区画に家を建てようとした時にもしそこに古い建物が残ってたら、取り壊してから新しい家を建てるのと同じです。Linuxに慣れてきたりするとデュアルブートも試してみたくなると思いますが、この点は気を付ける必要があります。今回の事前学習資料では仮想マシンを使いますので、この点は心配ありません。もし実物のPCにインストールしたいのならば注意してください。
ディスクのパーティションが行われると、/dev/sda1や/dev/sda2など新しいディスクファイルが/dev内に作成されています。ただし/dev内には大量のファイルが入っており該当のファイルが探しにくいので、fdiskなどのコマンドを使うことでパーティションの情報をまとめて表示するのが良いでしょう。以下は実際の出力です。ここまでで理解した内容と見比べて確認しておきましょう。
/dev/sda1がMBRにあたり、/dev/sda2がスワップ領域、/dev/sda3がLinuxのファイルが入っている領域です。(なお、上記はUEFIなので厳密にいうとちょっと違います)
実際にサーバを構築する際には、OSの動作に必要なファイル群のパーティションとして/dev/sda3を作成、ユーザーが保存するデータ用のパーティションとして/dev/sda4を作成する・・・などより細かいパーティショニングを行います。