<리눅스 부팅 순서>

1. PC에 전원이 들어오게 되면, 메인보드에 있는 ROM-BIOS에 있는 BIOS는 우선 시스템의 하드웨어에 문제가 없는지 다양한 테스트를 한 후, 문제가 없다면 부팅을 시작한다.

 

2. BIOS는 먼저 어느 디스크 드라이브로부터 부팅을 시작할 것인지 선택하는데첫번째 하드디스크로부터 부팅을 시도할 것이다.

 

3. 디스크의 첫번째 섹터를 읽어 들이는데, 파티션이 나뉘어져 있으면 그 파티션의 정보를 담고 있는 MBR을 읽어들일 것이고, 그렇지 않다면 하드디스크의 통상 첫번째 섹터라고 불리는 부트 섹터를 읽어들일 것이다.

 

4. 부트 섹터에는 작은 프로그램을 넣어두는데, 이 프로그램이 운영체제를 읽어들이고 실행을 시키게 된다하드 디스크에서 부팅할 때는MBR의 프로그램이 파티션 테이블을 검사한다이 과정을 통해 어느 파티션이 활성화된 파티션(즉 부팅이 가능하다고 표시된 파티션)인지를 알아본 후에, 그 파티션의 부트 섹터를 읽어서 그 코드를 실행시킨다.

 

5. 이 부트 섹터의 역할은 커널을 파티션으로부터 읽어들이고 실행시켜야 한다. 그런데, 각 파티션에는 파일시스템이 존재하므로 플로피의 경우처럼 디스크를 단순히 순차적으로 읽을 수는 없다. 이 문제를 해결하기 위한 여러 방법들이 있는데, 그 중에 가장 많이 쓰는 것이 바로 LILO이다. LILO는 커널이 어느 섹터에 위치하는 지를 미리 파악해 두었다가, 부팅때 이 정보를 가지고 커널을 읽어들이는 방법을 쓴다.

 

6. LILO로 부팅을 하게 되면, 보통 기본 설정된 커널로 부팅이 된다. 그러나 설정을 바꿔주면 몇가지 다른 커널을 사용해 부팅할 수도 있고, 심지어 아예 다른 운영체제로도 부팅이 가능하다. 그래서 부팅시에 어떤 커널이나 운영체제로 부팅을 할 것인지 사용자가 직접 고를 수 있다. , 부팅시 LILO가 떴을 때,alt, shift, ctrl 키를 누른 후 선택을 입력하게 할 수도 있고언제나 입력을 요구하도록 설정할 수도 있다. 선택을 하지 않는다면, 지정된 대기 시간이 지난후 기본 설정으로 부팅이 될 것이다.

 

7. 리눅스 커널이 메모리 속으로 읽혀지고나면, 진짜 부팅 과정이 시작된 것이라 볼 수 있다.

 

8. 리눅스 커널은 압축된 형태로 설치되어 있다. 따라서 우선 압축을 풀어야 한다. 그래서 압축된 커널 이미지의 첫부분은 압축을 풀기 위한 작은 프로그램으로 되어 있다.

 

9. 압축 과정이 끝나면, 커널은 어떤 하드웨어들이 장착되어 있는지 체크하고(하드 디스크, 플로피, 네트워크 어댑터 등), 적절한 장치드라이버를 설정한다.

 

10. 이제 커널은 루트 파일시스템(root filesystem)을 마운트하려 할 것이다. 이 위치는 컴파일시에 지정될 수도 있고, rdevLILO를 통해 정해줄 수도 있다. 또한 파일시스템 타입은 자동적으로 감지된다. 만일, 적합한 파일시스템 드라이버를 커널에 포함시키지 않았다든지 하는 이유로, 파일시스템을 마운트하는 데 실패한다면 커널은 공황상태(panic)에 빠져들고 시스템은 그저 꺼지는 수 밖에 없다.(루트 파일시스템이 마운트되지 않으면 아무것도 할 수가 없다.)

 

11. 루트 파일시스템은 흔히 읽기 전용으로만 마운트된다이렇게 하면 마운트한 상태에서도 파일시스템을 안전하게 점검할 수 있게 된다.

 

12. 커널은 init 프로그램을 백그라운드로 실행시킨다(/sbin/init). init는 가장 먼저 실행되는 프로세스이므로, 그 프로세스 번호는 1이 된다. init는 시스템 시작을 위한 다양한 작업을 수행하는데, 최소한 몇가지 필수적인 백그라운드 데몬을 실행하도록 되어 있다.

 

13. init는 다중사용자 모드로 전환되며, getty를 가상 콘솔과 시리얼 라인 터미널들에 띄운다. getty는 사용자들이 가상 콘솔이나 시리얼 라인 터미널을 통해 로그인 할 수 있도록 해주는 프로그램이다. 또한 init가 어떻게 설정되느냐에 따라, 여기서 몇가지 다른 프로그램들을 실행하기도 한다.

 

 

더 자세한 내용은 이곳을 참고하길 바란다.

http://wiki.kldp.org/Translations/html/SysAdminGuide-KLDP/x1681.html 

LIST

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

리눅스 - 마스터 네임 서버 구축  (0) 2016.02.21
리눅스 - DNS 서버 개념  (0) 2016.02.20
리눅스 - Telnet(텔넷) 서버  (0) 2016.02.19
리눅스 - FTP서버  (0) 2016.02.18
리눅스 - 환경변수  (0) 2016.02.17

