見出し画像

LinuC 挑戦日記 ~1.05.2_ハードディスクのレイアウトとパーティション ~

この記事は、101試験(Version 10.0)出題範囲の主題 ハードウェア、ディスク、パーティション、ファイルシステム の副題 1.05.2 ハードディスクのレイアウトとパーティション の内容を学習しまとめた内容です。
重要度はそれなりに高いので試験に挑むためにもきっちり押さえる必要があります。

重要度 : 4
概要     : Linuxシステムにおけるディスクパーティションの構成を設定できる。

▽ 重要な用語と概念

◆ファイルシステム【 File System 】
  ✅ディスクに保存されるデータをファイルとして管理する仕組み
  ✅ハードディスクやSSDを利用するまでの流れ
         ディスク内にパーティションを作成
                          ↓
         パーティションにファイルシステムを作成
                          ↓
         ファイルシステムをマウント
  ✅ルートファイルシステム【 root File System 】
       /ディレクトリを含むファイルシステム

◆パーティション【 partition 】 

## パーティションの種類 ##
  |
  ├─ 基本パーティション (プライマリパーティション)
  |   |   ├─ BIOS ベースのシステムではディスクに最大4つ作成可能
  |   |   └─ パーティションにはファイルシステムを格納
  |   |
  |   └─ 拡張パーティション
  |       |   ├─ BIOS ベースのシステムで使用
  |       |   ├─ 基本パーティションの一つを拡張パーティションにする
  |       |   └─ パーティションには論理パーティションを格納
  |       |
  |       └─ 論理パーティション
  |              ├─ 拡張パーティション内に作成されたパーティション
  |              └─ BIOS ベースのシステムで使用
  |               
  └─ UEFIシステムパーティション (ESP)
       ├─ UEFI ベースのシステムで使用 (UEFI ベースのシステムのパーティション)
       ├─ ESPと1つ以上の基本パーティションが使用可能 (拡張パーティションや論理パーティションは使用しない)
       └─ 他のパーティションの管理等に使用

以下の記事が大変分かりやすく参考にさせていただきました。

「パーティション」とはLinuxやWindowsなどに関係なく一般的な仕組みの一つで、PCの記憶媒体、HDDやSSDその他メモリスティックなどにもうけることが出来る「しきり」のことだ。

◆ LVM【 Logical Volume Manager 】
  ✅より柔軟にディスクを管理する機能
  ✅仮想的なパーティション(Logical Volume:論理ボリューム)を動的に管理
  ✅特徴とメリット
       ├─ LVは従来のパーティションと同様に扱える
       ├─ LVのサイズを変更したり、他のディスクに移動可能
       ├─ LVは複数のディスクにまたがって作成可能
       ├─ ボリュームグループも後からサイズ変更可能
       └─ スナップショットが容易に取得可能

以下の記事が概念図も多く大変分かりやすかったです。

◆デバイスファイル【 device file 】
  ✅デバイスやパーティションに対応する当該ファイルが用意される

## ディスクのデバイスファイル
/dev/ディスク形式 d ディスクの台数 パーティション番号 
      |            |            ├─ 1つ目のパーティションを12つ目のパーティションを2というように指定
      |            |            └─ 論理パーティションには5以降を指定
      |            └─ 1台目をa、2台目をbというように指定
      ├─ h : IDE 形式のディスク 
      └─ s : SCSI/USB/SATA 形式のディスク

## 主なデバイスファイル      
+--------------+---------------------------------------------------------+
|デバイスファイル | 説明                                                     |
+--------------+---------------------------------------------------------+
| /dev/sda     | 1番目のハードディスク・SSD・フラッシュメモリ (SCSI/SATA/USB接続) |
| /dev/sdb     | 2番目のハードディスク・SSD・フラッシュメモリ (SCSI/SATA/USB接続) |
| /dev/sdc     | 3番目のハードディスク・SSD・フラッシュメモリ (SCSI/SATA/USB接続) |
| /dev/sdd     | 4番目のハードディスク・SSD・フラッシュメモリ (SCSI/SATA/USB接続) |
| /dev/sr0     | 1番目のCD/DVDドライブ                                      |
| /dev/st0     | 1番目のテープドライブ                                       |
+--------------+---------------------------------------------------------+

  ✅以前の記事でも別の観点から紹介

  ✅ブロックデバイス・キャラクタデバイスの違い
    - ブロックデバイス
       ハードディスクやSSDなど、メディアの任意の場所にアクセス可能
    - キャラクタデバイス
       キーボードやシリアルポートなど、文字単位でデータを読み書き
    - 以前の記事でも参考にさせていただいた記事から抜粋

