101−5ハードウェア、ディスク、パーティション、ファイルシステム

大容量記憶装置の特徴

  • SSDとUSBフラッシュドライブは、HDDのような機械的な故障が起きない
  • 容量あたりのコストパフォーマンスが高いのはHDDである
  • OSの起動ディスクとして使用できる
  • SSDはSATAインターフェース以上の速度でアクセスできる

ハードディスクのレイアウト設計

 LVM (Logical Volume Manager)

  ・物理的な記憶デバイスの領域を複数まとめて大きな仮想的な領域とする仮想的なパーティション領域を作成
  ・従来の物理的なパーティションを用いた方法よりも柔軟に記憶領域を管理することができるようにする仕組。
     ・各論理ボリュームのサイズを後から変更可能
     ・単体のハードディスクの容量を超えるサイズの論理ボリュームの製作が可能
     ・後から新たな物理ボリュームを追加してボリュームグループ全体のサイズを増やす事が可能
     ・不要な特定の物理ボリュームだけをボリュームグループから削除が可能。
  ・スナップショット
     LVへの変更前の情報を保持する機能
     バックアップの対象をスナップショットにすることで運用を停止することなく安全にバックアップする。

 物理ボリューム (PV:Physical Volume)

  ・物理的なハードディスクやパーティション
  ・pvcreateコマンドを使用して作成

 ボリュームグループ (VG:Volume Group)

  ・物理ボリュームを集めて作る、仮想的な領域(仮想的なハードディスクのようなものだと思ってよいです)
  ・vgcreateコマンドを使用して作成

 論理ボリューム (LV:Logical Volume)

  ・ボリュームグループの一部(または全部)を使って作る、仮想的なパーティション。
  ・従来のパーティションと同じように、この論理ボリューム上にファイルシステムを作って利用可能
  ・lvcreateコマンドを使用して作成。  

   ・論理ボリューム(LV)のデバイスファイルは「/dev/VG名/LV名」となる
   ・作成した論理ボリューム(LV)を実際に使用するには
     > mkfsコマンドで、作成した論理ボリュームにファイルシステムを作成
     > mountコマンドでマウントする

 ESP(EFIシステムパーティション)

  ・UEFIを使ったシステムの領域。
  ・UEFIシステムで物理的なマシンを起動しファームウエアが読み込まれた後最初にアクセスされる領域。
  ・FATでフォーマットされブートローダや起動に必要なドライバなどが置かれている

UEFI GUIでの操作が可能となる3TB以上のHDDからの起動をサポートする

 Linuxシステムを構築するに当たって、推奨構成として必要なパーティション

     ・ルートパーティション
     ・スワップ領域(推奨)  ー>  物理メモリの2倍程度のサイズ(目安)

 主なディレクトリのまとめ

ディレクトリ名分割適否用途
/ルートディレクトリ
/homeユーザのホームディレクトリ(頻繁に書き込み有り)
/usrユーザーが使用する各種プログラムなど(頻繁に読み込み)
起動には不要はプログラム
/varログファイルやメールなど可変ファイルを格納(頻繁に書き込み有り)
高速に書き込みできるディスクに割り当てる
/opt追加でインストールしたパッケージを格納(容量が大きくなる可能性がある)
/bootLinuxカーネルなど起動に必須のファイルを格納
/tmp一時的なファイル(再起動時に消去される)
/bin 一般ユーザー用のコマンドを格納
/sbin管理者用のコマンドを格納
/devデバイスファイル(usb,cdrom,disk等)
/etc設定ファイル
/lib共有ライブラリー(基本コマンドの実行に必要なライブラリ群)
/mediaリムーバブルメディア用マウントポイント(cdrom等のマウントポイント)
/mntハードディスク等の一時的なマウントポイント
/procカーネルやプロセス情報
/rootroot用ホームディレクトリ
/run実行時の可変データ群。再起動時に消去される
/srvHTTP、FTP 用データが置かれている。
/sysデバイスやドライバーの設定ファイルなど

デバイスファイル

sda第 1 ハードディスク
sdb第 2 ハードディスク
sda1最初のハードディスクの最初のパーティション
sdb72番目のハードディスクの7番目のパーティション
sr0第 1 CD-ROM
sr1第 1 CD-ROM

SCSI接続のハードディスク
・/dev/sda 1番目のディスク
・/dev/sdb 2番目のディスク
・/dev/sdc 3番目のディスク
・/dev/sdd 4番目のディスク

