본문 바로가기
Linux/CentOS

디스크 관리

by refer 2024. 12. 19.
반응형

[개념]

운영체제의 기본 기능중의 하나가 디스크관리이다.

예) 하드디스크 , FDD , CD , DVD , SSD , USB , SD카드 , 스토리지 볼륨 등이 있다.

리눅스 시스템에 2TB용량의 SATA 디스크를 장착했다 가정하고.

장착한 디스크를 사용하기 위에 아래 과정을 테스트 할 것이다.

 

(1) 디스크 파티션 할당

(2) 포맷(파일 시스템 생성)

(3) 마운트

(4) 시스템 시작 시 자동 마운트 설정

 


[용어]

 

1. 파일 시스템(File System) : 운영체제가 파일을 시스템의 디스크 상에 구성하는 방식을 말한다.

운영체제는 시스템의 디스크 파티션 상에 파일들을 연속적이고 일정한 규칙을 가지고 저장 하는데 ,

파일 시스템은 이러한 규칙들의 방식을 제시하는 역할을 한다.

또한 파일 시스템은 시스템의 디스크 , 파티션 및 파일 시스템의 형식을 말할 경우에도 쓰일 수 있다.

 

2. 파일 시스템 종류 : 리눅스는 아래 파일 시스템들을 지원한다.

(man fs 명령어를 사용하면 리눅의 파일 시스템에 관한 정보를 얻을 수 있다)

 

(1) minix : 리눅스에서 가장 먼저 사용한 파일 시스템이다.

파일 이름은 최대 30문자이고, 파일 시스템당 최대 64메가를 지원하여 기능이나 성능 측면에서 다소 제한이 있다.

 

(2) ext : 리눅스 초기에 사용되던 파일 시스템으로 상위 호환성이 없던 ext2의 구 버전이다.

 

(3) ext2 : ext3 이전까지 대부분의 리눅스가 채택한 파일 시스템이다.

256 바이트 길이의 파일 이름 , 2기가바이트(GB)의 단일 파일 , 4 테라바이트(TB)의 디스크를 사용할 수 있다.

그러나 예상치 못한 정전 등의 사유로 시스템이 비정상적으로 종료되었을 경우, 부팅 시 e2fsck를 실행하여 파일 시스템의 일관성 검사를 한다. 이로 인해 데이터가 많은 경우 검사 시간이 오래 걸리고 그 동안 아무 작업도 할 수 없게 된다.

 

(4) ext3 : 커널 2.4부터 지원하는 파일 시스템으로 레드헷 리눅스의 경우 7.2 버전부터 적용되었다.

ext3은 ext2 파일 시스템에 저널링 기능을 추가한 저널링 파일 시스템(journaling file system) 이다.

이에 따라 ext2 파일 시스템보다 데이터 신뢰성이 강화되었고 보다 빠른 속도로 작업을 수행할 수 있다.               

ext3 파일 시스템은 16테라바이트까지 인식할 수 있다.               

그렇지만 ext3 파일 시스템은 삭제 파일 복구가 용이하지 않는 등 개선해야 할 점들이 있었다.

 

(5) ext4 : ext3의 문제점들을 개선하여 개발한 것이 ext4이다.

ext4는 파일 시스템 점검 속도가 현저하게 빨라졌고,파일 복구가 용이해 졌으며, 무엇보다 파일시스템 크기가

1 exbibyte(EiB)까지 사용할 수 있고 단일 파일의 크기는 16 tebibytes(TiB)까지 지원한다.

(그렇지만 16tebibytes(TiB)를 초과하는 볼륨은 권장되지 않아 CenOS 6서는 16T까지 지원하며, CentOS 7 에서는 50T까지 지원한다) ext4는 커널 2.6.19에 처음으로 ext4의 개발버전이 포함되었고, 2008년 12월 25일에 ext4 파일 시스템을 포함하는 커널 2.6.28 버전이 발표되었다. 이에 따라 ext4는 페도라 9 버전부터 지원되었고 현재 많은 리눅스 시스템에

이것을 사용하고 있다.

 

(5-1) 호환성 : ext3과 ext2 하위 파일 시스템을 ext4로 마운트하는 것이 가능하다.

이렇게 하면 성능을 조금 향상시킬 수 는데, ext4의 새 기능 중 새로운 블록 할당 알고리즘과 같은 것은 ext3과 ext2에서도 사용될 수 있기 때문이다. 이에 대해 ext3은 ext4에 대해 ext4 파일 시스템을 마운트 할 수 있는 부분적인 상위 호환성이 있다. 하지만 ext4 파티션이 ext4의 중요한 새 특징인 Extents를 사용한다면 ext3으로 마운트는 불가능하다.

 

(6) xiafs : 파일 이름과 파일 시스템 크기의 한계 등 minux 파일 시스템을 수정한 파일 시스템이지만, 새로운 특징은 없다.

예전에 ext2 파일 시스템과 함께 사용되었다.

 

(7) ReiserFS/ReiserFS v3/Reiser4 : ReiserFS는 저널링 파일 시스템의 일종으로 안정적인 파일 시스템으로 ext2 파일

시스템을 대체할 만한 것으로 인정받아 SuSE 리눅스의 기본 파일 시스템으로 사용 되기도 하였다.

그러나 2006년 10월12일 이후의 SuSE 리눅스부터는 ext3 파일 시스템사용되었다.

이후 ReiserFS v3가 발표되어 널리 사용되었고 Reiser4가 오픈소스 개발자들에 의해 개발이 지속되고 있지만, 메인라인 리눅스 커널에 포함되지 않아 현재 많은 리눅스 배포판에서 지원되지 않는다.

 

(8) XFS : XFS는 실리콘 그래픽스(Silicon Graphics, Inc.)에 의해 1993년도에 개발이 시작되어 1994년에 제작된 64비트

고성능 저널링 파일 시스템이다. 이것은 IRIX 5.3 버전 이후로 이 운영체제의 기본 파일 시스템이었다.                                2000년 5월부터 GPL을 채택하였고 실리콘 그래픽스사의 스티브 로드(Steve Lord)에 의해 리눅스 커널로 포팅 되었다.

그리고 2001년 이후로 XFS를 채용한 리눅스 배포판들이 증가하여 현재는 거의 대부분의 리눅스 배포판 에서 XFS 파일

시스템이 사용되고 있다. CentOS 7부터는 기본 파일시스템으로 XFS를 사용하며 최대 500TB 까지 지원된다.

 

(9) FAT / FAT32 : FAT 파일 시스템은 MS-DOS 및 윈도우즈 운영체제에서 사용하는 파일 시스템이다.

FAT32는 32비트 버전으로 윈도우즈 95에 처음 도입되어 최근까지도 사용되고 있다.

 

(10) NTFS : 윈도우즈 서버와 데스크톱(XP 이후 버전) 에서 사용되는 파일 시스템이다.                     

예전의 리눅스는 읽기 전용으로 지원되었지만 , 현재는 읽기/쓰기 모두 가능하다.                      

CentOS7은 NTFS 지원하지 않아 제 3자가 배포한 fuse-ntfs-3g 패키지를 설치해야 사용할 수 있다.

 

(11) msdos : 리눅스에서 지원하는 것으로 FAT 파일 시스템과 호환된다.

 

(12) umsdos : msdos 파일 시스템을 리눅스상에서 긴 파일 이름 , 소유자 , 접근권한 , 링크와 장치 파일들을 지원하도록   확장한 파일 시스템이다. umsdos는 보통의 msdos 파일 시스템이 리눅스 파일 시스템처럼 사용되도록 하기 때문에 ,

리눅스를 위해 파티션을 나눌 필요를 없앤다.

 

(13) iso9660 : CD-ROM 표준 파일 시스템이다. CD-ROM 표준에 좀 더 긴 파일 이름을 쓸 수 있도록 확장한 록 릿지

(rock ridge) 및 iso9660의 전신인 하이시에라(High Sierra)를 지원한다.

 

