\r\n\r\n

linuxでのfstabファイルの書き方

linuxコンピュータに新しいハードディスクやソリッドステートドライブを追加する?fstabファイルを編集する必要があります。この考え方に怖さを感じる人も多いでしょう。確かに、正しく理解することは大切ですが、正しい知識があれば、実はそれほど難しいことではないのです。新しいドライブをファイルシステムに統合するために、fstabファイルを編集するプロセスを順を追って説明します...

Linuxコンピュータに新しいハードディスクやソリッドステートドライブを追加する?fstabファイルを編集する必要があります。この考え方に怖さを感じる人も多いでしょう。確かに、正しく理解することは大切ですが、正しい知識があれば、実はそれほど難しいことではないのです。新しいドライブをファイルシステムに統合するために、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**lk

l**lkの出力は列になっています。

コラムは

  • 名前:デバイスの名前です。デバイス名が "sd "で始まり、文字が続く場合は、SCSIハードディスクを示します。文字は個々のハードディスクを示し、最初の文字が「a」、2番目の文字が「b」です。2枚目などになります。数字が付されている場合は、パーティションであることを示します。例えば、"sdb2 "は2番目のSCSIハードディスクのパーティション2です。
  • Pro: Min: この列には、デバイスの主番号と副番号が格納されています。一次番号は、デバイスの種類(より正確には、そのデバイスと会話するために使用されるドライバの種類)を示します。二次番号は、そのタイプのデバイスの数を数えるものです。
  • Rm:この欄は、デバイスが取り外し可能かどうかを示しています。なお、デバイス sr0 の値が 1 の場合は、リムーバブルであることを意味する。これは、CD-ROMドライブです。
  • サイズ:デバイスに保存できるデータ量です。
  • Ro:この欄には、読み取り専用のデバイスは1、読み取り/書き込みのデバイスは0と表示されます。loopデバイスはすべて読み取り専用です。
  • タイプ:機器のタイプを識別する。「disk "はディスクドライブ、"part "はパーティション、"rom "はリードオンリーメモリ(CD-ROM)を示す。
  • マウントポイント:このデバイスがマウントされているファイルシステム上のポイントを示します。

上のスクリーンショットでは、ループデバイスにはすべて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]1

mount は、3つのマウントされたパーティションを表示します。これらは、今マウントした2つと、/ にマウントされたオリジナルのパーティションです。

パーティション /dev/sdb1 は /mnt/scsi にインストールされ、回転ストレージデバイスに配置されます。パーティション /dev/sdc1 は /mnt/ssd にインストールされ、非回転ストレージデバイスに配置されます。すべてうまくいっているようです。

あとは、コンピュータを起動するたびに、これらのデバイスをマウントするように fstab ファイルを設定する必要があります。

ファスタブファイル

fstabファイルには、コンピュータの再起動時に読み込まれる各ファイルシステムのエントリーが含まれています。各エントリーは、以下の6つのフィールドで構成されています。

  • ファイルシステム: いいえ、その名の通り、パーティションのファイルシステムのタイプです (これはタイプフィールドのためのものです)。これはマウントされるべきパーティションの識別子です。
  • マウントポイント:パーティションをマウントするファイルシステム上の場所。
  • タイプ:パーティション上のファイルシステムのタイプ。
  • オプション:各ファイルシステムには、機能のON/OFFを指定できるオプションが用意されています。
  • ダンプ:ファイルシステム全体をテープに「ダンプ」してバックアップする、ほとんど時代遅れの方法を指します。
  • Pass:「パス」フラグです。これは Linux に fsck を使ってどのパーティションにエラーがあるか、どのような順番でチェックするかを指示します。プライマリーブートとOSパーティションは1、それ以外は2にしてください。このフラグを0にすると、「全くチェックしない」という意味になります。ファイルシステムがロギングファイルシステムでない場合(ext2やFAT16/32など)、0に設定してオフにするのがベストです。

これらのフィールドはこの順序で指定する必要があり、フィールドの間にはスペースまたはタブが必要です。これらのフィールドの値を見つけるのは大変なことで、特に「opti***」のフィールドはそうです。options "フィールドのオプションは、カンマで区切られたリストで、間にスペースを入れないこと。

