LPIC あずき本v5.0 ch5 デバイスとLinuxファイルシステム ch5.1

LPICLinux勉強メモ

出典: 


パーティションとファイルシステムの作成

  • データは0と1の羅列に過ぎない
  • ファイルとして管理する仕組み: ファイルシステム
  • ハードディスクを利用するには

    1. パーティション切る
    2. パーティション上にファイルシステムを作成
    3. ファイルシステムをマウント

ハードディスク

SATA: Serial ATA

  • 主流・標準搭載
  • IDEよりもデータ転送速度が速い

IDE: Integraded Drive Electronics

  • SATAが出てくる前まで主流だった
  • IDEの標準化がATA: Advanced Technology/Attachment

    • パラレル通信

SAS: Serial Attached SCSI

  • SATAより高速・高信頼性
  • 主にサーバ用途
  • 高価

SCSI: Small Computer System Interface

  • さまざまな周辺機器を接続する一般的な規格
  • サーバー、ワークステーション用途

    • 高価
    • 高速
  • SCSIカード必要

USB: Universal Serial Bus

  • 必要なときに外付けできて便利

デバイスファイル

  • ハードディスク

    • /dev/sda,/dev/sdb,…
  • CD/DVDドライブ

    • /dev/sr0,…
  • テープドライブ

    • /dev/st0,…
  • 大別

    • ブロックデバイス

      • 任意の場所にアクセスできる

        • HDD
        • パーティション
        • CD
    • キャラクターデバイス

      • 文字単位でデータ読み書き

        • キーボード
        • シリアルポート
  • lsblkコマンド

    • ブロックデバイスを一覧
lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0   3.7M  1 loop /snap/gnome-system-monitor/70
loop1    7:1    0  91.1M  1 loop /snap/core/6531
loop2    7:2    0     4M  1 loop /snap/gnome-calculator/406
loop3    7:3    0 140.7M  1 loop /snap/gnome-3-26-1604/82
loop4    7:4    0   3.7M  1 loop /snap/gnome-system-monitor/57
loop5    7:5    0    13M  1 loop /snap/gnome-characters/139
loop6    7:6    0  1008K  1 loop /snap/gnome-logs/61
loop7    7:7    0  14.8M  1 loop /snap/gnome-characters/206
loop8    7:8    0  53.7M  1 loop /snap/core18/782
loop9    7:9    0  89.3M  1 loop /snap/core/6673
loop10   7:10   0   2.3M  1 loop /snap/gnome-calculator/260
loop11   7:11   0  34.8M  1 loop /snap/gtk-common-themes/1122
loop12   7:12   0 143.5M  1 loop /snap/gnome-3-28-1804/23
loop13   7:13   0   3.7M  1 loop /snap/gnome-system-monitor/77
loop14   7:14   0  1008K  1 loop /snap/gnome-logs/57
loop15   7:15   0  14.5M  1 loop /snap/gnome-logs/45
loop16   7:16   0     4M  1 loop /snap/gnome-calculator/352
loop17   7:17   0  14.8M  1 loop /snap/gnome-characters/254
loop18   7:18   0  35.3M  1 loop /snap/gtk-common-themes/1198
loop19   7:19   0 140.7M  1 loop /snap/gnome-3-26-1604/78
loop20   7:20   0    91M  1 loop /snap/core/6405
loop21   7:21   0  53.7M  1 loop /snap/core18/941
loop22   7:22   0   151M  1 loop /snap/gnome-3-28-1804/31
loop23   7:23   0   151M  1 loop /snap/gnome-3-28-1804/36
sda      8:0    0 238.5G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
└─sda2   8:2    0   238G  0 part /

パーティションの種類

  • パーティション

    • 1台のディスクドライブを分割する論理的な区画
    • パーティションごとに異なるファイルシステムを作成できる

BIOSベースのシステムにおける種類

基本パーティション

  • ディスクに4つまで作れる

    • ディスク/dev/sdaに対して/dev/sda1-/dev/sda4
  • 【補】MBRのうち64バイト(16x4)はこの情報に充てられている

    • 446 + 64 + 2 = 512
  • ファイルシステムを格納する

拡張パーティション

  • 基本パーティションの一つを拡張パーティションにできる
  • ファイルシステムではなく論理パーティションを格納する

論理パーティション

  • 拡張パーティション内に作成されたパーティション
  • 必ず5番から始まる

    • 基本パーティションが2つとかでも/dev/sda5から

UEFIベースのシステムでの分類

  • 拡張パーティション、論理パーティションはない

ESP: EFI System Partition

  • 他のパーティションの管理等に使われる

基本パーティション

  • 1つ以上

パーティションに分割するメリット

  • 障害による被害をパーティション内に限定
  • 空き容量が足りなくなった場合の影響を少なくする

    • ログであふれた場合等

ルートファイルシステム

  • /を含むファイルシステム
  • 複数のパーティションを用意し、/var, /homeなどのディレクトリは別のパーティションを割り当ててマウントするのが一般的

    • この場合、/var/homeなどは独立したファイルシステムとなる
  • ルートファイルシステムに置く必要のあるディレクトリ

    • /bin

      • システムに必要なコマンド、プログラム。一般ユーザー用
    • /sbin

      • システムに必要なコマンド、プログラム。管理者用
    • /etc

      • システムの設定ファイル群
    • /lib

      • 共有ライブラリ
    • /dev

      • デバイスファイル

パーティション管理コマンド

fdiskコマンド

  • パーティションの作成、削除、変更、情報表示等
  • 情報表示
