1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linuxのハードディスク、パーティション、ファイルシステムの管理

Posted at

Linuxでハードディスクを使用するための手順

Linuxでハードディスクを使用するには以下の手順で設定する必要があります。1,2はカーネルによって自動で行われるので作成されたデバイスファイルの確認から見ていきます。

1.ハードウェアを接続してカーネルがデバイスを認識
2.ハードディスクのデバイスファイルが/dev配下に作成される(カーネルがハードウェアを認識した際に自動的に作成される)
3.ハードディスクにパーティションを作成
4.パーティションにファイルシステムを作成
5.ファイルシステムをマウントする

デバイスファイルの確認

カーネルがハードウェアを認識した時に自動で/dev配下にデバイスファイルが作成されます。デバイスファイルはudevという仕組みによって作成されます。

udevの仕組みではデバイスが接続されるとカーネルがそれを検知して/sysディレクトリ配下にデバイス情報を作成します。udevデーモン(udevd)はそのデバイス情報を参照して/devディレクトリにデバイスファイルが作成されます。
その際にメインの設定ファイル「/etc/udev/udev.conf」と個別の設定ファイル「/etc/udev/rules.d」が使用されます。

デバイスファイル 説明
/dev/sda 第一ハードディスクのブロックデバイス。
/dev/sda1 第一ハードディスクの最初のパーティション。
/dev/ttyS0 第一シリアルポートのキャラクタデバイス。
/dev/random ランダムデータ生成デバイス。
/dev/null データを捨てるデバイス。
/dev/zero ゼロデータ生成デバイス。
/dev/sr0 第一CD/DVDドライブのブロックデバイス。
/dev/fb0 第一フレームバッファデバイス。

デバイスドライバ

デバイスを使用するために必要な制御プログラムのことをデバイスドライバといいます。Linuxではデバイスドライバはカーネルモジュールとしてカーネルに組み込まれています。デバイスドライバをカーネルに組み込むことを「ロードする」といいます。

lsmod

lsmodでロードされているカーネルモジュールを表示します。

[ec2-user@ip-192-168-0-48 ~]$ lsmod
Module                  Size  Used by
nls_ascii              16384  1
sunrpc                692224  1
nls_cp437              20480  1
vfat                   24576  1

modprobe

デバイスドライバは自動でロードされますが、手動でロードする場合はmodprobeコマンドを使用します。

modprobeを使用するとカーネルモジュールどうしの依存関係を自動的に解決してくれます。

ハードディスクやSSDなどのストレージは、複数の論理的な区画(パーティション)に分割して使用します。パーティションはOSがBIOSとUEFIどちらを搭載しているかによって種類が異なります。

パーティションにはMBRとGPTの2つ規格がある

OSがBIOSの場合は基本的にMBR(BIOSでもGPTのこともある)、UEFIの場合はGPTを採用しています。

特徴 MBR(Master Boot Record) GPT(GUID Partition Table)
最大パーティション数 4つのプライマリパーティション(拡張パーティション内に複数の論理パーティションを作成可能) ほぼ無制限(通常128個まで設定可能)
最大ディスクサイズ 2TB 理論上、8 ZB(ゼタバイト)
互換性 古いシステムおよびBIOSベースのシステムで広くサポート UEFIシステムで標準。BIOSとも組み合わせ可能(特別な設定が必要)
冗長性 なし パーティションテーブルをディスクの先頭と末尾に格納し、冗長性を提供
データ整合性チェック なし CRC32チェックサムを使用
ディスク構造 ブートストラップコード、ディスクパーティションテーブル、ディスクシグネチャ プライマリヘッダー、パーティションエントリーアレイ、バックアップヘッダー
ブートパーティション 必要なし BIOSブートパーティション(BIOSと組み合わせる場合)
パーティションID プライマリパーティションごとに1バイトのタイプコード 各パーティションに128ビットのGUID
ツール互換性 古いツールやシステムで広くサポート 最新のツールやシステムでサポート
セキュリティ なし パーティションエントリに属性フラグを追加可能(例:読み取り専用、非表示など)

ファームウェアとは

ハードウェアデバイスに組み込まれているソフトウェアの一種で、デバイスの基本的な動作を制御する役割を果たします。ファームウェアは、デバイスのROM(Read-Only Memory)やフラッシュメモリに格納されています。

BIOSとUEFI

BIOSはパソコンの電源が入ってから最初に動き、OSの読み込みや、主にハードウェアを制御するプログラムです。現在は後継となるUEFI(Unified Extensible Firmware Interface)が主流となっています。

ファームウェアどちらを使用しているかは以下コマンドでブートメッセージを確認することで確認可能。

dmesg | grep -i "efi\|bios"

BIOSとUEFIの違い

2つのファームウェアの違いとして以下があります。細かい違いはもっとありますが、とりあえずは以下の違いを理解しておけば十分かと思います。

  • インターフェース: BIOSはテキストベースのインターフェースを持ちますが、UEFIはグラフィカルインターフェースを提供します。
  • ディスクのパーティション形式 : BIOSはMBRを使用し2TBまでのディスクサイズに制限されますが、UEFIはGPTを使用し、それ以上のサイズをサポートします。

LVMとは

パーティションの確認コマンド

まずはパーティションを確認する必要があります。パーティションを確認するコマンドは複数あります。
・lsblk: 認識されているデバイスの一覧を表示

sh-4.2$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /

パーティションの作成

・fdisk: パーティションの作成、削除、変更、情報表示を行うコマンド。パーティションを確認するには-lコマンドを指定する。もともとはMBR専用でしたがGPTにも対応しています。

sh-4.2$ sudo fdisk -l
Disk /dev/xvda: 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: 3479DB6B-26DF-4EE4-A40E-14C759434212

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

Partition table entries are not in disk order.

・parted: MBRにもGPTにも対応したパーティション操作コマンドです。
partedで確認するには対象となるディスクデバイスを指定します。

sh-4.2$ sudo parted /dev/xvda
GNU Parted 3.1
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
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

パーティションの拡張にオススメのコマンド

growpart
AWSの公式ドキュメントで推奨されており、EBSのパーティション拡張で使うコマンドです。AWS以外の環境でもインストールすれば簡単に使用することが可能です。指定されたパーティションをディスク上の未使用領域に対して最大限まで拡張します。ファイルシステムは拡張されないので別途コマンドで拡張する必要があります。

パーティションにファイルシステムを作成

パーティションを作成したら、作成したパーティションの中にファイルシステムを作成します。まずはファイルシステムの種類から見ていきましょう。

ファイルシステムの種類

ファイルシステム種類 特徴
ext4 - Linuxで広く使われている
- 大容量ファイルやパーティションのサポート
- 高速なファイルアクセス
xfs - 高性能で大容量データに最適
- 並列処理に強い
- スナップショットやクローン作成が可能
btrfs - 高度な機能を持つ次世代ファイルシステム
- スナップショット、クローン、圧縮サポート
- RAIDサポート、データ整合性チェック

ファイルシステムの作成

mkfs(make file system)コマンド
パーミッション上にファイルシステムを作成します。ファイルシステムを-tオプションで指定することで様々なファイルシステムを作成できます。

mkfs -t <ファイルシステム> <オプション> <デバイスファイル名>

以下の例ではファイルシステムを/dev/sdb1に作成します

mkfs -t ext4 /dev/sdb1

ファイルシステムをマウントする

あるファイルシステムに別のファイルシステムを組み込んで、全体として1つのファイルシステムとして扱えるようにすることをマウントといいます。マウントしたファイルシステムが結合されるディレクトリのことをマウントポイントといいます。

mountコマンド

umountコマンド

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?