파티션을 "정렬"한다는 것은 무엇을 의미합니까?


15

나는 파티션이 무엇인지 잘 알고 있지만 Ask Ubuntu 에서 정렬 파티션에 대한 질문을 보았고 "정렬 파티션"이 무엇인지 알지 못했다는 것을 깨달았습니다.

그렇다면 파티션을 "정렬"한다는 것은 무엇을 의미합니까? 장점과 단점은 무엇입니까?

답변:


15

파티션을 정렬한다는 것은 진정한 기본 블록 구조와 일치하도록 파티션을 정렬하는 것을 의미합니다.

오랫동안 하드 디스크는 512 바이트 블록을 사용했습니다. 이것은 오랫동안 진행되었으므로 이제 블록 크기를 변경하는 것은 거의 불가능합니다. 너무 많은 소프트웨어를 수정해야합니다.

SSD에서 실제 블록 크기는 128KB 일 수 있습니다. RAID 배열에서는 64KB 일 수 있습니다. 고급 포맷 드라이브에서는 4KB입니다.

역 호환성을 위해 드라이브는 계속 512 바이트 블록으로 작동합니다. 그러나 성능상의 이유로 시스템은 실제로 실제 블록 크기를 알아야합니다.

가장 쉬운 성능 조정 중 하나는 OS가 4KB 또는 64KB 또는 128KB를 쓰면 전체 블록을 쓰도록 드라이브 파티션을 실제 블록 크기에 맞추는 것입니다.

파티션이 정렬되지 않은 경우 결과는 첫 번째 블록에 512 바이트를 쓰고 두 번째 블록에 4K-512 바이트를 쓰는 것이므로 디스크 / SSD / RAID 는 한 번의 쓰기 대신 두 번의 읽기-수정-쓰기주기 를 수행해야 합니다.



@ AnkurTank : 아니요, 질문은 잘 다루어 보입니다.
Zan Lynx

주의 해 주셔서 감사합니다. 남은 것은 파티션이 정렬되었는지 확인하는 방법입니다. 나에게 parted는 여전히 파티션이 정렬되지 않았다고 불평하고 있기 때문에. 또한 gdisk와 같은 다른 도구를 사용해 보았지만 gdisk를 크로스 컴파일 할 수 없습니다. 그래서 도움이 될 것임을 확인하는 방법에 대한 제안이 있다면 생각했습니다.
ART

3

파티션은 일련의 블록 이며 오랫동안 사용되는 한 블록은 512 바이트입니다.

따라서 파티션은 디스크 내에서 512 바이트의 배수로 시작할 수 있으며 매우 긴 바이트 문자열로 "보입니다".

그러나 원래 512 바이트 섹터 크기를 가진 기본 디스크 하드웨어 는 효율성을 위해 더 큰 크기를 사용합니다. 그것이 4096 바이트라고 가정 해 봅시다.

호환성 문제로 인해 OS와 하드웨어 사이에있는 펌웨어는 여전히 "섹터에서 통신"합니다. 따라서 첫 번째 섹터를 요청하면 하드웨어가 첫 번째 블록 (4096 바이트)을 검색하고 펌웨어가 적절한 슬라이스를 추출하여 전달합니다. 두 번째 블록을 요청하면 블록이 캐시에서 검색 될 수 있습니다.

지금까지 섹터 크기 불일치에는 단점이 없습니다.

그러나 OS는 효율성을 위해 블록 (일반적으로 클러스터 라고도 함 )을 사용하여 파티션에 맞 춥니 다. 따라서 4 섹터 클러스터는 5, 6, 7 및 8 섹터로 구성됩니다.

OS가 파일 시스템 클러스터 # 2를 요청 하면 펌웨어는 논리 섹터 5, 6, 7, 8을 요구합니다. 모두 동일한 디스크 블록 에 있으면 디스크는 한 번의 읽기를 수행해야합니다.

그러나 파티션이 "잘못된"섹터에서 시작되면 파일 시스템의 첫 번째 클러스터가 예를 들어 섹터 2, 3, 4 및 5에서 단순화되어 첫 번째 디스크 블록의 절반이 될 수 있습니다 (1). -2-3-4), 두 번째 반 (5-6-7-8).

이제 하나 더 읽어야 합니다. OS 대 디스크 비율이 1 : 1 인 경우 읽기를 두 배로 늘리는 것과 같습니다. OS 대 디스크 비율이 2 : 1이면 클러스터가 두 개의 하드웨어 디스크 블록 인 경우 2 + 1 = 3 읽기, 50 %의 페널티가 필요합니다.

OS   |--- cluster  12 ---|--- cluster  13 ---|--- cluster  14...
     |                   |                   |
HDD  --|----|----|----|-a--|--b-|-c--|-d--|-e--|----|---        BAD
     |                   |                   |
HDD  |----|----|----|----|-a--|--b-|-c--|-d--|----|----|---     GOOD

위의 클러스터는 각각 2 개의 섹터로 구성된 4 개의 하드웨어 블록 (비율 4 : 1)입니다. "짝수"섹터에 정렬한다는 것은 8 개의 섹터 읽기가 클러스터를 읽기 위해 4 개의 블록 읽기로 변환됨을 의미합니다. 홀수 섹터를 정렬한다는 것은 동일한 8 섹터 읽기에 4 + 1 = 5 블록 읽기, 25 %의 성능 저하를 요구한다는 것을 의미합니다 (4마다 1 개씩 추가).

