RAID mdadm 가상 디스크가 너무 작습니다.

RAID mdadm 가상 디스크가 너무 작습니다.
sudo mdadm --build /dev/md0 --level=linear --raid-devices=3 /dev/loop0 /dev/sda1 /dev/sda2

위 명령을 실행한 후 ++ /dev/md0미만 입니다 . 왜 이런 일이 일어나는지, 그리고/dev/loop0/dev/sda1/dev/sda2어떻게 해야 정확한 크기로 만들 수 있나요?? Windows가 제대로 부팅되기 위해 /dev/sda1Windows 7 파티션에 필요한 매우 작은 파티션입니다 . 다음 명령을 사용하여 만든 루프백 장치입니다 . boot.mbr은 첫 번째 파티션이 시작되기 전 디스크 시작 부분에 나타나는 처음 2048개 섹터의 복사본인 이미지 파일입니다 . 이 섹터에는 Grub 부트 로더가 포함되어 있습니다. 이미지 파일을 생성하기 위해 실행한 명령은 다음과 같습니다 . 동일한 크기여야 하는 이유는 Grub 부트로더와 2개의 파티션 레이아웃을 모방하기 위해 가상 하드 디스크를 설정하려고 했으나 마지막 파티션을 설정하려고 하다가 바이트가 부족했기 때문입니다. 디스크의 바이트가 충분하지 않습니다 . 더 많은 배경 정보가 필요하다면 제가 이 작업을 수행한 이유를 설명하는 또 다른 질문에 대한 링크가 있습니다./dev/sda2/dev/loop0sudo losetup /dev/loop0 boot.mbr/dev/sda/dev/sda1dd if=/dev/zero of=boot.mbr count=2048/dev/md0/dev/md0https://superuser.com/questions/931645/with-linux-mint-as-main-os-dual-boot-windows-7-and-have-a-windows-7-virtual-mac/937491#937491

기술 사양:

  • Linux Mint 17.2 64비트(Cinnamon 포함)
  • mdadm-v3.2.5
  • dd(핵심 유틸리티) 8.21

자세한 내용은:

fdisk는 /dev/sda11572864000바이트를 표시합니다. /dev/sda2229318000128바이트로 나타납니다 . 내 파일 시스템에는 boot.mbr이 1048576으로 표시됩니다. 따라서 이 세 숫자를 합치면 /dev/md0드라이브 크기는 최소 230891912704바이트가 되어야 합니다. 그러나 fdisk는 /dev/md0이 230891847680바이트임을 보여줍니다. 따라서 /dev/md065024바이트는 필요한 것보다 작습니다.

추측:

루프백 장치에 문제가 있는 것 같습니다 /dev/loop0. 하지만 fdisk -l /dev/loop0디스플레이 장치의 크기는 1048576바이트이므로 이미지 파일의 크기와 일치합니다. 그러나 fdisk는 /dev/loop0실린더가 없다고 불평합니다. 이것이 문제가 될 수 있습니까? 나는 여기서 단지 지푸라기를 쥐고 있을 뿐이다.

/dev/md0소프트웨어 RAID로 생성된 가상 하드디스크라면 무슨 뜻인가요 ? 우선, 데이터는 어디에 저장되나요? 혹시 메모리나 저장공간이 부족한 건 아닐까?

답변1

일반적으로 Linux mdadmRAID 장치는 MD 장치가 메타데이터를 저장하기 때문에 항상 구성 요소 장치의 크기(또는 RAID 0의 경우 그 합계)보다 작습니다.

이 예에서는 --build메타데이터를 사용하지 않는 수동 어셈블리 모드를 호출하는 를 사용했습니다. 그러나 MD 장치는 블록 크기를 사용하기 때문에 라인 어레이는 구성 요소 장치의 크기의 합보다 작을 수 있습니다. 명령에서 얻어야 하는 다음 또는 유사한 출력에 유의하십시오.

mdadm: chunk size defaults to 64K
mdadm: array /dev/md0 started.

이는 배열이 65536바이트의 블록을 처리할 수 있음을 의미합니다. 예를 들어, RAID0 어레이(그렇지 않음)인 경우 데이터는 한 구성 요소에서 65536바이트, 다음 구성 요소에서 65536바이트 등으로 인터리브됩니다.

완전한 블록을 만들지 않는 추가 바이트가 끝에 있으면 배열은 이를 사용할 수 없습니다.

선형 모드에서는 MD가 각 구성 요소의 크기를 65536바이트의 가장 가까운 배수로 내림하는지, 아니면 전체 배열의 크기를 내림하는지 잘 모르겠습니다. 어느 쪽이든 구성 요소 중 하나의 크기는 65536바이트(다른 2바이트)의 배수가 아니므로 65024바이트로 반내림됩니다. 이는 정확히 여러분이 보고 있는 차이입니다.

블록 장치의 정확한 크기를 표시하는 가장 좋은 방법은 다음과 같습니다.

blockdev --getsize64 /dev/sda1

따라서 다음 합계를 계산하면:

blockdev --getsize64 /dev/sda1
blockdev --getsize64 /dev/sda2
blockdev --getsize64 /dev/loop0

결과 배열의 사용 가능한 크기는 다음을 사용하여 볼 수 있습니다.

blockdev --getsize64 /dev/md0

그런데, 여기서 구축하려는 배열은 매우 이상하고 잠재적으로 위험할 수 있다고 생각합니다. 두 개의 물리적 블록 장치와 파일 지원 가상 블록 장치로 구성된 어레이의 유용성은 이상합니다. 더 중요한 것은 다음과 같이 말합니다.

/dev/sda1/dev/sda2Windows가 제대로 부팅되기 위해 Windows 7 파티션에 필요한 매우 작은 파티션입니다 .

Windows 7이 중단될 것처럼 들리지만 해당 파티션을 Linux MD RAID 장치로 덮어쓰면 Windows에서 더 이상 사용할 수 없습니다!

관련 정보