Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

우분투 설치 후 MBR 디스크 드라이브 여유 공간이 인식되지 않은 경우 - Logical Volume Management

Ubuntu 20.04.2 버전의 서버를 설치했더니 Ubuntu 운영체제가 설치된 sda 드라이브의 여유 공간이 터무니없이 적게 나옵니다.

$ df -h

Filesystem                         Size  Used Avail Use% Mounted on
udev                                12G     0   12G   0% /dev
tmpfs                              2.4G  1.5M  2.4G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  196G   11G  176G   6% /
tmpfs                               12G     0   12G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                               12G     0   12G   0% /sys/fs/cgroup
/dev/sdb                           1.8T   77M  1.7T   1% /datadisk
/dev/sda2                          976M  105M  805M  12% /boot
/dev/loop0                          70M   70M     0 100% /snap/lxd/19188
/dev/loop1                          56M   56M     0 100% /snap/core18/1944
/dev/loop2                          32M   32M     0 100% /snap/snapd/10707
tmpfs                              2.4G     0  2.4G   0% /run/user/1000

sda 디스크가 원래 1.4TB 용량인데 그 부분이 없는 것입니다. 반면 sdb 디스크의 경우 정상적으로 1.8TB가 잡혀 있고, 그다음 크게 잡힌 영역이 /dev/mapper/ubuntu--vg-ubuntu--lv인데 200GB 정도에 불과합니다. 즉, 1.2TB에 해당하는 공간이 안 보이는 것입니다.

그런데, cfdisk 명령어로 sda의 공간이 분명하게 1.4TB가 있음을 확인할 수 있습니다.

$ cfdisk

                                                           Disk: /dev/sda
                                       Size: 1.37 TiB, 1500301910016 bytes, 2930277168 sectors
                                    Label: gpt, identifier: D39CD9F7-5BFF-4045-B76B-88E7E376A3CB

    Device                                Start                   End              Sectors            Size Type
>>  /dev/sda1                              2048                  4095                 2048              1M BIOS boot                 
    /dev/sda2                              4096               2101247              2097152              1G Linux filesystem
    /dev/sda3                           2101248            2930274303           2928173056            1.4T Linux filesystem
    Free space                       2930274304            2930277134                 2831            1.4M

이에 대한 원인은 lsblk 명령어가 설명해 주는데요,

$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 69.9M  1 loop /snap/lxd/19188
loop1                       7:1    0 55.4M  1 loop /snap/core18/1944
loop2                       7:2    0 31.1M  1 loop /snap/snapd/10707
sda                         8:0    0  1.4T  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0  1.4T  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0  200G  0 lvm  /
sdb                         8:16   0  1.8T  0 disk /datadisk
sr0                        11:0    1 1024M  0 rom  

(개인적인 추측으로) MBR 파티션이기 때문에 파티션을 4개 이상 나눌 수 없으므로 이에 대한 배려를 하는 차원에서 lvm(Logical Volume Management)로 처리를 해버린 듯합니다. (윈도우 운영체제와 비교하면, 파티션을 좀 더 생성할 수 있도록 확장 파티션 유형으로 구성하고 그중에서 "ubuntu--vg-ubuntu--lv" 파티션으로 200GB를 할당해 놓은 것입니다.) (참고로, LVM은 파일 시스템이 관리하고 있는 파티션의 용량을 동적으로 늘릴 수 있도록 ext3에서 도입됐다고 합니다.)

sda3 구역이 이미 LVM으로 초기화되었기 때문에 이것을 다시 ext4 파티션으로 포맷할 수도 없고 마운팅도 안 됩니다.

$ sudo mkfs.ext4 /dev/sda3
mke2fs 1.45.5 (07-Jan-2020)
/dev/sda3 contains a LVM2_member file system
Proceed anyway? (y,N) y
/dev/sda3 is apparently in use by the system; will not make a filesystem here!

$ sudo mount /dev/sda3 /extdisk
mount: /extdisk: unknown filesystem type 'LVM2_member'.

