再起動後にデバイス番号を変更できますか?

再起動後にデバイス番号を変更できますか?

私は建物を建てています。サービスブロックデバイスでファイルの一意性を確認します。システム内のファイルの一意性はペアで保証されているようです(st_dev, st_ino)。ここでst_dev、はデバイス番号、st_inoはinode番号です。この値は以下から直接提供されます。統計システムコール。ただし、区画の装置番号が実際に持続するかどうかの参照が見つかりません。つまり、パーティションをマウント解除/マウントするか、システムを再起動すると、パーティションのデバイス番号が変わりますか?

答え1

はい、ブロックデバイスのデバイス番号は変更される可能性があります。これはシステム起動時に動的に割り当てられます。デバイスを追加および削除すると(時にはBIOSファームウェアの変更も可能です)、アイテムが異なる順序で検索され、デバイスIDが異なる場合があります。

ファイルシステムを一意に識別するには、ファイルシステムUUID(コマンドを使用して取得できますblkid)を使用します。

inodeを識別子として使用することは、実行したい操作によっては問題になる可能性があります。たとえば、ハードリンクのために、単一のファイルが同じ inode を持つ複数の場所に存在する可能性があり、inode が最初に接続されたときに新しいファイルに対して回収される可能性があります。ファイルが削除された場合。

答え2

はい。変更することはできますが、持続しません。簡単な例を挙げましょう。 2つのネットワークドライブをマウントし、別の順序でマウントします。

st_devデバイスクラスとそのクラスのデバイス番号の2つの部分で構成されています。デバイスクラスは、デバイスがインストールされたときに学習されます(デフォルトではデバイスのインストール方法)。ただし、クラスの番号はインストール順序に従って定義されます。

もちろん、fstabでマウントされたデバイスについて話している場合は、fstabを変更するまでこのコマンドを信頼できます。

makedev(3)それを分解する方法を学びますst_dev

関連情報