(14) nfs : 독립되어 있는 각각의 컴퓨터들의 파일에 서로 쉽게 접근하기 위해 파일 시스템을 상호 공유 할 수 있도록 

하는 네트워크 파일 시스템(Network File System)이다.

 

(15) hpfs : OS/2 파일 시스템이다. 이용가능한 문서가 부족하여 읽기 기능만(read-only)제공한다.

 

(16) sysv : System V/386 , System V/386 파생 시스템 , Xenix 및 Coherent의 파일 시스템이다.

 

(17) 클러스터 파일 시스템 : 리눅스는 클러스터링을 위한 클러스터 파일 시스템을 지원한다.

다수의 시스템 사이에 디스크의 파일을 공유할 수 있도록 하며 , 클라우드 시스템의 필수적인 요소이기도 한다.

이러한 파일 시스템으로서 사용되는 것이 NFS , SMB(윈도우즈와의 공유를 위한 SAMBA의 파일 시스템) ,

CIFS(SMB보다 발전된 네트워크 파일 시스템) , CODA(NFS와 비슷한 네트워크 파일 시스템) 등이 있다.   

이들은 리눅스 커널에 포함된 기능들이다.       

또한 여러 기업들이 클러스터링을 위한 파일 시스템을 개발했다.                                             

(RedHat GFS , SGI cXFS , IBM GPFS , IBM SanFS , EMC Highoroad , Compaq CFS , Veritas CFS , Oracle OCFS2 등이 있다)


1. [Gnome-disks 디스크 성능 벤치마킹 테스트]

 

리눅스를 Gnome Desk 으로 설치하였다면 복잡한 명령어 옵션 없이 편리하게 파티셔닝 , 포맷 , 마운트 , 시스템 시작 시

자동 마운트 , 추가 기능인 벤치마킹 및 디스크 검사 기능을 제공한다.

간편하게 알아보자. (Hyper-V 에서 디스크를 추가 후 알아보았다)

 

 

벤치마킹 테스트

 

그놈 디스크의 벤치마크 기능을 사용하여 디스크 성능을 확인해 보았다.

디스크 성능은 마운트가 되어 있지 않는 상태에서 해야 성능 측정이 가능하다.

성능은 SATA , SAS , SSD 등 측정 결과가 다를 것이며 이 결과를 시스템 운영에 참고한다.


2. [Gnome-Smart 데이터 확인 및 자체 검사 테스트]

 

요즘 디스크는 SMART(Self-Monitoring, Analysis and Reporting Technology)를 지원한다.즉 디스크에 대한 여러 정보가 디스크에 저장되어 이러한 정보를 통해 디스크의 상태를 확인 할 수 있다.문제되는 섹터가 있다면 , 확인은 SMART 속성 중에서 재 할당한 섹터 개수(Reallocated_Sector_Ct)가 나타나며 이는 특정 섹터에 기록을 했으나, 기록하지 못하다가 다른 섹터를 할당받아 기록했다는 뜻이 된다.예) 디스크가 정상적이지만 불량 섹터가 285개가 발견.주기적으로 SMART값을 모니터링하여 위와 같은 문제가 검출된다면 데이터를 잃어버리기 전에 디스크를 교체하는 것이 바람직하다.


3. [신규 디스크 포맷 테스트]

 

 

필수 값 입력 후 다음

 

XFS 선택 후 다음

 

포맷하기

 

4. 마운트 하기

 

 

마운트 확인

 


5. [parted 사용. 파티션 생성 및 삭제 테스트 하기]

 

parted를 사용하는 이유는.2TB 이상 볼륨은 gpt를 사용한다.

2TB 이하 볼륨은 fdisk 명령어를 사용하여 파티션을 나눌 수 있는데, 최대 1.1T 용량 밖에 할당되지 않는다.

그리고 볼륨은 gpt를 지원하지 않는다.

2TB 이상 볼륨의 파티션을 나눈다면 parted 사용한다.

 

 

parted 사용법은 아래와 같다.

parted [옵션] 장치 [명령어 [옵션]]

 

 

parted 설치한다.

 

 

파티션 생성한다.

 

 

파티션 할당 내역을 확인한다.

136GB 디스크가 확인된다.

 

 

파티션 테이블을 gpt로 설정한다.(2TB 이하 볼륨은 msdos를 사용해도 무방하다)

 

 

파티션을 나눈다.

파티션 타입은 primary , 1M부터 60G 까지 파티션을 생성하였다.

 

 

두 번째 파티션은 60G부터 끝까지 primary 타입으로 생성하였다.

 

 

생성된 파티션을 확인하자.

 

 

quit명령을 입력하여 parted를 종료한다.

 

 

전체 디스크 파티션 확인한다.

(fdisk -l 확인 할 수 있다)


6. 파티션 테이블 복구

실수로 파티션 테이블이 삭제 되어도 찾을 수 있다.

만약 찾았다면, 파티션 테이블을 생성할 것인지 확인하고 생성한다.

 


7. 파티션 삭제

파티션번호에 해당하는 파티션을 삭제한다.

여기서는 2번을 삭제한다고 가정

 

 

위에는 파티션을 삭제 하였고,

dd 명령어를 사용하면 부모 객체인 /dev/sdb 볼륨을 삭제 할 수 있다.


8. 선택된 디바이스 변경

현재 /dev/sdb 인데 , 다른 디바이스로 변경 할 수 있다.

예) /dev/sdc 디바이스를 변경하고 싶을 때.


9. 디바이스 플래그 설정 할 수 있다.

(신중하게 지정해야 한다)

플래그란? 디스크 파티션에 설정되는 특정 속성이나 옵션을 의미한다.

플래그는 파일 시스템의 동작이나 파티션의 사용 방법에 영향을 미친다.

각 플래그는 파티션이 어떻게 동작할지 또는 어떤 특별한 용도로 사용될지를 지정할 수 있다.

 

예)

플래그 값은 Grub에서 인식하고 동작한다.

Grub(Grand Unified Bootloader)는 약어로 멀티부트로더이다.

부트로더란 리눅스가 부팅되기까지 부팅의 전과정을 진행하는 부팅전문 프로그램을 의미한다.

Grub은 윈도우와 리눅스등에서 모두 사용될 수 있는 멀티부트로더 이다.

Grub은 하드디스크의 첫번째 부트섹터인 MBR(Master Boot Record)이라는 곳에 저장된다.

시스템에 전원이 공급되면 가장 먼저 ROM-BIOS에서 시스템 제어권을 가지고 장착된 하드웨어에 대한 기본적인 점검과 인식을 한다.이 과정이 모두 끝나고 나면 ROM-BIOS는 하드디스크의 첫번째 부트섹터인 MBR에 있는 부트로더에게 그 제어권을 넘겨준다. 플래그 값이 이미 설정 되어 있다면 부팅 시 영향을 받는다.

 

기존에는 Disk Flags가(플래그 값이) 없다.

 

 

플래그 값 적용

pmbr_boot 사용하는 물리 디스크의 플래그가 적용 되었다.

플래그 값들은 아래와 같다.

boot , root , swap , hidden , raid , lvm , lba , hp-service , palo , prep , msftres , bios_grub , atvrecv , diag , legacy_boot

 

 

플래그 값 해지

위 플래그 값을 해지한다.

 


10. 위 플래그 방식을 간단하게,  토글 형태로 변경이 가능하다.

플래그 토글 값들은 아래와 같다.

boot , root , swap , hidden , raid , lvm , lba , hp-service , palo , prep , msftres , bios_grub , atvrecv , diag , legacy_boot

 

 

같은 방식으로 다시하면 지워진다.

 


11. 위 볼륨 안 파티션의 플래그 토글 형태를 설정 할 수 있다.

파티션 플래그 토글 값들은 아래와 같다.

boot , root , swap , hidden , raid , lvm , lba , hp-service , palo , prep , msftres , bios_grub , atvrecv , diag , legacy_boot

 

 

같은 방식으로 다시하면 지워진다.

 


12. 기본 단위 설정 및 변경

