1. 파일시스템의 이해

- 파일시스템 : 운영체제가 파티션이나 디스크에 데이터를 저장하고, 읽고, 쓰고 찾기위해 구성하는 일련의 체계, 운영체제가 사용자에게 제공하는 가장 직접적인 서비스 형태중 하나

- 파일시스템의 구성은 운영체제 설치지 발생

 

1. 파일시스템의 기능

(1) 사용자가 파일을 생성(Create), 수정(Modify), 삭제(Delete) 할 수 있도록 제공

(2) 사용자가 파일을 사용하기 적합한 형태의 구조로 구성하고, 다양한 추가 정보 제공

(3) 다른 사용자와의 파일을 공동으로 사용할 수 있는 적절한 제어 방법 제공

(4) 파일 공유를 위하여 판독 접근, 기록 접근, 수행 접근 등의 다양한 접근 제어방법제공

(5) 정보 손실이나 파괴를 방지하기위해 백업(Backup)이나 복구(Recovery)를 위한 기능 준비

(6) 사용자와 장치 간의 독립성(device independence)을 유지하기위해, 사용자가 물리적인 장치 이름 대신에 적절한 이름 제공

(7) 정보가 안전하게 보호되고 비밀이 보장될수 있도록 정보의 암호화(encryption) 및 복호화(decryption)기능제공

(8) 사용자가 파일이나 디렉터리에 접근하기 쉬운 인터페이스 및 명령어 제공

 

2. 리눅스 파일 시스템

-cf)운영체제는 저장단위를 바이트로 사용한다

- 주요 파일 시스템

 minix: 파일시스템으로 초기 리눅스 파일 시스템의 모태가되었고 사이즈와 파일 이름이 제한이 많았다

 ext: minix최대 파티션 크기와 파일 이름 제한을 해결한 시스템 이지만 파일접근지원에 문제 있음

 ext2 : 고용량 디스크 사용을 대비해 확장성에 염두하고 설계

ext3 : ACL(Acces Control List)를 통한 접근 제어 지원

ext4 (주로사용) : 기억공간제한을 없애고 대형파일 시스템관련된 기능 강화

nfs : 네트워크 상의 시스템 파일들을 공유할 때 사용하는 파일 시스템

proc : 리눅스에서 사용하는 가상 파일 시스템으로 커널과 관련된 데이터를 담는 영역

항목

ext2

ext3

ext4

XFS

RHEL 6

RHEL7

RHEL 6

RHEL 7

최대 파일크기

2GB

2TB

16TB

100TB

500TB

최대 파일 시스템 크기

4TB

16TB

16TB

50TB

300TB

500TB

하위 디렉터리

생성 최대수

32000

32000

65000

제한없음

3. 리눅스 파일 시스템의 구조

-블록 : 파일 시스템에서 기본적으로 데이터를 저장하는 단위로 메모리에서 입출력 작업시 한번 거칠떄 읽거나 쓰여지는 단위

-슈퍼블록: 파일시스템에 대한 전체적인 정보를 가지고 있는블록

-데이터 블록 : 파일을 보관해야 하는 정보를 저장하는 영역으로 파일의 데이터가 존재

-간접 블록 : 추가적인 데이터 블록을 위한 포이터들이 사용할 동적으로 할당되는 공간

-: 아이노드나 간접 블록 안의 데이터 블록의 주소로 특별한 값이 저장되지만 디스크상 공간은 실질적으로 할당되지 않음

-저널링 기술 : 기존 FSCK에 걸리는 시간을 단축하기위해 데이터를 디스크를 사용하기전 로그에 데이터를 남겨 시스템의 비정상적인 종료에도 로그를 사용해 FSCK보다 빠르고 안정적인 복구기능을 제공하는 기술

로그 정보를 바탕으로 파일 시스템에 수정내용을 적용하기되면 속도도빠르고 복구안정성도 뛰어난다

EX ) ext3, ext4, XFS, JFS, ReiserFS