<Telnet>

텔넷이란 과거부터 사용해왔던 (비록 지금은 잘 사용하지않지만...) 원격 접속 방법이다.

예를 들어보자.

독자가 서버 관리자라고 생각해보자서울에서 근무하고 있지만, 부산에 있는 서버가 에러를 일으켜 출장을 가야한다. 서울~부산까지의 거리를 매번 왕복하면서 부산에 있는 서버가 고장날 때 마다 직접 이동해서 가야할 것이다. 너무 인력 낭비이다.

요즘같은 IT시대에 너무 시대에 뒤떨어지는 방법이다.

그래서 과거부터 사용하던 것이 telnet이다.

멀리서 서버로 원격접속을 시도하여 소프트웨어 적인 부분을 접근할 수 있고, 수정도 할 수 있는 것이다. (물론 하드웨어적인 부분이 고장나면 직접 가야하겠지만...)

 

텔넷 서버의 설치과정을 잠깐 설명하겠다.

1. 텔넷 서버를 설치한다.

yum -y install telnet-server

 

2. 설정 파일을 telnet을 사용할 수 있도록 변경한다.

/etc/xinetd.d/telnet

 

3. 설정 파일을 수정했으면 당연히 해야하는 것은 뭐? 데몬 재실행!

service xientd restart

 

4. 텔넷이 활성화 되었다우리는 게임을 설치하면 무엇을 하나? 계정을 만든다! 이와 깉이 텔넷에 접속하기 위해 계정을 만든다.

adduser 사용자명

passwd 비번

 

5. 텔넷에 접속하기 위한 포트를 열어준다. (23)

system-config-firewall

 

6. 4번에서 만든 계정으로 접속을 시도해본다.

telnet [서버 IP]

 

<실습>

telnet을 설치해보자.

먼저, VM wareserver를 하나 만들고, clientwindow(VM ware아님)를 활용할 것이다.

1. telnet 설치



이렇게 rpm으로 telnet이 설치되어 있는지 확인 후, 설치되어 있지 않다면 yum으로 설치하자.

 

2. 설치 후, /etc/xinetd.d/telnet 설정 파일을 변경해보자.



yes->no로 변경할까? 그 이유는 disable이 부정의 의미인데 부정의 부정을 해주는 것이다. service telnet을 사용하지 않다고 되어있는 것을 사용하지 않는 것을 취소하겠다. , 사용하겠다 라는 의미이다.

 

3. xinetd 데몬을 재 실행시켜주자.

여기서 잠깐... telnet의 구성파일을 바꿧으면 telnet데몬을 재실행 시켜야하는데 왜 xinetd데몬을 재실행 시킬까?

그 이유는 telnet 서버는 혼자 독립적으로 구동하는 데몬(standalone)이 아닌, xinetd데몬의 하위 종속의 데몬이다.

쉽게 말해 xinetd의 부하라는 의미이다. xinetd 데몬이 실행되면 자동으로 telnet 데몬도 실행된다는 의미이기 때문에 xinetd만 재실행 시켜주는 것이다.



 

4. telnet서버 설치와 구성까지 끝났다.

방화벽에 들어가서 telnet포트를 열어주자.



 

 

5. telnet을 할때 사용하기 위한 계정을 만들어보자.




 

 

6. window(client)에서 serverping이 잘 나가는지 확인하고, (물론 그전에 ip확인은 필수) telnet을 시도해보자.

  


 

.

LIST

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

리눅스 - DNS 서버 개념  (0) 2016.02.20
리눅스 - 부팅 순서 정리  (0) 2016.02.20
리눅스 - FTP서버  (0) 2016.02.18
리눅스 - 환경변수  (0) 2016.02.17
리눅스 - Setuid, Setgid  (0) 2016.02.17

<FTP>

File Transfer Protocol로 파일을 전송하기 위한 서비스이다. 요즘은 웹 환경에서 ftp의 기능인 파일 전송을 편리하게 사용할 수 있어서 과거보다는 인기가 많이 떨어졌다.

 


<실습>

1. ftp를 설치해보자.

rpm -qa | grep vsftpdftp가 설치되어있는지 확인 , 설치되어 있지 않다면 yum -y install vsftpd를 사용해 설치하도록 하자



2. SELinux기능을 꺼줘야한다.

ftp설치 후, system-config-firewall에서 FTP를 체크해주자.

ftp데몬 vsftpd restart시켜주자

 

3. /etc/vsftpd/vsftpd.conf에 대해서 알아보자.

- anonymous_enable : 익명 사용자가 접속을 허가할지 설정

- local_enable : 로컬사용자의 접속 허가 설정

- write_enable : 로컬사용자가 ftp 명령어 중에 접속해서 write명령어를 허용할 것인가를 결정하는 것이다.

- local_umask : 파일들의 기본값을 설정하는 값을 지정해줌

- anon_upload_enable : 익명 사용자의 파일 업로드 허가를 설정

- anon_mkdir_write_enable : 익명 사용자의 디렉토리 생성 허가를 설정

- download_enable : 다운로드의 허가를 설정