파티션의 기본 단위를 설정 할 수 있다.

단위 값은 아래와 같다.

s(Sectors) , B(Bytes) , KB , MB , GB , TB , compact , cyl(cylinders) , chs(cylinders , heads , sectors) , % , kiB , MiB , GiB , TiB

 

% 단위로 변경해 본다.

 


13. mkfs 파일 시스템 생성(포맷)

mkfs(Make File System) 명령은 파일 시스템을 생성하는 명령어지만, 실제로는 각 파일 시스템을 위한 mkfs.ext3 , mkfs.xfs , mkfs.reiserfs 등의 전위(front end) 프로그램으로서 원하는 파일 시스템에 따라 이들 프로그램들에 연결하는 역할을 한다.기본적인 명령 형식은 다음과 같다.

 

 

명령형식

mkfs -[-v] [-t fstype] [fs-options] 장치이름 [블럭]

 

 

옵션

옵션 설명
-V 실행되는 모든 파일 시스템 특정 명령어들을 포함하여 상세한 정보를 출력한다.
이 옵션이 한번 이상 사용되면 특정 파일 시스템을 생성하는데 사용될 프로그램의 정보만 보여주고 실질적으로 실행되지는 않는다.
-t 생성할 파일 시스템의 형식을 선택한다. ext3 , xfs , reiserfs , ext2 , msdos 등으로 지정하지 않으면 기본 파일 시스템인 ext3가 지정된다.
-c 배드블럭을 조사하고 조사한 결과에 따라 배드블럭 리스트를 초기화한다.
-l filename이라는 파일로부터 초기의 배드블럭 리스트를 읽어 들인다.
-v 지정한 파일시스템에 따라 실행되는 명령되는 명령어의 자세한 출력을 보여준다.

 


14. 파일시스템 생성 테스트

ext2 , ext3 , ext4 등의 파일 시스템에 대해서 명령어는 "-t 파일시스템 타입" 옵션으로 파일 시스템을 선택한다.

(기본 파일 시스템은 ext2이다) 한편, 파일 시스템에 따라 특정한 옵션들이 사용되는데

-c , -l 및 -v는 대부분의 파일 시스템 생성 명령어들에 의해 지원된다.

파일 시스템을 생성하려면 먼저 어떤 파일 시스템을 생성할 지를 결정한 후에 장치 명을 확인해야 한다.

장치명은 parted로 확인 할 수 있다. 아래는 ext4 타입의 파일 시스템을 생성했다.

 

테스트 할 물리 디스크 확인

여기서는 /dev/sda , /dev/sdb가 있다.

 

 

테스트 할 물리 디스크 지정

여기서는 /dev/sdb 지정함

 

 

/dev/sdb 포맷형식 설정한다 gpt(2TB이상) -> 파티션 용량 설정(1MB~60MB 선정) -> 파티션 확인

 

 

파티션 /dev/sdb1 포맷형식 설정한다 (ext4)  -> 파일 시스템 생성 확인

 


15. 위 설정 보다 간단한 방법으로 파일 시스템을 생성 할 수 있다.

(선택)

 

 

파티션 /dev/sdb2 포맷형식 설정한다 (ext4)  -> 파일 시스템 생성 확인

(선택)

 


16. 기타 : ext2 , ext3 , ext4 파일 시스템을 생성하는 포맷형식은 mke2fs 명령어를 사용한다.

ext4 파일시스템의 경우에는 -T 옵션으로 파일 시스템을 지정한다.

이 경우 /etc/mke2fs.conf에 설정된 내용을 적용한다.

mke2fs 명령어도 -t 옵션으로 파일 시스템을 지정하여 생성할 수 있다.

 


17. mkswap 스왑 생성

parted를 사용하여 swap 파티션을 만든 후에 이 파티션을 사용할 수 있게 하려면 mkswap 명령어를 사용해야 한다.

 

먼저 3번 파티션을 생성한다.

 

 

파티션 생성 후 mkswap 명령어로 swap 파일 시스템 생성

 


18. e2label , xfs_admin -L 파일 시스템 레이블 수정

 

레이블 이란, 디스크 파티션 관련하여 라벨이라 할 수 있다.(이름표)

라벨은 parted 출력에서 볼 수 있듯이 파티션 테이블의 또 다른 이름이라 할 수 있다.

파티션 라벨은 각각 개별 파티션이 가진 이름을 뜻한다.

 

e2label은 ext2 , ext3 , ext4 파일 시스템의 레이블을 확인하거나 수정하는 명령어이다.

CentOS의 기본 파일시스템인 xfs의 레이블은 xfs_admin 명령어의 옵션을 사용하여 확인하거나 변경할 수 있다.

xfs의 레이블을 변경하기 위해서는 마운트가 해제 된 상태에서 변경해야 한다.

 

 

/dev/sdb1의 레이블(라벨)명을 확인해 보자

 

 

기존 레이블(라벨)명을 다른 용도로 사용한다 가정하고 수정 해 본다.


 

19. mount 마운트

리눅스/ 파티션 아래에 다른 하드디스크 파티션이나 다른 미디어를 연결하기 위해 mount라는 명령어를 사용한다.

마운트(mount)를 통해 다른 파티션이나 저장 매체 등을 /의 하위에 둠으로써 통일적인 관리가 가능해 진다.

명령은 "mount 옵션 디바이스명 디렉토리"의 형식으로 사용되는데,

아래는 그 예이다. ext4 파일 시스템인 두 번째 하드디스크의 첫 번째 파티션(/dev/sdb1)을 /mnt/data1 디렉토리에

마운트 하였다. mount는 파일시스템을 특정 디렉토리에 연결하는 작업이다.

파일 시스템의 종류를 -t 옵션으로 지정해 주어야 한다.

 

사용 예) mount -t ext4 /dev/sdb1 /mnt/data1

 

[사용되는 옵션] 

옵 션 기능
-v 진행 상황을 자세히 출력한다.
-a /etc/fstab에 지정된 모든 파일 시스템을 마운트 한다.
-f 실제 시스템 호출은 하지 않고 마운트 할 수 있는지 점검한다. 보통 -v 플래그를 써서 mount 명령의 결과를 알고자 할 때 유용하다.
-r 파일 시스템을 읽기 전용으로 마운트 한다. 같은 옵션으로는 -o ro 가 있다.
-w 파일 시스템을 읽기/쓰기 형식으로 마운트 한다. mount의 기본 값으로 설정되어 있다.
-t 마운트 할 파티션의 파일 시스템 형식을 지정한다. 아래와 같은 형식을 사용할 수 있다.
adfs , affs , autofs , cifs , coda , coherent , cra,fs , debigfs , devpts , efs , ext , ext2 , ext3 , ext4 , hfs , hfsplus , hpfs , iso9660 , jfs , minix , msdos , ncpfs , nfs , nfs4 , ntfs , proc , qnx4 , ramfs , reiserfs , romfs , squashfs , smbfs , sysv , tmpfs , ubifs , udf , ufs , umsdos , usbfs , vfat , xenix , xfs , xiafs.
-t 옵션이 주어지지 않고 auto 타입이 지정되면 mount가 요구되는 파일 시스템을 추측하여 마운트 한다.

 


20. /etc/fstab 에 설정된 모든 파일 시스템을 마운트하고자 할 때에는 아래와 같이 -a 옵션을 붙여서 명령을 내린다.

 

사용예) mount -a

 

 

[옵션]

마운트 옵션 설명
defaults auto , rw , nouser , exec , suid 옵션을 모두 포함하는 옵션
auto 부팅 시 자동 마운트
noauto 부팅 시 자동 마운트 하지 않음
rw 읽기 , 쓰기 모두 가능하도록 마운트(read and write)
ro 읽기 전용(read only)
nouser root 계정만 마운트 가능
user 일반 계정도 마운트 가능
exec 파일 실행 허용
suid SetUiD와 SetGID 허용
nofail 오류가 발생해도 부팅할 수 있도록 해주는 옵션으로 , 오탈자 등의 이유로 마운트에 실패했을 때 오류가 발생한 볼륨을 제외한 후 부팅

 


