/ LVM

RHCSA : Create and configure file systems - Extend existing logical volumes

LVM XFS EXT4 Logical Volume Shrinking Logical Volume rhcsa-new redhat-new
https://4am.kr/rhcsa-create-and-configure-file-systems-extend-existing-logical-volumes/

RHCSA : 파일 시스템 생성 및 구성 – 기존 논리 볼륨 확장

RHCSA 주제입니다. 아래 참조된 사이트를 번역 및 내용 추가하였습니다.

사전 준비사항

이 실습은 200MB 정도의 사용가능한 공간을 필요로 함.

암호화되지 않은 논리 볼륨을 확장하기에 앞서, mylv라는 이름의 100MB크기의 논리 볼륨을 myvg라는 볼륨 그룹에 생성하자.

[root@server2 ~]# lvcreate --size 100M --name mylv myvg
  Logical volume "mylv" created
[root@server2 ~]# 

vfat이 아닌 암호화되지 않은 Ext4Xfs 파일 시스템만이 확장 가능하다.

노트: 이 실습에서, lvextendlvreduce 커맨드가 논리 볼륨의 사이즈를 늘리거나 줄이는데 사용된다. 편의를 위해, lvresize 커맨드는 여기서 다루지 않는다. 하지만, 같은 명령들이 이 커맨드와 약간 다른 방식으로 작동함을 알 수 있다(아래 추가사항의 코멘트를 참조할 것).

Ext4 논리 볼륨 확장

1. ext4 파일 시스템을 생성된 논리 볼륨에 생성하려면, 다음과 같이 입력한다.
[root@server2 ~]# mkfs.ext4 /dev/myvg/mylv
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

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

[root@server2 ~]# 
2. 새 파일 시스템을 /mnt에 마운트한다.
[root@server2 ~]# mount /dev/myvg/mylv /mnt
[root@server2 ~]# 
3-1. 볼륨 그룹의 사용 가능한 모든 공간을 암호화되지 않은 ext4로 포맷된 논리 볼륨으로 할당하려면(여기서는 /dev/myvg/mylv를 의미) 다음과 같이 입력한다.
[root@server2 ~]# lvextend -l +100%FREE -r /dev/myvg/mylv
  Extending logical volume mylv to 296.00 MiB
  Logical volume mylv successfully resized
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/myvg-mylv is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/mapper/myvg-mylv is now 303104 blocks long.

[root@server2 ~]# 

노트: -r옵션을 사용하면, 파일 시스템은 언마운트 할 필요 없이 자동으로 확장된다.

3-2. 암호화되지 않은 ext4로 포맷된 논리 볼륨(여기서는 /dev/myvg/mylv를 의미)의 크기를 50MB 확장하려면 다음과 같이 입력한다.
[root@server2 ~]# lvextend --size +50M -r /dev/myvg/mylv
  Rounding size to boundary between physical extents: 52.00 MiB
  Extending logical volume mylv to 152.00 MiB
  Logical volume mylv successfully resized
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/myvg-mylv is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/myvg-mylv is now 155648 blocks long.

[root@server2 ~]# 
3-3. 꼭 3-2와 같이 하지 않고, 두 단계로 나누어서 해도 된다.
[root@server2 ~]# lvextend --size +50M /dev/myvg/mylv
  Rounding size to boundary between physical extents: 52.00 MiB
  Extending logical volume mylv to 152.00 MiB
  Logical volume mylv successfully resized
[root@server2 ~]# resize2fs /dev/myvg/mylv
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/myvg/mylv is now 155648 blocks long.

[root@server2 ~]# 

Ext4 논리 볼륨 축소

거꾸로, 논리 볼륨의 사이즈를 축소하려면(여기서는 50MB 만큼), 다음 과정을 진행한다.

1. 파일 시스템을 언마운트한다(여기서는 /dev/myvg/mylv를 의미).
[root@server2 ~]# umount /dev/myvg/mylv
[root@server2 ~]#
2. 논리 볼륨(여기서는 /dev/myvg/mylv를 의미)의 사이즈를 축소하면서 관련된 파일 시스템도 동시에 축소(-r옵션)하려면 다음과 같이 입력한다.
[root@server2 ~]# lvreduce --size -50M -r /dev/myvg/mylv
  Rounding size to boundary between physical extents: 48.00 MiB
