재부팅 후 기기번호를 변경할 수 있나요?

재부팅 후 기기번호를 변경할 수 있나요?

나는 건물을 짓고 있다서비스블록 장치에서 파일의 고유성을 확인합니다. 시스템에 있는 파일의 고유성은 쌍으로 보장되는 것으로 보입니다 (st_dev, st_ino). 여기서 st_dev는 장치 번호이고 st_ino는 inode 번호입니다. 이 값은 다음에서 직접 제공됩니다.통계 시스템 호출. 그러나 파티션의 장치 번호가 실제로 지속되는지 여부에 대한 참조를 찾을 수 없습니다. 즉, 파티션을 마운트 해제/마운트하거나 시스템을 재부팅하면 파티션의 장치 번호가 변경됩니까?

답변1

예, 블록 장치의 장치 번호는 변경될 수 있습니다. 이는 시스템 시작 시 동적으로 할당됩니다. 장치를 추가 및 제거하면(때로는 BIOS 펌웨어 변경도 가능) 항목이 다른 순서로 검색되어 장치 ID가 달라질 수 있습니다.

파일 시스템을 고유하게 식별하려면 파일 시스템 UUID(예: 명령을 통해 얻을 수 있음 blkid)를 사용합니다.

inode를 식별자로 사용하는 것은 수행하려는 작업에 따라 문제가 될 수도 있습니다. 예를 들어 하드 링크로 인해 단일 파일이 동일한 inode가 있는 여러 위치에 존재할 수 있으며 inode가 원래 연결되었을 때 새 파일에 대해 회수될 수 있습니다. 파일이 삭제되면.

답변2

그렇습니다. 변화할 수는 있지만 지속되지는 않습니다. 간단한 예를 들어보겠습니다. 두 개의 네트워크 드라이브를 마운트한 다음 다른 순서로 마운트합니다.

st_dev장치 클래스와 해당 클래스의 장치 번호라는 두 부분으로 구성됩니다. 장치 클래스는 장치가 설치될 때 학습됩니다(기본적으로 장치 설치 방법). 그러나 클래스의 번호는 설치 순서에 따라 정의됩니다.

물론 fstab에서 마운트된 장치에 대해 이야기하는 경우 fstab을 수정하기 전까지는 이 명령을 신뢰할 수 있습니다.

makedev(3)그것을 분해하는 방법을 알아보십시오 st_dev.

관련 정보