Tutoriel Linux

Ubuntu 파티션을 fdisk로 확장하기 데이터 손실 없이

Débutant2 min de lecture

우분투 데이터 파티션 뒤에 디스크를 확장하거나 이제 할당되지 않은 공간이 생겼습니까? 이 공간을 사용하기 위해서는 두 가지 작업이 필요합니다: 파티션의 테이블에서 항목을 수정하고, 그 안에 포함된 ext4 파일 시스템을 확장해야 합니다. fdisk는 첫 번째 작업만 수행하고, 그다음 resize2fs가 개입합니다.

우분투 파티션을 확장하기 위한 SSD 및 USB 유지 보수 케이스
파티션 테이블을 수정하기 전에 디스크와 시작 섹터를 확인하세요.

“데이터 손실 없이”라는 제목은 보장이 아닙니다. 이 작업의 안전성은 실제로 테스트된 백업, 올바른 디스크에 대한 확실한 식별, 파티션의 시작 섹터를 정확히 유지하는 데 달려 있습니다. 타겟의 오류나 시작이 수정되면 데이터에 접근할 수 없게 될 수 있습니다. 여기에 설명된 내용과 일치하지 않는 검사가 있으면 작성하기 전에 중지하세요.

파티션이 다루고 있는 경우인지 확인하기

이 과정은 일반적인 Linux 데이터 파티션에 해당하며, 형식은 ext4이고, 루트가 아니며, LVM도 아니고 암호화되지 않고, 소프트웨어 RAID mdraid에 속하지 않습니다. 할당되지 않은 공간은 확장할 파티션 바로 뒤에 위치해야 합니다. 확장 파티션은 MBR의 확장 파티션 내에 위치한 논리 파티션이어서는 안 됩니다. 마지막으로, 이 작업을 위해 마운트 해제 상태여야 합니다: 사용 중인 파티션에 대해 커널의 거부를 우회하려고 하지 마세요.

장치 및 파일 시스템의 구조를 먼저 읽어보세요:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS

부모 디스크, 관심 있는 part 유형 항목, 그 형식 및 마운트 지점을 찾습니다. 중간 레이어, LVM 논리 볼륨, 암호화 또는 RAID가 있는 경우 일반적인 ext4 파티션에 직접 작업하지 않는 것입니다: 중지하고 이 레이어의 절차를 따르세요. 데이터 파티션을 마운트된 루트 파티션과 구별하려면 마운트도 확인하세요:

findmnt

이 문서의 예에서는 /dev/sdX가 전체 디스크를 나타내며, 실제로 식별된 이름, 예를 들어 시스템의 장치를 대체해야 합니다. /dev/sdXN은 이 디스크의 파티션을 나타내며, 실제 번호가 있습니다. 이는 자리 표시자로, 그대로 복사할 경로가 아닙니다. 부모 디스크와 파티션을 혼동하지 마세요: fdisk는 첫 번째를 수령하고, resize2fs는 두 번째에 목표를 둡니다.

식별된 디스크의 테이블과 한계를 검사하세요:

sudo fdisk -l /dev/sdX

/dev/sdX를 이전 단계에서 확인된 디스크로 교체하세요. 테이블 유형(gpt 또는 dos, 즉 MBR), 대상 파티션 번호, 시작 섹터(“Start”), 끝(“End”) 및 유형을 찾습니다. 여유 공간은 파티션의 끝 바로 뒤에서 시작해야 하며, 다른 파티션과 겹치지 않고 연속해서 이어져야 합니다. 공간이 파티션 앞에 있거나 점유된 경우, 디스크가 이미 모두 할당되었거나 이러한 경계를 확실히 설정하지 못한다면 이 방법을 사용하지 마세요. 디스크 식별이 불확실한 경우, 먼저 이 가이드에서 설명한 대로 잘못된 디스크를 지우지 않고 파티션 준비하기를 다시 수행하세요. 만약 확장해야 할 디스크 자체가 있다면, 이러한 사전 작업은 제공된 환경 내에서 수행해야 하며여기서 자세히 다루지 않습니다.

대상으로 마운트된 루트, 파일 시스템이 ext4가 아니거나 MBR의 논리/확장 파티션, LVM, LUKS, mdraid, Btrfs 또는 XFS가 있는 경우에도 중지하세요. 이러한 경우는 다른 레이어 또는 다른 절차에 해당합니다. 앞의 공간을 확보하기 위해 파티션 시작을 절대 이동하지 마세요.

데이터를 백업하고 매개변수를 기록하기

테이블에 접근하기 전에 다른 매체에 데이터의 전체 백업을 수행하고, 이후 실제로 읽거나 복원하여 확인합니다. 테이블의 백업 파일은 이 파일 백업을 대체하지 않습니다. 유지보수 창을 계획하고, 커널이 테이블을 즉시 다시 읽지 못할 경우를 대비하여 제어된 재부팅 가능성을 고려하세요.

