강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

▒ SU의 CentOS7 강좌26 10. 디스크관리 5 LVM 5.1 SSM

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

▒ SU의 CentOS7 강좌26 10. 디스크관리 5 LVM 5.1. SSM


#################################################
    작성자 : 에스유
    작성일 : 2015.4.13
    대상 OS : CentOS7 x86_64

 본 강좌를 기반으로 서적을 집필합니다. 연재강좌가 마무리되고 몇달 후면 서적이 나오겠죠? CentOS7은 서적도 없지만 강좌도 많이 부족하네요. 리눅스 서버를 10년 넘게 구축하고 관리하고 컨설팅하면서 꼭 필요한 부분과 알아야 할 부분들을 꼼꼼히 체크하면서 강좌를 써보려합니다. 강좌중 오탈자가 있거나 설명이 부족하고 잘못된 경우 service@linux.kr으로 메일한통 부탁드립니다. 강좌가 수정되면 더 많은 분들께 도움이 될것이라 생각하고 강좌를 기반으로 집필될 서적또한 완성도가 높아지지 않을까 생각합니다.
#################################################


 10.3. 디스크 관리 명령어
  10.3.1. hdparm : 디스크 벤치마킹 및 설정
  10.3.2. smartctl : SMART 데이터 확인 및 테스트
  10.3.3. parted : 파티션 생성 & 삭제
  10.3.4. mkfs : 파일 시스템 생성(포맷)
  10.3.5. mkswap : 스왑 생성
  10.3.6. e2label, xfs_admin -L : 파일 시스템 레이블
  10.3.7. mount : 마운트
  10.3.8. unmount : 마운트 해제
  10.3.9. df : 상용중인 파일시스템 용량 확인
  10.3.10. fsck, xfs_repair : 파일시스템 검사 및 복구

 10.4. 디스크 사룡량 분석
  10.4.1. 디스크 사용량분석(Baobab)
  10.4.2. du : 디스크 사용량 분석


위 내용은 인터넷 강좌나, 리눅스 기초 서적에 다루는 내용이기 때문에,
본 연재 강좌에서는 다루지 않고, 서적에 체계적으로 정리할 예정입니다.


10.5. LVM
10.5.1. LVM 개요
LVM(Logical Volume Manager)은 저장장치를 효율적이고 유연하게 관리하기 위한 커널의 일부와 프로그램이다. LVM은 IBM에서 처음 개발하였고 대부분의 OS(유닉스, 리눅스, Windows)에서 이 기능을 제공한다. 리눅스의 LVM은 HP-UX를 모델로 개발되었다.
LVM을 사용하게 되면 여러 디스크를 하나의 볼륨으로 묶을 수 있고, 그 볼륨을 나눠서 사용할 수 있다. LVM을 사용하지 않는다면 소프트웨어 RAID를 사용하여 여러 디스크를 묶을 수 있다. 하지만, 한번 파티션을 나누면 파일시스템의 데이터를 유지하면서 파티션크기를 줄이거나 늘리는 것은 불가능하다. 
CentOS 6까지는 스트라이프(Striped) 논리 볼륨, 미러(Mirrored) 논리 볼륨만을 지원하였지만, CentOS 7부터는 RAID 1,4,5,6,10 논리 볼륨을 지원한다. 또 성능이 우수한 SSD를 캐시용도로 사용하여 전반적인 속도를 높일 수 있는 기능을 지원한다.
LVM은 다음과 같은 장점을 가지고 있다.
- 다양한 디바이스 조합 지원
- 뛰어난 확장성
- 유연한 용량
- 온라인 데이터 재배치
- 볼륨 스냅샷

LVM 구성요소를 살펴보자.

위 그림에서 Disk 4장을 2개의 볼륨 그룹으로 나눴다.
  Disk1은 sda으로 파티션을 나누지 않았다.
  Disk2는 sdb으로 파티션을 나누지 않았다.
  Disk3은 sdc1, sdc2로 2개의 파티션으로 나눴다. 
  Disk4는 sdd1, sdd2로 2개의 파티션으로 나눴다.