- dirmessage_enable=YES : ftp 접속한 사용자가 특정디렉토리로 이동하였을 때 개별 디렉토리의 메시지를 보여주도록 허용할 것인가 허용하지 않을 것인가를 설정하는 부분이다. 주로 pwd를 지정해놓는다. (위치를 출력하게끔...)

- xferlog_enable=YES : 로그 기록을 저장하겠다. 어디에? /var/log/xferlog

- connect_from_port_20=YES : ftp서비스는 접속과 명령어에 사용되는 포트는 21번이며 실제 데이터 전송에 사용되는 기본포트는 20번이다. 20번 포트의 데이터 전송 연결을 허용할 것인가 아닌가를 설정하는 것이다.

- idle_session_timeout=600 : ftp연결에서 idle 타임에 대한 타임아웃값을 설정한다. ftp 접속후에 600초동안 아무런 작업 없이 놀고있다면 강제 로그아웃시켜버린다.

- data_connection_timeout=120 : ftp 연결시 큰 파일을 업로드 or 다운로드 할 때에 전송도중 접속이 끊기는 상황이 발생한다면 이 설정을 주석처리 하거나 값을 늘리면 된다.

- ftpd_banner : ftp베너 부분을 바꾸는 부분

- max_clients=30

max_per_ip=3 : 동시 ftp 접속자수를 30명까지만 허용하고, ip에서의 동시 접속을 3번까지만 허용하는 것이다.

- listen_port : FTP의 포트번호를 설정 (default=21)

- deny_file : 업로드를 금지할 파일을 지정

ex) deny_file={*.jpg,*.avi}

 

4. /etc/vsftpd/vsftpd.conf로 들어가서 anonymous_enable, local_enable, write_enable, anon_upload_enable, anon_mkdir_write_enable의 주석을 제거한다.

그 후, 데몬을 restart시켜준다.

 

5. ftp명령어 후에, 서버에 접속해보자.



 

6. 디렉토리를 이동해보자.



 

7. 디렉토리 이동 후, ftp서버에 있는 c.txt파일을 받아보자.

받을 때 사용하는 명령어는 get [파일명]이고, 한꺼번에 많은 파일을 받고 싶을때는 mget[파일명]이다.



 

 

--------------------------------------------------------------------

ftp서버에 접속했을때 사용하면 유용한 명령어

binary mod : 바이너리 파일 전송 모드로 전환(원래는 ascii 모드)

cd : 디렉토리를 변경

디렉토리를 한꺼번에 이동하는 방법은 !cd /home/fedora처럼 맨 앞에 !를 써준다.

dir : 원격 디렉토리의 목록을 출력

get [파일명] : 파일을 내려받음

open : 원격 ftp서버로 접속

put [파일명]: 로컬의 파일을 ftp서버로 전송(업로드)

pwd : 원격 서버의 작업 디렉토리 위치 출력

 

<ftp 접속 제한>

- /etc/vsftpd/user_list파일을 이용하는 방법 -

 

user_list파일에 한 행에 한 계정씩만 등록하는 것이다.

/etc/vsftpd/vsftpd.conf파일에서 userlist_enable=YES로 설정하였을 경우에 이 파일의 설정내용이 활성화됨을 의미하며 이것은 이 파일에 등록된 사용자들은 모두 접속이 거부된다는 것을 말한다.

역으로 /etc/vsftpd/vsftpd.conf파일에서 userlist_enable=NO라고 되면 user_list파일에 등록된 사용자들은 접속이 허가되는 것이다.

 

user_list파일을 보도록 하자.



여기에 보면 많은 사용자들이 있는데 /etc/vsftpd/vsftpd.conf파일에 userlist_enable=YES로 되어있어서 여깄는 사용자들은 전부 접속이 거부된것이다.

 

LIST

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

리눅스 - 부팅 순서 정리  (0) 2016.02.20
리눅스 - Telnet(텔넷) 서버  (0) 2016.02.19
리눅스 - 환경변수  (0) 2016.02.17
리눅스 - Setuid, Setgid  (0) 2016.02.17
리눅스 - /etc/fstab  (0) 2016.02.16

<환경변수란?>

환경변수란 운영체제 즉 리눅스, 윈도우, 유닉스 등에서는 모두 path환경변수가 존재한다

사용자의 명령을 기다리는 프롬프트 상에서 command를 내리면 그 실행파일을 OS가 찾게 되는데 어디에서 찾냐면 path에 설정되어 있는 곳에서 찾는다.

path에 셋팅된 위치에 있는 명령어는 그냥 명령어만 치면 실행이 되고,

path에 셋팅되지 않은 명령어는 명령어의 위치를 나타내는 절대경로를 사용하여야 한다.

path? 사용자가 정의해놓은 길을 의미한다. path에 있는 경로를 따라가면 이런 명령어들을 실행할 수 있을거야~ 같이...

 