아마도 lvm을 제거해야 할 것 같은데, 그럼 "ubuntu--vg-ubuntu--lv" 영역도 초기화될 것이므로 (해당 파티션이 '/' 루트 디렉터리와 마운팅되어 있어) 사실상 운영체제를 다시 설치해야 하는 것과 마찬가지로 보입니다. 어쩔 수 없이, 다음의 글에서 설명하는 방법을 따라 그냥 lvm 내에 파티션을 생성하는 식으로 처리해야겠군요. ^^

LVM 기반 Ubuntu Disk 확장
; https://youngmind.tistory.com/entry/LVM-%EA%B8%B0%EB%B0%98-Ubuntu-Disk-%ED%99%95%EC%9E%A5

How to Manage and Use LVM (Logical Volume Management) in Ubuntu
; https://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/




그나저나, LVM이 할당한 "ubuntu--vg-ubuntu--lv" 파티션의 영역이 200GB면 1.4TB 크기에 비해 다소 빈약해 보입니다. 해당 파티션이 나름 "/" 루트에 매핑되어 있기 때문에,

# df
Filesystem                         1K-blocks     Used  Available Use% Mounted on
udev                                12265428        0   12265428   0% /dev
tmpfs                                2461968     1488    2460480   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  205375464 10737880  184135440   6% /
tmpfs                               12309828        0   12309828   0% /dev/shm
tmpfs                                   5120        0       5120   0% /run/lock
tmpfs                               12309828        0   12309828   0% /sys/fs/cgroup
/dev/sdb                          1921803544    77852 1824033580   1% /datadisk
/dev/sda2                             999320   107032     823476  12% /boot
/dev/loop0                             71680    71680          0 100% /snap/lxd/19188
/dev/loop1                             56832    56832          0 100% /snap/core18/1944
/dev/loop2                             31872    31872          0 100% /snap/snapd/10707
tmpfs                                2461964        0    2461964   0% /run/user/1000

좀 더 용량을 추가해보려고 하는데요, 대략 300GB를 다음과 같이 lvextend 명령어로 추가할 수 있습니다.

# lvextend -L+300G /dev/mapper/ubuntu--vg-ubuntu--lv 
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 200.00 GiB (51200 extents) to 500.00 GiB (128000 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.

# df
Filesystem                         1K-blocks     Used  Available Use% Mounted on
...[생략]...
/dev/mapper/ubuntu--vg-ubuntu--lv  205375464 10737884  184135436   6% /
...[생략]...

그런데 df로 확인했는데도 여전히 용량 변화가 없습니다. ^^ 찾아보면 resize2fs로 다시 한번 파티션을 조정해야 한다고.

# resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 25, new_desc_blocks = 63
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 131072000 (4k) blocks long.

# df
Filesystem                         1K-blocks     Used  Available Use% Mounted on
udev                                12265428        0   12265428   0% /dev
tmpfs                                2461968     1488    2460480   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  515010816 10747436  481157664   3% /
tmpfs                               12309828        0   12309828   0% /dev/shm
tmpfs                                   5120        0       5120   0% /run/lock
tmpfs                               12309828        0   12309828   0% /sys/fs/cgroup
/dev/sdb                          1921803544    77852 1824033580   1% /datadisk
/dev/sda2                             999320   107032     823476  12% /boot
/dev/loop0                             71680    71680          0 100% /snap/lxd/19188
/dev/loop1                             56832    56832          0 100% /snap/core18/1944
/dev/loop2                             31872    31872          0 100% /snap/snapd/10707
tmpfs                                2461964        0    2461964   0% /run/user/1000

자, 그래서 다시 lsblk로 확인하면 "/" 루트 디렉터리의 용량이 500GB로 늘어났습니다.

# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 69.9M  1 loop /snap/lxd/19188
loop1                       7:1    0 55.4M  1 loop /snap/core18/1944
loop2                       7:2    0 31.1M  1 loop /snap/snapd/10707
sda                         8:0    0  1.4T  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0  1.4T  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0  500G  0 lvm  /
sdb                         8:16   0  1.8T  0 disk /datadisk
sr0                        11:0    1 1024M  0 rom  




1.4TB 중 이제 900GB 정도가 남았는데요. 이것을 파티션으로 정의하기 위해 우선 LVM의 Volume group 이름을 알아야 합니다.

# vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.36 TiB
  PE Size               4.00 MiB
  Total PE              357442
  Alloc PE / Size       128000 / 500.00 GiB
  Free  PE / Size       229442 / <896.26 GiB
  VG UUID               6wIlpV-eCuS-0fF4-Qwa6-XDLm-znyS-xMVzpX

그럼, 해당 볼륨 그룹 이름으로 lvcreate 명령어를 사용해 새롭게 파티션을 생성할 수 있습니다.

# lvcreate -L 896G -n lvsda3data ubuntu-vg
WARNING: atari signature detected on /dev/ubuntu-vg/lvsda3data at offset 478. Wipe it? [y/n]: y
  Wiping atari signature on /dev/ubuntu-vg/lvsda3data.
  Logical volume "lvsda3data" created.

# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 69.9M  1 loop /snap/lxd/19188
loop1                       7:1    0 55.4M  1 loop /snap/core18/1944
loop2                       7:2    0 31.1M  1 loop /snap/snapd/10707
sda                         8:0    0  1.4T  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0  1.4T  0 part 
  ├─ubuntu--vg-ubuntu--lv 253:0    0  500G  0 lvm  /
  └─ubuntu--vg-lvsda3data 253:1    0  896G  0 lvm  
sdb                         8:16   0  1.8T  0 disk /datadisk
sr0                        11:0    1 1024M  0 rom  

당연히 이렇게 확보한 파티션을 포맷해야 하고,

# mkfs -t ext4 /dev/ubuntu-vg/lvsda3data
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 234881024 4k blocks and 58720256 inodes
Filesystem UUID: 58bf7379-6aa2-4299-be3d-b3020ec1c9ee
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): 
done
Writing superblocks and filesystem accounting information:          
done

