LPIC-2 試験勉強メモ その 5

LPIC-2 試験勉強メモ その 5

高度なストレージとデバイスの管理

RAID の構築と管理

RAID (Redundant Arrays of Independdent Disks / Redundant Arrays of Inexpensive Disks) は複数のハードディスクを連結して 1 台の仮想的なディスクを構成する。 ハードウェアによる独立したデバイスとしてのハードウェア RAID と、OS によって管理するソフトウェア RAID がある。

RAID の動作状態は /proc/mdstat ファイルに格納される。 RAID を構成するディスクパーティションのメタデータに RAID の構成と状態が格納される。 RAID のスーパーブロックは RAID を構成する各デバイスにある。 システム起動時には udev により mdadm コマンドが実行され、デバイスファイアルが作成されて自動的に RAID が編成、開始される。

RAID レベル

Linux ではカーネルの md (Multiple Devices) ドライバーによって次の RAID レベルがサポートされる。

RAID レベル必要ディスク数ディスク容量利用効率説明
RAID 02100 %ストレイピング。書き込み単位であるブロック (チャンク / ストライプ) を複数のディスクに分散することでアクセスを高速化する。冗長性がなく耐障害性はない
RAID 1250 %ミラーリング。2 台以上のディスクに同じデータを同時に書き込む。1 台のディスクに故障が発生しても他のディスクで稼働できる
RAID 43(n – 1)/n %RAID 0 にパリティディスクを追加した構成である。1 台のディスクに故障が発生しても、パリティを利用してデータを復旧できる
RAID 53(n – 1)/n %パリティを複数のディスクに分散して記録するため、最低 3 台のディスクが必要である。1 台のディスクに故障が発生してもパリティを利用してデータ計算できるが、計算中はパフォーマンスが低下する。2 台以上のディスクが故障すると復旧できない。パリティ用の領域は 1/ディスク台数 となる
RAID 64(n – 2)/n %2 種類のパリティを複数のディスクに分散して記録する。最低 4 台のディスクが必要である。2 台のディスクが同時に故障してもパリティを利用してデータを計算できる
RAID 10 (1+0)450 %複数の RAID 1 デバイスを組み合わせて RAID 0 を構成する。冗長性と高速化の両方を実現する

mdadm コマンド

カーネル 2.6 以降で RAID を構築する。

mdadm [モード] <RAID デバイス> [オプション] <デバイス>
モード
モード説明
Assemble モード作成済みの RAID アレイを編成し開始するモード
Create モードRAID アレイを新規に作成し開始するモード
Manage モードデバイスの追加や削除を行うモード
Monitor モードRAID アレイを定期的にモニターし、syslog で報告するモード
Misc モードRAID デバイスの問い合わせ、設定、停止を行うモード
主なオプション
モードオプション説明
Assemble-A, –assembleAssemble モードの指定。第 1 引数に指定する
Assemble-s, –scan設定ファイルを参照し、記述がなければ未使用のデバイスをスキャンする
Create-C, –createCreate モードの指定。第 1 引数に指定する。構成情報を格納するメタデータが各デバイスの先頭あるいは最後部に作成される
Create-l, –levelRAID レベルを指定する (0, 1, 4, 5, 6, 10, linear, multipath, mp, faulty, container)
Create-n, –raid-devicesRAID アレイのデバイスの個数を指定する
Create-x, –spare-devicesスペアデバイスの個数を指定する
Manage-a, –addデバイスを RAID アレイ、あるいはホットスペアに追加する。RAID アレイが稼働中でも可能
Manage-f, –failデバイスに faulty フラッグを設定する
Manage-r, –removeデバイスを RAID アレイから取り出す
Monitor-F, –follow, –monitorMonitor モードの指定。第 1 引数に指定する
Monitor-m, –mail障害発生時に警告メッセージを指定したメールアドレスに送信する
Monitor-f, –daemonisemdadm はバックグラウンドプロセスとしてモニターを行う
Monitor-t, –testRAID 開始時にテスト用の警告メッセージを送信する
Misc-S, –stopRAID アレイを停止する。–scan オプションを付加した場合はアクティブな RAID アレイをすべて停止する
Misc-E, –examine引数に絵ばいすを指定した場合はデバイスのメタデータ情報を表示する。–scan オプションを付加した場合は設定ファイル mdadm.conf の書式で 1 行のエントリーを表示する
Misc-D, –detailアクティブな RAID アレイの詳細情報を表示する。–scan オプションを付加した場合は設定ファイル mdadm.conf の書式で 1 行のエントリーを表示する
Misc–zero-superblock既存のスーパーブロックの内容を 0 で上書きする。RAID ディスクを新しく初期化して使う際に使用する

LVM の構築と管理

LVM (Logical Volume Manager) は複数のディスクパーティションからなる、伸縮可能な論理ボリューム (LV: Logical Volume) を構成する。

  • VG: 複数の PV をグループにまとめたもの
    • PV: 物理ディスク内に構成されたパーティション
      • PE: PV を一定サイズの領域に分割したもの
    • LV: 複数の PE を仮想的にまとめたボリューム

Linux 2.6 からはデバイスマッパーを利用した LVM2 を採用している。 デバイスマッパーは論理デバイスと物理デバイスのマッピングを行い、linux カーネルの dm ドライバーとして実装される。

LVM 管理コマンド