IDE接続のハードディスク
・/dev/hda 1番目のディスク
・/dev/hdb 2番目のディスク
・/dev/hdc 3番目のディスク
・/dev/hdd 4番目のディスク

ブロックデバイス (block device)
           データのまとまりごとに処理をするデバイス。ハードディスクやSSD等
           lsblk blkid:ブロックデバイスを一覧表示する
キャラクタデバイス (character device)
           ひとつの文字(単位)ごとに処理をするデバイス。キーボードやマウス等

パーティションの種類

・BIOSとMBRによる管理の場合
    ・基本パーティション:最大4個
    ・拡張パーティション:基本パーティション一つを拡張パーティションにすることが可能
    ・論理パーティション:拡張パーティション内に作られたパーティション。最大12個
               作成済基本パーティションの数に関わらず/dev/sda5となる。

・パーティション分割のメリット
    ・システムに障害が発生した場合障害による被害を1つのパーティションに限定できる
    ・バックアップしやすい。

ルートファイルシステム

・Linuxのディレクトリはツリー状の階層構造になっている。
・ディレクトリツリーの頂点となるのが/ディレクトリ。
・ルートファイルシステム用の現実的な最小のディレクトリ

ディレクトリ説明パーティションの分離
/bin /sbinシステムに必要なコマンド、プログラム不可
/etc システム設定ファイル不可
/lib プログラム実行に使う共有ライブラリ不可
/devデバイス,I/O の実行に必要不可
/usrその他のユーティリティやアプリケーション
/procproc ファイルシステムに必要なディレクトリ
/mnt 他のディスクを扱うためのマウントポイント

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

fdisk

書式: fdisk [options] change partition table
    fdisk [options] -l [] list partition table(s)

・fdisk [−l] デバイス名

操作コマンド
lパーティションタイプを一覧表示する。
nパーティションを作成する。
dパーティションを削除する。
pパーティションテーブルを表示。
tパーティションタイプを変更する。
aブートフラグのオン/オフを切り替える
gcreate a new empty GPT partition table
ocreate a new empty DOS partition table
vverify the partition table
wパーティションテーブルの変更を保存して終了する。
qパーティションテーブルの変更を保存しないで終了する。
mヘルプメニューを表示する。

・gdisk [−l] デバイス名: GPTに対応したパーテquitィションを作成。
              容量2TB以上。パーティション128個作成可能

GPT (GUID Partition Table)

GPTの主な特徴

  1. 大容量に対応: 2TBどころか、ゼタバイト級(現実的には使い切れないレベル)の超大容量ディスクを扱えます。
  2. パーティション数: ほぼ無制限(通常の設定では最大128個まで)のパーティションを作成できます。
  3. 高い信頼性(冗長性):
    • MBRは管理情報がディスクの先頭にしかありませんでした。
    • GPTはディスクの先頭と末尾の両方に管理情報を保存します。もし先頭の情報が破損しても、末尾のバックアップから復旧できるため、非常に安全です。
  4. GUIDの使用: 各パーティションに「GUID」という世界で唯一のIDを割り当てます。これにより、ディスクを入れ替えてもOSがパーティションを誤認する事故が減ります。


・partedデバイス名 [−sサブコマンド]: 管理方式MBRとGPTの両方に対応。

mklabel [gpt | msdos]新しいパーティションテーブルを作成。
mkpart 種類 開始 終了指定した種類のパーティションを作成
printパーティション情報を表示する
quitpartedを終了する
rm パーティション番号指定した番号のパーティションを削除する
help利用できるコマンドを表示する

     * mklabelで使用するラベル。大抵の場合 ”gpt”, “msdos” を使用。

labeldetail
aixIBM’s AIX (which introduced what we now know as LVM);
amigaAmiga’s RDB partitioning scheme;
bsdBSD disk labels;
dvhSGI disk volume headers;
gptGUID partition tables;
macold (pre-GPT) Apple partition tables;
msdosDOS-style MBR partition tables;
pc98PC-98 partition tables;
sunSun’s partitioning scheme;
loopraw disk access (loopback-style)

      * mkpart で使用するType。

           fs-type :xfs、ext2、ext3、ext4、fat16、fat32、hfs、hfs+、linux-swap、ntfs、 reiserfs。

使用例

対話モード開始: sudo parted /dev/sda
parted内の作業
  ディスクラベルを作成: (parted) mklabel gpt
  パーティションを作成: (parted) mkpart primary ext4 0% 50%
  パーティションを確認: (parted) print
  対話モードを終了:   (parted) quit