테이블의 기록을 허용된 쓰기 위치에 저장할 수 있습니다:

sudo sfdisk -d /dev/sdX > sauvegarde-table-sdX.sfdisk

/dev/sdX 및 sauvegarde-table-sdX.sfdisk라는 이름을 확인된 디스크의 이름과 실제 이름으로 바꾸세요. 생성된 파일이 존재하고, 읽을 수 있으며 비어 있지 않은지 확인하고, 올바른 디스크를 설명하는지 확인한 후, 수정된 디스크 바깥에 복사본을 보관하세요. 리디렉션 >는 호출하는 셸에 의해 실행됩니다: sudo는 자동으로 대상 폴더에 대한 쓰기 권한을 부여하지 않습니다. 이 덤프를 즉석에서 복원하는 방법으로 고려하지 마세요.

세션 외부에서 대상 파티션의 정확한 매개변수를 기록하세요: 번호, 시작 섹터, 끝 섹터, 유형 및 GPT 또는 MBR 테이블. 이들을 이전 명령의 출력 및 아래 설명된 대화형 표시와 비교하세요. 시작 섹터는 중요한 기준입니다: 이는 수정된 항목을 다시 만들 때 동일하게 유지되어야 하며, 이동하지 않아야 합니다. 또한 예상되는 확장이 다른 파티션을 덮치지 않는지도 확인하세요.

시스템이 파티션 또는 파일 시스템 ID를 사용하는 경우, 작업 전에 이를 기록하세요:

blkid

blkid는 파일 시스템의 UUID 값과, 장치에 따라 파티션의 PARTUUID를 표시합니다. 그런 다음 이러한 값들을 마운트 또는 부팅에 사용하는 레퍼런스와 비교하세요. 항목을 삭제한 후 재생성하면 그 PARTUUID가 변경될 수 있으므로 안정적으로 남아있다고 가정하지 마세요. 어떤 참조가 사용 중인지 또는 차이를 처리하는 방법을 모르는 경우, 작성하기 전에 중지하세요. 데이터 백업이 테스트되지 않았거나, 테이블 덤프가 없다거나 불일치하는 경우, 번호, 유형 또는 시작이 확실하지 않은 경우에도 마찬가지입니다.

시작을 이동하지 않고 fdisk에서 항목 재생성하기

fdisk의 작업은 파티션 테이블에 관한 것이지 ext4의 내용에 관한 것이 아닙니다. fdisk의 문서는 GPT 및 MBR 테이블 조작에 대해 설명하고 확인해야 할 파티션 정보를 다룹니다. 이미 식별된 부모 디스크에서 도구를 여세요:

sudo fdisk /dev/sdX

자리 표시자를 디스크 전체로 대체하고, 파티션 이름은 사용하지 마세요. 인터랙티브 인터페이스에서 각 표시를 이해한 후에만 진행하세요:

  • p를 입력하여 테이블을 표시합니다. 다시 Target 파티션, 번호, 유형 및 시작 섹터를 찾습니다. 이들은 여러분의 메모와 일치해야 합니다.
  • d로 항목을 삭제할 때는 target 파티션에만 해당됩니다. 도구가 번호를 요구하는 경우, 확인된 번호를 선택하세요; 추측하지 말고 다른 항목은 삭제하지 마세요.
  • n을 사용하여 교체 항목을 생성하세요. 동일한 번호를 유지하고, 기록한 첫 번째 섹터를 정확히 입력하세요. 여유 공간이 있는 곳에서 더 멀리 위치한 끝을 선택하되, 디스크를 초과하거나 다른 파티션과 겹치지 않도록 하세요. fdisk의 정렬 제안도 고려하세요; 다른 시작을 포함하거나 경고를 이해하지 못하는 경우 진행하지 마세요.
  • 원래의 파티션 유형이 유지되는지를 확인하세요. p로 테이블을 다시 표시하고, 메모와 비교하세요: 동일 번호, 동일 유형, 동일 Start, 새로운 예상 끝 및 다른 모든 항목은 그대로 유지됩니다.

모든 값이 일치하고 표시된 메시지를 이해했을 때만 w로 작성을 확인하세요. 그렇지 않으면 작성하지 않고 종료하고 진단을 다시 수행합니다. fdisk가 ext4 서명을 보고 이를 삭제할 것을 제안하면 이를 거부하세요: 그 서명을 삭제하지 마세요. 경고, 예상치 못한 대화 또는 번호 매기기 불일치는 중지 사유로, 무작위로 무엇인가 시도하기 위한 초대가 아닙니다.

