
Linux에서 mdadm을 사용하여 두 개의 SSD로 구성된 RAID 10 어레이가 있습니다.
나는 그것을 만들었습니다
mdadm --create --verbose --level=10 --metadata=1.2 --chunk=512 --raid-devices=2 --layout=f2 /dev/md/MyRAID10Array /dev/nvme0n1p3 /dev/nvme1n1p3
그런데 왜 배열을 볼 때 청크 크기가 65536kb인지 궁금합니다. 또한 --chunk=512가 너무 클 수도 있다고 생각합니다.
고양이 /proc/mdstat에서
md127 : active raid10 nvme1n1p3[1] nvme0n1p3[0]
942664704 blocks super 1.2 512K chunks 2 far-copies [2/2] [UU]
[=====>...............] resync = 29.5% (278703616/942664704) finish=55.2min speed=200170K/sec
bitmap: 6/8 pages [24KB], 65536KB chunk
답변1
mdadm 위키에 따르면https://raid.wiki.kernel.org/index.php/Mdstat, 당신이 보고 있는 것은 배열 청크가 아닌 비트맵 청크입니다. 위 두 줄의 메시지에 따르면 배열 청크의 크기는 설정한 대로 512K입니다. Wiki에서는 비트맵 청크 값의 의미를 정확하게 명확하게 설명하지 않지만 "인 메모리 비트맵은 각 비트맵 청크에 대해 16비트를 사용하여 청크에 대한 모든 진행 중인 쓰기를 계산하므로 실제로는 비트맵 청크보다 최대 16배 더 큽니다. 온디스크 비트맵." "비트맵 청크"는 실제로 메모리에 있는 비트맵의 한 "페이지" 크기일 수도 있습니다. 귀하의 배열은 8페이지의 비트맵만 보고하며 그 중 6페이지가 메모리에 로드됩니다. 재동기화가 완료되면 비트맵의 페이지 수가 감소해야 합니다.
답변2
chunk
RAID 배열 요소 스트라이프를 정의합니다(예: 데이터 조각(청크)의 크기). 로부터매뉴얼 페이지:
-c, --chunk=
Specify chunk size in kilobytes. The default when
creating an array is 512KB.
이는 두 번째 줄에서 확인됩니다 mdstat
.
942664704 blocks super 1.2 *512K chunks* 2 far-copies [2/2] [UU]
데이터 청크는 다음과 다릅니다.비트맵각 비트맵의 비트가 포함하는 활성 영역을 정의하는 청크입니다. 이러한 종류의 청크는 훨씬 더 큽니다(귀하의 경우 64MB).
bitmap: 6/8 pages [24KB], *65536KB chunk*
일반적으로 RAID1/10의 경우 이러한 매개변수를 조정할 필요가 없습니다. 그러나 기본값은 빠른 SSD가 아닌 회전식 미디어(HDD)에 최적화되어 있으므로 원하는 경우 더 작은 데이터 청크(예: 8-64K)로 실험할 수 있습니다. 하지만 비트맵 조정에 신경쓰지는 않겠습니다.