절대경로는 C:\xxx\xxx 처럼, root디렉토리에서부터 명령어(실행파일있는 곳까지의 경로를 다 적는 것을 말한다.

path 설정을 왜 사용하는 것일까? 물론 매번 사용자들이 절대경로를 모두 알고 일일이 사용할 때 마다 절대경로를 사용한다면 상관없지만 솔직히 귀찮지 않은가... 사용자의 편의를 위해 사용되는 것이다.

예를 들어 사용자가 만든 프로그램 test1 /usr/bin/local/test 에 있다고 가정을 할 때..

사용자 위치는 /home/testuser 이라고 가정을 하자.

사용자가 test1 명령을 수행하기 위해 /usr/bin/local/test/test1 을 수행해야 한다.

하지만 path=.;/usr/bin/local/test

라는 설정이 추가되어 있다면, test1 수행만으로 실행이 되는 것이다.

왜냐? path에서 이미 /usr/bin/local/test로 가면 test1이라는게 있다고 미리 정의해놨으니까! 길을 터놓은 셈이다.

 


리눅스에 예를 들어보자.

cd, ls 등 이런 명령어들은 어딘가의 경로에 디렉토리 안에서 프로그램으로 존재하고 있다. (명령어니까)

그래서 이 프로그램들을 실행하기 위해서는 각각의 절대경로를 사용해서 /bin/ls 이런식으로 일일이 써줘야지 명령어가 먹힌다. 하지만 이런것들을 모두 타이핑 하지 않고도 cd, ls 이렇게만 써줘도 사용가능한 이유가 환경변수 때문이다. 그 이유는... 환경변수에 명시되어 있기 때문이다.

, 그렇다면 운영체제가 명령어들을 찾는 순서를 알아볼까?

/etc/profile -> /etc/bashrc -> /etc/inputrc -> $HOME/.bash_profile -> $HOME/.bashrc -> $HOME/.inputrc 이런식으로 찾아보게 된다.

 


.bashrc : 주로 alias가 등록되어 있다.

.bash_profile : path같은 환경변수가 등록되어 있다.

.bash_history : 사용한 명령어가 기록되어 있다.

.bash_logout : 로그아웃시 실행할 명령어가 기록되어 있다.

 


, 그렇다면 환경변수 path에 내가 만든 프로그램을 실행시키고 싶어 절대경로가 아닌 그 프로그램명만 입력했을때 바로 실행되게 하려면 어떻게 해야할까?

path환경변수에 넣어주면 된다.

export PATH=[추가할경로]:$PATH를 입력하면 환경변수에 추가된다.

환경변수의 구분자는 :이다.

echo $PATH를 사용해서 지금 사용하고 있는 리눅스에 어떤 환경변수들이 저장되어 있는지 알아보자.

 



 

LIST

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

리눅스 - Telnet(텔넷) 서버  (0) 2016.02.19
리눅스 - FTP서버  (0) 2016.02.18
리눅스 - Setuid, Setgid  (0) 2016.02.17
리눅스 - /etc/fstab  (0) 2016.02.16
리눅스 - Quota(쿼터) (사용자별로 공간 할당하기)  (0) 2016.02.15

<Setuid?>

파일 실행 시 파일 소유자의 권한을 잠시 바꿔준다.뭐로? 루트의 권한으로한마디로 소유자의 권한 루트권한으로 잠시 빌려 실행하는 것이다.

4000 -> 소유자 권한 x(실행)자리에 s를 사용

2000 -> 그룹의 x(실행)자리에 s를 사용

1000 -> 그외의 그룹에 x자리에 t를 사용

 

-rwx------ 이 파일은 700의 권한을 가진 파일이다. 만약 나는 일반사용자인데, 잠시동안 이파일을 root권한으로 사용하고 싶다. 그럴땐 root가 잠깐 사용할 수 있도록 파일권한을 주는것인데 그것을 setuid라고 한다.

여기에 사용자에게 권한을 주면 rws------가 되어 4700의 권한을 가진다.

 

<실습>

useraddroot사용자만 사용할 수 있도록 설정되어 있다.

이것을 setuid를 사용해 잠시 일반사용자가 사용할 수 있게 변경하고, 일반사용자로 로그인해서 usradd명령어를 실행해보자.

 



 

fedorauseradd를 사용해 계정 생성을 하려고했지만 거부됨.

root로 로그인하여 setuid를 변경해보자.



 

변경 후, 다시 fedora로 로그인해서 test1를 생성하였더니 아무이상없이 잘 만들어졌다.

마지막으로 cat /etc/passwd를 사용해서 잘 만들어졌는데 확인 할 수있도록 한다.

원리는 fedora라는 사용자가 useradd를 사용했을 당시 권한이 root로 옮겨지는 것이다. 마치 자기 자신이 root로 둔갑되는 것과 같은것이다. root권한을 얻어 useradd를 사용하고, 명령어 사용이 끝났으면 root권한을 되돌려줘서 다시 자기자신은

fedora라는 유저로 생활하게 되는것이다.

 


<Setgid?>

따로 설명안하겠다. Setuid랑 똑같은 성질인데, 단지 그룹의 권한을 바꿔주는 것이라고 생각하면 된다.

LIST

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

리눅스 - FTP서버  (0) 2016.02.18
리눅스 - 환경변수  (0) 2016.02.17
리눅스 - /etc/fstab  (0) 2016.02.16
리눅스 - Quota(쿼터) (사용자별로 공간 할당하기)  (0) 2016.02.15
리눅스 - RAID (Redundant Array of Inexpensive Disks)  (0) 2016.02.15

</etc/fstab이란?>

파일시스템 정보를 저장하고 있으며, 리눅스 부팅시 마운트정보를 저장하고 있다.

이 파일안에 있는 구성값들로 인해 부팅시에 자동으로 적용될 수 있도록 한다.

만약 이 파일의 구성이 잘못되어 버린다면? 부탕과정에서 파일시스템 마운트 과정에서 부팅이 멈추어 버릴것이다...

그렇다면... /etc/fstab안에 있는 내용들을 보도록 하자.



 

 

구성)