새로운 디렉터리를 만든 후 그쪽으로 마운트 시켜줍니다.

# mkdir /extdisk
# mount -t ext4 /dev/ubuntu-vg/lvsda3data /extdisk

# df -h
Filesystem                         Size  Used Avail Use% Mounted on
udev                                12G     0   12G   0% /dev
tmpfs                              2.4G  1.5M  2.4G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  492G   11G  459G   3% /
tmpfs                               12G     0   12G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                               12G     0   12G   0% /sys/fs/cgroup
/dev/sdb                           1.8T   77M  1.7T   1% /datadisk
/dev/sda2                          976M  105M  805M  12% /boot
/dev/loop0                          70M   70M     0 100% /snap/lxd/19188
/dev/loop1                          56M   56M     0 100% /snap/core18/1944
/dev/loop2                          32M   32M     0 100% /snap/snapd/10707
tmpfs                              2.4G     0  2.4G   0% /run/user/1000
/dev/mapper/ubuntu--vg-lvsda3data  881G   77M  837G   1% /extdisk




참고로, 물리적 디스크는 다음과 같은 식으로 표기됩니다.
[디스크 장치 표기]
IDE의 경우, Primary master/slave, Secondary master/slave 각각에 대해 /dev/hda, /dev/hdb, /dev/hdc, /dev/hdd로 매핑
SCSI, SATA의 경우, 순서대로 /dev/sda, /dev/sdb,... 로 매핑

[파티션 표기]
각각의 장치별로 파티션 순서대로 표기, 예를 들어 sda에 2개의 파티션을 생성하면 sda1, sda2 방식으로 매핑

