fstab が実際のファイル システム名ではなく UUID を使用するのはなぜですか?

fstab が実際のファイル システム名ではなく UUID を使用するのはなぜですか?

たとえば、これは私の最初の行です/etc/fstab:

UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a    /    ext4    errors=remount-ro    0    1

コマンドの出力は次のとおりですdf -h(空きディスク容量を報告)。

honey@bunny:~$ df -T

Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/vda       ext4      30832636 4884200  24359188  17% /
none           tmpfs            4       0         4   0% /sys/fs/cgroup
udev           devtmpfs    498172      12    498160   1% /dev
tmpfs          tmpfs       101796     320    101476   1% /run
none           tmpfs         5120       0      5120   0% /run/lock
none           tmpfs       508972       0    508972   0% /run/shm
none           tmpfs       102400       0    102400   0% /run/user
  1. 2 つから、 の最初の列が である場合に、 がUUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a表されると推測してもよいでしょうか?/dev/vdafstab<file system>

  2. では、このように修正してもよろしいでしょうか/etc/fstab

    /dev/vda    /    ext4    errors=remount-ro    0    1
    
  3. 編集:sudo blkidはいの場合(上記の質問に対して)、コマンドが に対して異なる UUID を表示するのはなぜですか/dev/vda?

    $ sudo blkid
    
    /dev/vda: LABEL="DOROOT" UUID="6f469437-4935-44c5-8ac6-53eb54a9af26" TYPE="ext4"
    

    ここで何が欠けているのでしょうか?

    答え:(3) は私のホストのクラウドのバグであると結論付けます。したがって、blkid(またはls -l /dev/disk/by-uuid) によって報告される UUID は で使用されるものと同じであるはずです/etc/fstab

答え1

UUID を使用する利点は、オペレーティング システムがハード ディスクに付与する実際のデバイス番号とは独立していることです。

システムに別のハードディスクを追加し、何らかの理由で OS がsdbではなく古いディスクを新しいディスクとして認識したとしますsda

デバイス名を指している場合は、ブート プロセスが台無しになりますfstab。ただし、UUID の場合は問題ありません。

UUIDに関するより詳しい情報はブログ記事でもご覧いただけます。「UUID と Linux: 知っておくべきことすべて」

答え2

その場合、/etc/fstab を次のように変更できますか?

あなたできるそしてそれはおそらく問題ありませんが、UUID を残しておく方が良いでしょう。

UUIDこの場合、ブロック デバイス上のパーティションを識別するために使用される任意の文字列です。パーティション自体に保存され、必要に応じて別の文字列を割り当てることができます (MAC アドレスのようなもの)。

UUIDを使用する利点は、それが間違いのないものであることです/dev/vdaできた起動時に別のドライブになることもありますが、これは完全に理論上のことかもしれません (たとえば、特定のタイプのドライブが 1 つしかない場合など)。

デバイス名の使用が問題を引き起こす可能性があるもう1つのより微妙な例としては、最近一部のシステムでデバイス名を使用するように切り替えられたことが挙げられます。一貫したネットワークデバイス名アップグレード時にこれが発生し、ネットワーク スクリプトのどこかでハードコードされたデバイス名を使用した場合、動作が中断されます。ブロック デバイスに関する類似の例として、命名スキームを変更するカーネルまたは udev のアップグレードが挙げられます。

UUIDの1つの目的は、このようなことを簡単に実現できるようにすることです。できるデバイス名を使用すると、利点はありませんない限り(例)異なるドライブを交換するシステムがある場合。言い換えれば、そうする正当な理由がない場合は、UUIDに固執する

答え3

man fstabファイルの内容と意味についてかなり簡潔に読むことができます/etc/fstab。私の x86 の最新の Arch Linux サーバーでは、man fstab次のようになります。

The second field ... describes  the mount point for the filesystem.

したがって、両方の名前が「/」にマウントされているように見えることを考えると、は、/dev/vda明らかに何らかのデバイスを表す多くの名前の 1 つであり、 も同様です。UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a

ディレクトリを見ると、私のサーバー上の などを/dev/disk/by-uuid/指すシンボリック リンクが表示されます。これは、仮説を確認する別の方法かもしれません。にはサブディレクトリ、があり、これらはすべて同じデバイスの別名のようです。/dev/sda1/dev/sdb1/dev/diskby-idby-pathby-uuid

関連情報