작성을 마친 후 테이블은 더 큰 파티션을 설명하지만, ext4는 여전히 초기 크기를 유지합니다. 두 번째 작업이 공간을 추가하여 파일 시스템이 사용하도록 해야 합니다.

커널에 테이블 재읽기 요청하기

해당 디스크의 커널에 테이블을 재읽도록 요청하세요:

sudo partprobe /dev/sdX

항상 확인된 부모 디스크를 사용하세요. partprobe의 오류 없는 반환은 새 크기가 실제로 인식되고 있다는 것을 증명하지 않습니다. 테이블을 다시 읽고 커널이 표시하는 크기를 확인하세요:

sudo fdisk -l /dev/sdX
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS

시작 섹터는 변경되지 않아야 하고, 새로운 끝이 예상되는 범위 내에 있어야 하며, lsblk는 타겟 파티션에서 새로운 크기를 표시해야 합니다. 다른 항목에는 이상이 없어야 합니다. 커널이 테이블을 재읽지 않으면 resize2fs를 실행하지 마세요. 작업은 연기하세요; 환경이 허용하는 경우 제어된 재부팅을 준비한 다음, 확장하기 전에 테이블과 인식된 크기를 다시 확인하세요. 마운트된 루트에 대해 재읽기가 실패한다면, 중지하세요: 이 경우는 이 튜토리얼의 범위에 벗어납니다.

ext4 확장 및 결과 확인하기

커널이 확장된 파티션을 정확히 인식하고 있으며 시작 섹터가 기록된 값과 동일하다면, ext4 파일 시스템을 확장할 수 있습니다:

sudo resize2fs /dev/sdXN

/dev/sdXN을 ext4 파티션의 실제 이름으로 교체하세요, 부모 디스크가 아닙니다. resize2fs는 기존 컨테이너 내에서 ext2/3/4를 확장하며, 파티션 테이블을 수정하지 않습니다. 따라서 그 실행 순서는 테이블이 성공적으로 확장되고 재읽기 된 후에 따릅니다, resize2fs의 문서가 설명한 바와 같습니다. 다른 섹터의 위치에 시작된 파티션은 파일 시스템을 완전히 잃을 수 있으므로, 시작이 정확히 일치하지 않는 경우 이 명령을 사용하지 마세요.

명령이 완료될 때까지 기다리며 오류가 없음을 확인하세요. 이후 파일 시스템과 식별자를 점검하세요:

lsblk -f
blkid

타겟은 항상 ext4로 나타나야 하며, 예상되는 식별자와 UUID/PARTUUID 차이도 포함 및 처리되어야 합니다. PARTUUID의 참조가 변경되었다면, 시스템을 다시 서비스하기 전에 영향을 받는 마운트 또는 부팅 참조를 확인하고 수정하세요. 항목을 재생성한 후 참조가 유효하다고 가정하지 마세요.

마운트 된 파일 시스템에서 사용 가능한 공간을 확인하려면 다음을 사용하세요:

df -hT

특정 환경에 따라 절차에 따라 다시 마운트한 후, 해당 파티션의 행은 ext4 유형과 더 많은 사용 가능 용량을 나타내야 합니다. 파티션이 마운트되지 않았다면, df에서 보이지 않는 것은 정상적이며 실패를 나타내지 않습니다. 명심하세요: 더 큰 테이블이 있다는 것이 ext4도 더 커졌다는 의미는 아니며, resize2fs가 성공해야 합니다.

중지해야 할 오류 및 상황

디스크를 식별할 수 없거나 시작 섹터가 불명확하거나 다르거나, 백업이 확인되지 않았거나, 파티션 뒤에 인접한 공간이 없거나 다른 파티션이 덮칠 위험이 있는 경우, 더 이상 진행하지 마세요. ext4 서명 경고, 변경된 유형, fdisk 대화 이해 실패 또는 커널에서의 재읽기 실패 시에도 중지하세요.

resize2fs의 오류, 테이블의 크기와 일치하지 않는 크기, 예상치 못한 UUID/PARTUUID 또한 서비스 복귀를 중단하고 상황을 점검해야 합니다. 형식, 즉흥적인 수리 또는 테이블의 새 수정으로 이어지지 마세요. 여기에서 설명된 간단한 ext4의 경우를 벗어난 경우, 실제 레이어에 해당하는 문서를 사용하세요.

주요 사항 정리

이 ext4 데이터 파티션의 경우, 순서는 다음과 같습니다: 테스트된 백업, 확인 및 매개변수 기록, 동일 시작 섹터로 항목 확장, 커널에 의해 확인된 재읽기, 그런 다음 resize2fs로 ext4 확장. 디스크, 섹터, 식별자 또는 예상 결과에 대한 조금의 불확실성도 테이블 작성을 하지 않도록 충분한 이유가 됩니다.