최근에 노트북의 기존 SSHD를 교체하기 위해 새 SSHD를 구입했는데 문제가 발생했습니다. 새 컴퓨터에 우분투 15.10을 설치하고 예전 것을 가지고 있던 USB 박스에 넣어두었는데, USB에 있는 디스크가 파티션이 안 되어 있었습니다(데이터를 잃어버릴 수가 없어서 5분간 비명을 질렀습니다).
그래서 이전 디스크를 다시 디스크 베이로 옮기고 새 디스크를 USB 케이스에 넣었습니다. 모든 데이터는 그대로 유지되었지만 USB에 있는 디스크에는 파티션이 표시되지 않았습니다.
USB 케이스에 있는 두 디스크 모두 모델과 공장 정보를 올바르게 표시하지만 파티션은 표시하지 않습니다. 상태는 양호하며 GPT/EFI 파티션이 없는 오래된 하드 드라이브로 테스트했습니다.
파일을 전송할 수 있도록 외부 디스크를 어떻게 마운트합니까?
명령 출력:
$ sudo blkid /dev/sdb
/dev/sdb: PTTYPE="PMBR"
$ sudo parted /dev/sdb print
Error: /dev/sdb: unrecognised disk label
Model: ST1000LM 014-1EJ164 (scsi)
Disk /dev/sdb: 1000GB Sector size (logical/physical): 4096B/4096B
Partition Table: unknown Disk Flags:
$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.0
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: not present
답변1
손실된 파티션을 복구하려면 인터넷 검색을 시도해 보세요. 제품은http://findandmount.com/. 마스터 부트 레코드에서 파티션이 손실되더라도 파일 시스템을 찾을 수 있다고 말합니다. 사용했던 제품이 생각나네요http://www.ultimatebootcd.com/같은 일을하십시오. 그냥 무슨 제품이었는지 기억이 안나네요.
답변2
이 명령을 시도해 보세요
sudo apt-get install exfat-fuse exfat-utils
답변3
이 부분에 주목하세요:
Sector size (logical/physical): 4096B/4096B
디스크는 4KiB 블록을 사용할 수 있습니다. 제 생각에는 노트북의 USB 인클로저와 내부 SATA 컨트롤러가 이를 처리하기 위해 서로 다른 전략을 사용하고 있는 것 같습니다. 하나는 기존의 512바이트 블록으로 변환하는 전략이고 다른 하나는 기본적으로 새로운 블록 크기를 사용할 수 있는 전략입니다.
디스크가 노트북의 디스크 베이에 있으면 다음과 같은 결과가 나올 것으로 추측됩니다.
Sector size (logical/physical): 512B/4096B
GPT 파티셔닝 체계의 경우 이는 문제가 됩니다. GPT 사양에는 파티션 테이블이 블록 #1에서 시작해야 한다고 명시되어 있습니다. 블록 #0은 "보호 MBR"용으로 예약되어 있습니다. 이는 이전 시스템이 MBR 스타일 파티션만 이해하더라도 사용 중인 디스크만 인식하도록 허용합니다.
그러나 에뮬레이트된 512바이트 블록으로 디스크를 분할한 다음 기본 모드로 전환하면(예: 내부 컨트롤러에서 4KiB 인식 USB로 디스크 이동) 512바이트 블록 #1은 4초가 됩니다. 여덟 번째. KiB 블록 #0.
이와 별도로, 처음에 디스크를 분할할 때 기본 4KiB 블록을 사용한 다음 512바이트 블록 에뮬레이션으로 전환한 경우 GPT 파티션 테이블은 이제 블록 #8에서 시작됩니다.
불행하게도, 다시 파티션을 나누지 않고 상황을 해결할 수 있는 유일한 방법은 파티션을 다시 나누지 않고 특별히 설계된 오래된 외부 USB HDD 어댑터를 찾는 것입니다.할 수 없다4KiB 블록을 사용하므로 노트북의 내부 SATA 컨트롤러와 마찬가지로 디스크에 내장된 512바이트 섹터 에뮬레이션을 트리거합니다.
Linux 커널 버전 4.14 이상을 사용하십시오(또는이 패치는 백포트되었습니다.), 논리 블록 크기를 전환할 수 있습니다. 아직 losetup
버전이 있는 경우이번 패치, 디스크를 기존 USB 어댑터에 연결하고 다음과 같이 말할 수 있습니다.
losetup -P -b 512 /dev/loop0 /dev/sdb
다양한 논리적 블록 크기를 사용 /dev/sdb
하여 액세스 할 수 있습니다 . 파티션은 N이 파티션 번호 /dev/loop0
로 표시됩니다 . 또는 배포판이 아직 이 구성표를 지원하지 않는 경우 이 옵션을 생략하고 device-mapper-multipath 패키지의 도구를 사용할 수 있습니다:/dev/loop0pN
-P
kpartx
kpartx -a /dev/loop0
...이라는 루프 장치의 각 파티션에 대한 맵을 자동으로 생성합니다 /dev/mapper/loop0pN
.
그런 다음 다른 장치 이름을 사용하여 평소와 같이 이러한 파티션 장치를 마운트할 수 있습니다.
파티션된 장치를 마운트 해제한 후 이 설정을 실행 취소하는 프로세스는 다음과 같습니다.
kpartx -d /dev/loop0 # only if the use of kpartx was needed
losetup -d /dev/loop0