-아이노드 : 전통적인 유닉스 계열 파일 시스템에서 사용하는 일종의 자료구조로 각각의 파일은 하나의 아이노드를 할당받아 관리

           아이노드는 아이노드 넘버,접근모드, 파일형식, 소유자 정보, 파일크기 등 정보를 저장

1. 부트 매니저(부트 로더: 부팅매니저 프로그램)

-부트 매니저: 부팅을 도와주는 역할을 하는 프로그램

-하드디스크 맨 앞쪽 MBR(Master Boot Record)에 설치가 된다

(MBR: 부트 섹터로 디스크의 첫 번째 섹터(0)에 해당되고 크기는 512 바이트이다/ 부티매니저프로그램과 파티션 정보이 기록됨)

 

1.LILO(Linux Loader)

- 특정 파일 시스템에 구애받지 않고 플로피 디스크와 하드디스크를 이용한 부팅을 지원한다

- 현재는 잘사용하지 않음

 

2.GRUB(Brand Unified BootLoader)

-LILO에 비해 다양한 파일시스템을 지원하고 커널 인자를 조정하여 동적인 부팅을 지원한다

-메뉴인터페이스 방식을 사용하고 Bash와 같은 명령행 인터페이스를 추가로 제공

-그래픽 메뉴와 배경그림 삽입도 가능

(1)GRUB의 부팅보드

-> [a] : grub.conf에서 kernel과 관련된 부분의 매개변수를 추가할 수 있게 해준다.

           싱글모드로 진입할 때 이키를 누르고 맨위에 single또는 1이라고 입력하면됨

-> [e] : grub.conf에 등록된 부팅목록의 모든 항목을 직접 편집할 수 있게해준다

           이때 메뉴를 편집한다고해서 grub.conf가 바뀌는 것이아니고 현재 부팅시에만 일시적으로 적용됨

           편집을 잘못 했을 경우 esc누르면 됨

           지원키

-      e : 커서가 위치한 줄 편집

-      d: 커서가 위치한 줄 삭제

-      o : 명령 줄을 커서가 위치한 줄의 아래에 추가

-      O : 명령줄을 커서가 위치한 줄의 위에 추가

-      b : 부팅을 시작한다(최종 편집후 부팅시 사용)

->[c] : 상호 대화식으로 직접 입력할수 있는 모드로 사용방법은 명령어를 입력하는 bash shell과 비슷하다

           [Tab]를 이용하여 명령행 자동완성

           [Esc]키를 사용하여 취소

           순차적으로 입력후 맨마지막에서 boot입력시 부팅됨

 

(2) GRUB의 환경 설정 파일

-> 내용

#boot=/dev/sda             //부팅되는 하드디스크를 지정하는 항복으로 시스템에 장착된 하드디스크가 하나인경우 주석처리됨

default=0                     //전원켰을떄 기본적으로 부팅되는 운영체제를 설정하는 항복으로 grub메뉴 화면에서 선택하지 않았을시 이값을 기준으로 운영체제가 선택된다

timeout=10                  //grub메뉴 화면에서 대기시간으로 단위는 초이다 주석처리나 항목없으면 [enter]눌러야 부팅됨

splashimage=(hd0,3)/boot/grub/splash.xmp.gz        //grub화면의 배경이미지를 지정하는 부분

title CentOS                  //리눅스운영체제의 기본형태

titme Dos  //윈도우 언엥체제의 기본형태

(cf)리눅스 디바이스와 grub디바이스와의 관계

           -(fd0) : 첫번째 플로피디스크 장치인 dev/fd0을 말함

           -(hd0) : 첫번째 하드디스크를 의미하는 것으로 /dev/sda또는 /dev.hda 가 해당

           -(hd1) : 두번째 하드디스트인 /dev/sdb또는 /dev/hdb를 의미

           Ex) (hd0,3) : /dev/sda4또는 /dev/hda4를 의미

 

2. 디렉터리 구조 및 역할

-디렉터리: 파일을 보관하는 곳

-종류

-> / : 최상위에 있는 디렉터리로 루트 디렉터리

-> /bin : 일반적인 binbinary의 약자로 실행 파일들이 들어있다. 명경어 라는 것들이 있는 디렉터리

