본문 바로가기
my_lesson/_Linux

Linux - Ubuntu 서버를 설치하고 세팅해야 할것들[2] : 파티션 설정하기

by boolean 2015. 12. 15.
728x90

Linux - 우분투 서버 설치 파티션 설정하기

   파티션은 하드디스카 따위의 저장공간을 여러 영역으로 나눠서 각가 다른 disk 처럼 

동작하게 하는 것이다. 


각각이 다른 disk drive 처럼 동작하게 되므로 각 partition 마다 

다른 종류의 filesystem을 구축 할 수 있다.  

1. Partition type 확인 : df -T 


10.04의 경우 ext4를 주로 쓰고 위의 명령어로 partition type을 확인할 수가 있다.

ext3, ext4 format은 runtime에서 extendable하다고 함.


2. partition 확인 : fdisk -l (sudo로해야 보임)


3. fdisk /dev/sda

d : partition 지우기

n : 새로운 partition 생성

m : 도움말

p : 현재 partition 출력

w : 수정


지우기 전에 cylinder 번호를 꼭 저장해둘것


4. 특정 partition 포맷하기 :

mkfs.ext4 dev/sda1 (sda1을 ext4로 포맷)

mkfs.ext3 dev/sda1 (sda1을 ext3로 포맷)

mkfs.ntfs dev/sda1 (sda1을 ntfs로 포맷, 그 이전에 apt-get install ntfsprogs 필요)

mkfs.vfat -F 32 dev/sda1 (sda1을 fat32로 포맷)


그 외 유틸 명령들 및 참고..


5 partition 속성 확인하기 : blkid

UUID : 범용 고유 식별자

범용 고유 식별자(汎用固有識別子, 영어: universally unique identifier, UUID)는 소프트웨어 구축에 쓰이는 식별자 표준으로, 개방 소프트웨어 재단(OSF)이 분산 컴퓨팅 환경(DCE)의 일부로 표준화하였다.


6. mount

mount -t [파일시스템 유형]  [장치명] [대상 디렉토리]

  

 # 마운트할 파일시스템 유형을 선택합니다.

 # Msdos, ext, ext2, vfat, iso9660, ntfs, reiserfs


 -v    # 마운트된 상태를 출력합니다.

 -f    # 마운트 할수있는지만 체크합니다.

 -r    # 읽기만 가능하게 마운트합니다.

 -w   # 읽기, 쓰기가 가능하게 마운트합니다. 이 옵션을 생략시 읽기, 쓰기를 허용합니다.


~# sudo mount -t ext4 "device(e.g. /dev/sda5)" "target_point(e.g. /home/testmount)"

~# sudo mount -t ext2 /dev/hdc1 /home/habony

~# sudo mount /dev/hda1

~# sudo mount -t ntfs /dev/hda1 /mnt/winNT

~# sudo mount -t fat32 /dev/hda2 /mnt/win98


7. umount

umount   [장치명]
 -v   # 자세한 설명을 출력합니다. 
 -t [파일 시스템 타입]   # 지정 파일 시스템에 적용합니다.
 -n   # /etc/mtab 파일을 갱신하지 않도록 합니다.


 ~# umount /mnt/cdrom

~ # umount /mnt/floppy

 ~# umount /home/habony

 ~# umount /user


 primary 영역:  이 파티션에선 boot가능 하지만 각 disk나 raid volume을 총 4개까지 만들 수 있다. 

 extended 파티션: 4개 이상의 파티션 이 파티션은 내부에 logical partition을 포함 할수 있고 나누어지는 갯수 제한은 없다. extended 파티션이 logical 파티션을 포함한다. 파티션으로 나눴지만 disk처럼 사용되지는 못한다.

 logical 파티션: extended 파티션 영역 안에서 다시 세분화 해서 나눌 수 있다. 이 파티션이 extended 파티션안에서 실제 disk 처럼 동작하게 된다. logical 파티션 끼리는 서로 구분이 되므로 filesystem을 구축할 수 있다.

 swap 파티션: 이것은 virtual RAM이다. 컴퓨터가 동작하다가 RAM공간이 부족하면 이공간을 사용한다. 이 파티션은 리눅스를 설치할때 나눈다. 


fdisk명령어는 파티션테이블을 관리하는 명령어입니다.  즉, 리눅스의 디스크파티션을 생성, 수정, 삭제할 수 있는 일종의 유틸리티라고 할 수 있다.

fdisk를 실행하게 되면 여러가지  명령어가 있다. 우리는 이중에서 n,p,w,d만 쓰면 된다. 



fdisk -t ext4 /dev/sdb 이렇게 명령어를 치면 Command (m for help) : 이렇게 나온다.

여기서 n을 누르고 enter친다음 p를 누르면 주영역이 만들어지고 e를 누르면 확장영역이 만들어진다.  주영역이나 확장영역이 만들어지는 과정은 똑같다 단지 Command (m for help) : 에서 e 를 누르느냐 p를 누르느냐에 따라 달라질 뿐이다.  순서는 primary를 만든다는 가정하에 p 엔터를 한다음 파티션 번호를 지정한다 그리고 실린더 시작번호인데 default로 하는게 가장 좋다. 그냥 enter하면 디폴트로 설정이된다. 그다음은 용량 할당인데 이부분은 +(size)로 설정해 주는 것이 좋다. +200M 이런식으로 입력하고 enter하면 된다 확인 방법은 Command (m for help) : 에서 p를 누르면 잘 만들어 졌는지 확인이 가능하다.

이렇게 언마운트 시키면 다시 제자리로 돌아오게 된다. 여기서 주의 해야 할점은 마운트를 해제할 디렉토리를 나와서 해야 한다는 것이다. 그렇지 않으면 오류가 나게 되서 풀리지 않는다. 