[파일시스템 장치] [마운트 포인트] [파일시스템 종류] [옵션] [덤프] [파일체크옵션]

 

1. [파일시스템 장치]

말 그대로 파일시스템의 장치명을 설정하는 부분이다. 우리가 하드디스크를 하나 추가하고, fdisk명령어도 파티션을 나누고, 파일시스템을 적용시켰을때 마운트 가능한 마치, /dev/sda2와 같은 장치 이름을 적는 곳이다.

혹은 레이블으로 표시할 수도 있다. (레이블로 표시할땐 레이블 명시를 해줘야 함)

 

2. [마운트 포인트]

파일시스템 장치를 마운트 시킬 위치를 설정하는 부분이다.

우리는 "특정 장치(파일 시스템)를 어떤 디렉토리에 마운트 시킨다"라고 할때, 어떤 디렉토리가 바로 마운트 포인트이다.

위에 맨마지막 줄을 예를 들어보자.

/dev/sdb1이라는 하드디스크의 파티션부분이 있는데, 이 장치를 /userhome이라는 디렉토리에 마운트 시키자라는 의미이다.

 

3. [파일 시스템 종류]

파일 시스템 종류는 마운트 하기전에 파일시스템을 결정하게 되는데, window에서 하드디스크 D를 포맷할때 파일시스템을 NTFS로 하는 것과 동일하다.

종류는 다음과 같다.

ext, ext2, ext3, ext4, iso9660, nfs, swap, ufs, vfat, msdos, hpfs, ntfs 등이 있다.

 

4. [옵션]

파일 시스템을 용도에 맞게 사용하기 위해 파일시스템 속성을 설정하는 옵션이다.

default : rw, suid, dev, exec, auto, nouser, async 옵션을 모두 선택한 것과 같다.

auto : 부팅시 자동으로 마운트 된다.

exec : 실행파일이 실행되는 것을 허용하는 파일 시스템이다.

suid : SetUIDSetGID의 사용을 허용하는 파일 시스템이다.

ro : 읽기 전용 파일시스템이다.(Read Only)

rw : 읽고 쓰기(Read Write) 파일시스템으로 사용된다.

user : 일반 계정사용자들도 마운트를 할 수 있는 파일시스템이다.

nouser : root만 마운트할 수 있는 파일시스템이다.

noauto : 부팅시 자동으로 마운트 되지 않게하는 파일시스템이다

noexec : 실행파일을 실행되지 못하게 하는 파일시스템이다.

nosuid : SetUIDSetGID의 사용을 허용하지 않은 파일시스템이다.

usrquota : 개별 계정사용자의 Quota설정이 가능한 파일시스템이다.(쿼터:사용자별로 디스크 할당을 조정(제한))

grp : 그룹별 Quota설정이 가능한 파일 시스템

 

[덤프]

dump명령으로 01로 나뉜다.

0 : 백업을 하지 않는다.

1 : 백업 가능한 파일 시스템.

 

[파일체크옵션]

파일 체크 옵션으로 루트파일 시스템을 점검할 때 사용한다. 0, 1, 2로 나뉜다.

0 : 부팅시에 파일시스템을 점검하지 않는다.

1 : 루트 파일시스템으로서 부팅시에 파일시스템 점검을 한다. (/부분을 체크 후, 부팅)

2 : 루트 파일시스템 이외의 파일시스템으로서 부팅시에 파일시스템 점검을 한다. (/를 제외한 나머지 파티션 체크 후 부팅)

LIST

<쿼터란?> 

파일시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것이다.

, 쿼터를 사용해 각 사용자들에게 사용할 수 있는 디스크의 크기 및 파일의 용량을 정해주는 것이다.

실습을 통해 쿼터를 사용해보자.

 

<실습>

사용자 두명을 생성하고, 그 사용자들에게 각각 사용할 수 있는 공간을 할당해서 제한해보자.

 

1. 하드디스크를 하나 장착하고, 파티션을 나눈 후, 파일시스템을 ext3으로 포맷하고, 마운트까지해보자!

 

 

먼저, 파티션을 나누자.



 

 

그 다음 ext3으로 포맷을 하자 



 

마운트를 시켜보자. 



 

 

, 이번에는 부팅되면 그때마다 자동으로 인식되도록 /etc/fatab의 내용을 바꿔보자.



 

 

2. 쿼터를 사용할 하드디스크를 만들었으니 이번에는 사용자를 만들어보자.

사용자의 IDjohn, bann으로하였으며, 비밀번호는 각각 아이디를 사용하였다.


 

3. 그 후에, /etc/fstab을 다시 편집한다.



defaults부분을 defaults,usrquota로 변경하였다. usrquota로 사용하겠다는 의미이다.

 

 

4. 재부팅을 한다.

 

 

5. 쿼터를 사용하기 전에 쿼터 DB를 만들어 줘야한다.

쿼터 DB를 만들어보자.



