
최근에 나는 상황이 어떻게 바뀌고 현재 작동하는지 배우는 모든 즐거움과 집안일을 가지고 새로운 하드웨어로 옮겼습니다.
내가 그것을 발견했을 때gparted를 사용한 재분할 작업그것파티션 제한을 전체 MB 값으로 설정하도록 자동으로 선택했습니다., 따라서 때때로 파티션 사이에 작은 간격이 남습니다.
이제 나는 궁금하다:
내 파티션이 시작되거나 끝나는 것은 임의의 숫자일 뿐이므로(특히 내부에 낮은 수준의 스토리지 컨트롤러가 있는 SSD를 고려할 때)
드라이브에 그 공백을 두는 것이 왜 좋은 선택인 것 같나요??
건배
답변1
이는 파티션 정렬과 관련이 있습니다. 기본적으로 하드 드라이브는 여러 섹터로 나누어져 있습니다. 하드 드라이브가 작업을 수행할 때마다 전체 섹터에 동시에 작용합니다. 즉, 섹터 내에 저장된 데이터를 읽을 때 전체 섹터를 읽어야 합니다. 데이터가 여러 섹터로 분할된 경우 각 섹터 전체를 읽어야 합니다. 파티션에 있는 파일 시스템은 사용 가능한 공간을 블록에 할당합니다(크기는 일반적으로 파일 시스템 생성 시 조정 가능한 매개 변수입니다. 주로 작은 파일로 구성되는 FS의 경우 주로 어떤 작업에 작은 블록 크기를 사용합니다) 큰 블록 크기를 사용하면 낭비되는 공간을 최소화하는 것이 목표입니다. 파일이 블록 크기보다 작으면 나머지 블록도 낭비되지만 블록 크기가 작을수록 모든 항목을 처리하는 테이블이 커집니다. 블록이 있어야 합니다).
이제 기본적으로 파일 시스템 블록과 디스크 섹터가 정렬되어야 합니다. 하나는 나머지 없이 다른 하나에 맞아야 하며 결정적으로 동일한 위치에서 시작해야 하므로 부분적으로 겹치는 일이 없어야 합니다. 섹터 크기가 4kb인 디스크가 있고 파일 시스템이 1kb 블록이라고 가정해 보겠습니다. 파티션이 섹터 시작 부분에서 작은 오프셋으로 시작하는 경우(단 몇 바이트라도) 파일 시스템의 네 번째 블록마다 실제로 두 섹터로 분할되므로 상호 작용할 때마다 디스크에서 두 섹터를 모두 읽고 써야 합니다. 그 블록으로. 이는 25%의 오버헤드로 성능이 크게 저하될 수 있습니다. FS 할당 블록 크기가 HD 섹터 크기와 동일하고(둘 모두에 대해 4k가 무리가 없음) 이 오프셋이 있는 경우 모든 단일 읽기/쓰기에 이 문제가 발생하여 성능에 막대한 영향을 미칠 수 있습니다.
이를 방지하기 위해 우리는 파티션의 시작을 메가바이트 경계에 맞춰 보수적으로 정렬합니다. (그때 우리가 가지고 있는 대용량 드라이브가 무엇이든 메가바이트는 몇 년 후에도 여전히 블록/섹터 크기의 배수가 되어야 하기 때문입니다.) 파티션 크기가 깔끔하게 일치하지 않고 정확히 메가바이트 경계에서 끝나는 경우 디스크에 작은 "간격"이 발생할 수 있습니다. 디스크의 처음 몇 개의 섹터는 다른 목적으로 예약되어 있으므로 디스크 시작 부분에는 항상 공백이 남아 있습니다.
https://www.thomas-krenn.com/en/wiki/Partition_Alignment문제를 더 구체적으로 설명합니다. 그러나 지적한 대로 최신 디스크 크기에 비해 손실된 공간은 매우 사소합니다.
답변2
드라이브에 그 공백을 남겨두는 것이 왜 좋은 선택인 것 같나요?
그것은 "보호 밴드"를 사용하는 것 같습니다.
때때로 파티션 끝에서 마지막 트랙 한두 개가 (의도적인?) 할당되지 않은 것을 볼 수 있었습니다.
이론적으로는 필요하지 않습니다.
하드 디스크 드라이브의 경우 파티션은 실린더 경계에서 시작하도록 할당되었습니다. 이러한 할당은 파티션 내 검색 횟수를 최소화하여 전체 액세스 시간을 향상시킵니다.
그러나 요즘에는 영역 비트 기록을 사용하는 HDD의 경우 파티셔닝 프로그램이 실제 드라이브 구조와 물리적 실린더의 위치를 알지 못하므로 "실린더 정렬"은 본질적으로 의미가 없습니다.
솔리드 스테이트 드라이브의 경우 정수개의 지우기 블록을 차지하도록 파티션을 할당해야 합니다. NAND 플래시 칩은 R/W 섹터와 페이지의 크기를 조정하고 블록을 2의 거듭제곱으로 삭제하므로 SSD 파티션을 1MB와 같은 2의 큰 거듭제곱 단위로 크기 조정하고 정렬하는 것은 이러한 페이지/블록의 정수개를 포함하는 것으로 추정됩니다.