ファイルシステムの作成

・ファイルシステムの種類: 

ファイルシステム説明
ext2 Linuxの標準ファイルシステム
ext3 ext2にジャーナルリンク機能を加えたファイルシステム
ext4 ext3を機能拡張したファイルシステム
XFS SGI社が開発したジャーナルリンクファイルシステム
JFS IBM社が開発したジャーナルリンクファイルシステム
Btrfs 高度な機能を備えたファイルシステム
iso9660 CD-ROMのファイルシステム

・mkfs [オプション] デバイス名: ファイルシステムを作成する

オプション意味
-tファイルシステムのタイプを指定。
指定しなかった場合は、ext2が用いられる。
-cファイルシステムを作成する前にデバイスに対して
不良ブロックの検査を行う。

・mkfs [オプション] デバイス名: ext2/ext3/ext4ファイルシステムを作成する

オプション意味
-t(ファイルシステムタイプ)
ext2,ext3,ext4
ファイルシステムのタイプを指定。
指定しなかった場合は、ext2が用いられる。
-jext3のファイルシステムを作成。
-c実行前に不良ブロックを検査する

mke2fs  ext2/ext3/ext4ファイルシステムを作成

・mkswap [オプション] device/swapfile: スワップ(swap)領域を作成する

オプション意味
-cスワップ領域を作る前に、デバイスに対して不良ブロックのチェックを行う。
不良ブロックが見つかった際は、そのカウント数を表示する。
-L labelラベルを指定し、そのラベルで swapon できるようにする。

ファイルシステムの管理

・df [オプション] [ファイル]: ディスクの空き領域を表示する

オプション意味
-hサイズに応じて読みやすい単位で表示する
-H読みやすい単位で表示する。1000単位の値を使用する
-k–block-size=1Kと同じ
-iブロック使用量の代わりにiノード情報を表示する
-aダミーファイルシステムを含めて表示する

・du [オプション] ディレクトリ・ファイル: ファイルのディスク使用量を表示するコマンド

オプション名説明
-a, –allディレクトリ以外にファイルについても表示する。
-l, –count-linksリンクを含めて集計する。
-c, –total全ての容量の合計を表示します。
-k, –kilobytesキロバイト単位で表示します。
-m, –megabytesメガバイト単位で表示します。
-s, –summarize指定したファイルやディレクトリのみに合計を表示します。
-S, –separate-dirsサブディレクトリを含めて表示する。
-h, –human-readable容量を読みやすい単位で表示する

・fsck [オプション]デバイス名: ファイルシステムを検査、修復するコマンド

オプション意味
-t ファイルシステム名ファイルシステムの種類を指定する(無指定時は自動判定)
-a自動的に修復を実行する
-A /etc/fstabにあるファイルシステムを全て検査する
-r対話的に修復を実行する
-N実際には処理を実行せず、何を行うかだけを表示する

・e2fsck [オプション]デバイス名: ext2,ext3,ext4ファイルシステムを検査、修復するコマンド

-p問い合せなしで自動的にファイルシステムの修復を行う
-yすべての問い合せにyesと応答する
-nファイルシステムに変更を加えない(チェックのみ)

・tune2fs [オプション]デバイス名: ext2、ext3、ext4ファイルシステムのパラメータを変更する

オプション意味
-c 回数チェック無しでマウント出来る最大回数を指定する
-i 間隔ファイルシステムを検査する間隔を整数で指定する
-jext2ファイルシステムをext3ファイルシステムに変換する
-L ラベルボリュームラベルを設定する

・XFS: ext2、ext3、ext4ファイルシステムのパラメータを変更する

コマンド意味
mkfs.xfsXFSファイルシステムを作成する
xfs_infoXFSファイルシステムの情報を表示する
xsf_dbXFSファイルシステムのデバッグを行う
xfs_checkXFSファイルシステムをチェックする
xfs_adminXFSファイルシステムのパラメータを変更する
xfs_fsrXFSファイルシステムのデフラグを行う
xfs_repairXFSファイルシステムを修復する

ファイルシステムのマウントとアンマウント

・/etc/fstab: ファイルシステムの情報を保存しているファイル

項番フィールド設定内容
マウントするデバイスファイル名 マウントするデバイスファイル名またはボリュームラベルを指定
マウントポイント マウントポイントとなるディレクトリの絶対パスを指定
ファイルシステムの種類 ①のファイルシステムの指定。下表1を参照。
マウントオプション ①のマウントオプションの指定。下表2を参照。
dump dumpコマンドによるバックアップ対象となるかどうかを指定
 0 : バックアップする必要がない
 1 : バックアップする必要がある