一応、ブロックデバイスは「(対象のデータを細切れにせずにまとめて)ブロック単位でデータ転送を行うもの」、キャラクタデバイスはその逆に「1文字単位でデータ転送を行うもの」となっていますが、実用上は単純に言うと、ディスクのようにファイルシステムを構築できる、あるいは構築済みのファイルシステムを利用できるのがブロックデバイス、その他全部がキャラクタデバイスです。

◆パーティションテーブル【 partition table 】
  ✅パーティションの構成情報 (管理方式)
  ✅記憶領域内の物理的な先頭部分に記録されている

## 2種類の方式 ##
    ├─ MBR【 Master Boot Record 】
    |  ├─ 扱えるハードディスク容量 : 2TB まで
    |  └─ 基本パーティション作成 : 4個まで
    └─ GPT【 GUID Partition Table 】
       ├─ 扱えるハードディスク容量 : 8.5ZB まで
       └─ 基本パーティション作成 : 128個まで

▽ 重要なコマンド

◆ lsblk コマンド
    システムのブロックデバイス一覧を確認する

$ lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT 
sda      8:0    0  59.6G  0 disk 
`-sda1   8:1    0  59.6G  0 part /etc/hosts 
sr0     11:0    1 461.8M  0 rom 
sr1     11:1    1   270K  0 rom 
sr2     11:2    1 821.7M  0 rom 

$ lsblk 
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 
xvda    202:0    0   8G  0 disk 
mqxvda1 202:1    0   8G  0 part / 

この副題でポイントとなるコマンドは、パーティション管理のためのコマンド 3 つで、代表的なコマンドは fdisk です。

◆ fdisk コマンド
  ✅パーティションの作成、削除、変更、情報表示などを行う
  ✅ -l でそのパーティションテーブルの状態を表示

$ sudo fdisk [-l] デバイス名 

## 主なサブコマンド
+----------+-------------------------------------------+
|サブコマンド| 説明                                       |
+----------+-------------------------------------------+
| l        | パーティションタイプを一覧表示する               |
| n        | パーティションを作成する                       |
| d        | パーティションを削除する                       |
| p        | パーティションテーブルを表示する                |
| t        | パーティションタイプを変更する                  |
| a        | ブートフラグのオン/オフを切り替える              |
| w        | パーティションテーブルの変更を保存して終了する     |
| q        | パーティションテーブルの変更を保存しないで終了する  |
| m        | ヘルプメニューを常時する                       |
+----------+-------------------------------------------+

$ sudo fdisk -l /dev/sda 
Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: gpt 
Disk identifier: 55BAE540-16DE-4A92-90DF-3330D51DF457 

Device      Start      End  Sectors Size Type 
/dev/sda1    4096 16777182 16773087   8G Linux filesystem 
/dev/sda128  2048     4095     2048   1M BIOS boot 

Partition table entries are not in disk order.

$ sudo fdisk /dev/sda 
[sudo] ログインユーザー のパスワード: 
Welcome to fdisk (util-linux 2.23.2). 

Changes will remain in memory only, until you decide to write them. 
Be careful before using the write command. 

コマンド (m でヘルプ): m 
コマンドの動作 
  a   toggle a bootable flag 
  b   edit bsd disklabel 
  c   toggle the dos compatibility flag 
  d   delete a partition 
  g   create a new empty GPT partition table 
  G   create an IRIX (SGI) partition table 
  l   list known partition types 
  m   print this menu 
  n   add a new partition 
  o   create a new empty DOS partition table 
  p   print the partition table 
  q   quit without saving changes 
  s   create a new empty Sun disklabel 
  t   change a partition's system id 
  u   change display/entry units 
  v   verify the partition table 
  w   write table to disk and exit 
  x   extra functionality (experts only) 

コマンド (m でヘルプ): l 

0  空              24  NEC DOS         81  Minix / 古い Li bf  Solaris 
1  FAT12           27  Hidden NTFS Win 82  Linux スワップ  c1  DRDOS/sec (FAT- 
2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT- 
3  XENIX usr       3c  PartitionMagic  84  OS/2 隠し C: ド c6  DRDOS/sec (FAT- 
4  FAT16 <32M      40  Venix 80286     85  Linux 拡張領域  c7  Syrinx 
5  拡張領域        41  PPC PReP Boot   86  NTFS ボリューム da  非 FS データ 
6  FAT16           42  SFS             87  NTFS ボリューム db  CP/M / CTOS / . 
7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux プレーン  de  Dell ユーティリ 
8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt 
9  AIX ブート可能  4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access 
a  OS/2 ブートマネ 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O 
b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor 
c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad ハ eb  BeOS fs 
e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT 
f  W95 拡張領域 (L 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/ 
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC 
11  隠し FAT12      56  Golden Bow      a8  Darwin UFS      f1  SpeedStor 
12  Compaq 診断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor 
14  隠し FAT16 <32M 61  SpeedStor       ab  Darwin ブート   f2  DOS セカンダリ 
16  隠し FAT16      63  GNU HURD または af  HFS / HFS+      fb  VMware VMFS 
17  隠し HPFS/NTFS  64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI スワップ   fd  Linux raid 自動 
1b  隠し W95 FAT32  70  DiskSecure Mult bb  隠し Boot Wizar fe  LANstep 
1c  隠し W95 FAT32  75  PC/IX           be  Solaris ブート  ff  BBT 
1e  隠し W95 FAT16  80  古い Minix 

コマンド (m でヘルプ): q  

◆ gdisk コマンド
  ✅ GPT に対応したパーティション操作を行うことが可能
        ※ 最近のディストリビューションは fdisk コマンドも GPT に対応
  ✅サブコマンドは fdisk と同じ

$ sudo gdisk [-l] デバイス名 


$ sudo gdisk -l /dev/sda 
GPT fdisk (gdisk) version 0.8.10 

Partition table scan: 
 MBR: protective 
 BSD: not present 
 APM: not present 
 GPT: present 

Found valid GPT with protective MBR; using GPT. 
Disk sda: 16777216 sectors, 8.0 GiB 
Logical sector size: 512 bytes 
Disk identifier (GUID): 55BAE540-16DE-4A92-90DF-3330D51DF457 
Partition table holds up to 128 entries 
First usable sector is 34, last usable sector is 16777182 
Partitions will be aligned on 2048-sector boundaries 
Total free space is 2014 sectors (1007.0 KiB) 

Number  Start (sector)    End (sector)  Size       Code  Name 
  1            4096        16777182   8.0 GiB     8300  Linux 
128            2048            4095   1024.0 KiB  EF02  BIOS Boot Partition 

◆ parted コマンド
  ✅ MBRにもGPTにも対応したパーティション操作コマンド
  ✅ fdisk / gdisk コマンドのように w サブコマンドが不要
        └─> 即座にパーティションテーブルに反映 

$ sudo parted デバイス名 [-s サブコマンド] 

## 主なサブコマンド
+---------------------+----------------------------------+
|サブコマンド           | 説明                              |
+---------------------+----------------------------------+
| check 番号           | ファイルシステムの簡単なチェックを行う   |
| mklabel [gpt|msdos] | 新しいパーティションテーブルを作成する   |
| mkpart 種類 開始 終了  | 指定した種類のパーティションを作成する  |
| rm 番号              | 指定したパーティションを削除する       |
| print, p            | パーティションテーブルを表示する        |
| quit, q             | 終了する                           |
+---------------------+----------------------------------+

$ sudo parted /dev/sda 
GNU Parted 3.1 
Using /dev/xvda 
Welcome to GNU Parted! Type 'help' to view a list of commands. 
(parted) p 
Model: Xen Virtual Block Device (xvd) 
Disk /dev/xvda: 8590MB 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags: 

Number  Start   End     Size    File system  Name                 Flags 
128     1049kB  2097kB  1049kB               BIOS Boot Partition  bios_grub 
1      2097kB  8590MB  8588MB  xfs          Linux 

(parted) q 

$ sudo parted /dev/sda -s p 
Model: Xen Virtual Block Device (xvd) 
Disk /dev/xvda: 8590MB 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags: 

Number  Start   End     Size    File system  Name                 Flags 
128     1049kB  2097kB  1049kB               BIOS Boot Partition  bios_grub 
1      2097kB  8590MB  8588MB  xfs          Linux 

もしこの記事が何かの参考になったもしくは面白かったという方は、応援していただけると大変嬉しいです😊 これからもよろしくお願いします。