web-dev-qa-db-ja.com

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つから、fstabの最初の列が_UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a_であるとして、_/dev/vda_が_<file system>_を表すと推測しても問題ありませんか?

  2. では、_/etc/fstab_をこれに変更しても問題ないでしょうか?

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

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

    ここで何が欠けていますか?

    Answer:(3)ホストのクラウドのバグであると結論付けます。したがって、はい、blkid(または_ls -l /dev/disk/by-uuid_)によって報告されるUUIDは、_/etc/fstab_で使用されるものと同じである必要があります。

22
its_me

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

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

fstabがデバイス名を指していると、ブートプロセスが失敗します。しかし、UUIDの場合は問題ありません。

UUIDの詳細については、ブログの投稿 "UUIDs and Linux:Everything you need to know" もご覧ください。

22
liquidat

その場合、/ etc/fstabをこれに変更できますか?

あなたできますおそらく大丈夫ですが、おそらくUUIDはそのままにしてください。

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

UUIDを使用する利点は、紛らわしくないことですが、/dev/vda ではありません; itcould起動時に別のドライブになることが起こりますが、これはコンテキストでは完全に理論上のものである可能性があります(たとえば、ドライブが1つしかないため)特定のタイプの)。

デバイス名を使用すると問題が発生する可能性があるもう1つのより微妙な例は、一部のシステムで最近のスイッチが consistent network device names を使用するようになることです。これがアップグレードとして発生し、ハードコードされたデバイス名をネットワークスクリプトのどこかで使用した場合、壊れます。並列のWRTブロックデバイスの例は、命名スキームを変更するカーネルまたはudevアップグレードです。

UUIDの1つのポイントは、この種のことを可能にし、苦痛をなくすことです。したがって、デバイス名を使用することができますが、を使用しない場合(== --- ==)を使用しないと利点はありません(例)異なるドライブを交換するシステムがあります。つまり、それを行う正当な理由がない場合は、UUID

3
goldilocks

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/diskにはサブディレクトリby-idby-pathby-uuidがあり、これらはすべて同じデバイスの代替名のように見えます。

2
Bruce Ediger