コマンド説明
pvcreate物理ボリュームの作成
pvremove物理ボリュームの削除
pvdisplay物理ボリュームの表示
vgcreateボリュームグループの作成
vgextendボリュームグループの拡張
vgreduceボリュームグループの縮小
vgremoveボリュームグループの削除
vgdisplayボリュームグループの表示
lvcreate論理ボリュームの作成、スナップショットの作成
lvextend論理ボリュームの拡張
lvreduce論理ボリュームの縮小
lvremove論理ボリュームの削除
lvdisplay論理ボリュームの表示

LVM の構築手順

  1. pvcreate コマンドにより PV を作成
  2. vgcreate コマンドにより PV から VG を作成
  3. lvcreate コマンドにより VG から LV を作成
  4. mkfs コマンドにより LV 上にファイルシステムを作成
  5. 作成したファイルシステムをマウント

vgextend コマンド

ボリュームグループに物理ボリュームを追加することによりボリュームグループの容量を拡張する。

vgextend [オプション] ボリュームグループ 物理ボリューム

lvextend コマンド

論理ボリュームを拡張する。 論理ボリュームを拡張したらファイルシステムを resize2fs コマンドで拡張する。

lvextend [オプション] 論理ボリューム
  • -L (–size) [+] サイズ: サイズの指定。+ をつけた場合は拡張サイズの指定

vgreduce コマンド

ボリュームグループから物理ボリュームを削除する。

vgreduce [オプション] ボリュームグループ [物理ボリューム...]

論理ボリュームのスナップショット

  • スナップショットの作成: lvcreate -s(–snapshot)
  • スナップショットのバックアップ: dump
  • スナップショットへのアクセス: mount
  • スナップショットの削除: lvremove

udev

デバイスにアクセスするための /dev 配下デバイスファイルを動的に作成、削除する。 カーネルは接続あるいは切断を検知したデバイスを /sys 配下のデバイス情報に反映させ、uevent を udevd デーモンに送る。 /sys 配下のデバイス情報を首都きし、/etc/udev/rules.d と /lib/udev/rules.d 配下の .rules ファイルに記述されたデバイス作成ルールに従って /dev 配下のデバイスファイルを作成あるいは削除する。

  • SysV init: /etc/rc.sysinit
  • sytemd: systemd-udevd.service

udevadm コマンド

udev の管理コマンド。

サブコマンド
サブコマンド説明
infoudev に対するデバイス情報の問い合わせを行う
triggerカーネルイベントをリクエストする
settleイベントキューを監視する
controludevd デーモンの内部ステートを変更する
monitorカーネルの uevent と udev ルールによって処理されるイベントをモニターし、デバイスパスを表示する
testイベントのシミュレートを行う

デバイスの管理

SCSI CD-ROM デバイスドライバー

SCSI CD-ROM のデバイスドライバーではデバイス名は sr と記述される。 USB CD-ROM やSATA CD-ROM も SCSI CD-ROM デバイスドライバーによって制御される。

SCSI テープドライバー

  • /dev/st0: コマンド実行後、テープを巻き戻す
  • /dev/nst0: コマンド実行後、そのままの位置に停止する

mt コマンド

読み書きせずにテープを操作するコマンド。

  • fsf count: count で指定した数の EOF まで移動し、次のファイルの先頭に位置する
  • bsf count: count で指定した数の EOF まで戻り、次のファイルの先頭に位置する
  • rewind: BOT のいちまでテープを巻き戻す
  • status: ステータスを表示する

UUID

/dev/disk/by-uuid ディレクトリには UUID でディスクパーティションを識別するためのシンボリックリンクファイルが作成される。 128 ビットの UUID をファイル名とするデバイスファイルへのシンボリックリンクファイルが作成される。

USB ストレージデバイス

SCSI エミュレーションを使用するので、デバイス名は SCSI ディスクと同じく sd となる。

hdparm コマンド

ハードディスクのパラメーターを表示、設定する。 IDE と SATA ディスクに対応している。

hdparm [オプション] デバイス名
  • -l: ディスクの詳細情報を表示
  • -t: 読み込み時の転送速度を測定
  • -A: 先読み機能のオンオフ (-A0 でオフ、-A1 でオン)
  • -d: DMA モードのオンオフ (-d0 でオフ、-d1 でオン)
  • -W: Write Cache のオンオフ (-W0 でオフ、-W1 でオン)

sdparm コマンド

SCSI デバイスのモードページの表示、設定、及び重要な製品データ (VPD: Vital Product Data) を表示する。 SCSI ディスクのほか、 SCSI CD-ROM/DVD ドライブや SCSI テープにも対応している。

sdparm [オプション] [デバイス名]
  • -a, –all: 検知したモードページの全てのフィールドを表示する
  • -C, –command=CMD: 送信する SCSI コマンドを CMD に指定する
  • -e, –enumerate: モードページの生薬名、16 進数、説明をリスト表示する
  • -i, –inquiry: VPD ページを問い合わせてその結果を表示する
  • -p, –page=PG: -i オプションを指定しない場合は、モードページを省略名あるいは 16 進数で PG 指定する
  • -l, –long: 情報をロングリストで表示する

SSD デバイス

SSD ではファイルを削除したときに使用していたデータブロックが消去されるわけではない。 消去済みの領域にしかデータを書き込めないので、書き込み時にデータを消去してから実行する必要がある。 事前にデータを消去してパフォーマンスを最適化するには次の 2 通りの方法がある。

  • fstrim コマンドの実行 (推奨)
  • dscard オプションをつけてファイルシステムをマウント (非推奨)

NVMe

NVMe (Non-Volatile Memory Express) は PCI Express バスからフラッシュメモリストレージを接続するインタフェース規格である。 対応するドライバー名は nvme、デバイスファイル名は /dev/nvme* となる。 カーネルバージョン 3.3 から対応する。