sudo fdisk -l /dev/sda
ディスク /dev/sda: 238.5 GiB, 256060514304 バイト, 500118192 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 0B97E339-7CBE-45E5-B86D-E145F77A3E1F

デバイス   開始位置  最後から    セクタ サイズ タイプ
/dev/sda1      2048   1050623   1048576   512M EFI システム
/dev/sda2   1050624 500117503 499066880   238G Linux ファイルシステ 
  • 対話形式でパーティションの作成、削除、変更等を行う
sudo fdisk /dev/sda
fdisk (util-linux 2.31.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。


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

ヘルプ:

  一般
   d   パーティションを削除します
   F   パーティションのない領域を一覧表示します
   l   既知のパーティションタイプを一覧表示します
   n   新しいパーティションを追加します
   p   パーティション情報を表示します
   t   パーティションタイプを変更します
   v   パーティション情報を検証します
   i   パーティションの情報を表示します

  その他
   m   このメニューを表示します
   x   特殊機能に移動します (熟練者向け機能)

  スクリプト
   I   ディスクのレイアウトを sfdisk 互換のスクリプトから読み込みます
   O   ディスクのレイアウトを sfdisk 互換のスクリプトに書き出します

  保存と終了
   w   パーティション情報をディスクに書き込んで終了します
   q   変更点を保存せずに終了します

  新しいラベルを作成します
   g   新しい (何もない) GPT パーティションテーブルを作成します
   G   新しい (何もない) SGI (IRIX) パーティションテーブルを作成します
   o   新しい (何もない) DOS パーティションテーブルを作成します
   s   新しい (何もない) Sun パーティションテーブルを作成します


コマンド (m でヘルプ): 
  • スワップ領域
sudo fdisk -l /swapfile
ディスク /swapfile: 2 GiB, 2147483648 バイト, 4194304 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
  • マウントポイントでないディレクトリを指定すると怒られる
sudo fdisk -l /
fdisk: / を open できません: ディレクトリです

gdiskコマンド

  • MBRの代わりにGPT: GUID Partition Table使用

    • GUID: Global Unique IDentifier
  • 対話形式
MBR GPT
ハードディスク制限 2GB -
基本パーティション 4個 128
sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3

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

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 500118192 sectors, 238.5 GiB
Model: LITEONIT LCS-256
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 0B97E339-7CBE-45E5-B86D-E145F77A3E1F
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 500118158
Partitions will be aligned on 2048-sector boundaries
Total free space is 2669 sectors (1.3 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   512.0 MiB   EF00  EFI System Partition
   2         1050624       500117503   238.0 GiB   8300  
  • やはり対話形式
sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3

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

Found valid GPT with protective MBR; using GPT.

Command (? for help): ?
b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

parted

  • MBR,GPT両対応

    • 対話形式
    • 一括実行形式
  • 即座に反映

    • cf. fdisk, gdiskはwコマンドでパーティションテーブル反映

ファイルシステムの作成

  • ファイルシステム

    • パーティションの上にこれを作成してはじめてファイルを保存できる
    • 「セクタ」「ブロック」等の概念を隠蔽し、ファイルパスとして提供する
  • 構成

    • ファイルの中身
    • iノード(Indexノード)

      • ファイルの属性
      • 管理データ

ファイルシステムの種類

  • Linux向けのやつ

    • ext2

      • 標準
    • ext3

      • ext2 + ジャーナリング機能サポート
    • ext4

      • ext3 + 機能拡張
  • UNIX系OSから移植されたやつ

    • XFS

      • IRIXというUNIX向けに開発
      • SGI社開発
      • ジャーナリング機能
    • JFS

      • AIXというUNIX向けに開発
      • IBM社開発
      • ジャーナリング機能
  • そのた

    • Btrfs

      • 高機能なやつ
      • 開発中
    • iso9660

      • CD-ROMのファイルシステム
    • msdos

      • MS-DOSのやつ
    • vfat

      • SDカード、古いWindowsで使われるファイルシステム
    • exFAT

      • FAT後継
      • フラッシュメモリ向け

mkfsコマンド

MKFS(8)                 System Administration                 MKFS(8)

NAME
       mkfs - build a Linux filesystem

SYNOPSIS
       mkfs [options] [-t type] [fs-options] device [size]
  • パーティション上にファイルシステム作成

    • Facade的な人

      • ファイルシステムに対応したバックエンドコマンドを呼び出す

        • mkfs.ext3など
ファイルシステム mkfsコマンドの-tに渡すやつ プログラム
ext2 ext2 mkfs.ext2
ext3 ext3 mkfs.ext3
ext4 ext4 mkfs.ext4
XFS xfs mkfs.xfs
VFAT vfat mkfs.vfat
exFAT exfat mkfs.exfat
Btrfs btrfs mkfs.btrfs

mke2fsコマンド

  • ext2, ext3, ext4ファイルシステムを作成する場合に利用できる

mkfs.btrfsコマンド

  • Btrfs: B-tree File System

    • 耐障害性にすぐれる
    • 開発中らしい
  • 先進的な機能群

    • ストレージプール

      • 複数の物理ボリュームを
    • マルチデバイスファイルシステム

      • 複数の物理ボリュームにまたがってファイルシステムを作成できる
    • スナップショットの作成

      • ある時点でのファイルシステムの状態の記録
      • アンマウントせずにバックアップ
    • サブボリューム

      • スナップショットの作成単位
      • ディレクトリ感覚で作成できる
  • 複数パーティションを指定してファイルシステム作れる
mkfs.btrfs /dev/sdb1 /dev/sdb2

mkswapコマンド

  • パーティション上にスワップ領域作成

    • /swap
    • システムに最低1つ必須
mkswap /dev/sda6