fsck from util-linux 2.23.2
/dev/mapper/myvg-mylv: 11/37544 files (9.1% non-contiguous), 10390/155648 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/myvg-mylv to 106496 (1k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 106496 blocks long.

  Reducing logical volume mylv to 104.00 MiB
  Logical volume mylv successfully resized
[root@server2 ~]# 
3. 파일 시스템(여기서는 /dev/myvg/mylv를 의미)을 마운트한다.
[root@server2 ~]# mount /dev/myvg/mylv /mnt
[root@server2 ~]# 

XFS 논리 볼륨 확장

1. XFS 파일 시스템을 생성된 논리 볼륨에 생성하려면, 다음과 같이 입력한다.
[root@server2 ~]# mkfs.xfs /dev/myvg/mylv
meta-data=/dev/myvg/mylv         isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@server2 ~]# 
2. 새 파일 시스템을 /mnt에 마운트한다.
[root@server2 ~]# mount /dev/myvg/mylv /mnt
[root@server2 ~]# 
3-1. 암호화되지 않은 XFS로 포맷된 논리 볼륨(여기서는 /dev/myvg/mylv를 의미)의 크기를 50MB 확장하려면 다음과 같이 입력한다.
[root@server2 ~]# lvextend --size +50M -r /dev/myvg/mylv
  Rounding size to boundary between physical extents: 52.00 MiB
  Extending logical volume mylv to 152.00 MiB
  Logical volume mylv successfully resized
meta-data=/dev/mapper/myvg-mylv  isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 25600 to 38912
[root@server2 ~]# 
  • 노트1: -r옵션을 사용하면, 파일 시스템은 언마운트 할 필요 없이 자동으로 확장된다.
  • 노트2: XFS 파일 시스템은 언마운트 할지라도 축소할 수 없다. tar나 다른 도구를 이용하여 해당 파일 시스템을 백업한 후, 삭제하고 다시 만들어야 한다.
3-2. 꼭 3-1와 같이 하지 않고, 두 단계로 나누어서 해도 된다.
[root@server2 ~]# lvextend --size +50M /dev/myvg/mylv
  Rounding size to boundary between physical extents: 52.00 MiB
  Extending logical volume mylv to 152.00 MiB
  Logical volume mylv successfully resized
[root@server2 ~]# xfs_growfs /mnt
meta-data=/dev/mapper/myvg-mylv  isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 25600 to 38912
[root@server2 ~]#

노트: xfs_growfs 커맨드는 마운트된 XFS 파일 시스템만 인자로 허용한다.

추가 자료

코멘트: lvresize 커맨드를 대신 사용이 가능하다.

lvresize -L 10G -r /dev/myvg/mylv
설명
  • -L옵션: 볼륨을 10GB로 정한다(소문자 g는 GiB를 의미한다.)
  • -r옵션: 파일 시스템을 자동으로 축소하여(e2fsckresize2fs/xfs_growfs로 수동으로 대체 가능)빠르게 축소를 할 수 있게 한다.
주의

리사이즈된 논리 볼륨을 -r옵션 없이 마운팅하기 전에, 반드시 파일 시스템을 리사이즈해야 한다.

  • 논리 볼륨을 축소하는 경우.
  1. 먼저 파일 시스템을 필요한 사이즈만큼 e2fsck /, resize2fs /를 이용해 줄인다.
  2. 그 다음 lvreducelvresize를 이용해 볼륨을 줄인다.
  • 논리 볼륨을 확장하는 경우.
  1. 먼저 lvextendlvresize를 이용해 논리 볼륨을 늘린다.
  2. 그 다음 e2fsckresize2fs를 이용해 파일 시스템을 늘린다.
시험에서는

시험에서 논리 볼륨을 리사이징 하는데 실수를 했다. 가장 리사이징하는데 안전한 방법은 lvresize-r옵션과 같이 사용하는 것이다.