主題1.05:ハードウェア、ディスク、パーティション、ファイルシステム
1.05.1 ハードウェアの基礎知識と設定(重要度3)
HDDと比較したSSDの特徴
SSDのメリット
・読み書きが高速
・内部で機械的に駆動する部分がないため衝撃に強い
・サイズが小さい
・消費電力が少ない
SSDのデメリット
・容量単価ではHDDよりも高価
・故障した際のデータ復旧がHDDより困難
・データ保持期間(寿命)HDDより短い
メモリやCPUの情報が格納されている/proc/ディレクトリ
/procディレクトリ
・「/proc」ディレクトリはプロセス、ハードウェアおよびシステムリソースなどの情報を扱うための疑似的なファイルシステムのこと。ハードディスク上にファイルシステムは存在せず、システムが起動する際にメモリ上に作成される。
/procディレクトリ配下にある主なファイル
/proc/interrupts:IRQに関する情報
/proc/ioports:I/Oポートアドレスの情報
/proc/bus/pci/devices:PCIデバイスに関する情報
/proc/bus/usb/devices:USBデバイスに関する情報
/proc/meminfo:メモリに関する情報
/proc/cpuinfo:CPUに関する情報
/proc/dma:使用中のDMAチャネルに関する情報
/proc/modules:ロードされているカーネルモジュールに関する情報
/proc/scsi/scsi:SCSIデバイスに関する情報
ファイルの情報を表示するコマンド
cat /proc/bus/pci/devices→PCIデバイスの情報を表示
cat /proc/bus/usb/devices→USBデバイスの情報を表示
cat /proc/modules→ロードされているカーネルモジュールの情報を表示
デバイス関連
周辺機器(デバイス)の種類
・コールドプラグデバイス
システムが停止している状態でのみデバイスの差し替えができるデバイスのこと。システム起動時にデバイスを認識する。コールドプラグデバイスにはRAIDカードなどがある
・ホットプラグデバイス
システムが起動している状態でもデバイスの差し替えができるデバイスのこと。これらはプラグアンドプレイデバイスとも呼ばれる。ホットプラグデバイスにはUSBがある
ホットプラグデバイス
・ホットプラグデバイスの制御はudev(Userspace DEVice management)によって行われる
・カーネルはデバイスを検知すると「/sys」以下(sysfsと呼ばれる)の情報を更新し、その更新をudevは検知して、/dev以下にデバイスファイルを動的に作成する
・デバイスファイル作成時の動作は、「/etc/udev/rules.d」ディレクトリに配置された設定ファイル(拡張子「.rules」)に記述された情報に基づいて行われる
/sys/ディレクトリ以下の主なサブディレクトリ
/sys/kernel:カーネルに関する情報
/sys/block:ブロックデバイスに関する情報
lsmodコマンド
書式
lsmod
概要
読み込まれているカーネルモジュールを一覧表示する
使用例
lsmod | grep cdrom
→cdromモジュールがロードされていることを確認
insmodコマンド
書式
insmod ファイル
概要
カーネルモジュールを読み込み、有効にする
引数
・ファイル:読み込むカーネルモジュールを指定
使用例
insmod sr_mod
→カーネルモジュールをロードする(依存関係があるモジュールがあるとロードできない)
rmmodコマンド
書式
rmmod モジュール名
概要
カーネルモジュールを削除し、無効にする
引数
・モジュール名:無効にするカーネルモジュール名を指定
使用例
rmmod sr_mod
→カーネルモジュールをアンロードする(依存関係があるモジュールがあるとアンロードできない)
modprobeコマンド
書式
modprobe【オプション】モジュール名
概要
カーネルモジュールを読み込む、もしくは削除する。依存関係のあるモジュールも操作対象とする
主なオプション
-r
→モジュールを削除する(-rオプションが指定されていないと読み込む)
引数
・モジュール名:操作するカーネルモジュール名を指定
使用例
modprobe sr_mod
→modprobeコマンドだと依存関係のあるcdromモジュールも一緒にロード
modinfoコマンド
書式
modinfo モジュール名
概要
指定したカーネルモジュールの情報を表示
引数
・モジュール名:表示するカーネルモジュール名を指定
使用例
modinfo e1000
→カーネルモジュールの情報を参照
lspciコマンド
書式
lspci【オプション】
概要
認識しているPCIデバイスの一覧を表示
主なオプション
-v
→詳細な情報を出力
使用例
lspci -v
→PCIデバイスの詳細な情報を出力する
lspciコマンドで出力される情報
・PCI識別番号
・PCIデバイスの種類
・ベンダー名(ベンダーID)
・デバイス名
・バスの速度(詳細表示のみ)
・IRQ番号(詳細表示のみ)
・I/Oポートアドレス(詳細表示のみ)
lsusbコマンド
書式
lsusb【オプション】
概要
認識しているUSBデバイスの一覧を表示
主なオプション
-v
→詳細な情報を出力する
使用例
lsusb -v
→ホストコントローラーの種類などの詳細情報も確認できる
主なUSBデバイスクラス
Audio:マイク、スピーカー
HID(Human Interface Device):キーボード、マウス
Mass Storage:ハードディスク、USBメモリー
ACM Communication Device:モデム、TA
Hub:USBハブ
1.05.2 ハードディスクのレイアウトとパーティション(重要度4)
unameコマンド
書式
uname【オプション】
概要
稼働中のカーネルやハードウェアアーキテクチャに関する情報を出力
主なオプション
-a
→すべての情報を出力
使用例
uname -a
→稼働中のカーネルやハードウェアアーキテクチャに関するすべての情報を出力
dfコマンド
書式
df【オプション】【デバイスファイル/マウントポイント】
概要
ファイルシステムの使用/空き領域サイズを表示
主なオプション
-h
→わかりやすいサイズ(MB/GB/TB)で表示(既定はブロックサイズで表示)
-i
→iノードについての情報を表示
-t ファイルシステム
→指定したファイルシステムのデバイスを対象にする
-T
→ファイルシステムの種類も表示
引数
・デバイスファイル/マウントポイント:対象となるデバイスファイル/マウントポイントを指定
使用例
df -h -T
→システムが利用しているディスク領域についての情報を確認
ルートパーティション
ルートパーティション
・最上位のディレクトリであるルートディレクトリ[ / ]を割り当てたパーティションのことで、その配下に様々なディレクトリやファイルが含まれている
スワップ領域
・物理メモリに収まらなかった情報を一時的に格納するための領域で、通常ハードディスク上に作成する
・Linuxのパーティションには上記のルートパーティションとスワップ領域の2つが最低限必要となる
・スワップ領域の推奨値は下記のとおり
RAMが2GB未満:RAMの2倍
RAMが2GB〜8GB:RAMと同量
RAMが8GB〜64GB:4GBからRAMの0.5倍
RAMが64GB以上:負荷に依存するが、少なくとも4GB
ルートパーティションとは別のパーティションを割り当てることが可能なディレクトリ
/home/:一般ユーザーのホームディレクトリ(書き込みが頻繁に発生)
/usr/:起動には不要なプログラムなどを格納(読み込みが頻繁に発生)
/var/:ログファイルやメールなど可変ファイル群を格納(書き込みが頻繁に発生)
/opt/:追加でインストールしたパッケージを格納(容量が大きくなる可能性がある)
/boot/:Linuxカーネルなど起動に必須のファイルを格納
/tmp/:一時ファイルを格納
ルートパーティションから分割できないディレクトリ
/bin/:一般ユーザー用のコマンドを格納
/sbin/:管理者用のコマンドを格納
/etc/:システムの設定ファイルを格納
/lib/:共有ライブラリを格納
/dev/:デバイスファイルを格納
fdiskコマンド
書式
fdisk【オプション】デバイスファイル
概要
MBRパーティションを構成する
主なオプション
-l
→指定したディスクのパーティション構成を表示。-lオプション指定時にデバイスファイルを省略すると、認識しているすべてのディスクについて情報を表示
引数
・デバイスファイル:対象となるディスクのデバイスファイルを指定
使用例
fdisk -l /dev/sda
→sdaのパーティション構成を確認
fdisk /dev/sdb
→オプションを指定せずにディスクを表すデバイスファイルを指定すると、専用のプロンプトが表示される。下記のサブコマンドを指定してパーティション構成を行う。
fdiskコマンドの主なサブコマンド
p:パーティションの表示
n:パーティションの作成
d:パーティションの削除
l:パーティションタイプの一覧表示
t:パーティションタイプ(システムID)の変更
w:設定情報を書き込み終了
q:設定情報を書き込まず終了
m:サブコマンドのメニューの表示
MBR方式のハードディスク
・基本パーティションは最大4個作成することができる(/dev/sda1~4)
・拡張パーティションは論理パーティションを作成するためのパーティション
・論理パーティションは拡張パーティション内に作成(/dev/sda5からの表記)
・3番目のSCSIハードディスクの2番目のパーティションを表すデバイスファイル(/dev/sdc2)
partedコマンド
書式
parted【オプション】【デバイスファイル】
概要
MBRパーティションもしくはGPTパーティションを構成する
主なオプション
-l
→指定したディスクのパーティション構成を表示。-lオプション指定時にデバイスファイルを省略すると、認識しているすべてのディスクについて情報を表示
引数
・デバイスファイル:対象となるディスクのデバイスファイルを指定
使用例
parted /dev/sdb -s mklabel gpt
→新しいハードディスクのパーティションテーブルの方式をGPTに設定
parted /dev/sdc
→オプションを指定せずにディスクを表すデバイスファイルを指定すると、専用のプロンプトが表示される。下記のサブコマンドを指定してパーティション構成を行う
partedコマンドの主なサブコマンド
mklabel:パーティション管理方式。msdos→MBR形式(既定)、gpt→GPT形式を指定
mkpart:パーティションの作成
rm:パーティションの削除
print(省略形はp):パーティションの表示
quit(省略形はq):partedの終了。構成した内容を反映
gdiskコマンド
書式
gdisk【オプション】【デバイスファイル】
概要
GPTパーティションを構成する
主なオプション
-l
→指定したディスクのパーティション構成を表示
引数
・デバイスファイル:対象となるディスクのデバイスファイルを指定
使用例
gdisk /dev/sdb
→gdiskコマンドは、fdiskコマンドと同様の手順でGPTパーティションを構成できる
GPT方式のハードディスク
・基本パーティション数:128
・最大ハードディスク容量:9.4ZB(8ZiB)
・起動用システムファームウェア:UEFI
ESP(EFIシステムパーティション)
・UEFIシステムにおいて、物理的なマシンを起動し、ファームウェアが読み込まれた後、その後の起動シーケンスで最初にアクセスされる領域
・FATでフォーマットされ、ブートローダーなどの他、起動に必要なドライバやプログラムも置かれる
LVM
LVM
・CentOS7のルートパーティションは規定でLVM(Logical Volume Manager)によって構成されている
・物理的な記憶デバイスの領域をまとめ、それを論理的なひとつの大きな記憶デバイスとして扱うことで、物理的なパーティションの仕様に由来する制限を回避できるシステム
LVM関連の用語
・物理ボリューム(PV:Physical Volume)
物理的なハードディスクやパーティション
・ボリュームグループ(VG:Volume Group)
物理ボリュームを集めて作る、仮想的な領域(仮想的なハードディスクのようなもの)
・論理ボリューム(LV:Logical Volume)
ボリュームグループの一部(または全部)を使って作る、仮想的なパーティション。従来のパーティションと同じように、この論理ボリューム上にファイルシステムを作って利用可能
論理ボリュームを作成する際の主な手順
・物理ボリューム[PV]の作成
→pvcreateコマンドを使用して作成
・ボリュームグループ[VG]の作成
→vgcreateコマンドを使用して作成
・論理ボリューム[LV]の作成
→lvcreateコマンドを使用して作成
LVMの特徴
・ボリュームグループは、物理ボリュームを集めて構成された仮想的な領域である
・ボリュームグループに対し、後から物理ボリュームを加えたり、削除したりできる
・論理ボリュームを動的にリサイズすることができる
・スナップショットを取得することができる
1.05.3 ファイルシステムの作成と管理、マウント(重要度4)
mkfsコマンド
書式
mkfs【オプション】デバイスファイル
概要
ファイルシステムを作成する
主なオプション
-t ファイルシステム
→指定したファイルシステムを作成(指定しないとext2ファイルシステムが作成される)
-c
→ファイルシステムを作成する前に不良ブロックを検査
-L
→ラベル名の指定
引数
・デバイスファイル:対象となるパーティションのデバイスファイルを指定
使用例
mkfs -t ext4 /dev/sdb1
→/dev/sdb1にext4ファイルシステムを作成
mke2fsコマンド
書式
mke2fs【オプション】デバイスファイル
概要
ファイルシステムを作成する
主なオプション
-j
→ext3ファイルシステムを作成
-t ファイルシステム
→指定したファイルシステムを作成(指定しないとext2ファイルシステムが作成される)
-c
→ファイルシステムを作成する前に不良ブロックを検査
引数
・デバイスファイル:対象となるパーティションのデバイスファイルを指定
使用例
mke2fs /dev/hda1
→/dev/hda1にext2ファイルシステムを作成
mkswapコマンド
書式
mkswap【オプション】デバイスファイル
概要
スワップ領域を作成する
引数
・デバイスファイル:対象となるパーティションのデバイスファイルを指定
使用例
mkswap /dev/sdb2
→スワップ領域を作成
swaponコマンド
書式
swapon【オプション】【デバイスファイル】
概要
スワップ領域の状態を確認、もしくは有効化する
主なオプション
-s
→スワップ領域の状態を表示
-a
→/etc/fstabの内容に基づいてスワップ領域を有効にする
引数
・デバイスファイル:対象となるパーティションのデバイスファイルを指定
使用例
swapon -s
→現状のスワップ領域の状態を確認
swapon /dev/sdb2
→スワップ領域を有効化
swapoffコマンド
書式
swapoff【オプション】【デバイスファイル】
概要
スワップ領域の状態を確認、もしくは無効化する
主なオプション
-a
→認識しているスワップ領域をすべて無効にする
引数
・デバイスファイル:対象となるパーティションのデバイスファイルを指定
mountコマンド
書式
mount【オプション】【デバイスファイル/ラベル/UUID】【マウントポイント】
概要
マウントを実行、もしくは状態を確認
主なオプション
-a
→/etc/fstabでautoオプションが指定されているデバイスをすべてマウントする
-t ファイルシステム
→デバイスのファイルシステムを指定
-o オプション
→マウントオプションを指定(ro:読み取り専用でマウント、remount:一度アンマウントした後、再マウントする)
引数
・デバイスファイル/ラベル/UUID:マウントするファイルシステム領域のデバイスを指定
・マウントポイント:マウント先のディレクトリ(マウントポイント)を指定
使用例
mount
→現在マウントされているファイルシステムの一覧が表示される
mount /dev/sdb1 /mountdir
→/dev/sdb1を/mountdirにマウント
mount LABEL=mountdir /mountdir/
→ラベル名は「LABEL=ラベル名」で指定
mount -t ext3 -o ro /dev/sda1 /export
→ext3ファイルシステムの「/dev/sda1」を「/export」に読み取り専用でマウント
現在マウントされているファイルシステムの情報が格納されているファイル
/etc/mtab
/proc/mounts
/proc/self/mounts
umountコマンド
書式
umount【オプション】【デバイスファイル】【マウントポイント】
概要
アンマウントを実行(デバイスファイルかマウントポイントのどちらかを指定)
主なオプション
-a
→マウントされているデバイスをすべてアンマウント
-t ファイルシステム
→指定したファイルシステムのデバイスをアンマウント
引数
・デバイスファイル:アンマウントするパーティションのデバイスファイルを指定
・マウントポイント:アンマウント先のディレクトリ(マウントポイント)を指定
使用例
umount /dev/sdb1
→sdb1に格納されていたデータ(lost+found)が参照できなくなる
アンマウントできない理由
・アンマウントしようとしているファイルシステムを、プロセスが使用している
・アンマウントしようとしているファイルシステムに、ユーザーがアクセスしている
tune2fsコマンド
書式
tune2fs【オプション】デバイスファイル
概要
ext2/ext3/ext4ファイルシステムの属性を変更、表示
主なオプション
-L ラベル名
→ラベル名を設定
-l
→指定したファイルシステムの情報を表示
引数
・デバイスファイル:対象となるファイルシステムのデバイスを指定
使用例
tune2fs -L mountdir /dev/sdb1
→mountdirというラベル名を設定
tune2fs -l /dev/sdb1
→設定したラベル名を確認
xfs_adminコマンド
書式
xfs_admin【オプション】デバイスファイル
概要
XFSファイルシステムの属性を変更、表示
主なオプション
-L ラベル名
→ラベル名を設定
-l
→ラベル名を表示
-u
→UUIDを表示
引数
・デバイスファイル:対象となるファイルシステムのデバイスを指定
/etc/fstabファイル
書式
デバイス マウントポイント ファイルシステム オプション dump fsck
概要
マウント情報を記述する設定ファイル
設定項目
・デバイス:マウントするデバイスを指定
・マウントポイント:マウントに利用するディレクトリを指定
・ファイルシステム:マウントする領域のファイルシステムの種類を指定
・オプション:マウントオプションを指定
・dump:0だとdumpの対象外、1だとdumpの対象であると指定
・fsck:0だとfsckの対象外、1以降だと起動時のfsckの対象であると指定
デバイス指定例
/dev/sda1
LABEL=/boot
UUID=3b80b96c-df15-401e-b74c-e8dcbfb68cec
Linuxで利用できる主なファイルシステム
ext2:Linuxで標準的に使われていたファイルシステム
ext3:ext2にジャーナリング機能を追加したファイルシステム
ext4:Debian10の既定ファイルシステム。ext3の最大ファイルシステムサイズの制約などを改良
XFS:CentOS7の既定ファイルシステム。高性能なジャーナリングファイルシステムで、ディスクの高速化するための機能も実装(動的inode)
JFS:ジャーナリングファイルシステム(動的inode)
Btrfs:次世代のLinux標準ファイルシステムとなるべく開発中で、ディレクトリの一部をサブボリュームとして個別のファイルシステムのように扱えるファイルシステム。マルチデバイス対応で、サブボリューム単位でのスナップショット機能がある
VFAT:Windowsで利用されているファイルシステム。さまざまなOSで利用可能。Linuxの標準パーティションなど設定できないファイル属性がある
NTFS:Windowsで利用されているファイルシステム。Linux環境では読み取り専用で利用するなどの制約がある
ISO9660:CDやDVDなどのメディアで利用されるファイルシステム
tmpfs:メモリ上に作成できる一時ファイルシステム。ファイルをHDDではなくメモリ上に置くことで高速にアクセスすることができ、システム再起動時にファイルは消去される。一時的な記憶領域として利用する
主なマウントオプション
defaults
→デフォルトのオプション。以下のオプションをまとめて指定するのと同じ意味(async、auto、dev、exec、nouser、rw、suid)
sync
→ファイルシステムへの入出力を同期で実施
async
→ファイルシステムへの入出力を非同期で実施
exec
→バイナリの実行を許可
noexec
→バイナリの実行を禁止
ro
→読み取り専用でマウント
rw
→読み書き可能な状態でマウント
suid
→SUIDとSGIDを有効化
auto
→システム起動時、mount -a を実行したとき自動的にマウント
noauto
→システム起動時、mount -a を実行したとき自動的にマウントしない
user
→一般ユーザーでもマウントできるようにする。アンマウントはrootユーザーとマウントしたユーザーのみ
users
→一般ユーザーでもマウントできるようにする。アンマウントも誰でもできる
nouser
→rootユーザーだけがマウントできる
設定例
vi /etc/fstab
/dev/sda1 /boot ext3 defaults 1 1
/dev/sda1 /boot ext3 auto 1 1
→「/etc/fstab」ファイルを編集して、ext3ファイルシステムの「/dev/sda1」をシステム起動時から「/boot」に自動マウントするよう設定
デバイスのUUIDを表示できるコマンド
lsblkコマンド
blkidコマンド