ストレージデバイスの管理
Linuxシステムでは、ストレージデバイスの適切な設定が運用の基本となります。新しいディスクを追加し、利用可能な状態にするためには一連の手順が必要です。
物理的・仮想的なディスク追加
まず、ホストに新しいストレージデバイスが接続されているか確認します。仮想環境では、VM設定から新しい仮想ディスクを割り当てます。変更後、OS上でそのデバイスを認識できるかチェックします。
lsblk # 接続中のブロックデバイス一覧表示
df -h # ファイルシステム使用状況の確認
パーティション方式の選択
- MBR(fdisk):最大2TBまでのディスクに対応。主に4つのプライマリパーティションまで作成可能。
- GPT(gdisk):大容量ディスク対応。最大128のパーティションを作成でき、信頼性も高い。
gdiskは標準でインストールされていない場合があるため、必要に応じてパッケージを導入します。
yum install gdisk -y
ディスクの初期化手順
- パーティション分割:
fdisk /dev/sdbコマンドで対話的に操作します。 - ファイルシステム作成:フォーマットして利用可能な状態にします。
mkfs.xfs /dev/sdb1 - マウントポイントへの接続:
mount /dev/sdb1 /mnt/data
テキスト処理エンジンawkの構造的理解
awkは強力なテキスト解析ツールであり、プログラミング言語としての機能も備えています。構造化されたデータ(例:ログファイル、CSV、設定ファイル)の抽出や変換に最適です。
基本構文
awk [オプション] 'パターン {アクション}' ファイル
フィールド区切りの指定
-F オプションまたは内部変数FSで区切り文字を定義できます。
awk -F: '{print $1, $3}' /etc/passwd # カラム1と3を出力
awk 'BEGIN{FS=":"} {print $1}' /etc/passwd # FSで指定(優先度高)
重要な組み込み変数
$0:現在の行全体$n:n番目のフィールド(例:$1, $2)NF:現在の行のフィールド数NR:処理中のレコード(行)番号OFS:出力時のフィールド区切り文字(デフォルトはスペース)
awk 'BEGIN{OFS="-"} {print NR, $1, $NF}' /etc/passwd
実行ライフサイクル
- BEGINブロック:データ読み込み前に行う初期化処理
- 本体ループ:各行に対してパターンマッチとアクションを実行
- ENDブロック:全データ処理後に集計や後処理を行う
条件処理と制御構造
awkは条件分岐や繰り返し処理をサポートしており、複雑なロジックの記述が可能です。
比較演算子
awk -F: '$3 > $4 {print $1}' /etc/passwd # UIDがGIDより大きいユーザー
awk -F: '$7 ~ /bash$/ {print $1}' /etc/passwd # bashシェルを使用するユーザー
awk -F: 'NR % 2 == 0 {print $0}' /etc/passwd # 偶数行のみ出力
論理演算
awk -F: '$3 > 1000 && $7 ~ /nologin/ {print}' /etc/passwd
awk -F: '$6 !~ /^\/home/ {print}' /etc/passwd
条件分岐(if文)
awk -F: '{if(NR % 5 == 0) print "-----"; print $0}' /etc/passwd
繰り返し処理
awk -F: '{for(i=1;i<=3;i++) print $i}' /etc/passwd
awk '{i=1; while(i<=3){print i; i++}}' file.txt
書式付き出力
printf関数を使うことで、整列された出力を生成できます。
awk -F: '{printf "%-15s | %d\n", $1, $3}' /etc/passwd
実践的な応用例
- ログファイルからのエラーレコード抽出
- CSVデータの集計処理
- 設定ファイルの自動生成
- システム情報の整形出力
特に、/etc/passwdのような構造化テキストに対するカラム操作やフィルタリングに威力を発揮します。