728x90

가상 메모리

- 가상 메모리 = 물리 메모리(RAM) + 스왑(디스크 장치에 생성되는 영역)

- 페이지 인(SWAP> RMA): 프로세스가 스왑 영역에 존재할 경우, 스왑 영역의 데이터리 물리 메모리 영역으로 이동시키는 작업

- 페이지 아웃(RAM > SWAP): 물리 메모리에 위치한 프로세스의 우선순위가 낮을 경우, 물리 메모리를 스왑 영역으로 이동시키는 작업

- 페이징: 페이지 인 + 페이지 아웃

 

스왑 명령어

1) 스왑 공간 확인: free

2) 스왑 공간은 일반적으로 메모리의 두 배 정도 할당해줌

3) 스왑 파일 시스템: mkswap /dev/sdb1

4) 수동 스왑 마운트: swapon /dev/sdb1

5) 수동 스왑 마운트 해제: swapoff /dev/sdb1

6) (/etc/fstab)설정된 스왑 모두 마운트: swapon -a

7) 모든 스왑 마운트 해제: swapoff -a

 

 

스왑 영역 구성

1. 파티션id: swap

2. 스왑 파일 시스템으로 포맷

3. 파티션 스왑 활성화

4. 스왑 마운트

 

 

0. 사전 실습 환경 설정

 

1) 모두 언마운트: umount /mnt/lvm

 

 

2)  파티션 모두 지우기: fdisk /dev/sdb > d

 

 

3)  파티션 생성: n

 

 

 

1. 파티션 Id를 swap으로 변경: t > 1 > 82 > w > probepart /dev/sdb

1) 파티션 Id 변경: 82(swap)

 

파티션 Id 변경 후 저장

 

2) 파티션 생성 후 partprobe 명령어 입력: partprobe /dev/sdb

- 재부팅없이 파티션을 인식하는 명령어

 

* 에러 확인:  이전에 생성한 lvm을 삭제하지 않아서 재부팅을 요청하는 에러

 

 

2. 스왑 영역 생성: mkswap /dev/sdb1

파티션 장치를 지정하여 스왑 영역 생성

 

 

3. /dev/sdb1 파티션 스왑 영역 활성화: swapon /dev/sdb1

스왑 용량 확인 명령어

1) free -h

2) swapon -s

스왑 용량이 확장된 것을 확인할 수 있음

 

 

4.  /dev/sdb2, /dev/sdb3 파티션 스왑 영역 활성화: /etc/fstab에 등록

 

/etc/fstab 파일에

 

스왑 활성화 및 비활성화 실행 후 스왑 정보 확인

728x90
728x90

LVM의 기본 개념

1) LVM은 독립적으로 구성된 디스크 파티션을 하나로 연결하여 한 파티션처럼 사용할 수 있도록 함

2) 논리 볼륨 구성

 

물리 볼륨 볼륨 그룹 논리 볼륨
- 디스크 전체 또는 일부를 파티션으로 지정하고 그 파티션으로 물리 볼륨을 생성함 - 1개 이상의 물리 볼륨의 집합으로 구성
- 사용할 수 있는 볼륨 그룹의 총 사이즈는 해당 볼륨 그룹에 포함된 물리 봄륨 사이즈의 합
- 볼륨 그룹 생성 시 PE 크기 지정
- 기본 PE 크기: 4MB
- 파일 시스템에서 데이터를 저장할 수 있는 볼륨을 생성하는 단계
- 논리 볼륨의 최대 크기는 볼륨 그룹의 최대 크기만큼 지정 가능

 

 

논리 볼륨의 장점

 

1. 디스크 파티션의 구조와 상관없이 원하는 크기의 논리 볼륨을 생성할 수 있음

 -> 단일 디스크의 크기보다 큰 볼륨 생성 가능

 

2. 논리 볼륨으로 생성된 볼륨의 사이즈가 부족할 경우 볼륨을 확장할 수 있음

 -> 볼륨 내의 데이터를 그대로 유지한 상태에서 볼륨 확장 가능

 