파티션을 나누지 않은 디스크와 파티션이 나눠진 볼륨을 PV(물리볼륨:Physical volume)이라고 한다. 위 그림에서 PV는 sda, sdb, sdc1, sdc2, sdd1, sdd2 이렇게 총 6개가 된다.

위 그림에서 각각의 PV를 2개의 VG(Volume group)으로 묶었다. 
  VG1은 sda, sdb, sdc1으로 볼륨그룹을 묶었다.
  VG2는 sdc2, sdd1, sdd2으로 볼륨그룹을 묶었다.
이렇게 여러개의 PV를 VG로 묶을 수 있다. 

위 그림은 3개의 LV(논리 볼륨 : Logical volume)를 생성했다. 
 LV1은 VG1의 특정용량을 할당하여 논리 볼륨을 생성하였다.
 LV2는 VG1의 특정용량을 할당하여 논리 볼륨을 생성하였다.
  LV3은 VG2의 특정 용량을 할당하여 논리 볼륨을 생성하였다.

LVM은 위 그림과 같이 PV(Physical volume)을 VG(Volume group)으로 묶고, 이 VG에서 특정용량을 할당하여 LV(Logical volume)를 생성한다. LV는 용량을 늘이거나 줄이는 것이 가능하다. VG에 포함된 PV들을 온라인 상태에서 추가하거나 제거할 수 있다. 

LV는 기본적으로 선형(Linear) 논리 볼륨이 생성된다. VG에 포함된 PV들을 하나씩 하나씩 사용하게 된다. 즉, Disk1의 용량을 모두 사용하고 Disk2에 데이터를 저장한다. 하지만 속도를 빠르게 하기 위해 2개 이상의 PV에 나눠 저장하는 스트라이프(Striped)논리 볼륨을 사용하며, 안정성을 확보하기 위해 동일한 데이터를 2개 이상의 PV에 중복 저장하는 미러(Mirrored)논리 볼륨을 사용한다. CentOS 7부터는 RAID 1,4,5,6,10 논리 볼륨을 제공하여 안정성과 성능을 모두 확보할 수 있게 되었다. 


10.5.2. SSM
CentOS 6버전까지는 GUI환경에서 LVM을 관리할 수 있는 system-config-lvm 이라는 프로그램을 제공했다. 하지만 CentOS 7부터는 더 이상 system-config-lvm을 지원하지 않고 SSM(System Storage Manager)을 제공한다. SSM은 LVM, btrfs, 암호화된 볼륨을 쉽게 관리하도록 도와주는 TUI 프로그램이다. SSM을 이용하여 볼륨을 관리해 보자.

10.5.2.1. 볼륨 확인 : ssm list
볼륨 추가/삭제/변경 작업을 하기전에 항상 현재 볼륨 내역을 확인해야 한다. 볼륨 내역을 확인하기 위해 다음과 같이 입력한다.

~] # ssm list
-------------------------------------------------------------
Device         Free      Used      Total  Pool    Mount point
-------------------------------------------------------------
/dev/sda                       155.18 GB
/dev/vda                       125.00 GB          PARTITIONED
/dev/vda1                      512.00 MB          /boot
/dev/vda2  58.60 GB  65.90 GB  124.50 GB  centos
/dev/vdb                        97.66 GB
-------------------------------------------------------------
----------------------------------------------------
Pool    Type  Devices      Free      Used      Total
----------------------------------------------------
centos  lvm   1        58.60 GB  65.90 GB  124.50 GB
----------------------------------------------------
-----------------------------------------------------------------------
Volume            Pool    Volume size  FS     FS size       Free  Type    Mount point
-----------------------------------------------------------------------
/dev/centos/swap  centos   1000.00 MB                             linear
/dev/centos/root  centos     64.92 GB  xfs   64.89 GB   61.02 GB  linear  /
/dev/vda1                   512.00 MB  xfs  508.67 MB  415.54 MB  part    /boot
-----------------------------------------------------------------------