-> /boot : 부팅 이미지 파일이나 커널 등 시스템 부팅시 필요한 파일이 있는 디렉터리이다

-> /dev : 하드디스크, CD-ROM,터미널 등 실제 존재하는 물리적인 장치들을 파일화하여 관리하는 디렉터리

-> /home : 개인사용자들이 파일이나 디렉터리를 만들어 사용할수 있는 홈디렉터리가 위지한다

-> /etc : 시스템 환경 설정 파일 및 부팅과 관련된 여러 가지 스크립트 파일이 들어있다

-> /lib : 각종 라이브러리가 저장되어 있는 디렉터리로 커널 모듈도 포함됨

-> /lost+found : fsck명령어를 이용해 파일 시스템을 복구할 때 작업하는 디렉터리

-> /mnt : CD-ROM ,플로피디스크, 하드디스크, 등을 마운트 할떄 포인터가 되는 디렉터리

-> /misc : 자동마운트 프로그램인 autofs에 의해 사용되는 디렉터리

-> /opt : 응용 프로그램들의 설치를 위해 사용되는 디렉터리

-> /proc : 가상파일 시스템으로 시스템에서 운영되고 있는 다양한 프로세스의 상태정보, 하드웨어 정보ㅡ 기타 시스템 정보등을 담고있다

-> /sbin : ‘System Binary’의 약자로 주로 시스템 관리에 대한 명령어들이 있는 디렉터리로 보통 슈퍼유서인 root가 사용한다 여기에는 시스템 종료 명령, 네트워크 인터페이스 설정명령, 시스템점검과 복구 명령어가 있다

-> /tmp : 임시저장 디렉터리로 각종 프로그램이나 소켓파일, 프로세스 작업을 할 때 임시로 생성되는 파일을 저장하는 공간이고 이 디렉터리는 모든 사용자에게 접근이 가능하다

-> /usr: 시스템운영에 필요한 명령, 응용 프로그램들이 위치하는 디렉터리이다.

-> /var : 시스템 운영 로그 파일과 스풀링과 같은 가변적인 데이터를 보관하는 디렉터리

-> /sys : 하드웨어 정보를 가지고 있는 디렉터리이다. /proc디렉터리에서 기본적인 하드웨어 정보를 제공하나 /뇬에서는 계층적인 구조로 정보를 제공한다

-> /cgroup : control group 은 시스템상에 동작중인 태스크들을 임시로 그룹지어 제어할수있도록 도와주는 기능을 제공하는데 관련정보를 담고있는 디렉터리

-> /run : 부팅 이후 동작중인 프로세스의 런타임데이터를 저장하고있는 디렉터리

 

3.부팅과 셧다운

1. 부팅

-컴퓨터의 전원이 켜진후 운영체제가 가동되어 사용자가 컴퓨터를 사용할 수 있도록 만들어 주는 과정

-부팅은 하드웨어단계(시스템에 장착된 하드웨어를 인식하고 점검)와 소프트웨어적 단계(사용자가 운영체제를 사용하고 다양한 응용 프로그램을 사용할 수 있도록 메모리에 상주 시킴)

-하드디스트에 설치된 운영체제의 부팅 과정

           1.. 컴퓨터 전원을 켜면 바이오스는 컴퓨터에 장착된 HW를 점검

           2. 바이오스는 하드웨어검사가 끝나면 CMOS에 설정된 첫번쨰 부팅 하드디스크를 확인

           3. 첫번쨰 하드디스크의 MBR영역에 있는 부트 매니저 프로그램 실행

           4. 부트매니저 프로그램은 관련 환경파일을 참고하여 운영체제 부팅을 시작

 

2. 리눅스 부팅

-MBR에 설치된 부트매니저 프로그램인 GRUB의 실행을 시작으로 텍스트 기반의 콘솔 로그인 화면이 나타나거나 x-윈도가 구동되어 로그인창이 나타나기 전까지 의 과정

(1)리눅스 부팅의 하드웨어 인식단계

-> 부팅시 하드웨어 설정과 관련하여 특정 값을 지정하거나 변경시, 커널 매개변수 지정하면 설정 변경이 가능

