UUID Of / dev / disk / by-uuid 또는 blkid에 표시되지 않는 드라이브


12

UUID를 수신하지 않는 USB 드라이브가 있습니다. / dev / disk / by-uuid의 내용을 볼 때 존재하지 않습니다. 파티션이 존재하는 개발 지점은 / dev / sdb에 있습니다. / dev / disk / by-path에서 sdb를 볼 수 있습니다. 또한 blkid를 사용할 때 출력이 0이됩니다. 반환 된 오류 코드가 있다고 가정합니다.

이 파티션에 대한 UUID를 얻는 방법이 있습니까?

에 의한 결과 fdisk -l /dev/sdb:

Disk /dev/sdb: 320.1 GB, 320072932352 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142446 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00082145

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   625141759   312569856   83  Linux

파티션 테이블 및 파티션은 gparted로 작성되었으므로 파티션되고 mkfs.ext3 명령을 실행했습니다.

fsck -n / dev / sdb1의 출력

fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
fsck.ext2: Superblock invalid, trying backup blocks...
zwei was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
zwei: 11/19537920 files (0.0% non-contiguous), 1275097/78142464 blocks

ext3 드라이브로 포맷되었습니다. 왜 ext2로 표시됩니까?


말하는 장치를 명확히해야합니다. /dev/sdbUUID를가되지 않습니다,하지만 /dev/sdb1해야 한다면 그것은 포맷되었습니다.
goldilocks

1
내가 말하는 겁니다으로는 / dev / sdb1로는 / dev / sdb에 받고있는
monksy

의 출력을 게시하십시오 fsck -n /dev/sdb1. 또한 UUID를 제공하여 볼 수도 있습니다 tune2fs -U random /dev/sdb1. UUID가 무엇인지는 중요하지 않습니다.
goldilocks

[이것이 성가신 경우 죄송합니다]
monksy

1
문제 없어요. "superblock invalid"비트는 UUID가없는 이유를 설명 할 수 있습니다. 거기에 자료를 백업해야하는 경우, 마운트하고 수행 한 다음 마운트 해제 및 fsck -y /dev/sdb1; 마운트 할 수 없다면 fsck를 실행하면 아무것도 손실되지 않습니다. 읽기 man fsck사이의 차이 -n-y.
goldilocks

답변:


13

그게 일어날 일이야.

여기서 사용되는 용어 "디스크"또는 "드라이브"의 구어체 용도는 두 가지입니다. 첫 번째 는 USB 스틱과 같은 물리적 장치를 나타냅니다 . 두 번째는 하나의 물리적 장치에 여러 개가있을 수 있는 파일 시스템 파티션을 나타냅니다 .

장치 노드 /dev/sda는 첫 번째 의미 (물리적 장치)를 나타냅니다. 장치 노드 /dev/sda1는 두 번째 (파일 시스템 파티션)를 나타냅니다. 말이 되나요? sda1은 물리 디스크 sda의 파일 시스템 파티션입니다. 하나의 파티션으로 전체 장치를 포맷 할 수는 있지만 일반적이지 않은 경우가 많으므로 일반적 /dev/sda으로 UUID가 없습니다.

파일 시스템 파티션에는 UUID가 있으며 물리적 장치 에는 없습니다 . 파일 시스템이 생성 될 때 무작위로 생성된다고 생각합니다 (예를 들어 파티션을 다시 포맷하면 파티션이 변경되고 레벨을 복사하여 파티션을 복사하고 이미지로 새 파티션을 만드는 경우 두 개의 파티션이 생성됩니다) 동일한 UUID로).

따라서 파티션이 포맷 될 때 UUID가 생성 됩니다 . 디스크를 분할 할 때 (예를 들어, fdisk로) 아무 것도 포맷하지 않고 파티션 테이블에서 파티션 유형 (및 크기 등)을 설정하기 만하면 포맷되지 않은 새 파티션에는 UUID가 없습니다.

마지막으로 UUID를 설정하는 파티션을 포맷하는 데 사용되는 도구이므로 매우 오래된 도구로는이 작업을 수행하지 못할 수 있습니다. 그러나 다음과 같이 항상 새로운 것을 설정할 수 있습니다 tune2fs.

tune2fs -U random /dev/whatever

SDA는 나의 주된 드라이브입니다. SDB, SDD 등은 USB 드라이브입니다. fdisk -l을 포함하도록 답변을 업데이트하여 파티션이 있음을 증명했습니다.
monksy 2013

@monksy : UUID를보고하지 않는 장치 노드는 /dev/sdb1또는 /dev/sdb? 나중에해서는 안됩니다. 또한 fdisk 출력은 파티션이 포맷되었음을 나타내지 않으므로 사용 가능한 UUID가 있어야한다는 것을 나타내지 않습니다 . 이를 설명하기 위해 위의 짧은 단락을 몇 개 추가했습니다.
goldilocks

형식화되어 있습니다. [pre fstab items]에 연결되면 gnome automounter가이를 불러옵니다. sdb1에 대한 UUID를 얻지 못했습니다. fdisk -l은 파티션이 있다는 증거
일뿐입니다.

1
파티션이 나타나기 전에 재부팅해야했습니다 /dev/disk/by-uuid(Ubuntu 16.04이지만 다른 사람에게 영향을 줄 수 있음). 따라서 (1) 파티션과 파일 시스템을 생성하고 (2) 재부팅하십시오. 재부팅이 아닌 방법이있을 수 있지만 콜드 부팅에서 모든 것이 나오므로 조사하지 않았는지 확인하는 것이 좋습니다.
fazy

2

/ dev / disk / by-uuid는 부팅시 "partprobe"프로그램으로 채워집니다. partprobe가 인식 할 수없는 디스크 또는 파티션이있는 경우 partprobe가 오류 함께 실패하고 나머지 파티션 스캔을 중지 합니다.

root@machine1:~# partprobe 
Error: /dev/mapper/sda5_crypt: unrecognised disk label
root@machine1:~# 

partprobe 부분에 분명히 오류가 있습니다 . 아마도 우분투 14.04 (신뢰)에만 해당됩니다. 해결 방법은 스캔되지 않은 파티션에서 partprobe를 명시 적으로 실행하는 것입니다.

root@machine1:~# partprobe /dev/sdd1

partprobe는 여러 번 시작되므로 모든 디스크 관리 작업의 결과이므로 해결 방법이 짧습니다.


2

나는 그렇지 않은 file -s경우 파티션에 UUID를 줄 수 있음을 발견했습니다 blkid.

sudo file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=ef55765f-dae5-426f-82c4-0d98265c5f21 (needs journal recovery)

1

ls -l /dev/disk/by-uuid또는로 sudo를 사용해보십시오blkid /dev/sdb1

파티션 + 형식 sdb1도 있는데, 어떤 이유로을 사용하지 않으면 목록에 표시되지 않습니다 sudo.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.