4 : 1 비율의 디스크가 잘못 정렬되어 있으면 정렬하면 디스크가 20 % 빨라집니다 (5마다 1 개씩 저장).

파티션을 "정렬 된"상태로 만들려면 오프셋을 디스크의 시작 부분에서 적절한 여러 512b 섹터로 이동 / 설정하거나 (도구에 따라) 디스크의 시작 부분에 작은 파티션을 삽입 할 수 있습니다. 다음 파티션이 디스크 섹터 경계에서 정확하게 시작하는 크기로. 이 두 번째 경우, 이론적으로는 최대 N-1 섹터, 즉 매우 적은 킬로바이트가 필요하지만 실제로는 가장 많은 성능을 끌어 내기 위해 수백 킬로바이트, 아마도 전체 메가 바이트를 낭비해야 할 것입니다. 멀티 기가 바이트 하드 드라이브.

(OS 클러스터 크기를 올바르게 선택하면 해당 공간 등을 복구 할 수 있습니다 ).


1
읽기는 그렇게 나쁘지 않습니다. 예, 약간의 추가 데이터를 읽어야하지만 3 개의 연속 블록을 읽는 데 2 ​​개를 읽는 것보다 시간이 많이 걸리지 않습니다. 실제 문제는 쓰기, 기본 블록 크기보다 작은 섹션을 쓰려면 데이터를 읽고 디스크가 전체 회전을 돌릴 때까지 기다렸다가 다시 쓰는 것입니다.
plugwash

1
또한 추가 파티션을 만들 필요가 없으며 디스크의 모든 공간을 분할해야한다는 규칙이 없습니다.
plugwash

2

드라이브는 거의 항상 512 바이트의 논리 섹터로 나뉘며 다른 크기도 가능하지만 호환성 문제로 인해 거의 사용되지 않습니다. 오래된 하드 드라이브에서는 개별적으로 쓸 수있는 별도의 섹터였습니다.

2000 년대 중반까지 파티션은 전통적으로 "실린더"경계에 정렬되었습니다. 역사적 이유로 "실린더"는 일반적으로 63 개의 섹터였습니다. 섹터 0은 부팅 섹터와 파티션 테이블을 포함합니다. 실린더 0의 이후 섹터는 때때로 부트 로더에 대한 추가 정보를 계속했습니다. 첫 번째 파티션은 일반적으로 실린더 1의 시작에서 시작되었습니다.

대부분의 파일 시스템은 섹터를 더 큰 블록 ( "클러스터"라고도 함)으로 그룹화합니다. 이들은 일반적으로 크기가 4KiB입니다.

드라이브 공급 업체들이 어느 시점에서 4K 물리 섹터를 사용하는 것이 더 효율적일 것이지만 호환성을 이유로 논리 섹터 크기를 512 바이트로 유지했습니다. 호스트가 한 번에 전체 물리 섹터를 읽거나 쓰면 속도가 빠릅니다. 드라이브가 원치 않는 데이터를 버릴 수 있기 때문에 읽기 부분이 여전히 매우 빠릅니다. 그러나 호스트가 물리적 섹터의 일부만 쓰면 드라이브는 물리적 섹터를 읽고 읽은 데이터를 호스트의 데이터와 결합한 다음 수정 된 섹터를 다시 써야합니다. 이는 드라이브가 한 번이 아니라 두 번 제 위치로 회전 할 때까지 기다리는 것을 의미합니다.

파일 시스템의 4K 클러스터가 드라이브의 4K 물리적 섹터에 정렬 된 경우에 효과적입니다. 불행히도 전통적인 방식으로 드라이브를 파티셔닝하는 방식은 첫 번째 파티션이 기본적으로 정렬이 잘못되어 나중에 파티션이 정렬 될 확률이 1 in 8 일뿐임을 의미합니다. 따라서 고급 포맷 드라이브 공급 업체는 사람들이 자신의 파티션을 다시 정렬 할 수 있도록 도구를 서두르 게되었습니다.

RAID 어레이 및 SSD에도 유사한 고려 사항이 적용될 수 있습니다. RAID 스트라이프가 단일 파일 시스템 클러스터보다 훨씬 클 수 있지만 일부 파일 시스템에는 두 경계의 힘에 맞춰 정렬 된 영역 또는 유사한 영역이있을 수 있습니다.

현재의 일반적인 관행은 모든 일반적인 블록 크기의 배수가되기에 충분히 큰 2의 거듭 제곱 인 1MiB 경계에 대해 분할을 정렬하는 것입니다.



0

이것이 도움이된다면 Dunno, 그러나 나는 파티션 정렬이 주어진 파티션을 기본 RAID 스트라이프 장치와 정렬 할 때 파티션 정렬이라는 것을 이해했습니다.

하드웨어 기반 RAID 또는 소프트웨어 기반을 사용하면 성능이 저하 될 수 있습니다. 파티션의 시작 위치가 RAID에서 생성 된 디스크 파티션의 스트라이프 장치 경계에 맞지 않으면 문제가 발생할 수 있습니다.

볼륨 클러스터 생성을위한 팩토링에 따라 스트라이프 장치 경계 옆이 아닌 스트라이프 장치 경계 위에 볼륨 클러스터가 생성 될 수 있습니다. 이 동작으로 인해 파티션 이 잘못 정렬 될 수 있습니다 .

나는 꺼져있을 수 있으며 이것은 RAID와 아무 관련이 없습니다.)

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