【初心者向け】ディスク関連の用語【5分で読める】

# ディスク関連の用語

理解のために小咄形式でまとめました。

:::note info
システムパフォーマンス関連記事の目次
- [【初心者向け】システムパフォーマンス関連まとめ【それぞれ５分で読める】](https://qiita.com/nouernet/items/d3efe67e0f52a92e061d)
:::

**登場人物**
- **太郎（後輩）**：入社1年目の若手エンジニア。
- **花子（先輩）**：システムエンジニア歴3年の先輩。

**場面：オフィスの会議室**
*太郎が `ディスク I/O` に関するドキュメントを見ながら、花子に質問する。*

**太郎**：「花子先輩、`ディスク I/O` について学んでいるんですが、 `用語の定義` が多すぎて混乱しています…。基本的な用語を整理したいんですが、教えてもらえませんか？」

**花子**：「確かに、 `ストレージやディスク I/O` の話をするときは、 `基本用語` を押さえておかないと話が進みにくいわね。じゃあ、 `重要な用語` を順番に説明していくわ。」

---

### **用語の解説**
**花子**：「ディスクに関連する `基本用語` は、 `6つ` あるわ。」

1. **仮想ディスク（Virtual Disk）**
2. **トランスポート（Transport）**
3. **セクター（Sector）**
4. **I/O（Input/Output）**
5. **ディスクコマンド（Disk Command）**
6. **スループット & 帯域幅（Throughput & Bandwidth）**

---

#### **1. 仮想ディスク（Virtual Disk）**
**花子**：「まず `仮想ディスク` だけど、これは `エミュレートされたストレージデバイス` のことよ。」

- **実際には複数のディスクや、単一ディスクの一部で構成される**。
- **OS からは `1つの物理ディスクのように見える`。**
- **仮想マシン（VM）やクラウド環境でよく使われる。**

「例えば `VMware` や `KVM` の `仮想ディスクイメージ（VMDK, QCOW2）` は、この `仮想ディスク` の一例ね。」

**太郎**：「なるほど、 `1台の物理マシンを複数の仮想マシンで共有する` ときに使われるんですね！」

---

#### **2. トランスポート（Transport）**
**花子**：「`トランスポート` とは、 `データ転送（I/O）やディスクコマンドのやり取り` に使われる `物理バス` のことよ。」

- 代表的な `ストレージトランスポート` には以下がある：
  - **SATA**（シリアル ATA）: 一般的な HDD/SSD 向け
  - **SAS**（シリアルアタッチド SCSI）: 高速 & エンタープライズ向け
  - **NVMe**（PCIe 経由）: 高速 SSD 用の最新プロトコル
  - **iSCSI**（Ethernet 経由）: ネットワークストレージ向け

**太郎**：「つまり、 `ストレージと CPU がどうやって通信するか？` を決める仕組みですね！」

---

#### **3. セクター（Sector）**
**花子**：「`セクター` は `ディスク上の最小のストレージ単位` のことよ。」

- **昔は 512 バイトが標準** だったが、最近は **4KB（4096バイト）** が一般的。
- **4Kセクターは `先読み性能` や `エラー訂正` に有利**。
- HDD も SSD も **内部的には 4K 単位でデータを管理している**。

**太郎**：「ってことは、 `ファイルシステムのブロックサイズ` も `4K にすると効率的` ってことですね！」

---

#### **4. I/O（Input/Output）**
**花子**：「`I/O` とは、 `ディスクの読み書き` のことよ。」

- **`I/O` は、ディスクの `リード（読み込み）` と `ライト（書き込み）` の操作。**
- **`サイズ` や `アドレス` を指定して実行される。**
- **I/O の `頻度（IOPS）` や `スループット` が `パフォーマンス指標` になる。**

**太郎**：「じゃあ、 `1秒間にどれくらい I/O が発生しているか` が `IOPS` なんですね！」

---

#### **5. ディスクコマンド（Disk Command）**
**花子**：「`ディスクコマンド` には `データ転送` 以外の `制御コマンド` も含まれるの。」

- **`リード/ライト（読み書き）` は基本的なディスクコマンド**
- **`キャッシュフラッシュ（sync）` や `SMART診断` もディスクコマンド**
- **ディスクには `特権コマンド` もあり、ファームウェア更新や低レベルフォーマットができる**

**太郎**：「ってことは、 `ディスクの健康状態をチェックする smartctl` も `ディスクコマンド` の一種なんですね！」

---

#### **6. スループット & 帯域幅（Throughput & Bandwidth）**
**花子**：「`スループット` と `帯域幅` は `ディスク I/O の速度` を示す指標よ。」

- **スループット（Throughput）**: 実際に転送されたデータ量（bps, MB/s）
- **帯域幅（Bandwidth）**: そのトランスポートが `理論上転送可能な最大速度`

「例えば `SATA3（6Gbps）` なら `帯域幅は 600MB/s` だけど、 `実際のスループットは 550MB/s` くらいなの。」

**太郎**：「理論値と実測値が違うのは、 `プロトコルのオーバーヘッド` があるからなんですね！」

---

**花子**：「これらの `ディスク用語` を `宅配便の仕組み` に例えると、こんな感じね。」

1. **仮想ディスク** → `宅配便の荷物ロッカー（実際には複数の荷物を管理している）`
2. **トランスポート** → `トラックやバイク便（データの運搬手段）`
3. **セクター** → `1つの荷物の最小単位（小包のサイズ）`
4. **I/O** → `荷物の受け取りや発送（データのやり取り）`
5. **ディスクコマンド** → `荷物の配送状況の問い合わせ（ディスクの制御）`
6. **スループット & 帯域幅** → `1時間あたりの配送可能な荷物量（データ転送速度）`

**太郎**：「なるほど！ `トラックの最大積載量` と `実際の荷物の配送速度` が違うのと同じで、 `帯域幅とスループット` も違うんですね！」

---

### **まとめ**
**花子**：「ディスク I/O を理解するには、 `基本用語をしっかり押さえること` が大事よ。特に `I/O の概念` や `スループットと帯域幅の違い` は、パフォーマンス分析でもよく出てくるわ。」

**太郎**：「ありがとうございます！たしかに抑えておきたい用語ですね！」

# 参考リンク

システムパフォーマンス関連記事の目次

- [【初心者向け】システムパフォーマンス関連まとめ【それぞれ５分で読める】](https://qiita.com/nouernet/items/d3efe67e0f52a92e061d)

システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。

- [［改訂新版］プロのためのLinuxシステム構築・運用技術](https://www.amazon.co.jp/dp/B01LZURAPK)
- [改訂2版 ネットワークエンジニアの教科書](https://www.amazon.co.jp/dp/B07NXQ4TDV)
- [絵で見てわかるシステムパフォーマンスの仕組み](https://www.amazon.co.jp/dp/B00LHFOTF4)
- [詳解 システム・パフォーマンス 第2版](https://www.oreilly.co.jp/books/9784814400072/)
- [入門 モダンLinux](https://www.oreilly.co.jp/books/9784814400218/)
- [Linuxシステム管理](https://www.oreilly.co.jp/books/9784873113463/)