Linux基礎(パーティションとファイルシステムの作成)

#Linuxでのハードディスク利用
Linuxでハードディスクを利用するためには以下の5ステップを踏む必要がある。

1. 電源OFFの状態で、ハードディスクをシステムに物理的に接続
2. 追加したハードディスクのデバイスファイルが作成されていることを確認
3. ハードディスクにパーティションを作成｜fdiskコマンド
4. 各パーティションについてext3ファイルシステムを作成｜mke2fsコマンド(現在はext4が主流)
5. ファイルシステムのマウント｜mountコマンド

##ハードディスクの接続
ハードディスクを増設するためには、先ずシステムの電源を停止した状態で物理的に接続する。次に電源をONにすると、起動中に自動的にデバイスを検出する。

###HDDの接続規格

|HDDの接続規格|説明|
|---|---|
|IDE(Integrated Drive Electronics)|1989年により規格化。IDEインターフェイスは、プライマリとセカンダリの2つのI/Fがある。各I/Fごとに、マスターとスレーブの2台を接続できるレガシーな規格|
|SCSI(Small Computer System Interface)|ANSIにより規格化。IDE規格より、最大伝送速度が速く、ケーブル1本あたりの最大接続デバイス数も多いが、IDEに比べ高価である。IDEと同様、HDD以外にCD-ROMドライブ等が接続可能|
|SATA(Serial Advanced Technology Attachment|IDEの後継規格であり、SCSIに変わって主流となっている規格。|
|SAS(Serial Attachment SCSI|Ultra-320 SCSIの後継にあたる規格。SATAはコンシューマー向けに対して、SASはサーバー用HDDの接続によく使用される。|
|USB(Universal Serial Bus)|一般的には、周辺機器の接続によく使用される規格であるが、USBポートを持つ外付けのHDDを接続する際に使用される規格。|

![スクリーンショット 2019-09-25 0.08.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/374557/c3ec3fd8-5926-15c0-bbf8-6215610c8a4b.png)

##デバイスファイルの確認
起動中にハードディスクを新しく検出すると、検出されたデバイスを操作するためのデバイスファイルが/devディレクトリに自動的に追加される。デバイスファイルは、HDD等の周辺装置を制御する際に使用される特別なファイルのこと。以下ファイルがLinuxでは、デフォルトでインストールされている。


|デバイスファイル|説明|
|---|---|
|/dev/hda|プライマリのマスターに接続したHDD|
|/dev/hdb|プライマリのスレーブに接続したHDD|
|/dev/hdc|セカンダリのマスターに接続したHDD|
|/dev/hdd|セカンダリのスレーブに接続したHDD|
|/dev/sda|1番目のSCSI/SATA/USBに接続したHDD|
|/dev/sdb|2番目のSCSI/SATA/USBに接続したHDD|
|/dev/sdc|3番目のSCSI/SATA/USBに接続したHDD|
|/dev/sdd|4番目のSCSI/SATA/USBに接続したHDD|
|/dev/sr0|1番目のCD/DVDドライブ|
|/dev/st0|1番目のテープドライブ|

##パーティション作成
###パーティションについての理解
パーティションとは、ハードディスクを論理的に分割した各領域のこと。ハードディスクがシステムに認識されたら、パーティションに分割する必要がある。パーティションには以下の3つがある。

|パーティションの種類|説明|
|---|---|
|基本パーティション|基本パーティションは、1台のディスクに必ず1つ以上存在する必要がある。<br>1つの物理ディスクには最大で4つの基本パーティションに分割することができる。基本パーティションのデバイスファイル名は、SCSIディスク(/dev/sda)の場合は、/dev/sda1、/dev/sda2、/dev/sda3、/dev/sda4のようになる。|
|拡張パーティション|基本パーティションのうち、1つだけを拡張パーティションとして使用することができる。拡張パーティションには、直接ファイルシステムを作成することができない。代わりに、拡張パーティションの中には、論理パーティションが格納される。|
|論理パーティション|論理パーティションは、拡張パーティション内に作成されたパーティションのこと。作成できる論理パーティションの数は、ハードディスクのタイプにより異なるが、論理パーティションのデバイスファイル名はSCSIの場合、/dev/sda5以降となる。|

ハードディスクをパーティションに分割した場合、各パーティションを操作するためのデバイスファイルも自動的に作成される。パーティションのデバイスファイル名はハードディスクの何番目のパーティションなのかを示す整数値がつけられることから、SCSIディスクやIDEディスクの場合は以下の名称となる。
IDEディスク｜/dev/hda1、/dev/hda2、/dev/hda3、/dev/hda4
SCSIディスク｜/dev/sda1、/dev/sda2、/dev/sda3、/dev/sda4

###パーティション作成コマンド
現在のパーティションテーブルの状態を表示するためには「fdisk -l」コマンドを使用する。

```shell
$ fdisk -l /dev/sda
```

|キーワード|説明|
|---|---|
|Device|パーティションのデバイスファイル名|
|Boot|ブートフラグ<br>ブートフラグはブートパーティションのカーネル（vmlinuz）やブートローダ―（GRUB）を格納するパーティションに * がつく|
|Start|パーティションの開始シリンダ番号|
|End|パーティションの終了シリンダ番号|
|Blocks|パーティションの総ブロック数|
|Id|パーティション内のファイルシステムのタイプ(数値)|
|System|パーティション内のファイルシステム|

パーティションの作成、削除、変更、情報表示のためには「fdisk」コマンドを使用する。fdiskコマンドの実行時に以下のサブコマンドを入力してパーティションの作成、変更、削除等を行う。

|サブコマンド|説明|
|---|---|
|m|使用可能なサブコマンドの一覧表示|
|p|現在のパーティションテーブルの表示|
|n|新しいパーティションテーブルの作成|
|d|既存のパーティションテーブルの削除|
|l|設定可能なパーティションタイプの一覧表示|
|a|ブートフラグをオン、またはオフにする|
|t|パーティションタイプの設定、変更|
|w|パーティションテーブルの変更を保存して終了|
|q|パーティションテーブルの変更を保存せず終了|

##ファイルシステム作成
###ファイルシステムについての理解
<strong>ファイルシステム</strong>とは、ディレクトリの階層構造において、データをファイルとして管理する方式のこと。パーティションを作成するだけでは、ファイルを保存することができず、ファイルシステムを作成する必要がある。

ファイルシステムが用意されていない場合、ディスク上のデータの読み出しに例えば「1543セクタのデータを開く」という指示が必要になる。ファイルシステムが用意されていれば、例えば「/tmp/data.txtのファイルを開く」のように分かりやすくデータを取り扱いすることができる。

###ファイルシステム作成コマンド理解
ファイルシステムにより、ファイル名を指定してデータにアクセスできるようになり、データの指定や検索などが容易になる。例えば、WindowsのファイルシステムにはNTFSなどがあるが、Linuxのファイルシステムにはext2、ext3、ext4等があり、mkfsコマンド、mke2fsコマンドを使用して作成する。

- <strong>mke2fs [-t ファイスシステムタイプ] [オプション] デバイス名</strong>

|オプション|説明|
|---|---|
|-t ファイルシステム|ファイルシステムの種類の指定(ext2、ext3、ext4)|
|-j|ext3のファイルシステムの作成|
|-c|実行前の不良ブロックの検査|

```shell
# ext4ファイルシステムを、/dev/sda5に作成
$ mke2fs -t ext4 -j /dev/sda5
```

パーティション状にスワップ領域を作成するためには「mkswap」コマンドを使用する。
システム最低1つのスワップ領域は必要であり、一般的にはスワップ領域に独立したパーティションを割り当てる。

- <strong>mkswap デバイス名</strong>

```shell
# スワップ領域を、/dev/sda6に作成
$ mkswap /dev/sda6
```