21. /etc/fstab의 특정 파일 시스템 타입을 지정해서 마운트 하는 경우 아래 명령어를 사용한다.

아래는 ext4 타입의 파일시스템을 모두 마운트 하는 명령어 이다.

 

사용예) mount -a -t ext4 

 


 

22. /etc/fstab의 특정 파일 시스템을 읽기만 가능하도록 마운트 하는 경우 -r 옵션을 사용한다.

 

사용예) mount -r /dev/sdb1 /mnt/data1

 


 

23. /etc/fatab의 특정 파일 시스템을 읽기/쓰기가 가능하도록 마운트 하는 경우 -w 옵션을 사용한다.

 

사용예) mount -w /dev/sdb1 /mnt/data1

 


 

24. 위와같이 마운트를 하고 나면 mount와 umount에 의해 /etc/mtab 파일에 현재 마운트 되어 있는 파일 시스템 목록이 기록된다. 그리고 /proc/mounts에도 마운트 정보가 기록된다.

따라서 이 파일들을 보거나(옵션 없이) mount 명령을 내리면(또는 "mount -v" 와 같이 명령을 내린다)

현재 시스템의 마운트 정보를 알 수 있다.

 

사용예) mount -v


 

25. NAS NFS 원격지점 마운트 사용

mount 명령은 root만 사용 할 수 있지만 /etc/fstab 파일에 user 옵션이 붙어 있는 경우에는 어느 누구든 마운트가 가능하다.

이것은 특히 CD-ROM의 마운트 설정을 할 때 유용하다. user 옵션 대신 owner 옵션을 사용할 수도 있는데, 이것의 기능은 사용자가 마운트하려는 장치 파일의 소유자여야 한다는 것 외에는 user 옵션과 그 기능이 동일하다. 따라서 owner 옵션은

시스템의 로그인 스크립트가 콘솔 사용자를 장치의 소유자로 만드는 경우에 사용할 수 있다.

 

사용법) mount -t nfs NFS서버IP주소_또는_호스트명:/NFS_서버_마운트포인트  /NFS_클라이언트_마운트포인트(로컬)

형식으로 명령을 내린다.

 

 

사용예) mount -t nfs 192.168.2.1:/web_data /web_data

 


26. 시스템 부팅 시 자동 마운트

시스템 부팅 시 자동으로 마운트 하기 위해서는 /etc/fstab에 다음과 같은 내용을 추가 설정해야 한다.

아래 내용은 /dev/sda1을 /backup 디렉토리에 마운트 한다.

파일시스템은 xfs이며 , 마운트 옵션은 기본(defaults)이다. 5번째 필드 첫번째 0 자리는 dump 프로그램을 사용할 때

dump 수행 여부를 설정하는 것이다. 수행하면 1이다.

6번째 필드 두번째 0 자리는 부팅 시 파일시스템 점검 순서를 나타낸다. 부팅 시 매번 하는 것이 아니라 특정 일수가 지나거나 특정 수 만큼 마운트를 한 경우 파일 시스템을 점검한다.루트(/) 파티션은 1을 나머지는 2를 입력한다.

만약 0으로 입력하면 부팅 시 파일시스템 점검 조건에 해당되어도 점검하지 않는다. 대용량 볼륨의 경우 0으로 설정하여

필요시 파일시스템 점검을 수행한다. 이유는 서버를 리부팅해야 할 경우 파일시스템 점검으로 부팅시간이 아주 오래 걸리는 경우가 있기 때문이다.

 

/etc/fstab 사용예)

/dev/sda1 /backup xfs defaults 0 0


27. mount 마운트 해제

언마운트 하는 명령어이다. 마운트를 해제한다.

umount는 장치를 해제할 때 마운트 한 디렉토리나 장치명만 써주면 된다.

사용중인 경우에는 언마운트 되지 않는다.

 

 

장치명 해제 사용예)

umount /dev/sdb1

 

 

디렉토리명 해제 사용예)

umount /mnt/cdrom

 

 

[옵션]

옵션 기능
-n /etc/mtab에 변경 내용을 저장하지 않고 언마운트한다.
-r 언마운트가 실패할 경우에 읽기 전용으로 다시 마운트한다.
-a /etc/mtab에 기록된 모든 파일 시스템을 언마운트 한다.
-t 지정된 파일 시스템 형식에 해당하는 장치들만 언마운트 한다.파일 시스템 형식은 콤마(,) 로 구분해 여러 형식을 지정할 수 있다.

28. df 사용 중인 파일시스템 용량 확인

df는 Disk Free의 약어이다. 현재 사용 중인 1.파일 시스템의 2.전체 용량 , 3.사용한 용량 , 4.사용 가능한 용량 , 5.사용률 , 6.마운트 정보 등을 보여준다.

아무런 옵션 없이 명령을 내리면 아래과 같이 시스템의 파일 시스템 사용량 정보가 출력된다. 

 

 

[옵션]

옵션 기능
-a , --all 모든 파일 시스템을 대상으로 점검한다. 더미 파일 시스템으로 크기가 0인 것도 모두 보여준다.
어떤 시스템에서는 ignore 또는 auto 형태의 파일 시스템이 초기 값으로 생략되는 경우가 있는데,
이때 이 옵션을 사용한다.
-i , --inodes 파티션별로 디스크사용량 점검 시에 블록 사용 정보 대신에 inode 사용 정보 표시한다.
inode란 특별한 종류의 디스크 블록인데 , 이것은 파일이름 , 소유주 , 권한 , 시간정보 ,
디스크에서의 위치 등에 대한 정보를 담고 있다.
-k , --kilobytes 표시하는 숫자들의 단위를 512바이트 블럭 단위 대신 1KB 단위로 표시한다.
-h , --human 디스크사용량을 파티션별로 확인할 때 표시되는 용량을 알기 쉬운 용량단위
(byte , Kbyte , Mbyte , Gbyte 등)로 표시한다.
-P , --portability POSIX에서 사용되는 형태로 보여준다. 이 옵션은 한 줄에 하나의 파일 시스템 정보만 보여준다는 것을 제외하면 원래 출력 양식과 같다. 만약 마운트 장치 이름이 20문자 이상이면 줄이 나누어지는데 이런 경우는 생략되거나 축약된다.
-T , --print-type 디스크사용량을 출력할 때 파일 시스템의 종류와 함께 표시한다. 특정 파일 시스템의 정보만 원할 때는 아래 두 옵션을 사용한다.
-t , --type=fstype 특정 파일 시스템 종류만을 대상으로 디스크사용량을 조사한다.
-x , --exclude-type=fstype 특정 파일 시스템의 종류를 제외한 디스크사용량을 조사한다.
-v System V 용 df와 호환을 위한 옵션으로 무시한다.
--help 도움말을 보여주고 마친다.
--version 버전 정보를 보여주고 마친다.

 

 

[테스트1]

현재 서버의 디스크 사용량을 파티션별로 확인할 때.

용량을 Kbyte 단위로 표시하도록 하려면 다음과 같이 한다.

 

df -k 사용 (기본 값 df 차이점이 없다)

 

 

[테스트2]

현재 서버의 디스크 사용량을 파티션별로 확인 할 때.

표시되는 용량을 알기쉬운 용량단위로 표시하려면 아래와 같이 한다.

 

df -h 사용

 

 

[테스트3]

디스크 사용량을 출력할 때.

파일 시스템의 종류와 함께 표시하려면 아래와 같이 한다.

 

df -T 사용

 

 

[테스트4]

위 특정 파일 시스템의 종류만 대상으로 디스크사용량을 조사할 때 아래와 같이 한다.

 

df -t xfs 사용


29. fsck , xfs_repair 파일 시스템 검사 및 오류 수정

fsck(file system checker)는 리눅스에서 파일 시스템을 검사해서 오류를 수정해 주는 프로그램 이다.

