\r\n\r\n
Linuxコンピュータに新しいハードディスクやソリッドステートドライブを追加する?fstabファイルを編集する必要があります。この考え方に怖さを感じる人も多いでしょう。確かに、正しく理解することは大切ですが、正しい知識があれば、実はそれほど難しいことではないのです。新しいドライブをファイルシステムに統合するために、fstabファイルを編集するプロセスを順を追って説明します。
Linuxコンピュータに新しいハードディスクを追加することは複雑ではありませんが、初めて挑戦するときは少し戸惑うかもしれません。ハードウェアを接続し、コンピュータの電源を入れ、OSにログオンしてください。しかし、新しいハードディスクはどこにも見当たりません。なぜ表示されないのか?どうすればLinuxにドライブを認識させ、設定を始めることができますか?
実際、Linuxはあなたのハードウェアを見ていますが、すぐには発表していません。あるいは、新しいハードウェアを見つけたというヒントを与えてくれます。fstabファイルに入れるべき情報は、Linuxに問い合わせる必要があります。
ここでは、新しいドライブをLinuxとあなたが見て使えるように設定する方法を説明します。工程は2つに分かれる。まずはハードディスクを特定するための偵察と情報収集です。第二部は、fstabファイルを編集し、偵察の段階で集めた情報を利用することです。
このシステムに、新たに2台のドライブを追加します。1つは32GBのメカニカルハードディスク(HD)、もう1つは16GBのソリッドステートドライブ(SSD)です。
Linuxがそれらを見ることができることと、Linuxがそれらのためにどのブロックデバイスを使用しているかを知る必要があります。LinuxやUnix系OSでは、ブロックデバイスは、デバイスへのインターフェースとして機能する特別な種類のファイルで、データの読み取りと書き込みが可能です(読み取り専用でない場合)。ブロックデバイスは通常、ある種の大容量記憶装置(例えば、ハードディスクやCD-ROMのパーティション)を表します。これらは、/devディレクトリに作成されます。
Linuxコンピュータに接続されているブロックデバイスを一覧表示するには、l**lkコマンドを使用します。
l**lkl**lkの出力は列になっています。
コラムは
上のスクリーンショットでは、ループデバイスにはすべて7という大きな数字が与えられており(ループ、つまりループデバイスという意味)、その10進数は毎回単純に1ずつ増えていることがわかります。 ループデバイスはsquashfsファイルシステムで使用されます。パッケージ管理システムSnappyを使ってアプリケーションをインストールするたびに、squashfsファイルシステムが作成されます。
SCSIハードディスクには、sda、sdb、sdcという名前がついており、いずれも一次番号が8(SCSIハードディスク)である。2次番号は16でグループ化されています。0は物理ドライブ、1はそのドライブの最初のパーティションを示します。16は物理ドライブ、17はそのドライブの最初のパーティションを示しています。次の32から47までの16個の番号は、sdcのセカンダリ番号として使用され、以下同様です。
その他の一般的なキーナンバーは、3(IDEドライブ用)、11(CD-ROM用)です。
実際、SDCSI CD-ROMドライブの/dev/sr0というスタイルは、もう時代遅れになっている。しかし、この記事の取材に使用したすべてのマシンでは、/dev/scr0形式がまだ使用されています。
カーネルのドキュメントには、主番号と副番号に使用できるすべての値の長いリストが含まれています。
l**lkの出力の混乱をなくすために、grepを使って興味のある項目だけを選択することができます。循環型デバイスが追加されていないことがわかったので、すべてのSCSIハードディスクを選択してみましょう。名前に "sd "が付くことは分かっている。
l**lk | grep sdこのコマンドを実行すると、grepは "sd "を含む行だけを表示するようになります。
そこで、SCSIドライブを3台用意しました。最初の/dev/sdaは、ファイルシステムのルートディレクトリにインストールされます。他の2つは全くインストールされていません。これは期待される新品のドライブです。drive/dev/sdbのサイズは32gbで、これは従来の機械式ドライブであることがわかります。
実は、これは仮想のコンピューターなので、これらも仮想のディスクなのです。つまり、SSDはSCSIのメカニカルドライブと同じように見えるわけです。私の通常のデスクトップでは、nvmesdは/dev/nvme0n1として表示され、その最初のパーティションは/dev/nvme0n1p1です。 そのメイン番号は259です。これらの違いは、fstabファイルで行おうとすることを変えませんが、SSDがある場合、それは物理ドライブとして表示されないことに注意してください。
また、新しいドライブの場合、パーティションが設定されていないことがあります。必要であれば、fdiskを使用してパーティションを作成することができます。
関連:LinuxでFdiskを使ってパーティションを管理する方法
l**lkの-o(出力)オプションで、ROTA(回転)列を表示に追加すると、l**lkは回転する記憶装置(メカニカルドライブ)には1を、回転しない記憶装置(ソリッドステートドライブ)には0を使用するようになります。
l**lk -o +ROTA | grep sdディスプレイの右側に余分な列がありますが、それはROTA(ローテーション)列です。見ての通り、「SSD」はデバイスとパーティションが0になっています。これは、SSDが回転しないストレージデバイスであることから、理にかなっています。
fstabファイルについて考える前に、ドライブを手動でインストールできるかどうか確認してみましょう。そうすれば、もしfstabファイルに問題があったとしても、その問題は構文の問題であって、ドライブ自体の問題ではないはずだということがわかるからです。
mntディレクトリにいくつかの一時的なマウントポイントを作成します。sudoを使用する必要があり、パスワードを要求されます。
sudo mkdir /mnt/scsi sudo mkdir /mnt/ssdでは、新しいマウントポイントにSCSIドライブをマウントしてみましょう。ここでは、最もシンプルな形でmountコマンドを使用することにします。マウントしたいパーティション名と、マウントしたいマウントポイントを伝えます。mountは、指定したマウントポイントにそのパーティションのファイルシステムをマウントします。
ドライブではなく、ファイルシステムが格納されているパーティションを指定しているので、パーティションの番号(この場合は「1」)を必ず入れてください。
sudo mount /dev/sdb1 /mnt/scsiうまくいくと、Mutterは反応せず、自動的にコマンドプロンプトに戻ります。
SSDのインストールも同様に簡単で、どのパーティションをどのデバイスにマウントするか、そしてどのポイントにマウントするかをmountに指示します。
sudo mount /dev/sdc1 /mnt/ssdもう一度言いますが、沈黙は金です。
関連:Linux端末からストレージデバイスをマウント/アンマウントする方法
マウントされたことを確認するために、再びl**lkを使用します。 その出力をgrepに通し、「sda1」、「sdb2」、「sdc1」を選択します。" のエントリーがあります。
l**lk -o +ROTA | grep sd[a-c]1mount は、3つのマウントされたパーティションを表示します。これらは、今マウントした2つと、/ にマウントされたオリジナルのパーティションです。
パーティション /dev/sdb1 は /mnt/scsi にインストールされ、回転ストレージデバイスに配置されます。パーティション /dev/sdc1 は /mnt/ssd にインストールされ、非回転ストレージデバイスに配置されます。すべてうまくいっているようです。
あとは、コンピュータを起動するたびに、これらのデバイスをマウントするように fstab ファイルを設定する必要があります。
fstabファイルには、コンピュータの再起動時に読み込まれる各ファイルシステムのエントリーが含まれています。各エントリーは、以下の6つのフィールドで構成されています。
これらのフィールドはこの順序で指定する必要があり、フィールドの間にはスペースまたはタブが必要です。これらのフィールドの値を見つけるのは大変なことで、特に「opti***」のフィールドはそうです。options "フィールドのオプションは、カンマで区切られたリストで、間にスペースを入れないこと。
各ファイルシステムのマニュアルページには、利用可能なオプションが記載されています。ext4には約40のオプションがあります。
default "オプションは、導入に適しています。微調整が必要な場合は、さらにオプションを追加したり削除したりすることができます。必要な設定を簡潔に得る方法があれば、それを順番にfstabファイルに入力すればよいのです。
mtabファイルを入力します。
mtabファイルは、現在マウントされているファイルシステムの一覧である。これは、ブート時にマウントされるべきファイルシステムをリストアップするfstabファイルとは異なります。mtabファイルは、手動でマウントされたファイルシステムを含みます。新しいドライブをマウントしたので、mtab ファイルに表示されるはずです。
mtabファイルの中身を見るには、catを使用します。grepパイプで出力を制限し、/dev/sdb1と/dev/sdc1のみを表示することにします。
cat /etc/mtab | grep sd[b-c]1出力は、これら2つのパーティションのmtabエントリを示しています。
これらの値を持ち上げて、各フィールドの間にスペースまたはタブがあることを確認しながら、fstabファイルに直接入れることができます。それだけです。再起動すると、ドライブがマウントされます。
2つの警告があります。ひとつはマウントポイント。新しいパーティションを新しいドライブにマウントできることを証明するために、一時的なマウントポイントを作成します。もし違う場合は、一時的なマウントポイントではなく、本当のマウントポイントを入力する必要があります。
2つ目の注意点は、mtabファイルの設定を利用すると、各パーティションの識別子としてブロックデバイスファイルを利用することになることです。これは動作しますが、新しい大容量記憶装置ハードウェアがコンピュータに追加された場合、/dev/sdaや/dev/sdbなどの値が変更される可能性があります。これは、fstabファイルの設定が正しくないことを意味します。
各パーティションにはUUID(Universally Unique Identifier)があり、これを用いてパーティションを特定することができます。これは決して変わることはありません。fstabファイルでパーティションを識別するためにUUIDを使用すれば、設定は常に正確で真実のままとなるのです。
新しいパーティションを安価なRAID(redundant array of disks)システムの一部として使用する場合、そのシステムのドキュメントを確認してください。UUID の代わりにブロックデバイス識別子を使用しなければならないことを指定することができる。
パーティションのUUIDを見つけるには、blkidを使用してブロックデバイスのプロパティを表示します。ここでは、新しいドライブ上の2つの新しいパーティションに出力を限定することにします。
blkid | grep sd[b-c]1出力には、各パーティションのUUIDが含まれます。
PARTUUIDは、GPT(GUID Partition Table)パーティション方式で使用できるUUIDの形式です(MBR(Master Boot Record)パーティション方式を使用しない場合)。
fstabファイルをエディタで開きます。ほとんどのLinuxディストリビューションに搭載されている使いやすいエディタであるgeditを使用しています。
sudo gedit /etc/fstabfstabファイルが読み込まれた状態で、エディタが表示されます。
このfstabファイルには、すでに2つのエントリーがあります。既存のハードディスク/dev/sda1上のパーティションとスワップファイルシステムです。これらのエントリーを変更しないように注意してください。
fstab ファイルに 2 つの新しいエントリを追加する必要があります。1つはSCSIドライブのパーティション用、もう1つはSSDドライブのパーティション用です。まず、SCSIパーティションを追加します。なお、hashで始まる行はコメントです。
これからSSDドライブにfstabのエントリーパーティションを別行動で追加していきます。
ファイルを保存して、エディターを閉じます。
関連:Linuxでテキストファイルをグラフィカルに編集するgeditの使い方
新しいドライブをアンマウントして、fstabファイルを強制的に更新すればいいのです。新しいパーティションのインストールが成功すると、入力した設定やパラメータが構文的に正しいかどうかが検証されます。つまり、リブートやパワーアップの際に、我々のfstabファイルが正しく処理されるはずです。
SCSIドライブをアンマウントするには、次のコマンドを使用します。"umount "の "n "は1つだけであることに注意してください。
sudo umount /dev/sdb1SSDドライブをアンマウントするには、次のコマンドを使用します。
sudo umount /dev/sdc1ここでは、これらのブロックデバイスがインストールされていることをl**lkで確認することにします。
l**lk | grep sdブロックデバイスはコンピュータ内に存在するが、どこにもインストールされていないことがわかる。
mountコマンドと-a(all)オプションで、fstabにあるすべてのファイルシステムを再マウントすることができます。
sudo mount -a新しいパーティションがインストールされているかどうかは、l**lk:を使って再度確認することができます。
l**lk | grep sdすべてがあるべき場所にインストールされています。あとは、マウントポイントの所有者を変更するだけです。そうしないと、新しいストレージデバイスにアクセスできるのはrootだけになってしまいます。
SCSIマウントポイント用のコマンドであるchownを使えば簡単にできます。
sudo chown dave:users /mnt/scsiSSDロードポイントコマンドです。
sudo chown dave:users /mnt/ssdこれで、追加したパーティションがマウントされ、アクセスできることを確認しながら、安心してコンピュータを再起動することができるようになりました。
大変なのは偵察の段階で、それもそれほど難しくはない。必要な情報を集めたら、fstabファイルを簡単に編集することができます。準備がすべてです。