[MBR 방식의 파티션 분할 방식]
주 파티션은 최대 4개 허용(sda1, sda2, sda3, sda4)
만약 4개 이상의 파티션을 만들려면 3개의 주 파티션(sda1, sda2, sda3)을 만들고, 남은 하나는 확장 파티션(sda4)으로 내부에 12개(sda5 ~ sda16)까지 가능




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/2/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 121  122  123  124  [125]  126  127  128  129  130  131  132  133  134  135  ...
NoWriterDateCnt.TitleFile(s)
10797정성태5/23/201521604VC++: 91. 자식 스레드에 자동 상속되는 TEB의 SubProcessTag 필드파일 다운로드1
10796정성태5/23/201532431오류 유형: 293. SQL Server Management Studio 실행 시 "Cannot find one or more components" 오류
10795정성태5/23/201530565오류 유형: 292. InstallUtil로 .NET 서비스 등록 시 오류 - Operation is not supported. (Exception from HRESULT: 0x80131515). [3]
10794정성태5/22/201525520개발 환경 구성: 267. (무료) 마이크로소프트 온라인 강좌 소개 - 네트워킹 기초 [1]
2925정성태5/14/201525119디버깅 기술: 73. PDB 기호 파일의 경로 구성 방식파일 다운로드1
2924정성태5/14/201528426VS.NET IDE: 100. 비주얼 스튜디오 원격 디버깅 시 'Unknown function' 콜스택이 나온다면?
2923정성태5/12/201587769기타: 52. 도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 [17]
2922정성태5/12/201524630오류 유형: 291. ssindex.cmd 실행 시 '...[tfs_collection_url]...' not found in srcsrv.ini 오류 발생
2921정성태5/9/201530976개발 환경 구성: 266. 인텔에서 구현한 최대 절전 모드 기능 - Intel® Rapid Start Technology
2920정성태5/9/201522118오류 유형: 290. 디스크 관리자의 파티션 축소 시, There is not enough space available on the disk(s) to complete this operation.
2919정성태5/9/201521987오류 유형: 289. Error: this template attempted to load component assembly 'NuGet.VisualStudio.Interop, ...'
2918정성태5/9/201540534Windows: 111. 복구(Recovery) 파티션 삭제하는 방법 [3]
2917정성태5/9/201530962오류 유형: 288. .NET Framework 4.6이 설치된 경우 "Intel® Rapid Storage Technology (Intel® RST) RAID Driver"가 설치 안 되는 문제 [5]
2916정성태5/9/201532018오류 유형: 287. 레지스트리 권한 오류 - Cannot edit [Registry key name]: Error writing the value's new contents.
2915정성태5/9/201531139개발 환경 구성: 265. TrustedInstaller 권한으로 프로그램 실행시키는 방법 [11]
2914정성태5/9/201528488DDK: 7. 정식 인증서가 있는 경우 Device Driver 서명하는 방법 [2]
2913정성태4/30/201526247.NET Framework: 511. Build 2015 행사에서 소개된 (맥/리눅스/윈도우 용 무료) Visual Studio Code 개발 도구 [8]
2912정성태4/29/201521979오류 유형: 286. VirtualBox에 Windows 8/2012 설치 시 "Error Code: 0x000000C4" 오류 발생
2911정성태4/29/201520595오류 유형: 285. Visual Studio 2015를 제거한 경우 Microsoft.VisualStudio.Web.PageInspector.Loader 어셈블리를 못 찾는 문제 [2]
2910정성태4/29/201524476오류 유형: 284. System.TypeLoadException: Could not load type 'System.Reflection.AssemblySignatureKeyAttribute' from assembly [1]
2909정성태4/29/201520609오류 유형: 283. WCF 연결 오류 - Expected record type 'PreambleAck'
2908정성태4/29/201528906오류 유형: 282. 원격에서 SQL 서버는 연결되지만, SQL Express는 연결되지 않는 경우
2907정성태4/29/201518965.NET Framework: 510. 제네릭(Generic) 인자에 대한 메타데이터 등록 확인
2906정성태4/28/201521589오류 유형: 281. DebugView로 인한 System.Diagnostics.Trace.WriteLine 멈춤(Hang) 현상
2905정성태4/27/201521944오류 유형: 280. HttpResponse.Headers.Add에서 "System.PlatformNotSupportedException: This operation requires IIS integrated pipeline mode." 예외 발생
2904정성태4/27/201527197DDK: 6. ZwTerminateProcess로 프로세스를 종료하는 Device Driver 프로그램 [2]파일 다운로드1
... 121  122  123  124  [125]  126  127  128  129  130  131  132  133  134  135  ...