3. 데이터를 유지한 상태에서 논리 볼륨을 구성하고 있는 디스크를 제거하는 것이 가능

 

4. 논리 볼륨 생성 시 RAID를 적용한 볼륨 생성 가능

 

5. 스냅샷 기능을 사용할 수 있음

 

 

논리 볼륨 생성 과정

 

1. 기존 파일 시스템의 종류 변경(83 > 8e): fdisk /dev/sdb > t

2. PV 생성: pvcreate /dev/sdb1 > pvscan

3. VG 생성: vgcreate grp1 /dev/sdb1 /dev/sdb2 > vgdisplay grp1

4. VG 활성화(생략해도 무관)

5. LV 생성: lvcreate -l 248 grp1 -n mylvm1

6. LV에 파일 시스템 생성: mkfs.ext4 /dev/grp1/mylvm1 > vgdispaly -v 

7. LV 마운트: mkdir /mnt/lvm > mount /dev/grp1/mylvm /mnt/lvm

 

파일 시스템 정보 확인

1) lsblk -f

2) blkid

3) df -Th

 

실습 사전 환경 설정

1) /dev/sdb1 500MB

2) /dev/sdb2 500MB

3) 모두 언마운트

 

파일 시스템에 손상이 있는 경우

디스크 검사(파일 시스템 검사): fsck

 

백업 슈퍼블록으로 슈퍼블록이 깨졌을 때 복구하기

1) dumpe2fs 장치명

2) fsck -b 32768 장치명

 

 

1. 기존 파일 시스템의 종류 변경(83 > 8e): fdisk /dev/sdb > t

- 물리 볼륨을 생성하기 위한 파티션 생성

- 파티션 타입을 'Linux LVM'으로 설정

   * 파티션 타입을 정확하게 설정하지 않을 경우, RAID 형태의 논리 볼륨을 생성할 때 정상적으로 사용할 수 없음

 

파티션 타입 변경: 83(Linux) > 8e(Linux LVM)

 

 

 

**에러 확인: 아래 에러는 마운트되어 있어서 발생하는 에러로 언마운트 해줘야 함

 

 

2. PV 생성: pvcreate /dev/sdb1 > pvscan

- 물리 볼륨 생성: pvcreate

- 물리 볼륨 삭제: pvremove /dev/sdb1 /dev/sdb2

- pvcreate 명령을 사용해 /dev/sdb1과 /dev/sdb2 를 물리 볼륨으로 변환

 

/dev/sdb1과 /dev/sdb2 물리 볼륨 생성

 

생성한 볼륨 정보 확인

 

 

3. VG 생성: vgcreate grp1 /dev/sdb1 /dev/sdb2 > vgdisplay grp1

- 볼륨 그룹 생성: vgcreate

- 볼륨 그룹 삭제: vgrmove grp1

- -s 옵션: 볼륨 그룹의 PE 크기를 지정할 때 사용

 

grp1 볼륨 그룹 생성

 

생성한 볼륨 그룹에서 확인이 필요한 정보 (-v: 상세 정보)

 

 

5. LV 생성: lvcreate -l 248 grp1 -n mylvm1

- 논리 볼륨 생성: lvcreate

- 논리 볼륨 삭제: lvremove

- -l: 생성할 논리 볼륨의 크기 지정 (PE 개수 지정)

- -L: 생성할 논리 볼륨의 크기 지정 (사이즈 지정)

- -n: 생성할 논리 볼륨의 이름 지정

- 생성된 논리 볼륨 정보 확인: lvscan

 

* 해당 실습에서는 vg(grp1)를 통째로 lv(mulvm) 생성

논리 볼륨 생성 및 정보 확인

 

 

6. LV에 파일 시스템 생성: mkfs.ext4 /dev/grp1/mylvm1 > vgdispaly -v 

 

논리 볼륨에 파일 시스템 생성

 

볼륨 그룹 정보 확인

 

 

7. LV 마운트: mkdir /mnt/lvm > mount /dev/grp1/mylvm /mnt/lvm

- 마운트할 디렉토리 생성