-> grub인 경우 [e]를 누르거나 [a]를 눌러 커널 값을 추가로 지정가능

-> 리눅스는 하나의 덩어리 형태인 단일형 커널 형태이다

-> 모듈화 : 리눅슨는 사운드 카드나 이더넷 카드의 드라이버를 커널안에 전부 포함시킬수 없어 효율적으로 해결하기위한 방법

(2) 리눅스 부팅의 소프트웨어 구동 단계

->리눅스 시스템 부팅시 커널이 로드되면 커널은 우선 루트 파일 시스템을 읽기전용으로 마운트 하고 검사후 이상없으면 쓰기 가능 형태로 마운트 한다

-> 그후 커널은 init프로세스를 발생시킨다(init : 리눅스 부팅과 관련된 소프트웨어 구동을 위임 받는다)

-> /etc/initab : 부팅과 관련된 런레벨이 지정되어 있다

-> /etc/init/rcS.conf : 시스템 초기화와 관련된 내용이 설정되어있다. 주요 내용으로는 호스트명 설정, 시스템 점검, RAIDLVM장치 활성화, 쿼터 설정 활성화 등을 한다(/etc/rc.d/rc.sysinit스크립트 실행)

-> /etc/init/rc.conf : 부팅시 각 레벨별로 진행되는 내용이 설정되는 파일. rc스크립트는 런레벨이 3이면 /etc/rc.d/rc3디렛터리안에있는 실행 데몬 스크립트중 S로 시작되는 스크립트를 찾아 부팅되게 함(/etc/rc.d/rc스크립트 실행)

-> /etc/rc.d/rc.local : 실행레벨 2,3,5에서 가장 마지막에 실행되는 파일로 보통 사용자가 부팅시 필요한 서비스를 구동할 때 이파일 안에 등록하여 사용

 

3. 실행레벨(Runlevel)

-일반적인 실행레벨 : /etc/inittab에 정의됨(0~6까지)

-S레벨 : 기능적으로느 1번과 유사하지만 관련 ㅍ로세스나 데몬을 최소화 하기위해 유지보수나 점검에 적합하다. 특히 시스템에 심각한 오류 발생시 주로 사용되어 emergency모드라고 부른다

-일반적인 실행레벨

           0 : 시스템 종료할떄 호출되는 레벨(기본값으로 설정 불가)

           1 : 단일 사용자 모드로 로그인 과정없이 root사용자로 리눅스 시스템을 부팅하여 일종의 관리자 모드와 같은 역할을 한다. 네트워크, 서버, 파일 공유 와 같은 서비스를 하지않고, root패스워드를 잊었거나 파일 시스템 점검 및 복구, 시스템 점검등을 할 때 접근

           2 : 네트워크 사용하지 않는 다중 사용자 모드이다.

           3 : (텍스트 환경): 네트워크를 지원하는 다중 사용자 모드로 X윈도를 사용하지 않고 메모리를 효율적으로 이용할 때 추천

           4 : 사용되지 않는 레벨이지만 사용자가 정의 하여 사용가능

           5 :(그래픽 환경): X윈도를 사용하는 다중 사용자 모드로 최근 배포판에서 기본적으로 설정되는 레벨

           6 : 시스템 재부팅시 호출되는 레벨(기본값으로 설정 불가)

 

(1)로그인

-> 사용자의 아이디와 패스워드를 입력해 접근권한과 사용권한을 획득하는 단계

-> 런레벨이 3인경우 : [CTRL]+[ALT]+[F1~6]개의 가상콘솔을 통해 로그인 가능

getty라는 프로그램이 터미널이나 콘솔에 로그인 프로그램을 실행하는데 이때 메시지 파일인 /etc/issue의 상단 내용을 출력하고 login프로그램을 통해 아이디와 패스워드가 옳을시 셸을 실행시키고 틀리면 종료

-> 런레벨이 5인경우 : x-window기반 그래픽 로그인 창 나타남

                           [CTRL]+[ALT]+[F7] 에 그래픽 하게 나타남