위 내역을 살펴보자.
이 리눅스 시스템에는 총 3개의 디스크(/dev/sda, /dev/vda, /dev/vdb)가 존재한다. 그중 2개(/dev/sda, /dev/vdb)는 사용되지 않는 것을 확인할 수 있다. 
스토리지 풀은 1개(centos)가 있으며 LVM으로 구성된 것을 확인할 수 있다. LVM으로 구성되었다면 스토리지 풀은 VG(Volume group)이다. 총 124.5G중 58.6G를 사용하는 것으로 확인 된다.
3개의 볼륨이 마운트된 것을 확인할 수 있다. 

10.5.2.2. 추가할 디스크 파티션 테이블 삭제
추가할 디스크에 파티션테이블이 있다면 다음과 같은 방법으로 삭제한다.

~] # dd if=/dev/zero of=/dev/sda bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0451798 s, 11.3 kB/s



10.5.2.3. LVM 풀에 PV 추가 : ssm add
LVM 풀에 PV(Physical volume)를 추가해 보도록 하자.

~] # ssm add -p centos /dev/sda /dev/vdb
  Physical volume "/dev/sda" successfully created
  Physical volume "/dev/vdb" successfully created
  Volume group "centos" successfully extended

위와 같이 입력하여 각 PV를 생성하고, centos VG에 2개의 PV를 추가하여 VG를 확장한 것이다. 적용된 내역을 살펴보자.

~] # ssm list
--------------------------------------------------------------
Device          Free      Used      Total  Pool    Mount point
--------------------------------------------------------------
/dev/sda   155.18 GB   0.00 KB  155.18 GB  centos
/dev/vda                        125.00 GB          PARTITIONED
/dev/vda1                       512.00 MB          /boot
/dev/vda2   58.60 GB  65.90 GB  124.50 GB  centos
/dev/vdb    97.65 GB   0.00 KB   97.66 GB  centos
--------------------------------------------------------------
-----------------------------------------------------
Pool    Type  Devices       Free      Used      Total
-----------------------------------------------------
centos  lvm   3        311.43 GB  65.90 GB  377.32 GB
-----------------------------------------------------
...

위 결과와 같이 2개의 PV는 centos LVM 풀에 추가되어 centos LVM풀 용량이 확장된 것을 확인할 수있다.


10.5.2.4. LV 생성, 포맷, 마운트 : ssm create
LVM풀에서 원하는 용량만큼 할당하여 새로운 로지컬 볼륨을 생성하고 파일시스템 생성, 마운트까지 한번에 진행해 보도록 하자.

~] # mkdir /backup
~] # ssm create -s 50G -n backup --fstype xfs -p centos /dev/sda /backup
  Logical volume "backup" created
meta-data=/dev/centos/backup       isize=256    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

위와 같이 입력하면, centos LVM풀에서 PV(/dev/sda)에 backup이라는 이름의 로지컬 볼륨을 생성하고, 50G를 할당한다. 파일 시스템은 xfs으로 생성된 볼륨을 포맷하며, 생성된 볼륨은 /backup 디렉토리에 마운트 한다.

~] # ssm list volumes
-----------------------------------------------------------------------
Volume            Pool    Volume size  FS     FS size       Free  Type    Mount point
-----------------------------------------------------------------------
/dev/centos/swap   centos   1000.00 MB                             linear
/dev/centos/root   centos     64.92 GB  xfs   64.89 GB   61.02 GB  linear  /
/dev/centos/backup   centos     50.00 GB  xfs   49.98 GB   49.98 GB  linear  /backup
/dev/vda1                    512.00 MB  xfs  508.67 MB  415.54 MB  part    /boot
-----------------------------------------------------------------------