리눅스 사용 중 파일 시스템이 깨졌다면 파일 시스템을 복구하기 위해 가장 먼저, 사용하는 명령어가 fsck 이다.

 

fsck는 /etc/fstab 파일에 설정되어 있는 파일 시스템을 기본 작업 대상으로 한다.

그리고 fsck는 수행 시에 /etc/fstab에 지정된 파일 시스템 타입으로 수행을 하게 되지만,

-t 옵션을 사용하여 파일 시스템 타입을 지정할 수 있다. 만약 파일 시스템으로 주어진 값이 유효하지 않는 경우에는 기본 값으로 ext2가 주어진다. 그리고 장치명이나 마운트 포인트를 여러 개 지정하여 각기 다른 물리적 드라이브 상의 여러 파일 시스템을 검사하는 병렬 처리가 가능하다.

 

fsck로 파일 시스템의 점검과 복구를 할 때에는 반드시 mount 해제한 후에 작업해야 한다.

만약 mount가 된 파일 시스템 대상으로 fsck 작업을 하면 파일 시스템이 손상될 수 있다.

(mount를 해제하지 않더라도 경고 메시지에 yes를 입력하면 fsck를 진행할 수 있다)

 

그런데 파일 시스템이 현재 사용되고 있는 경우에는 mount를 해제할 수 없다.

특히 /home 디렉토리로 mount한 파일 시스템의 경우에는

특정 사용자가 로그인하여 파일 시스템을 사용하고 있다면 mount를 해제할 수 없게 된다.

따라서 이 경우에는 사용자들이 시스템에 로그인할 수 없도록 조치를 취할 필요가 있다.

예를 들어 다음과 같이 시스템의 런레벨을 1로 조정하고 /home 파일 시스템은 umont 한다.

런레벨의 정의는 /etc/inittab에 주석으로 잘 설명되어 있다.

레벨 설명
0 halt (Do NOT set initdefault to this) 종료모드
1 Single user mode 단일 사용자 모드
2 Multiuser , without NFS (The same as 3 , if you do not have networking) 다중 사용자 텍스트 모드 , 하지만 NFS를 쓰지 않는다.
3 Full multiuser mode 다중 사용자 텍스트 모드
4 unused 사용하지 않는다.
5 X11 다중사용자 X windows 모드
6 reboot (Do NOT set initdefault to this) 재가동 모드

 

 

추가로 /(루트) 파일 시스템의 경우 mount가 해제될 수 없다.

루트 파일 시스템을 검사할 때에는 읽기 전용으로 마운트하여 검사를 진행 할 수 있다.

/(루트) 파일 시스템을 읽기 전용으로 마운트 하는 방법은 아래와 같다.

(1) /etc/sysconfig/readonly-root 파일에서 READONLY 옵션을 yes로 설정한다.

 

 

(2) /etc/fatab파일의 루트 항목에 ro 옵션을 추가한다.

 

 

 

[사용법]