->로그인 메시지 관련 파일

           /etc/issue : 사용자가 로그인할때 ‘login : ’보여주기전에 출력되는 내용

/etc/issue.net : issue와 역할은 같은데 issue는 로컬의 터미널로 접속시 출력되는 메시지를 기록하고 /issue.net는 텔넷을 통한 네트워크 접속시 출력되는 메시지를 기록

           /etc/motd : ‘Message Of The Day’의 약어로 성공시 접속된 사용자에게 보여주는 메시지

 

(2)로그아웃

-> ‘logout’ or ‘exit’ or [CTRL]+[D] : 콘솔이나 터미널창에서 로그아웃하는 명령어

-> X-window에서는 메뉴를 통해 로그아웃 가능

-> 자동로그아웃 :/etc/profile에서 ‘TMOUT=해당 초 이후 아무 것도안하면 로그아웃

 

(3) root패스워드 분실과 단일 사용자모드로 부팅

-> root패스워드 잃어 버렸을 경우 단일사용자 모드로 부팅해야한다. 여기에서는 root패스워드 변경이나 파일 시스템 복구 작업을 할수 있다.

-> 단일 사용자 모드로 부팅 방법

1. 재부팅으로 GRUB부트 메뉴가 나타나도록함 (레드햇의 경우 숨어있으므로 아무키를 눌러 나타나도록함)

2. 해당 리눅스 운영체제항목으로 이동후 [a]혹은 [e]를 눌로 커널 아규먼트로 수정할수 있는 상태로 만듦

3. [a]로 누르면 커널 아규먼트를 수정할수 있는데 줄끝에 single혹은 ‘1 ’를 입력하고 [enter]누르면 단일 사용자 모드로 부팅됨

4. 단일 사용자 모드로 진입시 패스워드 입력없이 자동 root로 로그인되고 passwd명령을 입력해 새로운root패스워드 설정

(4) GRUB패스워드를 잃어 버린경우

-> root 패스워드를 복구 할수 없는 경우에 설치 디스크를 이용해 응급 복구 모드로 진입후 /boot/grub/grub.conf에 설정한 password항목을 삭제해야함

           1. 설치디스크를 이용해부팅

           2. 응급 복구모드인 Resure installed system선택

           3. 기본선택후

4. 설치된 리눅스 시스템이 /mnt/sysimage디렉터리로 마운트된다 더쉬운 사용을 위해 /로 변경

#chroot /mnt/sysimage   

5. /boot/grub/grub.conf파일을 열어 password항목 삭제

#vi /boot/grub/grub.conf

6.재부팅하여 root패스워드 복구

4. 시스템 종료

- X-Window 종료법 :[끄기]

- 터미널 환경에서 종료법

(1) shutdown

- 시스템을 재시작하거나 전원 종료 root권한자만 사용가능

-사용법 : #shutdown [option] 시간 [경고 메시지]

-옵션

           -r : 시스템 재부팅시 사용 (reboot)

           -h : 시스템 종료할 때 사용(halt)

           -c : 예약된 셧타운 명령 취소

           -k : 실제 셧다운 하지 않고 경고 메시지만 접속한 사용자들에게 전송

Ex) #shutdown -r now -> 시스템 즉시 재부팅

(2) reboot

-시스템 재시작 하는 명령어

-로컬로 접속한 사용자 라면 모두가 사용가능

-사용법 : #reboot [option]

-옵션

           -w : 시스템을 재수팅 하지 않고 /var/log/wtmp 에 셧다운 기록만 저장

(3) halt

-시스템 종룡 명령어

-로컬로 접속한 사용자면 모두 가능

-사용법 : #halt [option]

-옵션

           -p : 시스템 종료하고 전원끄는 경우 사용(--poweroff)

(4) poweroff

-시스템 종료 및 전원끄는 명령어

(5) init, telinit

- init프로세스(모든 프로세스의 조상)에 직접 요청해 실행 레벨변경시 사용해 빠르게 실행되지만 실행중인 프로세스를 무조건 적으로 종료하여 권장하지는 않은

-사용법: #init 실행레벨

+ Recent posts