RHCSA試験対策 - 物理ドライブをLinux OS上でデータ保存域として使うまでの一般的な流れ(基本編)
前置き
Linux OS上には、ディストリビューション次第ですが様々なディスク操作のためのコマンドが用意されています。Windows OSの場合は、殆どの作業を”ディスクの管理”から行えてしまう手軽さからも、Linux初心者からするとディスクへの操作は大変ハードルが高い存在のように見えます。
この記事では、”あるコンピュータに、1本のHDDドライブを増設して、そのドライブにデータを保存が出来るまで”というシナリオ想定で、作業の流れと各工程で登場するコマンドをを紹介します。
基本的な流れ
次の流れに従い、本記事ではコマンドの作業を紹介して参ります。- 物理的にドライブを搭載する
- 物理ドライブがハードウェアレベルで認識されたことを確認する
- 物理ドライブがOSレベルで認識されたことを確認する
- 物理ドライブにパーティションを作成する
- 上記で作成したパーティションをフォーマットする
- 上記でフォーマットしたパーティションをOSの特定のディレクトリへマウントする
- 再起動後も、該当のファイルシステムが利用出来ることを確認する
1. 物理的にドライブを搭載する
物理的に筐体への接続をする工程です。 接続規格はUSB、SATA、SCSI、SASなどが有るかと思いますが、お手持ちの筐体がサポートするものを接続ください。なお接続方法や搭載可能デバイス数は、製品仕様ガイドなどで確認されると良いでしょう。こちらはDell OptiPlex 7050という機種の記事を抜粋してみました。
OptiPlex 7050 Small Form Factor - オーナーズマニュアル
2. 物理ドライブがハードウェアレベルで認識されたことを確認する
こちらについて言えば、Linux固有の操作ではなく物理的にUSB/SATA/SASなどのインターフェースに対してHDDやSSDを接続することを意味します。物理環境の場合で言えば、BIOS画面で当該のドライブを認識しているかを確認します。私の環境の場合は、仮想環境上に構成した仮想マシンでLinuxを動かしているため、下図では3本の仮想ハードドライブが"VMware Virtual SCSI Hard Drive(0:x)"として3つ搭載が確認できました。
今回は、"VMware Virtual SCSI Hard Drive 0:1"に対して、データを保存するための作業を行っていきます。
BIOSの画面の様子はお手持ちの製品によっても変わるため、もし確認方法がわからない場合は、製品ベンダーのサポートに質問をするか、Google画像検索などを頼ると良いでしょう。
3. 物理ドライブがOSレベルで認識されたことを確認する
OSが物理ドライブを認識できているかどうかの判別としては、"/dev"配下に物理ドライブの"デバイスファイル"が存在しているかどうかを見るのがメジャーでしょう。ls -la /dev | grep sd
解説 /dev配下のsdという文字が含まれるファイルやディレクトリを検索するコマンド
下図では、3つのハードドライブが認識されています。イメージは次の通りです。
LinuxOS
L[HDD#1 sda]"パーティションsda1/パーティションsda2/パーティションsda3"
L[HDD#2 sdb]"パーティション無し"
L[HDD#3 sdc]"パーティション無し"
また、"lsblk"コマンドを使うと、上記で示したような階層的な視点でのドライブとパーティションの相互関係を把握しやすいです。
記載した後で言うのもなんですが、上記の方法よりもこちらの方が確認においては楽ですね。
このsdから始まる記述は、通常SCSI/SATA/USBなどの接続規格で通信しているドライブに割り当てられる識別子です。
これ以外のパターンも存在しますが、それについては次のようなページを参照ください。
第3章 永続的な命名属性の概要 - Red Hat
デバイスファイル - Wikipedia
fdisk - LinuCイージス
4. 物理ドライブにパーティションを作成する
物理ドライブに対してデータを配置するには、パーティションを構成し、それに対してデータを保存するためのフォーマット形式を指定する必要があります。Linux OSにおけるパーティション作成コマンドは、いくつか存在します。
代表的なものとして次のものがあります。
【 fdisk 】コマンド――パーティションを作成、削除する
【 gdisk 】コマンド――GPT対応のパーティションを作成、削除する
【 parted 】コマンド――GPT対応のパーティションを作成、削除する
ここで、多くの初学者の方は”どれを使えばいいの?”と疑問に思う分けですが、本記事投稿時点では"parted"が良いでしょう。
理由としては、現在HDDやSSDのようなドライブはMBR形式またはGPT形式のどちらかとして取り扱ってシステムに接続します。
fdiskはMBR形式のドライブに対しての専用コマンドです。
gdiskはGPT形式のドライブに対しての専用コマンドです。
partedは両方に対応しています。partedが最も後発のコマンドであり、出番も多いのでpartedを個人的におすすめします。
ここからはpartedを用いたパーティションの作成までの流れを図解します。
まず下図では、現在のドライブの認識をlsblkで改めて確認し、BIOSで確認した2本目のドライブが"sdb"として認識されていることを確認しました。
parted /dev/sdb print
解説 sdbのドライブの情報を確認するコマンド, sdbを他のデバイスに置き換えても利用可能
下から3行目に注目すると、"Partition Table: unknown"とあります。未初期化のドライブです。
まずはGPT形式で初期化処理を行います。
上図では、"parted /dev/sdb mklabel"にてGPT形式で初期化を終えました。
上図上から2行目の"New disk label type?"で、tabキーを2回押下すると指定可能な形式一覧が表示されますので便利です。
上図下から4行目では、改めて実行した"print"コマンドにて、GPTの文字が確認出来ました。
続いてパーティションを作成します。以下のコマンドにて作業を行います。
今回はmkpartで終わらせることで、パーティション名/種類/サイズ指定を対話式で入力しました。
フォーマットの種別を聞かれたタイミングで、tabキー2回で上図のように種類を確認が出来ます。
サイズの指定は、ドライブ上でのパーティション開始位置と終了位置を入力しますが、開始位置を%で入力し、終了位置を単位指定しています。
開始位置も単位指定は可能ですが、例えばこれを開始位置を0からとした場合、次のような警告が出ます。
このエラーメッセージ"Warning: The resulting partition is not properly aligned for best performance."で検索をすると多くの報告が上がっています。これは最近登場した4Kドライブを意識してのセクター開始位置指定への警告とのこと。
根本原因として参考にさせていただいたのはこちらの記事です。
partedでパフォーマンスの警告が出た場合の対処法
今回は一般的なドライブ増設手法の紹介ですので、この点については深く追求はしません。
上記のエラーに当たらないための最もシンプルな手法は0%で開始位置を指定するのが楽でしょう。
なお、1つのドライブ上に2つ目以降のパーティションを作成する際は、0%指定は使えません。この場合は1つ前のパーティションのサイズにほぼ近い数字を入れてみましょう。下図では2つ目のパーティションを作成しており、開始位置を"10.1G"として指定しました。レイアウトが美しい。
ここまでくれば後は、フォーマットとマウントです。次のステップに進みます。
5. 上記で作成したパーティションをフォーマットする
フォーマット自体は、パーティションの作成ほど難しく有りません。 下図ではsdb1とsdb2に対してext4でのフォーマットを行っています。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680306/5acfa4a2-09cb-564e-2c8d-d39994f9bc44.png)mkfs.○○ の形式のコマンドです。○○には該当のファイルシステム名が入ります。
2つのパーティションに対してext4の記載が追加されたことが確認出来ました。
6. 上記でフォーマットしたパーティションをOSの特定のディレクトリへマウントする
最後はパーティションのマウントです。 Windows OSの場合ですと、各パーティションはドライブ文字を持ち、それぞれが各ドライブ文字のルートになります。 Linux OSの場合は、ユーザーが/配下の任意のディレクトリにパーティションをマウントします。今回は、/mnt配下にtest01, test02という名称のディレクトリを作成しました。
下図ではマウントを実行し、2つのパーティションがそれぞれ/mnt配下のディレクトリにマウントされている様子をlsblkで確認しています。
これでファイルの保存が出来るようになりました。各ディレクトリに、rhcsa, rhceという名称の空ファイルを作成してみました。
7. 再起動後も、該当のファイルシステムが利用出来ることを確認する
ここまでようやくドライブの増設からファイルの保存が出来る状態にするまで様々な作業をしてきたのですが、実は再起動するとファイルシステムのマウントは解除されます。ですので、下図では先程のrhcsaやrhceファイルが確認出来ません。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680306/5d48facc-eb86-dbf5-eab0-0f08266a5e97.png)再マウント後にlsで確認をするとファイルの生存が確認出来ました。
再起動後に、自動的に特定のファイルシステムが指定のディレクトリにマウントされるためには、"/etc/fstab"という設定ファイルにそれを記述する必要があります。
下図内の下から2行目と3行目に自動マウントするための行を追加しました。(vi /etc/fstabにて編集を行いました。)
一番左にあるのがsdb1とsdb2が持つUUIDと呼ばれるパーティションの識別子です。それ以降はマウント指定箇所やファイルシステムの情報を掲示しますが、記述ルールは以下を参照ください。
Linux豆知識 175「/etc/fstab」- LinuC
/etc/fstabに記述されている数字の意味-@IT
なお、パーティション毎のUUIDはlsblk -fで確認が可能です。
これで作業は以上となります。これ以降は再起動をした際でも自動的にfstabによって指定されたファイルシステムはマウントされます。
おまけ fstabの編集誤りは怖い
記述に問題が有ると、OS起動時に次のような画面になってしまいます。初見ですと完全にパニックになりますね。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680306/0c12587e-49ad-8ea2-041b-041825ad0742.png)fstab編集後の再起動である場合は、慌てずCLI画面上でfstabファイルを確認してみましょう。
最初のプロンプトではrootのパスワードを入力後コマンドを打てる状態になります。
cat /etc/fstabで確認してみた所、どこがおかしいか分かりますか?
上図では、下から2行目の先頭から"UUID="を削除して疑似障害を起こしてみました。本画面からもviコマンドでの修正は可能です。
修正後の様子がこちらです。
これで後は保存をして、再起動すればOKです。