UNIX/유닉스 공통

리눅스 LVM 생성

99iberty 2012. 7. 19. 15:12

 

 

파일시스템 개념을 잡고 가야할듯..

ext4 가 확장성이 있고 ext3는 확장성이 없다는데, 내 기억으로는 LVM을 확장해줬던 기억이 있어서 갑자기 혼란스러웠다.

파일시스템 자체를 확장하는 것이 아니라 논리볼륨을 더 확장한 것 뿐이라서 결국엔 아닌 것이었으나 내가 본론적으로 잘 이해를 못하고 있음을 깨달아

다시 정리하고자 한다.

 

* 보통은 ~~

디스크를 붙이고 -> 파티션을 생성하고 -> 해당 파티션을 포맷하고(파일시스템을 만들고) -> 마운트

* 요기선~

디스크를 붙이고 -> 파티션을 LVM타입으로 생성하고 -> 물리볼륨을 만들고 -> 볼륨그룹을 만들고 -> 볼륨그룹에서 논리볼륨을 만들고 -> 포맷 -> 마운트

 

우선 LVM을 만드는 순서부터 살펴보자면,

 

 

 

 

  1. 하드디스크를 LVM을 만들 수 있게 파티션 생성
  2. 물리볼륨 생성 (pvcreate)
  3. 위 물리볼륨들을 볼륨그룹을 생성하여 묶는다. (vgcreate)
  4. 위 볼륨그룹을 원하는 크기대로 나눠 논리볼륨 생성 (lvcreate)
  5. 파일시스템으로 포맷

 

 

1. 하드디스크를 LVM 타입으로 파티션 생성 .. (이라는데 굳이 그럴 필욘 없는듯..) 

1)  fdisk -l 하여 LVM 설정할 하드드라이브 (디스크)의 디바이스명을 확인

(fdisk -l /dev/sda 이런 식으로 하면 /dev/sda 의 파티션 내용을 확인하는 것이고, 생략하면 모든 하드드라이브의 파티션을 보여준다.)

ex) fdisk -l 실행화면

 

이런 식으로, fdisk -l /dev/sda 를 하면 sda 하드 드라이브의 논리적 파티션들의 정보가 보여진다.

df -h 를 하게 되면 , /dev/sda 인 하드드라이브가 보이는 것이 아니라 sda1, sda2... 이런 파티션들의 정보가 보여진다. sda는 안 보인다.

2)  fdisk를 사용하여 LVM 타입으로 파티션을 생성한다.

# fdisk /dev/hdb

n 엔터 (새 파티션 추가)

-> p 엔터 (primary partition (1-4)) ; 주파티션이면 p, 확장파티션이면 e

-> 1 엔터 (파티션 넘버 입력)

-> 엔터 (First cylinder 1-1792, default 1:)

-> 엔터 (last cylinder)

-> t 엔터 (change a partition's system id)

-> l 엔터 (type L to list codes)

-> 8e (linux LVM이 8e다)

-> w 엔터 (write table to disk and exit)

# fdisk /dev/hdc , hdd 위와 동일하게 설정

3)  fdisk -l 하여 LVM 타입으로 파티션이 설정되었음을 확인

 

2. 물리볼륨 생성

1) pvcreate 로 물리볼륨을 생성

 

[root@localhost ~]# pvcreate /dev/hdb1

Physical volume "/dev/hdb1" successfully created

 

(윗단계에서 fdisk /dev/hdb 했으니깐... 이 디스크가 hdb1, hdb2 ... 이런 식으로 쪼개졌을 거란 말이지. 근데 위에선 그냥 한 디스크를 통으로 한 파티션으로 생성..한듯.)

 

[root@localhost ~]# pvcreate /dev/hdc1

[root@localhost ~]# pvcreate /dev/hdd1

 

2) pvdisplay하여 물리볼륨 확인

 

 

3. 볼륨그룹 설정

1) vgcreate 하여 볼륨그룹 설정 (위에서 생성했던 물리볼륨들을)

[root@localhost ~]# vgcreate myvg /dev/hdb1 /dev/hdc1 /dev/hdd1

               Volume group "myvg" successfully created

2) vgdisplay 하여 볼륨그룹을 확인

 

4. 논리볼륨 생성

1) lvcreate 하여 논리볼륨을 두 개 (하나는 7GB , 하나는 나머지 공간) 생성

  (여기서 소문자 l을 쓰면 pe 의 개수로 용량을 지정하게 된다. 상세  LVM 내용은 다음 포스트 참조.)

 

[root@localhost ~]# lvcreate -n dtlv -L 7GB myvg

Logical volume "dtlv" created

[root@localhost ~]# lvcreate -n bklv -l 100%FREE myvg

Logical volume "bklv" created

 

2) lvdisplay 하여 논리볼륨 확인

 

 

 

 

5. 파일시스템 포맷 및 마운트

 

이제서야 포맷을 하게 된다~!

 

1) 위에서 생성한 논리볼륨을 파일시스템 포맷

 

[root@localhost ~]# mkfs.ext3 /dev/myvg/dtlv

....

[root@localhost ~]# mkfs.ext3 /dev/myvg/bklv

 

2) 마운트

 

[root@localhost ~]# mkdir /mnt/data

[root@localhost ~]# mkdir /mnt/back

[root@localhost ~]# mount -t ext3 /dev/myvg/dtlv /mnt/data

[root@localhost ~]# mount -t ext3 /dev/myvg/bklv /mnt/back

 

3) df -l 하여 마운트 확인

 

4) 부팅 시 자동으로 디스크를 읽어줄 수 있게 fstab 설정

#vi /etc/fstab

/dev/myvg/dtlv         /mnt/data         ext3      defaults     0    0

 

 

fdisk 해서 나중에 -l 치면 나오는 애들은.... list known partition types 이다. 파일시스템 리스트가 아니라 파티션 타입~!

/proc/filesystems는 파일시스템 타입이고..

 

즉, 처음에 내가 가졌던 의문,

기본적으로 fdisk해서 만들었던 파티션들이 df -T 하면 나오는 파일시스템 타입에는 왜 ext3가 있느냐,

fdisk 해서 l로 치면 나오는 타입에는 ext3가 없는데?

라는 우문에는, 파티션 타입이라 다른거고..

기본적으로 fdisk로 해서 만든 파티션을 만든 후 반드시 포맷하고 마운트를 시켜야 한다.

나는 fdisk하면 바로 포맷이 되서 쓸 수 있는 건줄 착각하고 있었다....ㅋㅋ

 

 

+) 그런데 굳이 물리볼륨을 만들 필요 없이 바로 파티션을 볼륨그룹으로 묶을 순 없는건가?

왜 굳이 물리볼륨을 중간에 추가적으로 만들어서 (그냥 파티션을 그것도) 작업을 한번 더하는거지?..

 

 

+) dmc-emass 이관 작업시, cx4-80 스토리지의 디스크를 추가로 할당하여 붙여줄 떄,

스토리지 엔지니어가 미리 파티션까지 다 할당해놓았었다...

나는 이 때 파티션을 LVM  타입으로 만들어야 했는데 엔지니어가 말도 없이 그냥 리눅스 타입으로 해서 당황스러웠었다 ㅋㅋㅋ

LVM이 잘 생성되긴 했었는데...

그런데 fdisk -l 하면 파티션 테이블이 존재하지 않는다는 메시지가 뜬다.

나는 여튼 이미 엔지니어가 파티션까지 다 만들어버렸으니 바로 물리볼륨그룹 작업으로 들어갔었는데...