LVM을 사용하여 하드 디스크 중간에 있는 확장 파티션의 크기를 조정합니다.

LVM을 사용하여 하드 디스크 중간에 있는 확장 파티션의 크기를 조정합니다.

LVM의 여유 공간(50GB)을 사용하기 위해 파티션을 추가하고 싶습니다. 디스크가 여러 번 확대되어 이 파티션에 혼란이 발생했습니다. 어떻게 하면 정상으로 되돌리고 여유 공간을 사용할 수 있나요?

# cfdisk /dev/sda
Disk: /dev/sda
Size: 200 GiB, 214748364800 bytes, 419430400 sectors
Label: dos, identifier: 0x000cc491

    Device      Boot   Start           End       Sectors      Size     Id Type
>>  /dev/sda1   *       2048        499711        497664      243M     83 Linux
    /dev/sda2         501758     167770111     167268354     79.8G      5 Extended
    └─/dev/sda5       501760     167770111     167268352     79.8G     8e Linux LVM
    /dev/sda3      167770112     209715199      41945088       20G     83 Linux
    /dev/sda4      209715200     314572799     104857600       50G     83 Linux
    Free space     314572800     419430399     104857600       50G

나중에 논리 파티션을 추가할 수 있도록 확장 파티션의 크기를 먼저 조정해 보았습니다. 하지만 이것은 작동하지 않습니다.

(parted) print                                                            
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  256MB   255MB   primary   ext2         boot
 2      257MB   85.9GB  85.6GB  extended
 5      257MB   85.9GB  85.6GB  logical                lvm
 3      85.9GB  107GB   21.5GB  primary
 4      107GB   161GB   53.7GB  primary

(parted) resizepart                                                       
Partition number? 2                                                       
End?  [85.9GB]? 135.6                                                     
Error: Can't have the end before the start! (start sector=501758 length=-236914)

추가 정보:

# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda3  root lvm2 a--  20.00g    0 
  /dev/sda4  root lvm2 a--  50.00g    0 
  /dev/sda5  root lvm2 a--  79.76g    0 

# lvs
  LV     VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   root -wi-ao---- 146.48g                                                    
  swap_1 root -wi-ao----   3.28g   

                                             
# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  root   3   2   0 wz--n- 149.75g    0 

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-0       145G  129G  8.6G  94% /
udev             10M     0   10M   0% /dev
tmpfs           1.6G  9.2M  1.6G   1% /run
tmpfs           4.0G     0  4.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.0G     0  4.0G   0% /sys/fs/cgroup
/dev/sda1       228M   53M  164M  25% /boot
tmpfs           801M     0  801M   0% /run/user/1000

답변1

새 파티션을 추가하는 대신 기존 파티션을 늘리는 것은 어떨까요?

모든 파티션은 이미 단일 LVM 볼륨 그룹의 일부이므로 파티션을 더 추가할 필요 없이 기존 파티션을 확장하기만 하면 됩니다.

parted /dev/sda -- resizepart 4 100%
pvresize /dev/sda4

이것이 이 문제를 해결하는 가장 쉬운 방법일 것입니다.


기존 파티션 순서를 해결하는 것은 약간 복잡합니다. 이 문제를 해결하는 가장 쉽고 안전한 방법은 새 디스크를 연결하고 마이그레이션하는 것입니다.

데이터를 적절하게 섞을 수 있습니다. 이전에 이 작업을 수행한 적이 있습니다.PV1의 LVM을 PV2로 이동. 그러나 분할 문제로 인해 이 솔루션을 직접 적용할 수 없으며 분할되지 않은 공간을 매핑하는 것은 losetup --offset잘못된 오프셋을 얻을 수 있고 재부팅 후에도 유지되지 않으므로 위험합니다.

또 다른 옵션은 기본 파티션과 논리 파티션이 구분되지 않는 GPT 파티션으로 변환하여 원하는 만큼 파티션을 생성할 수 있는 것입니다. 그러나 그렇게 하면 부트로더를 다시 설치할 때까지 시스템을 부팅할 수 없게 됩니다. Grub의 경우 64초에서 2047초 사이에 배치할 수 있는 bios_grub 파티션도 생성해야 합니다(첫 번째 파티션 전, 정렬 무시).

pvdisplay표시 되면 각 파티션을 1MiB씩 축소하고 기본/논리 파티션 간에 변환할 수도 있습니다. msdos 논리 파티션 정보는 이러한 파티션 사이의 간격에 저장되므로 축소가 필요합니다. 현재 sda5-sda3-sda4 사이에는 이러한 간격이 없으므로 논리 파티션에 직접 매핑할 수 없습니다.not usable x.y MiBx >= 1

답변2

일반적으로

그건 작동하지 않습니다. 최소한 데이터를 이동하거나 기존 파티션을 변경하지 않고 말이죠.

기본 파티션이 부족한 경우에는 논리 파티션만 추가할 수 있습니다. 그러나 이는 확장 파티션의 경계 내에 있어야 합니다. 따라서 블록 장치 끝에 있는 새 공간을 사용할 수 있으려면 확장 파티션이 블록 장치 끝에 있어야 합니다. 그런 다음 상위 경계를 장치의 새 끝으로 이동하고 새 논리 파티션을 생성할 수 있습니다.

이론적으로는 확장 파티션을 기본 파티션으로 확장하고 가짜 논리 파티션(어떤 목적으로도 사용해서는 안 됨)을 만들어 기본 파티션을 "덮어쓰는" 것이 가능합니다. 파티셔닝 도구는 이에 반응할 것입니다. 이는 곧 재난이 일어날 것처럼 보이므로 권장하지 않습니다.

가능한 해결책

이로 인해 문제가 발생하지 않으면 sda3및를 sda4논리 파티션으로 변환할 수 있습니다. 나는 이런 일을 한 적이 없습니다. 이것이 작동하려면 논리 파티션 사이에 32K의 간격이 있어야 하기 때문에(연결된 목록으로 구현되므로) , sda3sda4의 크기를 약간 줄여야 한다고 생각합니다 .sda5

그래서 당신은해야합니다

  • 이 파티션의 파일 시스템을 32K 이상 축소
  • 이 32K만큼 파티션의 상위 경계를 이동합니다.
  • 확장 및 기본 파티션 항목의 크기를 변경합니다(한 번에 모두 권장).

가장 쉬운 방법은 아마도 덤프 파티션 테이블을 사용하여 sfdisk -d /dev/sda변경하고( sda3, sda6) sda4sda7구성을 가져오는 것입니다( sfdisk /dev/sda <modified_dump.sfdisk).

또 다른 방법은 파티션을 삭제하고(그 안의 데이터에는 영향을 주지 않음) 파티션을 동일한 시작 섹터이지만 더 작은 크기의 논리 파티션으로 생성하는 것입니다(선택한 파티션 도구를 사용하여). 두 작업을 수행하려면 다른 매체에서 부팅해야 합니다.

어쨌든 원본 파티션 테이블의 복사본을 다른 드라이브에 저장하세요!

관련 정보