Disk Partitioning
Published:
제가 6개월 가까이 쳐다보지 않고 질질 끌던 문제를 드디어 해결했습니다. 이 문제가 어디서부터 시작된 상황인지 천천히 되짚어 보겠습니다.
문제 1: HDD가 인식이 되지 않는다
오늘 제가 실험을 하나 하려고 했는데, WSL이나 VirtualBox로는 제대로 되지 않을 것 같아 아예 우분투를 깔아버리려고 했습니다. 이제 운영체제를 바꾸는 거니까 혹시 몰라서 지금 깔려 있는 윈도우를 백업하려고 했습니다. 그런데 막상 백업을 하려고 하니 백업을 할 수 있는 디스크가 없다고 뜨는 겁니다.
잠깐 제가 쓰는 데스크탑을 설명하겠습니다. 연구실에서 제가 쓰는 데스크탑은 지극히 평범한 친구인데, 라이젠 5600X에 2080이 하나 달려있고, 1TB짜리 M.2 SSD에 4TB짜리 HDD가 하나씩 있습니다. 그리고 그 SSD에 윈도우10이 깔려 있습니다. 운영체제가 SSD에 깔려 있고, 백업은 윈도우가 깔려 있는 디스크가 아닌 다른 디스크에 해야 하니 당연히 HDD에 백업을 해야 할텐데, 그 HDD가 없다고 뜨는 것이었습니다.
그래서 확인을 해 봤습니다. 분명 장치 관리자에는 HDD가 잘 인식이 됩니다. 이렇게 인식이 잘 되는데, 왜 백업을 할 디스크가 없다고 뜨는 것이었을까요.
그 이유는 꽤나 간단했는데, 그냥 볼륨이 할당되지 않은 것이었습니다. 아래 사진과 같은 상황이었죠.
사진에서 디스크 1이 분할되어 있는 것은 제가 문제를 해결 한 다음에 찍은 스크린샷이어서 그렇습니다. 문제를 다룰 당시에는 디스크 1은 하나의 파티션으로 되어 있었습니다.
당연히 저 검은색으로 된 볼륨이 할당이 되지 않았으니 인식이 될 리가 없죠. 그래서 그냥 새 볼륨을 할당했습니다. 그리고 각 검은색 볼륨을 따로 할당하면 논리적인 디스크가 2개가 생겨버리는 것이니, 새 볼륨을 확장시켜 저 두 번째 볼륨까지 묶어 하나로 만들었습니다.
…이게 성공했으면 이 포스팅은 작성하지 않았을 것입니다.
문제 2: EFI 파티션 때문에 볼륨 확장이 되지 않는다
문제는 저 가운데에 자리잡고 있는 EFI 파티션입니다. 저는 처음에 저 도식이 큰 의미가 있는지는 몰랐는데, 보니까 저게 실제로 물리적으로 저렇게 위치하고 있는 것이더군요. 그러니까 저 4TB짜리 HDD의 한가운데에 100MB짜리 파티션이 하나 자리잡고 있어서 저걸 하나의 덩어리로 쓰지 못하는 것이었습니다.
그럼 EFI 파티션이 뭐길래 저렇게 당당하게 자리를 잡고 있냐, 를 찾아보니까 엄청나게 중요한 녀석이었습니다. 사실 저도 정확하게 이해하진 못해서 설명은 링크로 대체하겠습니다. 중요한 것은 저 EFI 파티션이 컴퓨터 부팅을 하는 데에 필수적인 파티션이라는 것입니다.
저는 저 파티션을 지워버리면 되지 않을까? 라고 생각을 했습니다. 왜냐하면 (또 잠깐 배경설명을 하자면) 제가 처음에 이 데스크탑을 설정하던 당시 실수로 윈도우를 HDD에 설치했던 전적이 있기 때문입니다. 만약 저 EFI 파티션이 그 때 만들어진 것이라면 삭제해도 아무런 문제가 없을 것입니다.
그래서 하드디스크에서 SATA 케이블만 제거하고 부팅을 해 봤습니다. 역시나 부팅이 되지 않았습니다. 그러니까 윈도우는 SSD에 잘 깔려 있는데, 윈도우 부팅에 필요한 EFI 파티션은 HDD 한가운데에 디스크를 반 가르는 곳에 떡하니 위치한 것이죠.
문제 2: 원인?
이 문제의 원인을 잠깐 검색을 해 봤는데, 윈도우를 설치할 때 설치하는 대상인 디스크 외에 다른 디스크가 연결되어 있으면 그 디스크를 부팅 디스크로 잡아버릴 수도 있다고 합니다. 윈도우를 SSD에 처음 설치할 때 HDD와 같은 다른 디스크를 제거한 상태로 설치를 하고, 설치가 끝난 이후에 추가적으로 HDD를 연결하는 것이 이런 불상사를 막는 방법이라고 합니다.
하지만 저는 이미 윈도우를 SSD에 설치를 했고, EFI 파티션은 HDD 한가운데에 자리잡은 상황입니다. 오랜 검색 끝에 결국 해답을 찾아냈습니다.
해결방법
출처: https://superuser.com/questions/665923/move-efi-system-partition-to-another-drive
하나하나씩 차근차근 설명하도록 하겠습니다.
- CMD 창을 관리자 권한으로 실행합니다.
diskpart
명령어를 실행합니다.
C:\Windows\system32>diskpart
그러면 프롬프트가 다음과 같이 바뀔 것입니다.
DISKPART>
list disk
명령어를 통해 현재 디스크 정보를 불러옵니다.
DISKPART> list disk
그러면 디스크 0
, 디스크 1
… 이런 식으로 현재 시스템에 설치된 디스크 목록이 나타납니다. 제 경우는 SSD와 HDD가 하나씩 설치되어 있었고, HDD는 디스크 0, SSD는 디스크 1로 되어 있었습니다.
sel disk n
명령어를 통해 다루고자 하는 올바른 디스크를 선택합니다.
여기서 선택하는 디스크는 새로 EFI 파티션을 생성하고자 하는 디스크입니다. 저는 HDD에 위치한 EFI 파티션이 마음에 들지 않아 SSD로 옮기고자 한 것이었으니 여기서 SSD인 디스크 1을 선택했습니다.
DISKPART> sel disk 1
- 새로운 EFI 파티션을 생성합니다.
DISKPART> create part efi size=100
DISKPART> format quick fs=fat32
여기서 사이즈는 MB단위로 EFI 파티션이 어느 정도 크기를 차지하는지 넣으시면 됩니다. 위 사진에서 보셨듯 제 EFI 파티션은 100MB였기 때문에 저는 여기에 100을 적었습니다.
list vol
명령어를 통해 현재 생성된 볼륨을 확인합니다.
위에서 올바르게 EFI 파티션을 생성하셨다면 여기에 새 볼륨이 추가되어 있을 것입니다. 그리고 (아마도) 해당 볼륨이 선택되어 있을 것입니다. 만약 그 볼륨이 선택되어 있지 않다면 다음 명령어로 선택해 줍시다.
DISKPART> sel vol <volume-number>
- 이후의 작업을 위해 새 볼륨에 알파벳을 지정합니다.
DISKPART> assign letter=F
저는 임의로 F
를 지정했습니다.
다시 list vol
명령어를 사용하면 새로 만든 EFI 볼륨에 문자 F
가 지정된 것을 확인할 수 있습니다.
- 이제 DISKPART에서 나와도 무방합니다.
DISKPART> exit
DiskPart 마치는 중...
C:\Windows\system32>
- 새로 만든 볼륨을 윈도우의 부팅 디스크로 설정합니다.
C:\Windows\system32>bcdboot C:\Windows /s F: /f UEFI
저는 C 드라이브에 설치된 윈도우의 부팅 디스크를 방금 만든 F 드라이브로 설정하는 것이기 때문에 위와 같은 명령어를 실행시켰습니다. 만약 디스크 문자가 저와 다르다면 그 상황에 알맞게 문제를 바꾸시면 되겠습니다.
- 다시 DISKPART에 들어가 지정된 문자를 삭제해 줍니다.
C:\Windows\system32>diskpart
...
DISKPART> list disk
DISKPART> sel disk 1
DISKPART> sel vol 2
DISKPART> remove
DISKPART> exit
...
C:\Windows\system32>
만약에 저와 똑같은 상황이시라면, 이렇게 따라하셨을 때 계속 블루스크린이 뜰 것입니다. 일단 컴퓨터를 재시작 한 후 BIOS에 진입해 부팅 디스크를 방금 새로 만든 볼륨으로 설정해 줍니다. 제 경우는 그래도 계속 블루스크린이 떴습니다. 처음 몇번은 블루스크린이 떠서 재시작을 해도 다시 블루스크린이 뜨는 경우가 있었는데, 계속 재부팅을 해 보니 점점 안정화가 되는 듯 했습니다.
기존 EFI 파티션 삭제
이제 기존 HDD에 있는 EFI 파티션을 삭제해야 합니다. 저는 결국 이걸 해내긴 했는데, 정확히 제가 한 어떤 작업이 해결방안이 됐는지 모르겠습니다.
일단 기본적인 파티션 삭제 명령어는 다음과 같습니다.
DISKPART> delete partition override
위에서 하셨던 대로 sel disk
, sel part
명령어를 통해 기존 EFI 파티션을 선택하신 후 실행하시면 됩니다. 그런데 저는 이게 시스템적으로 막혀서 되지 않았습니다. 아마 매우 중요한 시스템인 EFI 파티션을 보호하기 위한 조치로 보입니다.
그래서 저는 HDD를 포맷시켰습니다. 이 부분이 사실 저도 자신이 없는데, DISKPART에 들어가 기존 EFI 파티션을 선택한 뒤 clean all
명령어를 실행하니 EFI 파티션이 사라졌습니다. 이것도 명령어를 실행시키고 CLI가 반응이 없어 중간에 CTRL+C로 abort하니 파티션이 사라져 있었습니다.
이렇게 EFI 파티션을 삭제하고 나니 디스크 0은 왼쪽과 오른쪽 파티션 두 개로 나뉘어진 상태였습니다. 또, 이 두 파티션을 병합하려고 하니 오류가 생기면서 또 병합이 되지 않더군요. 그래서 다시 해당 디스크에 대해 clean all
명령어를 사용하니 두 파티션이 합쳐졌습니다. 뭔가 얼떨결에 문제가 해결이 되다 보니 저도 이 방법에 대한 자신이 없어졌습니다.
하나로 합쳐진 디스크는 이제 새 볼륨을 만들어서 설치하면 마무리가 됩니다.