- 생성한 디렉토리에 마운트

 

728x90
728x90

파일 시스템 테이블: /etc/fstab

1) mount 명령을 사용한 마운트는 시스템 재부팅 시 모두 해제됨

2) 시스템 재부팅 후에도 마운트를 유지하기 위해서는 특정 파일에 파일 시스템에 대한 마운트 정보 등록 필요

3) 특정 파일: /etc/fstab

 

 

[실습] 파일 시스템 테이블에 마운트 정보를 등록하여 시스템 재부팅 후에 마운트가 자동으로 되는지 확인

 

마운트 모두 해제

 

/etc/fstab 파일에 마운트 정보 등록

 

-a 옵션: 파일 시스템 테이블에 등록된 항목 중 마운트 되지 않은 항목을 마운트하는 옵션
파일 시스템 등록 후 즉시 파일 시스템 마운트된 것을 확인할 수 있음

 

시스템 재부팅

 

시스템 재부팅 후 자동으로 마운트된 것을 확인

 

* 마운트 확인 후에는 다른 실습을 위해 /etc/fstab 파일에 추가한 정보 모두 제거하고 모두 언마운트하여 환경 설정 초기화

728x90
728x90

4. 파일 시스템 생성: mkfs -t ext4 /dev/sdb1

1) mkfs -t ext4 /dev/sdb1

2) mkfs -t xfs /dev/sdb2

 

파티션한 /dev/sdb1 디스크에 ext4 파일 시스템 구성(=포맷)

 

파티션한 /dev/sdb2 디스크에 xfs 파일 시스템 구성

 

 

5. 마운트: mount /dev/sdb1 /test1

1) 마운트할 디렉토리 생성: test1, test2

2) 생성한 디렉토리에 마운트: mount /dev/sdb1 /test1

3) 마운트 정보 확인: lsblk -f

 

mount 명령의 주요 옵션

옵션 설명
-t 마운트할 파일 시스템의 유형 지정(ext2, ext3, ext4, xfs, ...)
-o 파일 시스템 마운트 시, 세부 옵션 지정
- ro: 파일 시스템을 읽기 전용 모드로 마운트
- suid: 파일 시스템 내 파일의 SetUID 설정 사용

 

마운트할 디렉토리 생성 > /test1 마운트 포인트에 /dev/sdb1 파티션 장치 마운트

 

마운트 확인

 

/test1 디렉토리에서 파일 생성 및 확인

 

 

6. 언마운트: umount /dev/sdb1

언마운트 시

1) 장치명 사용: umount /dev/sdb1

2) 마운트 포인트 사용: umount /test1

 

 

장치명을 사용하여 마운트 해제

 

언마운트 후에 /test1 디렉토리에서 생성한 파일을 확인할 수 없음 > 마운트가 해제된 것을 확인할 수 있음

 

마운트 포인트를 사용하여 마운트 해제

 

/dev/sdb1 파티션 장치를 /test1 마운트 포인트에 다시 마운트 > 이전에 생성한 파일 확인

728x90
728x90

3. 파티셔닝: fdisk /dev/sdb

 

1) fdisk -l: 디스크 정보를 확인하고 파티셔닝할 디스크 장치를 식별함

2) fdisk /dev/sdb: 디스크 파티션 구성

3) m: fdisk 내부 명령어 확인(주로 사용: p, q, w, d, m, n, l)

4) p: 파티션 정보 확인

5) n: 새로운 파티션 추가

6) 파티션 종류: p > 파티션 넘버: 1 > 섹터: 2048 > 파티션 크기 설정: +500M

    > 생성한 파티션 정보 확인: p > 구성한 파티션 저장: w

 

 

/dev/sdb 디스크 파티션 구성

 

fdisk의 내부 명령어 확인(주로 사용: p, q, w, d, m, n, l)

 

p: 파티션 정보 확인

 

* mbr은 파티션이 총 4개까지 가능하며 3개까지는 p, 4개 이상부터 e 옵션 선택

파티션 종류: p > 파티션 넘버: 1 > 섹터: 2048 > 파티션 크기 설정: +500M

 