extended를 먼저 만들고 logical를 만들면된다.  가끔 햇갈려서 Command (m for help) : n 을 했는데 logical이 안나온다고 당황해 하는 경우가 있다. 반드시 extended 영역을 만들고 해야한다. logical 영역은 extended안에서 다시 나누는 것이기 때문에 반드시 extended영역을 만들어 주어야 한다. 


이제 이 파티션을 사용하기 위한 작업중 하나인 포멧에 대하여 알아보자.  포멧하는 작업은 파일 시스템을 포멧하여  각 파티션이 원하는 파일 시스템을 만들어 주기 위함이다. 


명령어는 mkfs -t ext4 /dev/sdbn과 같다 여기서 n은 숫자를 의미한다.  mkfs는 2가지 방법이 

있다. .과 -t 가 있다. 전자는 리눅스 전용이고 후자는 리눅스와 유닉스 겸용이다. 




총 하드디스크 용량: 500GB

1. / : 20GB

2. /boot : 128MB

3. /var : 10GB

4. /tmp : 10GB

5. /swap : 8GB

6. /home : 450GB

 



다시한번 정리 하면 


fdisk로 파티션을 나눈다.

mkfs로 파일 시스템을 생성한다.

mount로 적용시킨다.

이렇게 된다. 이런 과정을 거쳐서 나누어진 파티션을 시스템에 적용해 사용 할 수 있다. 


 추가적으로 마운트의 필수 조건이 있다.

파티션     - fdisk

포멧         - mkfs

디렉토리 - mkdir

이 3가지 항목이 만족되야 마운트를 할 수 있다.




Intro

Partition이라는게 애초의 할당된 용량이 초과한다거나, 혹은 img 파일을 restore하는 바람에 가용 용량을 다 사용하지 못하는 경우가 발생됩니다. 이러한 경우, Resize가 필요한데 이게 생각보다 쉽지 않습니다. 그래서 오늘은, 대표적인 명령어인 parted와 fdisk를 이용하여 파티션을 늘리기를 소개합니다.

오늘 같이 살펴볼 예는 다음과 같습니다.

microSD card(32G)을 img(4G)파일로 덮어 썼습니다. img파일을 제작할 당시에, 사용된 partition 정보가 SD카드에도 그대로 전달되기 때문에 4G로 잡히고 28G는 사용할 수 없게 됩니다.

이런 경우, 어떻게 resize를 할지 알아보겠습니다.

df -h , fdisk -l

먼저, 디스크의 상태를 알 필요가 있습니다. 용량이 어떻게 할당되었는지 알기 위해서는, 다음과 같은 명령어를 이용합니다.

-h 옵션은 human readable format으로, 읽기 쉽게 표현한 형태로 출력하게 됩니다. 현재, linux에 잡혀있는 모든 block storage에 대한 정보를 보여줍니다. 애석하게도 df는 mounted된 block device만 표시합니다. 따라서, umount 상태라면, fdisk를 이용해야 합니다.

오늘 resize를 진행할 parition은 /dev/sdc2입니다. human-readable이 아니기에, mount하여 df로 다시 살펴 보면 다음과 같습니다.

32G짜리 MicroSD가 단 3G로 나타나고 있습니다. 이를 어찌한다…

parted

가장, 간편하게 사용할 수 있습니다. 기본적으로 다음과 같이 접근합니다.

간략하게 사용할 수 있지만, 마지막 2번째 줄을 살펴보면 ext4가 지원되지 않음을 알 수 있습니다. ext4는 parted를 사용할 수 없습니다. 그럼 어떻게 해야 할까요?

fdisk

fdisk를 사용할 차례가 왔습니다. parted 보다 약간 복잡할 뿐이지만, 차근차근 진행하시면 쉽게 사용할 수 있습니다. 다음과 같은 순서로 진행합니다.

  1. fdisk로 partition 정보 변경하기
    1. 기존의 Partition 삭제하기
    2. 새로 Partition 정의하기
    3. 저장하고 종료
  2. e2fsck을 이용하여 file system check하기
  3. resize2fs로 실제 영역 확장하기

적다 보니, 복잡해 보이지만 대충 후루륵 끝낼만한 간단한 일입니다.

파티션이 변경되었기 때문에, 파일시스템의 이상 유무를 점검해야 합니다. 그리고 실제 영역을 반영해야 합니다. 이는 다음의 명령어로 진행합니다.

이로써, resize가 끝났습니다. 정말, 간단하죠.

잘 되었는지 확인할 필요가 있겠죠. mount하여 df를 이용해서 Size를 체크해 보겠습니다.

29G로 정상적으로 resize가 되었습니다.


Ubuntu 에서 Grub booting 순서 변경하기

>>sudo vi /etc/default/grug      

sudo 와 vi 편집기 사용법은 링크를 따라가기 바란다.

vi편집기로 grub파일을 열어서 GRUB_DEFAULT부분의 숫자를 해당 booting operation 의 순서로 수정해준다

순서 배열은 0부터 시작한다. 예를 들어 초기 booting grub화면의 순서가 4번째라면 "3"으로 변경해야 할 것이다.


GRUB_DEFAULT = "0' 


Closing

간단한 내용이지만, 계속 잊어 먹고 다시 찾는 일이 많아서 정리해 보았습니다. 생각보다 어렵지 않은데, runtime에서 변경하는 일은 어렵습니다. 생각해 보시면, Mount된 상태에서 resize가 되겠어요? live-cd나 다른 컴퓨터에 물려서 변경하는 것이 정신 건강에 좋습니다.

댓글