fsck システム起動時にfsckコマンドでチェックを行う時の順序を指定
 0 : fsckコマンドでファイルシステムをチェックしない
 1 : ルートファイルシステム ( / ) に指定する数値
 2以上 : その他のファイルシステムに指定する数値
ファイルシステム説明
ext2 Linuxの標準ファイルシステム
ext3 ext2の機能拡張版 ( 現在の主流 )
ext4 ext2の機能拡張版 ( 現在の主流 )
reiserfs 高速なジャーナリングファイルシステム
xfs SGI 開発によるジャーナリングファイルシステム
jfs IBM 開発によるジャーナリングファイルシステム
iso9660 CD-ROMのファイルシステム
msdos MS-DOSのファイルシステム
オプション説明
async ファイルシステムの入出力を非同期で実行
auto mount -a コマンドの実行時にマウントする
noauto mount -a コマンドの実行時にマウントしない
defaults デフォルトのオプションを設定 ( async、auto、dev、exec、nouser、rw、suid )
exec バイナリの実行を許可
noexec バイナリの実行を禁止
ro 読み取り専用モードでマウント 
rw 読み書き可能モードでマウント
unhide 隠しファイルも表示
suid SUIDとSGIDの有効化
user 一般ユーザーにマウントを許可する
users マウントを実行していないユーザにもアンマウントを許可
nouser 一般ユーザーのマウントを許可しない

・mount [オプション] デバイス [マウントポイント]: ファイルシステムをマウントする

-a/etc/fstabに記載されているファイルシステムを全てマウント。
-t ファイルタイプファイルタイプを指定します。
-o マウントオプションマウントする際のオプション(読み込み専用など)を指定。

・umount [オプション] デバイス名またはマウントポイント: ファイルシステムをアンマウントする

-a/etc/fstabに記載されているファイルシステムを全てアンマウント。
-t ファイルタイプ指定した種類のファイルシステムのみアンマウント。

FHS(Filesystem Hierarchy Standard)

/ (ルートディレクトリ) 
├──  bin   : 基本的なコマンドファイル
├──  boot  : 初期起動時に必要な処理の設定ファイル
├──  dev   : デバイスファイル
├──  etc   : システムに関わる設定ファイル
├──  home  : 各ユーザーのディレクトリ
├──  lib   : 共有ライブラリファイル
├──  media : リムーバブル媒体のマウントポイント
├──  mnt   : 一時的なマウントポイント
├──  opt   : ソフトウェアやパッケージなどのプログラムが
├──  proc  : カーネルやプロセス情報にアクセスできる仮想的なファイルシステム
├──  root  : スーパーユーザーである「root」のホームディレクトリ
├──  run   : 動作させた時に実行される一時的なデータ
├──  sbin  : システムに関するコマンドファイル
├──  tmp   : テンポラリファイル(一時的に作成されるファイル)
├──  usr   : ユーザー共有のコマンドやライブラリ
└──  var   : ログファイルやスプールファイル

・find [パス] [検索条件]: ファイルを検索するコマンド

-maxdepth レベル 指定したパスから数えて、最大何段階下まで検索するかを指定。
-mindepth レベル指定したパスから数えて、何段階下まで検索しないかを指定。
-mountマウントしている他のファイルシステムを検索対象から除外。
-name 文字列指定した文字列のファイルやディレクトリ。
-atime nファイルの最終アクセス日時がn日前。
-mtime nファイルの最終修正日時がn日前。
-perm モード指定したモードにマッチするファイル。
-size サイズ指定したサイズより大きい。
-type ファイルタイプ ファイルタイプを指定。
b ブロックファイル / c キャラクタファイル / d ディレクトリ
f ファイル / l シンボリックリンク / s ソケット
-user ユーザーファイルの所有者で検索。
-printフルパスのファイル名を標準出力に表示。
-exec コマンド ;見つけたファイルを引数にコマンドを実行する

・updatedb [オプション] : あらかじめ作成されたファイル名データベースに基づいて、
              指定されたパターンにマッチするファイルを検索

-eパスデータベースに取り込まないパスを指定する

・which [オプション] コマンド名 : 実行コマンドのフルパスを表示する

オプション意味
-a環境変数PATHにある全ての実行ファイルを表示する
-i標準入力からエイリアスを読み込み、合致したものを表示する