구성할 파티션 옵션 구성

 

생성한 파티션 정보 확인

 

두 번째 파티션 생성

 

[실습1] 파티션 3개 생성: 500, 500, 나머지 용량

 

500MB 파티션 생성 1

 

500MB 파티션 생성 2

 

나머지 용량 파티션 생성 3

 

생성한 파티션 저장: w

 

저장된 파티션 정보 확인: fdisk -l
리눅스 디바이스 정보 출력: lsblk (상세 정보 출력: blkid)

728x90
728x90

* 참고: ova 파일 가져오기

해당 옵션을 선택해야 ova 파일을 가져올 때 충돌이 일어나지 않음

 

 

1. 디스크 설치: 설정 > 저장소

 

가상 머신 설정으로 이동

 

네트워크 설정 확인 1: NAT 네트워크

 

네트워크 설정 확인 2: 호스트 전용 어댑터

 

저장소 > 컨트롤러: SATA 디스크 추가

 

디스크 만들기

 

디스크 만들기 옵션 선택: VDI

 

디스크 용량을 고려하여 동적할당 선택

 

10GB로 설정

 

추가한 디스크 확인

 

디스크가 제대로 추가된 것을 확인할 수 있음

 

 

2. 디스크 인식 확인: fdisk -l

- 추가된 디스크는 대체로 운영체제에서 자동 인식됨

 

fdisk mbr 방식
gdisk gpt 방식

 

설정 변경 후 가상 머신 실행

 

기존 디스크: /dev/sda

새로 추가한 디스크: /dev/sdb

 

fdisk -l > 디스크 정보를 확인하고 파티셔닝할 디스크 장치를 식별함

 

728x90
728x90

리눅스 파일 시스템의 종류

 

파일 시스템

- 파일과 디렉토리의 집합을 구조적으로 관리하는 체계

- 어떤 구조를 구성하여 파일이나 디렉토리를 관리하느냐에 따라 다양한 형식의 파일 시스템이 존재함

 

 

리눅스에서 지원하는 기타 파일 시스템

파일 시스템 기능
msdos MS-DOS 파티션을 사용하기 위한 파일 시스템
iso9660 CD-ROM, DVD의 표준 파일 시스템으로 읽기 전용으로 사용
nfs network file system으로 원격 서버의 디스크를 연결할 때 사용
vfat 윈도 95, 98, NT를 지원하기 위한 파일 시스템
hpfs HPFS를 지원하기 위한 파일 시스템
ntfs 윈도의 NTFS를 지원하기 위한 파일 시스템
sysv 유닉스 시스템V를 지원하기 위한 파일 시스템
hfs 맥 컴퓨터의 hfs 파일 시스템을 지원하기 위한 파일 시스템

 

 

리눅스의 가상 파일 시스템

파일 시스템 기능
swap 스왑 영역을 관리하기 위한 스왑 파일 시스템
tmpfs - temporary file system으로 메모리에 임시 파일을 저장하기 위한 파일 시스템이며, 시스템이 재시작할 때마다 기존 내용이 없어짐
- /tmp 디렉토리를 예로 들 수 있음
proc - proc 파일 시스템으로 /proc 디렉토리
- 커널의 현재 상태를 나타내는 파일을 가짐
ramfs 램 디스크를 지원하는 파일 시스템
rootfs - root file system으로 / 디렉토리
- 시스템 초기화 및 관리에 필요한 내용 관리

 

 

현재 시스템이 지원하는 파일 시스템 확인: /proc/filesystems

* nodev: 해당 파일 시스템이 블록 장치와 연결되어 있지 않다는 의미 (=가상 파일 시스템)

 

 

리눅스 파일 시스템의 구조

 

리눅스의 모든 파일 시스템의 기본 개념

- 파일(디렉토리 포함)은 inode(번호)로 관리됨

- 디렉토리는 단순히 파일의 목록을 가지고 있는 파일일 뿐임

- 특수 파일을 통해 장치에 접근할 수 있음