위 내역과 같이 생성된 볼륨이 /backup 디렉토리와 마운트 된 것을 확인할 수 있다.
시스템 부팅 시 자동으로 마운트 되도록 /etc/fstab에 다음 내용을 추가한다.

/dev/mapper/centos-backup /backup               auto     defaults        0 0


10.5.2.5. LV 확장 및 축소 : ssm resize
앞에서 생성한 볼륨의 용량에 50G를 추가 할당해 보도록 하자. 

~] # ssm resize -s+50G /dev/mapper/centos-backup
  Extending logical volume backup to 100.00 GiB
  Logical volume backup successfully resized
meta-data=/dev/mapper/centos-backup isize=256    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13107200 to 26214400


ssm의 resize 명령어를 사용하여 50G를 추가 할당하였다. 여기서 -s 옵션은 사이즈를 지정하는 것이다. +, - 기호를 사용하여 용량을 추가 또는 줄일 수 있다. 용량단위는 k(kilobytes), m(Megabytes), g(gigabytes), t(terabytes), p(petabytes)를 대/소문자 구분 없이 사용할 수 있다.

~] # df -h /backup
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/centos-backup  100G   33M  100G   1% /backup

df 명령어를 사용하여 볼륨의 용량을 확인하였다. 총 100G로 늘어난 것을 확인할 수 있다. 파일시스템을 확장하는 것은 마운트를 해제하지 않아도 가능하다.

[참고]
xfs는 파일시스템 용량 확장은 가능하지만, 축소는 지원하지 않는다. ext4의 경우는 축소 또한 가능하다. 단, 마운트를 해제한 상태에서 가능하다.

ext4 파일시스템 확장 및 축소

~] # mkdir /backup2
~] # ssm create -s 50G -n backup2 --fstype ext4 -p centos /backup2
~] # ssm resize -s+50G /dev/mapper/centos-backup2
~] # ssm resize -s-50G /dev/mapper/centos-backup2
Do you want to unmount "/backup2"? [Y|n] y
fsck from util-linux 2.23.2

/dev/mapper/centos-backup2: 11/6553600 files (0.0% non-contiguous), 459454/26214400 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/centos-backup2 to 13107200 (4k) blocks.
The filesystem on /dev/mapper/centos-backup2 is now 13107200 blocks long.

  Reducing logical volume backup2 to 50.00 GiB
  Logical volume backup2 successfully resized

위 예는 /backup2 디렉토리를 생성하고, ext4 볼륨을 생성하여 마운트한다. 그리고 50G 용량을 추가 할당하고, 다시 50G를 축소한 결과 이다. 마운트 된 상태이기 때문에 마운트 해제를 하고 용량을 줄이고 볼륨을 줄인 것을 확인할 수 있다.

10.5.2.6. 논리 볼륨 삭제 : ssm remove 
앞에서 생성한 backup 볼륨을 삭제해 보도록 하자.

~] # ssm remove /dev/mapper/centos-backup
Do you really want to remove active logical volume backup? [y/n]: y
  Logical volume "backup" successfully removed

ssm의 remove 명령을 사용하여 backup 볼륨을 삭제하였다. 
ssm list로 볼륨을 확인해 보자.

~] # ssm list
--------------------------------------------------------------
Device          Free      Used      Total  Pool    Mount point
--------------------------------------------------------------
/dev/sda   105.18 GB  50.00 GB  155.18 GB  centos
/dev/vda                        125.00 GB          PARTITIONED
/dev/vda1                       512.00 MB          /boot
/dev/vda2   58.60 GB  65.90 GB  124.50 GB  centos
/dev/vdb    97.65 GB   0.00 KB   97.66 GB  centos
--------------------------------------------------------------
------------------------------------------------------
Pool    Type  Devices       Free       Used      Total
------------------------------------------------------
centos  lvm   3        261.43 GB  115.90 GB  377.32 GB
------------------------------------------------------