fsck [-sAVRTMNP] [-C [-t 파일 시스템 유형] [파일시스템옵션] [장치명 또는 [마운트 포인트] ...

 

 

[옵션]

옵션 설명
-s fsck 동작을 시리얼화한다.대화형 모드에서 여러 파일 시스템을 점검할 때 유용하다(주의 : e2fsck는 기본 값으로 대화형으로 실행한다. e2fsck을 비대화형 모드로 실행하려면, 에러를 자동으로 치유하고자 하는 경우에는 -p 또는 -a 옵션을 주고 자동으로 치유하고 싶지 않은 경우에는 -n 옵션을 준다)
-t 검사할 파일 시스템의 형식을 지정한다. -A 옵션과 같이 사용되면 /etc/fstab 파일에 기술된 파일 시스템 중 해당하는 형식의 파일 시스템들만 검사하게 된다. 파일 시스템 형식 앞에 no를 붙이게 되면 해당파일 시스템 형식을 제외한 다른 파일 시스템들을 검사한다.
-A /etc/fstab 파일에 기술되어 있는 파일 시스템들을 지정된 순서에 맞게 모두 검사한다.
-N 실행하지 않고 단지 수행될 내용을 출력한다. 즉, 수행 내용을 시뮬레이션한다.
-P -A 플래그와 같이 사용될 때 다른 파일 시스템과 함께 병렬 처리하여 루트 파일 시스템을 점검하도록 한다.
이것은 루트 파일 시스템에 의심스러운 상태라면 오류를 일으킬 수 있으므로 안전한 방법은 아니다.
-R -A 플래그와 같이 사용될 때 루트 파일 시스템은 제외하도록 한다.
(이미 읽기-쓰기 가능으로 마운트되어 있는 경우)
-V 실행되는 각 파일 시스템용 명령을 포함하여 자세한 출력을 수행한다.
파일 시스템 특정 옵션
-a 어떤 질문도 하지 않고 파일 시스템을 자동으로 복구한다.
-r 대화형 모드로 파일 시스템의 오류를 수정한다. 즉, 사용자에게 확인을 요구한다.
-n 몇몇 파일 시스템에 특정된 것으로, 문제를 수정하지 않고 단순히 그런 문제를 표준출력(stdout)으로 보고한다.
-y 몇몇 파일 시스템에 특정된 것으로, 감지된 파일 시스템 오류를 자동적으로 수정하도록 한다.

 

 

 

[테스트1]

마운트 해제 후 fsck로 파일 시스템 점검

 

 

 

[테스트2]

특정 사용자가 로그인 하여 mount를 해제할 수 없게 된 경우

런레벨을 1로 조정하고 umount 한다.

런레벨 1 : 단일 사용자 모드로 전향

 

 

 

 

[테스트3]

루트(/) 파일 시스템을 검사하기 위해 읽기 전용으로 수정하는 방법도 있지만 다른 간단한 방법도 있다.

루트(/) 파일 시스템 / 아래에 "forcefsck" 파일을 만들고 재부팅 하면 리눅스가 재부팅하면서 fsck를 실행한다.

만들때는 touch /forcefsck 만든다. 그리고 shutdown 명령에 -F 옵션을 사용하면 재부팅 시에 fsck를 실행하도록 할 수 있다.

재부팅 명령어는 shutdown -rF now 하면 된다.

 

 

 

[기타]

위와 같이 하기 어려운 상황이라면 설치 CD나 Live CD를 사용하여 파일 시스템 검사 및 복구를 진행할 수 있다.

먼저 설치 CD를 CD-ROM 드라이브에 넣고 시스템을 시작하여 설치 메뉴에서 "Rescue installed system"를 선택하고 이후의 설정 과정을 거쳐서 루트(/) 파일 시스템을 읽기 전용으로 마운트하고 fsck 등을 이용하여 파일 시스템을 검사 및 복구

하는 것이다. 그리고 Live CD를 이용하여 리눅스로 부팅한 후에 터미널에서 fsck 명령을 내릴 수도 있다.

ext2 , ext3 , ext4 등에서 모두 fsck를 실행할 수 있는데 -t 옵션을 사용하지 않고 fsck.ext3 , fsck.ext4 등과 같이 명령을 내릴 수도 있다. fsck는 리눅스에서 사용가능한 파일 시스템 점검프로그램인 "fsck.파일시스템유형" 에 대한 전위(front-end)

프로그램일 뿐이기 때문이다. 현재 fsck.ext2 , fsck.ext3 , fsck.ext4 , fsck.ext4dev , fsck.cramfs , fsck, vfat , fsck.msdos

명령을 사용 가능하다. 그리고 이 개별 명령어들은 각각의 명령어에 특화된 옵션들이 존재한다.

 

 

 

[테스트4]

복수 옵션을 적용시켜 fsck의 실제 작업 없이 특정 파일 시스템의 점검이 어떻게 수행되는지 -N 옵션을 적용시켜 확인

 

 

xfs 파일 시스템을 사용하는 경우 다음과 같이 수행할 수 있다.

마운트를 해제한 후 점검해야 한다.

 

 


30. 디스크 사용량 분석

CentOS7의 Gnome환경에서 기본적으로 디스크 사용량 분석 프로그램이 설치된다.

프로그램 -> 유틸리티 -> 디스크 사용량 분석 또는 명령어 baobab 사용하면 그림으로 용량을 분석할 수 있다.

특정 부분을 선택하면 자세히 살펴볼 수 있다.


31. du 디스크 사용량 분석

du는 "Disk Usage"의 약어로서 파일 및 디렉토리의 사용량을 확인할 때 사용하는 명령어 이다.

이 명령어는 df 명령어와 함께 리눅스에서 디스크의 사용량을 점검하고 확인하기 위해 자주 사용된다.

즉, df명령어가 파티션(파일 시스템) 단위의 디스크사용량을 점검한다면 du 명령어는 특정 디렉토리 또는 파일을 단위로 용량을 확인하는 명령어이다. 아무 옵션 없이 다음과 같이 특정 디렉토리를 지정하여 du 명령을 내리면 해당 디렉토리의 서브 디렉토리별 용량 및 총합을 출력한다.

 

 

[옵션]

옵션 기능
-a , --all 모든 파일들의 정보를 출력한다. 초기 값은 경로(디렉토리)에 대한 정보만 출력한다.
-b , --bytes 출력 단위를 KB 대신 Byte로 한다.
-c , total 모든 파일의 디스크 사용 정보를 먼저 보여주고 나서 합계를 출력한다. 초기 값이다.
-k , kilobytes 표시되는 숫자들의 단위를 512 바이트 블록 단위 대신 1KB 단위로 표시한다.
-l , --count-links 하드 링크되어 있는 파일이 있는 경우 그것을 그대로 계산한다.
-s , --summarize 지정된 디렉토리 내에 존재하는 모든 파일과 서브디렉토리들의 용량을 모두 합친 전체용량을 출력한다.
-h , --human 표시되는 용량을 가장 알기 쉬운 용량단위(byte , kbyte , Mbyte , Gbyte 등)로 표시한다
-x , --one-file-system 이 명령이 사용되는 경로 안에 다른 파일 시스템이 있으면, 그것은 생략한다.(du -x / 명령을 내릴 때 유용하다)
-D , --dereference-args 계산되는 파일이나 경로가 심볼릭 링크 파일이면 그 원본의 값을 보여준다. 이것은 /usr/src/linux
같은 심볼릭 경로들에 대해서 조사하는데, 유용하게 쓰인다.
-L , --dereference 위의 -D 옵션과 같다.
-S , --separate-dirs 하위 경로를 합쳐서 계산하지 않고, 각각 나누어 경로별로 계산한다.
--help 도움말을 출력한다.
--version 버전 정보를 출력한다.

 

 

 

[테스트1]

특정 디렉토리의 전체 사용량을 점검할 때에는 아래와 같이 한다.

 

 

 

[테스트2]

특정 디렉토리의 전체 사용량을 용량 단위를 붙여서 점검할 때에는 아래와 같이 한다.

디렉토리명만 기술하면 해당 디렉토리의 전체 사용량을 출력하지만,

*을 붙이면 해당 디렉토리 아래의 디렉토리들의 개별 사용량을 확인할 수 있다.

 

 

 

[테스트3]

전체 디렉토리에서 용량을 많이 차지하는 순서로 결과를 보여줄 수 있다.


32. 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 장점]

순번 장점
1 다양한 디바이스 조합 지원
2 뛰어난 확장성
3 유연한 용량
4 온라인 데이터 재배치
5 볼륨 스냅샷

 

 

 

[LVM 구성요소]

아래 그림에서 4장의 Disk를 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(Physiscal volume)를 VG(Volume group)로 묶고, 이 VG에서 특정용량을 할당하여 LV

(Logical volume)를 생성한다. LV는 용량을 늘이거나 줄이는 것이 가능하다.

VG에 포함된 PV들을 온라인 상태에서 추가하거나 제거할 수 있다.

 

LV는 기본적으로 선형(Linear)논리 볼륨이 생성된다. VG에 포함된 PV들을 하나씩 하나씩 사용하게 된다.

즉, Disk1의 용량을 모두 사용하고 Disk2에 데이터를 저장한다. 하지만 속도를 빠르게 하기 위해 2개의 이상의 PV에 나눠 저장하는 스트라이프(Striped)논리 볼륨을 사용하며, 안정성을 확보하기 위해 동일한 데이터를 2개 이상의 PV에 중복 저장하는 미러(Mirrored)논리 볼륨을 사용한다.

CentOS7 부터는 RAID 1, 4, 5, 6, 10 논리 볼륨을 제공하여 안정성과 성능을 모두 확보할 수 있게 되었다.

 

 

 

[LVM 명령어 알아보기]

LVM 관련 명령어는 많고, 자주 사용되지 않기 때문에 기억해서 활용하기 보다는 필요한 경우 찾아보거나 정리하면 좋다.

help를 입력하여 명령어 리스트를 확인 할 수 있다.

 

 

 

[pvs , vgs , lvs 볼륨 확인 명령어]

콘솔에서 pvs 명령어를 입력하면 물리볼륨을(Physical Volume)을 확인 할 수 있다.

아래 예를 보면 1개의 물리볼륨(/dev/vda2)을 확인할 수 있다.

물리볼륨의 용량과 소속된 볼륨그룹을 확인할 수 있다.

/dev/vda2는 centos 볼륨그룹에 소속되어 있다.

 

예) 

[PV]                  [VG]            [Fmt]      [Attr]         [PSize]         [PFree]  

/dev/vda2         centos          lvm2        a--            124.50g         58.60g

 

 

 

다음 vgs 명령어를 입력하여 볼륨그룹(Volume Group)을 확인한다.

볼륨그룹은 centos가 있으며 물리볼륨(PV)은 1개, 논리볼륨(LV)은 2개 용량은 124.5G , 

여유 공간은 58.6G로 확인된다.

예)

[VG]                [#PV]        [#LV]        [#SN]      [Attr]         [VSize]         [VFree]  

centos                1               2               0           wz--n-       124.50g         58.60g

 

 

 

다음 lvs 명령어를 입력하여 논리볼륨(Logical Volume)을 확인한다.

논리볼륨은 2개(root , swap)가 있다. 2개의 논리 볼륨 모두 centos 볼륨그룹에 소속되어 있다.

예)

[LV]   [VG]        [Attr]           [LSize]      [PoolOrigin Data%]  [Move Log Cpy%]  [Sync Convert]

root    centos      -wi-ao----    64.92g

swap  centos      -wi-ao----   1000.00m

 


33. PV 생성 pvcreate

LVM에 사용될 디스크는 PV(physical volume)을 생성해야 한다.

물리적 디스크 또는 볼륨을 생성한다.


34. pvs 조회

디스크를 물리볼륨으로 생성하였다.

pvs 명령어를 사용하여 조회한다.

/dev/sdb 추가되었다.


35. VG 생성 vgcreate

새로운 볼륨그룹(Volume Group)을 생성한다.

볼륨그룹 이름은 centos2 이다. 볼륨 그룹은 물리볼륨 /dev/sdb가 소속되어 있다.

볼륨그룹을 생성하기 위해서는 하나의 물리볼륨이 반드시 필요하다.


36. vgs 볼륨그룹 조회

vgs 명령어를 사용하여 조회한다.

새로운 볼륨 그룹 centos2 생성된 것을 확인할 수 있다.


37. VG에 PV 추가하여 확장 vgextend

기본 볼륨그룹(Volume Group) centos2에 물리볼륨 /dev/sdc를 추가 한다.

centos2 볼륨그룹에 /dev/sdc를 추가하여 공간을 확장하였다.

vgs 명령어를 사용하여 확장된 볼륨 그룹을 확인 해본다.


38. VG에 소속된 PV를 축소 또는 삭제 한다. vgreduce

기본 볼륨그룹(Volume Group) centos2에 물리볼륨 /dev/sdc를 축소 또는 삭제 해 본다.