・whereis [オプション] コマンド : コマンド本体と関連ファイルを検索する

オプション意味
-bバイナリファイル(コマンド本体やライブラリなど)だけを探す
-mマニュアルファイルだけを探す
-sソースファイルだけを探す

・type [オプション] コマンド名 : シェルがどのコマンドを起動しているかを知る

udev(Userspace Device Manager)
   Linuxシステムにおいてデバイスの接続・切断を管理するためのシステム(デバイスマネージャー)です。PCにUSBメモリやキーボードなどのハードウェアが接続されたとき、カーネルから通知を受け取り、それをシステムが使えるように適切に準備・設定する司令塔」

Linuxシステムを構築するに当たって、推奨構成として必要なパーティション

  • ルートパーティション
  • スワップ領域

lsusb

接続されたUSBデバイスの情報を表示するコマンド

lspci

PCIデバイスの情報を表示するコマンド

   dmesg    Linuxカーネルが起動時に出力したメッセージを表示
    ・ dmesg –clear   バッファーをクリアする
    ・ dmesg -k     メッセージを表示する
   modprobe  依存関係を解決してモジュールをカーネルに組み込んだり、取り外したりします。
   modprobeの設定ファイル  /etc/modprobe.d/myconfig.conf 

modprobe の主要なオプション

オプション名称説明
-v--verbose実行内容を詳細に表示します。何が起きたか確認するのに必須です。
-r--removeモジュールをアンロード(削除)します。依存関係にあるモジュールも自動的に削除を試みます。
-n--dry-runシミュレーション実行。実際にはロードせず、どのモジュールが読み込まれるかを表示します。安全確認に便利です。
-f--force強制的に処理します(ロードの失敗を無視したり、バージョンの不一致を無視します)。※システムが不安定になる可能性があるため注意。
-l--listシステム内にある利用可能な全てのモジュールをリスト表示します(※古いバージョンや一部環境では非推奨)。
options各カーネルモジュールのデフォルトパラメータを指定する
aliasカーネルモジュールに別名をつける
install特定のカーネルモジュールのロード時に実行されるコマンドを指定する
remove特定のカーネルモジュールのアンロード時に実行されるコマンドを指定する
blacklistロードしたくないカーネルモジュールを指定する

   lsmod    Linuxカーネルのモジュールリストを表示するコマンド
   insmod    カーネルモジュールをロードする基本コマンド
   init / telinit  プロセス制御・ランレベルを変更するコマンド
   rmmod    指定したカーネルモジュールをアンロード
   D-Bus    Linuxで使われるプロセス間通信機構

   汎用のクラスドライバ

デバイスクラス対応する機器
HID (Human Interface Device)キーボード、マウス、ジョイスティック
マスストレージデバイス (Mass Storage Class)USBメモリ、HDDなど
オーディオ (Audio Class)マイク、スピーカーなど
コミュニケーション (ACM Communication Device Class)モデム、Ethernetアダプタなど
ワイヤレスコントローラーWi-Fiアダプタ、Bluetoothアダプタなど

    /proc
     システムをコントロールするために使われる。システムのさまざまな情報がここに格納されている
     メモリの中に作られるファイルシステム。「仮想ファイル」

ファイル名説明
/proc/cpuinfoCPU情報
/proc/interruptsIRQ情報
/proc/meminfoメモリの情報
/proc/ioportsI/Oポートの情報
/proc/bus/usb/devicesUSBデバイス情報
/proc/bus/pci/devicesPCIデバイス情報
/proc/scsi/scsiSCSIデバイス情報

    /var/log
     syslogをはじめ様々なログファイルが格納
      ・/var/log/messages …   システムで動作する各種アプリケーションのログ。
                   Ubuntuなど一部のディストリビューションでは「/var/log/syslog」
      ・/var/log/boot.log …    OS起動時のログ
      ・/var/log/secure …    認証に関するログ

   D-Bus(Desktop Bus)  プログラム同士が情報を伝達するプロセス間通信機構のひとつ
   大容量記憶装置の特徴
    ・容量あたりのコストパフォーマンスが高いのはHDDである
    ・SSDとUSBフラッシュドライブは、HDDのような機械的な故障が起きない
    ・SSDはSATAインターフェース以上の速度でアクセスできる
    ・OSの起動ディスクとして使用できる

   shutdown [オプション] 時間 [メッセージ]  ー> Linuxの終了
   wall [オプション]   ー> ログインしている全てのユーザーに一斉にメッセージを送信