빈 파일 생성후, 보안을 위해 aquota.user의 권한을 바꾼다.

quotacheck -a -u -m은 사용자에 대해서 쿼터를 실행하는 명령이다.

 

 

6. 모든 준비가 끝났다. 이제 사용자별로 공간을 할당해주면 끝이다.


Filesystem : 사용자별 쿼터를 할당하는 파일시스템을 의미한다.

blocks : 현재 사용자가 사용하는 크기를 말한다.

soft : soft에 명시되어 있는 크기보다 더 사용할 경우 경고함

hard : hard에 명시되어 있는 크기보다 더 사용할 경우 쓰기 금지시킴... soft는 경고! hard는 금지! , soft보다 hard가 더 커야댐... 이론적으로는?ㅎㅎ

32KB만큼 john이사용하고 있다는 의미이다.

소프트의 한도를 7MB, 하드의 한도를 10MB로 제한하였다.

inodes, soft, hard : inode의 개수를 의미한다.(파일개수)

 

7. 이로써 사용자 john에게 공간 할당이 끝났다.



LIST

<RAID?>

여러 개의 하드디스크를 하나의 디스크처럼 사용하도록 하는 것인데, 비용을 절감하면서 더욱 신뢰성을 높이며 성능까지 향상시키기 위한 저장 장치를 의미한다.

 



<RAID 레벨>

RAIDRAID 0, RAID 1, RAID 5, RAID 6, RAID10까지 5개로 분류되고 각각 레벨마다 특징적인 저장방법을 의미한다.

 

1. RAID 0

모든 디스크를 동시에 사용하는 방법으로 하드A와 하드BRAID 0으로 만들었다고 가정해보자. 그럼 이 RAID 0은 저장할 때 하드 A와 하드 B에 동시에 골고루 저장한다. (마치 하나의 하드디스크 처럼 사용한다는 맥락 속에서 말이다.)

"안녕하세요? IT깝구"에요 라고 문장을 저장한다면... A에는 "안녕하세요? IT"까지 저장하고, B에는 "깝구에요"를 저장한다. 쉽게 예를 들기위해 이렇게 설명한것으로 실제로 이렇게 딱딱 떨어지게 저장되지는 않지만, 취지는 골고루 저장된다는 것!

RAID 0LVM의 차이점은 무엇일까? 이 두가지를 볼 경우 별 차이가 없지만, 저장하는 방식에 차이가 있다.

LVM으로 구성한 시스템에 저장하게 되면, 똑같이 예를 들기 위해 하드A와 하드BLVM을 만들었다고 가정해보자.

"안녕하세요? IT깝구"라고 저장한다면 하드 A에 모두 다 "안녕하세요? IT깝구"를 저장하고, 하드A가 모두 차면 B로 넘어간다.

RAID 0과 같이 모든 하드디스크에 동시에 골고루 저장하는 방법을 스트라이핑

(Stripping) 방식이라고 부른다. 그러므로 하드A가 맛이 간다면 RAID 0으로 구성한 전체 데이터 복구가 힘들것이다. RAID0 빠른 성능을 요구하면서, 전부 잃어버려도 큰 문제가 되지 않는 자료를 저장하는데 적절한 방식이다.

 

2. RAID 1

이 방식은 미러링(Mirroring)방식으로 불리우는데, 똑같은 데이터를 한 번 더 저장하도록 하는 방법이다하드A와 하드 B를 묶어서 RAID 1방식으로 구성했다고 가정하자. 그렇다면 하드A "안녕하세요? IT깝구"를 저장한다면, 하드 B에는 똑같은 데이터인 "안녕하세요? IT깝구"를 한 번더 저장하는 셈이다. 장점은 두 개의 디스크 중 하나가 고장나더라도 데이터는 손상되지 않는 장점이 있지만, 데이터를 저장하는 효율이 1/2로 줄어든다. 한마디로 공간효율이 떨어지지만 안전하다는 의미이다.

 

3. RAID 5

RAID1처럼 데이터의 안전성도 어느 정도 고려하고, RAID0처럼 공간 효율성도 고려한 방법이다. RAID5를 구성할 때는 최소 3개 이상의 하드디스크가 있어야만 구성이 가능하며, 하드디스크에 오류가 발생할 경우 패리티를 이용하여 복구한다.

하드디스크 4개를 이용하여 RAID5를 구성했다고 가정하자. 여기에 000 111 010 011(12bit)의 데이터를 저장하였다.



맨 처음 행의 줄을 보자. 0+0+0+parity = 짝수여야한다. 그렇기 때문에 parity0이 된다.

두번째 줄을 보자. 1+1+1+parity = 짝수여야한다. 그렇기 때문에 패리티는 1이 된다.

세번째 줄을 보자. 0+1+0+parity = 짝수여야한다. 그렇기 때문에 패리티는 0이 된다.

마지막 줄을 보자. 0+0+1+parity = 짝수여야한다. 그렇기 때문에 패리티는 1이 된다.

각각 네모칸이 패리티 비트 값을 나타낸다. 각 하드디스크 장치에 골고루 패리티 비트값을 넣어놓은 것이다.

예를 들어 sdb의 하드가 손상되어 사용할 수 없다고 가정해보자.



 

아까 우리가 보았던 패리티비트값을 이용해 찾아낼 수있다.