vgs 명령어를 사용하여 볼륨 그룹이 축소 또는 삭제 되었는지 확인 해본다.

 

볼륨그룹은 centos2 


39. LV 생성 lvcreate

새로운 논리볼륨(Logical Volume)을 생성한다.

centos2볼륨그룹에 5G 용량으로 a이름인 논리볼륨을 생성하였다.

용량할당은 -L 옵션을 사용하면 절대적인 용량으로 할당할 수 있다.

-l 옵션을 사용하면 상대적인 용량을 할당할 수 있다.

 

예) -150%FREE : 여유 공간의 50% 할당

lvs 명령어를 사용하여 논리볼륨까지 확인 한다.

 

위에 새로운 논리볼륨(a)이 생성되고 5G의 용량이 할당된 것을 확인할 수 있다.

vgs 명령어를 사용하여 볼륨그룹을 확인해 본다.

LV는 0개에서 1개로 증가했고 , 여유 공간이 줄어든 것을 확인할 수 있다.

생성된 논리볼륨의 장치명은 /dev/centos2/a 이다. 또는 /dev/mapper/centos2-a 이다


40. LV 포맷, 마운트 mkfs , mount

위 단계에서 논리볼륨을 생성하였다면 마운트할 디렉토리(/a)를 생성하고 mkfs 명령어를 사용하여 포맷하고 

mount 명령어를 사용하여 마운트 한다.

그리고 시스템 부팅 시 자동으로 마운트 되도록 /etc/fstab에 내용도 추가한다.

 

 

자동 마운트 설정

 

reboot 확인

 


41. LV 확장 lvextend

위 생성한 논리볼륨(a)에 5G 용량을 추가한다.

여기서 -L 옵션은 사이즈를 지정하는 것이다. +, - 기호를 사용하여 용량을 늘리거나 줄일 수 있다.

용량단위는 k(kilobytes) , m(Megabytes) , g(gigabytes) , t(terabytes) , p(petabytes)를 대/소문자 구분 없이 사용할 수 있다.

 

LV용량이 추가된 것을 확인한다.

볼륨그룹 여유 공간이 줄어든 것을 확인한다.

 

* 논리 볼륨만 확장한다고 파일시스템 용량이 증가하는 것은 아니다.

각 파일 시스템에 따라 파일시스템 사이즈를 변경해야 한다.


42. xfs 파일시스템 Resize : xfs_growfs

논리 볼륨을 확장하였다면 각 파일시스템에 따라 파일시스템을 확장해 주어야 한다.

xfs의 경우 아래 명령어를 사용하여 파일시스템을 확장한다.

xfs_growfs 명령어를 사용하여 마운트 된 파일시스템의 용량을 확장하였다.

xfs는 파일시스템 확장은 지원하나 축소는 지원하지 않는다.

 

df 명령어로 확장된 볼륨을 확인한다.

df 명령어를 사용하여 볼륨의 용량을 확인하였다. 총 10G로 늘어났다.

파일시스템을 확장하는 것은 마운트를 해제하지 않아도 가능하다.


43. LV 축소 : lvreduce

논리볼륨 축소는 vreduce 명령어로 가능하다.

주의해야 할 것은 먼저 파일시스템을 축소하고 논리볼륨을 축소하여야 한다.

만약 파일시스템을 축소하지 않고 논리 볼륨을 축소하면 파일시스템이 깨진다.

그리고 앞에서 설명하였듯 xfs의 경우 파일시스템 축소를 지원하지 않는다.

볼륨 축소를 테스트 하기 위해 새로운 볼륨을 생성하여 ext4 파일시스템으로 포맷하고 볼륨을 축소하는 테스트를 해본다.

 

[b 논리 볼륨 생성]

-l 옵션을 사용하여 상대적인 용량을 설정한다.

centos2 볼륨그룹의 여유 공간100% 모두 사용하여 b 논리볼륨을 생성한다.

 

 

[ext4 파일시스템으로 포맷]

 

 

[/b 디렉토리 생성 및 마운트]

 

 

[마운트 해제]

용량 축소를 위해 필수작업

 

 

[파일시스템 체크]

용량 축소를 위해 필수작업

 

 

[파일시스템 축소]

resize2fs 명령어를 사용하여 ext2 , ext3 , ext4 파일시스템을 확장하거나 축소할 수 있다.

위 내용은 30G로 볼륨을 축소한 것이다. 용량단위를 명시하지 않으면 사용할 수 있는 최대 볼륨 사이즈가 되며,

단위는 s(512 바이트 섹터) , K(kilobyte) , M(megabyte) , G(gigabyte)를 사용할 수 있다.

 

 

 

논리볼륨 용량 확인 lvs

볼륨그룹 용량 확인 vgs

물리볼륨 용량 확인 pvs

 

 

[논리볼륨 축소]

lvreduce 명령어를 사용하여 볼륨은 30G로 축소하였다.

파일시스템관련 경고 메시지가 나타나며 y를 하여 축소를 한다.

 


44. PV볼륨 온라인 이동 및 제거 : pvmove

하나의 물리볼륨에 배드섹터가 있거나, 조금의 이상이 있다면 문제가 보이는 물리 볼륨을 제거하거나 새로운 물리볼륨으로 교체해야 한다. 요즘 SATA , SAS인터페이스는 시스템 가동 중에 디스크를 추가하거나 제거하는 것이 가능한 Hot SWAP을 제공한다. 시스템 가동 중에 볼륨을 다른 볼륨으로 이동시키는 방법을 알아보자.

 

[물리볼륨 확인]

만약 centos2 안에 있는 /dev/sdb , /dev/sdc 두개 볼륨 중

/dev/sdc 볼륨에 장애가 있다 가정한다.

 

pvs

 

[물리볼륨 이동]

pvmove 명령으로 /dev/sdc 볼륨을 다른 여유 공간으로 온라인 상태에서 이전한다.

 

예)

pvmove /dev/sdc

 

 

[물리볼륨 삭제]

 

예)

pvremove /dev/sdc

 

 

[볼륨그룹 삭제]

 

예)

vgremove centos2

 

 

[논리그룹 삭제]

 

예)

lvremove centos2/lv_sdc


45. XFS 쿼타(Quota)

CenOS7 부터는 기본파일시스템으로 xfs가 사용된다.

xfs에서 제공하는 쿼타는 사용자, 그룹뿐만 아니라 프로젝트, 디렉토리별로 제안할 수 있다.

일반적인 쿼타 설정법과는 다르다.

 

예전방식에서는 쿼타는 사용자, 그룹을 기준으로 용량 및 파일 수를 제한할 수 있었다고 한다.

그래서 웹서비스를 제공하기에는 불편한 점이 많이 있다 한다.

Apache 웹서버의 경우 nobody 또는 daemon 사용자권한으로 작동한다.

웹을 사용하여 파일을 업로드 하는 경우에는 nobody 또는 daemon 사용자 소유가 되어 있어 쿼타에서는 사용되는 용량으로 측정되지 않았다. 이러한 부분을 해결하기 위해 각 사용자의 권한으로 Apache 웹서버를 실행되도록 하였지만,

이는 보안에 취약하므로 xfs 쿼타의 디렉토리별 제한은 이러한 문제를 해결해 준다.

 

 

[마운트 옵션 설정 : etc/fstab]

쿼타를 사용하기 위해서는 파일 시스템 마운트 과정에서 옵션을 추가해야 한다.

마운트 옵션은 아래와 같다.

  마운트 옵션 기타
  제한 제한안함
사용자쿼타 uquota uqnoenforce  
그룹쿼타 gquota gqnoenforce 프로젝트 쿼타와 동시 사용 불가
프로젝트쿼타 pquota pqnoenforce 그룹쿼타와 함께 사용 불가

 

xfs 쿼타 관련 마운트 옵션은 제한하는 경우와 제한 하지 않고 모니터링을 위해 사용하는 각 2가지 옵션을 제공한다.