* b(블록)와 c(캐릭터)는 장치를 의미함

 

 

ext4 파일 시스템의 구조

 

***중요 요소

ext4 슈퍼블록 디스크 핵심 정보
그룹 디스크립터 그룹의 정보
inode 테이블 파일의 메타 데이터
데이터 블록 파일의 실제 데이터

 

 

 

 

728x90
728x90

기본 접근 권한: 664, 775

- 리눅스에서는 파일이나 디렉토리를 생성할 때 기본 접근 권한이 자동으로 설정

- 일반 파일: 664

- 디렉토리: 775

파일과 디렉토리의 기본 접근 권한 확인

 

 

기본 접근 권한 확인하고 변경하기: umask [옵션] [마스크 값]

- 기본 접근 권한 출력 및 변경

- [-S] 옵션: 마스크 값을 문자로 출력

- 루트 사용자 계정의 기본 umask: 0022

- 일반 사용자 계정의 기본 umask: 0002

- 재부팅 후에도 변경된 umask를 적용하기 위해서는 사용자 초기 프로파일에 저장 필요

  > 사용자 초기 프로파일(/etc/profile): ~/.profile, ~/.bash_rc

 

기본 마스크 값 출력: 0002

 

 

마스크 값의 의미

- 파일이나 디렉토리 생성 시 부여하지 않을 권한을 지정해놓는 것

- 마스크 값이 002일 경우, -------w- 기타 사용자에게 쓰기 권한을 부여하지 않겠다는 의미

 

 

마스크 값 변경: umask [mask 값]

 

마스크 값 변경 전: 002

파일과 디렉토리의 기본 접근 권한 확인

 

마스크 값 변경 후: 007

umask 값 변경

 

디렉토리 생성 후 변경된 기본 권한 확인

 

파일 생성 후 변경된 기본 권한 확인

 

특수 접근 권한

- 접근 권한은 원래 4자리이며

- 생략된 맨 앞자리는 특수 접근 권한을 의미함

- 맨 앞자리 숫자가 0이면 일반 접근 권한임

- 1, 2, 4 이면 특수 접근 권한임

맨 앞자리 권한
4 SetUID
2 SetGID
1 스티키 비트

 

SetUID

- 실행할 때 임시로 파일 소유자의 권한으로 실행됨

- 파일에만 설정

- SetUID가 설정되면 소유자의 실행 권한에 's'가 표시됨

 

소유자 실행 권한이 있어 user 사용자 계정에서 passwd 명령어 실행 가능

 

- /etc/shadow 파일은 root 계정으로만 수정 가능

- passwd 명령어는 SetUID가 설정되어 있기 때문에 소유자인 root 권한으로만 실행 가능

 

소유자 실행 권한이 사라져 user 사용자 계정에서 passwd 명령어 실행 권한이 없음

 

 

SetGID

- 실행할 때 임시로 파일 소유 그룹의 권한으로 실행됨

- 파일과 디렉토리 모두 설정 가능

- 단, 디렉토리에 설정한 경우 해당 디렉토리에서 생성한 파일의 소유 그룹은 해당 디렉토리 소유 그룹으로 자동 설정됨

 

 

스티키 비트

- 스티키 비트는 디렉토리에만 설정 가능

- /tmp 디렉토리가 대표적

- 스티키 비트가 설정되면 기타 사용자 실행 권한에 't'가 표시됨

 

스티키 비트가 설정된 /tmp 디렉토리에서 작업

 

- 스티키 비트가 설정되어 있는 디렉토리에는 누구나 파일 및 디렉토리 생성 가능

 

- 파일은 파일을 생성한 계정(user)으로 소유자(user)가 설정되며, 다른 사용자가 생성한 파일은 삭제 불가

 

- 다른 사용자 계정(user02)에서 파일 삭제 불가

 

- 777 권한을 부여해도 다른 사용자 계정(user02)에서는 삭제가 불가함

user 사용자 계정에서 777 권한 부여

 

스티키 모드가 설정되면 권한 적용이 되지 않음을 알 수 있음

 

728x90

+ Recent posts