처음 0+알수없음+0+0 = 짝수여야한다. 알수없음은 당연히 0이된다.

1+알수없음+1+1 = 짝수여야한다. 알수없음은 1이된다.

이렇게 하나씩 하나씩 모두 복구가 가능하게 된다.

대신 두개이상의 하드디스크가 손상되면 찾을수 없지만 어느정도의 결함은 해결해 줄 수 있는 방법이 RAID 5이다.

 

4. RAID 6

RAID 5방식을 이용하면 디스크 1개가 고장나도 데이터에는 이상이 없는 것을 확인했다. 극단적인 예로 20개의 디스크로 RAID 5를 구성했다고 가정할 때 하드디스크가 2개 손상된다면 아쉽게도 모두 복구를 못하고 말 것이다.

RAID 6RAID 5의 방식을 개선시킨 방법이다.

공간효율은 RAID 5보다는 약간 떨어지지만 신뢰도는 좀 더 높인 방법이 RAID 6 방법이다.

 

5. RAID 10

RAID1에서 한 미러링 방법을 이용해 데이터를 다시 내부적으로 RAID 0방식의 스트라이핑하는 방법이다. 신뢰성과 성능이 동시에 뛰어난 방법이다.

 

<실습>

RAID0, 1, 5를 실습해보자.

실습에 앞서 하드디스크 준비가 필요하다.

8개의 하드디스크를 만들어야 하며, RAID 0(/dev/sdb, /dev/sdc)로 실습하고, RAID 1(/dev/sdd, /dev/sde), RAID 5(/dev/sdf, /dev/sdg, /dev/sdh)를 실습할 것이다.



다음과 같이 8개의 하드디스크를 만들도록 하자.

/dev/sdb, /dev/sdc... ~ /dev/sdi까지 모두 fdisk를 사용하여 파티션을 만들고 파일시스템 유형은 fd로하자. fdLinux raid autodetect유형으로 raid를 사용하고자 할 때 사용하는 파일시스템 유형이다.




간단하게 맨앞의 /dev/sdb와 맨끝의 /dev/sdi만 출력했다. 모두 다 만들면 준비가 끝난것이다.

 

다음과 같이 이렇게 뜨면 정상이다.




 

<실습 1 - RAID 0구축>



/dev/md0가 있는지 없는지 확인하고 없으면 만들어준다.

여기서 잠깐! md0는 왜만들어줄까? 우리는 지금 /dev/sdb1/dev/sdc1을 합쳐서 하나로 만들어야 한다. 그렇다면 그 하나로 합친 장치의 이름은 뭐로할것이냐... 바로 합친 장치를 만들어주고 정의하기 위해 md0를 만든것이다!

mknodbBlock device를 의미, 9md장치의 주 번호가, 00번째 장치라는 의미이다.

 

이제, mdadm 명령을 이용해 실제 RAID를 구성해보자.



mdadm 명령어의 옵션들을 해석해보자.

--create /dev/md0 : 우리가 만든 md0장치에 RAID를 생성하겠다는 의미이다.

--level=0 : RAID 0으로 하겠다.

--raid-devices=2 /dev/sdb1 /dev/sdc1 : 2개 하드디스크를 사용하며, 그 두개의 장치 이름은 /dev/sdb1/dev/sdc1이다.

그 후, scan옵션으로 잘 생성되었는지 확인하였다.

 

이번에는 파티션 장치를 포맷해보자.

mkfs 명령어로 포맷하였다. -> 파일시스템을 생성함 뭐로? ext4



 

 

마지막으로 마운트해보자!



마운트 후에 df명령어로 잘 생성되었는지 확인하였다.

이렇게 RAID 0의 구성이 끝이났다!

 

<실습2 - RAID 1 구축>

md0를 만든것 처럼 RAID 1을 구축할 때도 md1을 만들것이다.



 

 

자 이번에는 포맷을 해보자.



 

 

마지막! 마운트하면 끝이다.



 

 

<실습2 - RAID 5 구축>

이것은 직접 하지 않고, 말로 설명하겠다. mdadm에서 level5로 바꿔주고, 장치를 4개정도 생성해서 실습하면 된다. --raid-devices=4 뒤에 장치 이름 4개를 모두 써주고, 포맷후, 마운트를 해주면 끝이다.



LIST

<LVM이란?>

말 그대로 논리적 디스크 관리자이다. LVM은 여러 개의 하드디스크를 합쳐서 한 개의 파일시스템으로 사용하는 것을 말한다. LVM은 여러 개의 디스크를 합쳐줄뿐 아니라 합쳐진 것을 다시 사용자 맘대로 여러개로 나눌수 있다.

 

용어)

1. Physical Volume : /dev/sda1, /dev/sdb1...

2. Volume Group : Physical Volume을 합쳐 1개의 물리적 그룹을 만듬

3. Logical Volume : Volume Group을 나눠서 논리적 그룹으로 나눈다.(1개이상으로)

 

<실습>

이번에는 3개의 하드디스크를 장착한 후, LVM으로 마치 1개처럼 묶어보는 실습을 해보자.

준비과정은 /dev/sdc, /dev/sdd, /dev/sde 각각 100MB, 100MB, 200MB 하드를 만들어 묶어보자.