各ファイルシステムのマニュアルページには、利用可能なオプションが記載されています。ext4には約40のオプションがあります。

  • 自動:起動時に自動的にファイルシステムがマウントされます。
  • Noauto: mount-a コマンドを入力した場合のみ、ファイルシステムがマウントされます。
  • Exec: このファイルシステム上のバイナリファイルの実行を許可する。
  • Noexec:このファイルシステムでバイナリファイルの実行を許可しない。
  • Ro:filesystemは読み取り専用で読み込む必要があります。
  • Rw:ファイルシステムはリードライトでマウントする必要があります。
  • 同期:ファイルへの書き込みはバッファリングせず、即座に行う。
  • 非同期:ファイルへの書き込みはバッファリングして最適化する必要があります。
  • ユーザー:どのユーザーもファイルシステムをマウントすることができます。
  • Nouser:このファイルシステムをマウントできるのはrootユーザーだけです。
  • (デフォルト: これは、一連の公開設定を指定するための略記法です: rw, suid, dev, exec, auto, nouser and async).
  • Suid:Suidビットとsgidビットの動作を許可します。suidビットは、ユーザーに完全なルート権限を与えることなく、通常のユーザーがルートとしてファイルを実行できるようにするために使用されます。ディレクトリにsgidビットが設定されている場合、そのディレクトリに作成されたファイルやディレクトリのグループ所有権は、作成したユーザーのグループ所有権ではなく、そのディレクトリのグループ所有権に設定されます。
  • Nosuid:suidとsgidのビットは許可されません。
  • Noatime:-ファイルシステム上のファイルアクセス時間を更新しない。これは、古いハードウェアのパフォーマンスを向上させるのに役立ちます。
  • Nodiratime:ファイルシステム上のディレクトリのアクセスタイムを更新しない。
  • Relatime:ファイルのアクセス時間を、ファイルの修正時間に対して相対的に更新します。

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を検索する

パーティションのUUIDを見つけるには、blkidを使用してブロックデバイスのプロパティを表示します。ここでは、新しいドライブ上の2つの新しいパーティションに出力を限定することにします。

blkid | grep sd[b-c]1

出力には、各パーティションのUUIDが含まれます。

PARTUUIDは、GPT(GUID Partition Table)パーティション方式で使用できるUUIDの形式です(MBR(Master Boot Record)パーティション方式を使用しない場合)。

fstabファイルの編集

fstabファイルをエディタで開きます。ほとんどのLinuxディストリビューションに搭載されている使いやすいエディタであるgeditを使用しています。

sudo gedit /etc/fstab

fstabファイルが読み込まれた状態で、エディタが表示されます。

このfstabファイルには、すでに2つのエントリーがあります。既存のハードディスク/dev/sda1上のパーティションとスワップファイルシステムです。これらのエントリーを変更しないように注意してください。

fstab ファイルに 2 つの新しいエントリを追加する必要があります。1つはSCSIドライブのパーティション用、もう1つはSSDドライブのパーティション用です。まず、SCSIパーティションを追加します。なお、hashで始まる行はコメントです。

  • File system "フィールドには、blkidで事前に取得したUUIDを使用します。行を "UUID="で開始し、UUIDをペーストします。
  • マウントポイント」欄には、先に作成したマウントポイント「/mnt/scsi」を使用します。 あなたのシステムで適切なマウントポイントを使用する必要があります。スペースキーまたはタブキーを押す。
  • タイプ」には、パーティションのファイルシステムのタイプであるext4を入力します。スペースバーまたはタブキーを押してください。
  • opti***」の欄には、cat/etc/mtabで取得したオプションを使用することにします。これらは、「rw, relatime」です。スペースバーまたはタブキーを押す。
  • スペースキーまたはタブキーを押して、"Dump "フィールドをゼロに設定します。
  • Pass "フィールドはゼロに設定される。

これからSSDドライブにfstabのエントリーパーティションを別行動で追加していきます。

  • ファイルシステム」の欄に、SSDドライブで取得したパーティションのUUIDとしてblkidを入力します。行頭を「UUID=」とし、UUIDをペーストします。スペースバーまたはタブキーを押してください。
  • マウントポイント」の欄は、先ほど作成した「/mnt/ssd」を使用します。 スペースキーまたはタブキーを押してください。
  • タイプ」には、パーティションのファイルシステムのタイプであるext4を入力します。スペースバーまたはタブキーを押してください。
  • opti***"フィールドでは、この例では2つの新しいエントリを異なるものにするために、"defaults "オプションを使用します。スペースバーまたはタブキーを押す。
  • スペースキーまたはタブキーを押して、"Dump "フィールドをゼロに設定します。
  • Pass "フィールドはゼロに設定される。

ファイルを保存して、エディターを閉じます。

関連:Linuxでテキストファイルをグラフィカルに編集するgeditの使い方

再起動せずにfstabをテストする

新しいドライブをアンマウントして、fstabファイルを強制的に更新すればいいのです。新しいパーティションのインストールが成功すると、入力した設定やパラメータが構文的に正しいかどうかが検証されます。つまり、リブートやパワーアップの際に、我々のfstabファイルが正しく処理されるはずです。

SCSIドライブをアンマウントするには、次のコマンドを使用します。"umount "の "n "は1つだけであることに注意してください。

sudo umount /dev/sdb1

SSDドライブをアンマウントするには、次のコマンドを使用します。

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/scsi

SSDロードポイントコマンドです。

sudo chown dave:users /mnt/ssd

これで、追加したパーティションがマウントされ、アクセスできることを確認しながら、安心してコンピュータを再起動することができるようになりました。

やっぱり、こわくない

大変なのは偵察の段階で、それもそれほど難しくはない。必要な情報を集めたら、fstabファイルを簡単に編集することができます。準備がすべてです。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