-----------------------------------------------------------------------
Volume            Pool    Volume size  FS     FS size       Free  Type    Mount point
-----------------------------------------------------------------------
/dev/centos/swap   centos   1000.00 MB                             linear
/dev/centos/root   centos    64.92 GB  xfs    64.89 GB   61.02 GB  linear  /
/dev/centos/backup2  centos 50.00 GB  ext4   50.00 GB   46.78 GB  linear
/dev/vda1                    512.00 MB  xfs  508.67 MB  415.54 MB  part    /boot
-----------------------------------------------------------------------

위 내용을 보면, backup 볼륨은 삭제되었고, centos 볼륨 풀의 여유 공간이 261.43GB로 늘어난 것을 확인할 수 있다. 
다음으로 디스크 볼륨을 제거해 보자. 위 볼륨 리스트에서 50G 정도 사용되고 있는 볼륨을 제거해 보자.

~] # ssm remove /dev/sda
  Physical volume "/dev/sda" still in use
SSM Info: Unable to remove '/dev/sda'
SSM Error (2001): Nothing was removed!

위 결과와 같이 /dev/sda 볼륨은 사용하고 있기 때문에 제거할 수 없다고 한다.
그럼 사용량이 0KB인 /dev/vdb 볼륨을 제거해 보자.

~] # ssm remove /dev/vdb
  Removed "/dev/vdb" from volume group "centos"

정상적으로 centos 볼륨그룹(Pool)에서 /dev/vdb 볼륨이 제거된 것을 확인할 수 있다.

ssm list로 볼륨을 확인해 보자.

~] # ssm list
--------------------------------------------------------------
Device          Free      Used      Total  Pool    Mount point
--------------------------------------------------------------
/dev/sda   105.18 GB  50.00 GB  155.18 GB  centos
/dev/vda                        125.00 GB          PARTITIONED
/dev/vda1                       512.00 MB          /boot
/dev/vda2   58.60 GB  65.90 GB  124.50 GB  centos
/dev/vdb                         97.66 GB
--------------------------------------------------------------
------------------------------------------------------
Pool    Type  Devices       Free       Used      Total
------------------------------------------------------
centos  lvm   2        163.77 GB  115.90 GB  279.67 GB
------------------------------------------------------

-----------------------------------------------------------------------
Volume            Pool    Volume size  FS     FS size       Free  Type    Mount point
-----------------------------------------------------------------------
/dev/centos/swap   centos   1000.00 MB                             linear
/dev/centos/root   centos    64.92 GB  xfs    64.89 GB   61.02 GB  linear  /
/dev/centos/backup2  centos 50.00 GB  ext4   50.00 GB   46.78 GB  linear
/dev/vda1                    512.00 MB  xfs  508.67 MB  415.54 MB  part    /boot
-----------------------------------------------------------------------

위 결과와 같이 /dev/vdb는 볼륩그룹에서 제거된 것을 확인할 수 있다.



 이상으로 26번째 강좌를 마무리 합니다. CentOS7에서 제공되는 LVM은 RAID의 여러 레벨을 제공하고, SSM이라는 관리툴을 제공하여 TUI 환경에서 LVM및 btrfs, 암호화된 볼륨을 쉽게 통합된 툴을 사용하여 관리할 수 있습니다. 리눅스 기초명령어들은 본 강좌에서 다루지 않겠습니다. CentOS 7의 다양한 기능에 대해서 중점적으로 다루겠습니다. 2015년 4월 13일(월) 열심히 뛰는 에스유였습니다.^^ 
 
#################################################
* 본 강좌는 언제든 갱신될 수 있으며, 원글은 www.linux.co.kr 강좌>리눅스>SU의 연재강좌 에서 수정됩니다. 
* 본 강좌의 일부 또는 전체를 인용하실 경우, 반드시 출처를 밝혀 주시기 바랍니다.

* 수정이력 :
 2015.4.13(월): 최초작성

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  112 명