웹호스팅의 경우 제한을 하게 되면 웹사이트 장애까지 유발할 수 있다.

제한은 하지 않고 모니터링만 하기도 한다.

그룹쿼타와 프로젝트 쿼타는 동시에 사용할 수 없다.

서버 부팅될 때 파일시스템 마운트옵션을 넣기 위해 /etc/fstab에 아래와 같은 내용을 추가한다.

마운트 옵션으로 사용자쿼타(uquota), 프로젝트쿼타(pquota)옵션을 추가했다.

 

 

 

 

쿼타 사용방법 확인

help

 

 

쿼타 옵션을 사용하기 위해서는 -x 옵션을 사용한다.

 

 

또는 -c 옵션을 사용하면 비대화형 모드로 명령을 내릴 수 있다.

 

 

아래와 같이 테스트 쿼타를 설정 한다.

사용자 블록 제한 아이노드 제한
soft hard soft hard
admin 1G 1.1G 1000 1100

 

 

 

제한 할 수 있는 항목은 블록, 아이노드, 실시간 블록 제한 있다.

실시간 블록 제한(rtbsoft, rtbhard)는 CentOS 7에는 구현되지 않아 사용할 수 없다.

 

 

 

[설정내역 확인]

report를 사용하여 블록 및 아이노드 사용량 제한설정을 확인할 수 있다.

 

 

 

[프로젝트 쿼타 설정]

원하는 디렉토리를 묶어서 특정 디렉토리 단위로 쿼타설정을 할 수 있다.

2개의 디렉토리를 proj1 이라는 이름으로 프로젝트 쿼타를 설정한다.

디렉토리 프로젝트 이름 블록 제한 아이노드 제한
soft hard soft hard
/data/proj1
/data/proj2
proj1 1G 1.1G 1000 1100

 

 

 

[/sdc안에 /proj1 , /proj2 디렉토리를 생성한다]

 

 

 

[/etc/projects 파일 생성]

/etc/projects 파일은 존재하지 않는다.

생성한다.

 

 

 

[/etc/projid 파일 생성]

/etc/projid 파일은 존재하지 않는다.

생성한다.

프로젝트 ID와 이름을 매핑한다.

 

 

 

[프로젝트 쿼타 설정]

proj1 이름으로 프로젝트를 생성한다.

 

 

[프로젝트 쿼타 제한 설정]

위 사용자 쿼타와 비슷하게 설정했다.

단, 프로젝트 쿼타는 -u 대신 -p 옵션이 사용된다.

사용자 이름 대신 프로젝트 이름이 사용된다.

 

 

 

[쿼타 설정 확인]

 

 

 

[프로젝트 쿼타 디렉토리 확인]

등록된 프로젝트의 디렉토리는 path 명령어로 확인할 수 있다.

 

 

 

[특정 프로젝트  소유하고 있는 디렉토리 사용량을 확인]

proj1 프로젝트의 사용량을 확인할 수 있다.

 

 

 


46. ext 쿼타(Quota)

CentOS6 까지 기본 파일시스템으로 ext계열이 사용되었다.

ext계열의 파일시스템에서 사용된 쿼타를 설정해 보도록 하자.

xfs의 쿼타와 다르게 사용자쿼타, 그룹쿼타만 제공된다.

 

 

 

[마운트 옵션 설정 : /etc/fstab]

쿼타를 사용하기 위해서는 파일시스템 마운트 과정에서 옵션을 넣어야 한다.

마운트 옵션은 아래와 같다.

종류 마운트 옵션
사용자쿼타 usrquota
그룹쿼타 grpquota

 

 

 

[/dev/sdc ext4 포맷한다]

 

 

 

[/etc/fstab 다음 내용을 추가한다]

 

 

 

 

[마운트 내용을 확인한다]

앞에 설정한 userquota, grpquota 옵션이 설정된 것을 확인한다.

 

 

 

[사용자 쿼타 설정]

앞에서 쿼타를 사용할 파티션이 준비되었다면 사용자 쿼타를 설정한다.

쿼타 DB파일을 생성 할 것이다.

쿼타 설정된 파일시스템에 사용자쿼타 DB파일(aquota.user) 그룹쿼타DB파일(aquota.group)을 생성한다.

파일은 quotacheck의 -c 옵션으로 생성 할 수 있다.

 

* lost+found 디렉토리란?

lost+found 디렉토리 확인 시 숫자로 되어 있는 파일들이 있다.

이 숫자는 inode 값이다. inode란 파일시스템 안에 파일들이 파일시스템과 연결하고 있는 메타데이터 이다.

inode는 파일이라 할 수 있다. 파일 시스템에서 여러 이유로 잃어버린 파일들이 inode 숫자로 표시되어 있다 생각하면 된다. 서버 관리자가 파일시스템을 체크하는 명령어 수행 시 lost+found 생성된다.

서버 관리자가 재검하고 복구하는데 사용되는 디렉토리 이다.

 

 

 

[쿼타 체크]

설정하기 전에 쿼타 체크를 실행한다.

체크를 실행하지 않으면 쿼타 설정 시 현재 사용중인 블록, 아이노드가 갱신되지 않는다.

예전에 쿼타가 설정되어 있는 볼륨이라면 기존 쿼타가 활성화되어 있으므로 quotacheck시 파일을 손상시킬 수 있어서

쿼타를 끄거나 -f를 사용하여 강제로 확인하라는 메시지가 나타난다.

여기서는 강제로 기존 쿼타설정을 종료 후  쿼타 체크를 확인했다.

 

 

 

[사용자 쿼타 설정]

edquota 명령어를 사용하여 사용자 쿼타를 설정한다.

아래 명령어를 입력하면 기본 에디터 vi 들어간다.

 

사용자 기본값

예1)

 

사용자 기본값 

예2)

 

아래와 같이 값을 수정하고 저장한다.

사용자 블록 제한 아이노드 제한
soft hard soft hard
admin 1G 1.1G 1000 1100

 

 

 

 

[그룹 쿼타 설정]

그룹 쿼타를 알아본다.

그룹 쿼타도 마찮가지로 쿼타 DB 파일 생성이 필요하다.

쿼타 설정된 파일시스템에 사용자쿼타 DB 파일(aquota.user) 그룹쿼타 DB파일(aquota.group)을 생성한다.

quotacheck의 -c 옵션으로 생성할 수 있다. (앞에 사용자 쿼타에서 설정하였다면 이 부분은 넘어간다)

 

 

[쿼타 체크]

설정하기 전에 쿼타 체크를 실행한다.

체크를 실행하지 않으면 쿼타 설정 시 현재 사용 중인 블록, 아이노드가 갱신되지 않는다.

 

 

[그룹 쿼타 설정]

edquota 명령어에 -g 옵션을 사용하여 그룹 쿼타를 설정한다.

vi에서 내용을 편집하고 저장할 수 있다.

현재 사용량과 제한 설정이 모두 편집 가능한데, 현재 사용량을 편집한다는 것은 의미가 없다.

 

그룹 기본값

예1)

 

아래와 같이 설정한다.

그룹명 블록 제한 아이노드 제한
soft hard soft hard
admin 1G 1.1G 1000 1100

 

 

[설정내역을 확인]

epquota 명령어에 -g 옵션을 사용하여 그룹의 블록 및 아이노드 사용량 제한설정을 확인한다.

여기서 grace는 soft 쿼타 초과 시 남은 유예기간을 의미한다.

 

 

[soft 쿼타 초과 후 유예기간 설정]

옵션 -t 는 쿼타 초과 후 유예기간 동안은 hard 쿼타까지 사용가능하다.

하지만 유예기간이 지난 후에는 soft 쿼타까지만 사용이 가능하다.


 

반응형

'Linux > CentOS' 카테고리의 다른 글

소프트웨어 관리  (0) 2025.01.13
프로세스  (0) 2024.12.02
split 파일 자르기  (0) 2024.11.29
sort 파일 내용 정렬  (0) 2024.11.29
grep 패턴 매칭 라인 출력  (0) 2024.11.28