서버 CPU가 죽자 SSD를 노트북에 연결하고 서둘러 Fry's로 가서 USB 3.0 HDD 인클로저를 가져와 5드라이브 LVM RAID 어레이를 부팅했습니다. 돌아와서 모든 것을 연결하고 전원 버튼을 누른 다음 구조 메시지가 표시되는 것을 지켜보았습니다. 몇 가지 조사 끝에 문제를 발견했습니다.
내 서버 마더보드 칩셋은 드라이브를 4096바이트 섹터로 올바르게 표시하고 fdisk
포맷합니다. 일부 PV를 생성하고 RAID5 어레이를 시작한 후 더 이상 생각하지 않았습니다. 제가 구입한 USB 3.0 하드 드라이브 인클로저는 이러한 4096바이트 섹터 드라이브를 512바이트 섹터로 표시하는 것 같습니다. 파티션 테이블이 완전히 지워지고 PV는 정상적으로 감지되지만 LVM이 작동하지 않습니다.전혀그것은. 드라이브의 섹터 수가 캐시 및 예상 섹터 수보다 8배 더 많다는 사실을 발견하고 VG 조립을 거부했습니다.
내 질문은 이것입니다: 펌웨어와 관련된 사례 자체에 터무니없는 일을 수행하거나 커널에 터무니없는 일을 수행하여 4096바이트 섹터(실제로는 512일 때)를 에뮬레이션하도록 설득하여 LVM을 설득하는 방법이 있습니까? 일하다?
5개의 드라이브는 모두 4TB이며, 이상하게도 섀시는 악명 높은 2TB 초과 버그의 징후 없이 이를 보고합니다. 단순히 4096바이트 섹터 디스크를 512바이트 섹터가 있는 것으로 표시하고 섹터를 8배로 표시하여 차이를 보완합니다.
답변1
이는 USB 인클로저의 USB-ATA 브리지에 있는 버그입니다. 저도 같은 버그에 영향을 받았습니다. 제 브리지 칩은 JMicron 제품입니다(Google에서 해당 제조업체를 검색하면 이에 영향을 받은 다른 칩도 찾을 수 있습니다).
IIRC를 처음 발견했을 때 이것을 조사했는데 문제는 SCSI 프로토콜이 이를 쿼리하는 명령에 대한 응답의 일부 후속 필드에 물리적 크기와 논리적 크기에 대한 정보를 포함하고 있으며 브리지 펌웨어에 약간의 길이가 있을 수 있다는 것입니다. 이 응답은 일정하지만 길이가 너무 짧아서 필드가 전송되지 않습니다.
당시 나 역시 커널에 직접 물리 섹터 크기를 알려주고 잘못된 정보를 덮어쓰는 방법을 찾으려고 했지만 찾지 못했다. 어쩌면 그 동안 상황이 바뀌었을 수도 있습니다.
데이터가 중요한 경우에는 브리지 칩이 있고 버그가 없는 케이스를 구입하세요.