하드만드는 과정은 생략하겠다. , fdisk를 사용하여 파일시스템을 적용할 때 LVM으로 해야하기 때문에 그 부분부터 보자!

 

하드디스크가 5개가 장착되어있다. 원래 기존에2+ 방금 실습을 위해 장착한 3



fdisk를 사용하여 파티션을 만들어준다. 



 

명령어 t는 파일시스템 유형을 선택할 때 사용한다.

8e Linux LVM을 사용할 때 사용하는 파일시스템이다.

w는 설정 값들을 저장하는 명령어이다. 






위에는 /dev/sdc1만 만들었지만 /dev/sdd/dev/sde도 똑같이 만들어준다.

 



<LVM을 이용해보자>

1. pvcreate명령으로 물리적인 볼륨을 생성해보자.


각각 파티션에 물리볼륨을 만들었다.

 

2. 만들어진 물리 볼륨을 그룹을 만들어 하나로 합쳐보자.

명령어는 vgcreage [그룹몇] [각 장치들...]



 

3. 물리봄륨 그룹이 잘 만들어져있는지 확인해보자.



 

4. 볼륨 그룹의 파티션을 만들어보자.

하드디스크를 생성하고 파티션을 만들때는 fdisk를 사용했다. 하지만 지금 만들어놓은 볼륨 그룹에 대한 파티션을 생성할 때는 lvcreate명령어를 사용해야한다.

lvcreate -L 400MB -n myGroup1 myGroup

이 명령어의 해석은 우리가 만든 논리 그룹myGroupmyGroup1이라는 논리 볼륨을 생성하되, 크기는 400MB로 하라는 의미이다. , 이 의미를 하드디스크 fdisk를 사용했을 때와 비교하면 파티션 1개만 만든 것과 같은 의미이다.



 

5. 만들어진 파티션에 파일시스템을 생성하자.

우리가 만들 파일시스템은 /dev/myGroup/myGroup1이다.



 

6. 마지막으로 마운트만 해주면 끝이다!




LIST

리눅스에서 하드디스크의 용량이 모잘라 추가하고 싶을 때는 어떻게 해야할까??

컴퓨터에 하드디스크를 추가한 후 사용하려면 특정 절차를 수행해야 한다.

 

먼저, 하드디스크를 장착한다.

둘째, fdisk명령어로 파티션을 생성한다.

셋째, 파티션을 나눈 후파일 시스템을 생성한다. ) mkfs.ext4

넷째, mount를 사용하여 특정 디렉토리와 마운트한다.

 

1. 하드 디스크 장착하기

가상 프로그램이 아닌 리눅스를 실제 컴퓨터에 사용하시는 분들이면 그냥 하드디스크를 꽂아서 사용하면 된다.

하지만 나같은 경우 VM ware를 사용하기 때문에 소프트웨어적인 설정이 필요하다.

SCSI 0:1장치(/dev/sdb)에 하드 0.2GB짜리 하나를 장착해보자.

SCSI장치가 왜 /dev/sdb인 이유는 /dev 디렉토리안에 /sdb형태로 존재하기 때문인데, 읽는 순서는 sda, sdb, sdc, sdd,...이렇게 진행하고 나뉘어진 파티션이있다면 sda1,sda2,sdb1,sdc1 이런식으로... sda하드에는 파티션이 두개가 sdb하드에는 파티션이 한개가 나뉘어져 있는 것이다.

 

<실습>

순서대로 따라하기만 하면 된다!

 








이름은 알기쉽게! 나중에 이름을 봤을때 어떤 하드인지 알기 쉽게! 작성하자


이렇게 되면 vm ware에서의 하드디스크 장착은 끝이났다.

 

2. fdisk를 이용해 파티션을 나누기

이번에는 하드디스크 장착을 했으니 파티션을 나눠보자.

<실습>

파티션은 한 개만 만들어보자.



먼저, 맨 처음에 n은 하드디스크 sdb의 새로운 파티션을 분할하겠다 라는 의미이다. 두번째 pprimary partition을 선택한것이고, 세번째 1은 파티션 번호를 1번으로 하겠다라는 의미이다.

First 실린더는 시작 실린더 번호를 입력하는곳인데 그냥 엔터를 치면되고, 마지막 실린더 번호를 입력하라는 곳에서도 엔터를 치면 된다.

 



p는 지금까지 만든 파티션의 내용을 볼 수 있다. 밑에보면 sdb1이라고 방금 만든 파티션을 볼 수 있다.

 

3. mkfs명령어로 파일시스템을 생성하기

방금 파티션을 나눴다. 이제 포맷을 해야한다. , 파일시스템을 생성하는 것인데, 방금 나눈 파티션에 저장을 어떤 파일시스템으로 할지를 결정하는 것이다.



 

done 세개가 뜨면 잘 만들어진 것이다.

파일 시스템에는 종료가 여러개가 있다과거에는 ext2, ext3를 사용하였지만 최근 개발로 향상된 ext4를 사용하였다.

 

4. 마운트 시키자!

, 이제 하드장착, 파티션 분할, 파일시스템 생성 모두 끝났다.

장착된 하드를 디렉토리에 마운트하여 사용하는 일만 남았다.



 

이제부터는 /data 디렉토리에 파일을 복사하거나 옮기면 /dev/sdb1 에 저장되는 것이다.



LIST

+ Recent posts