실습 ) 하드디스크 1개 추가해보기.



=> 폴더를 만들어서 sdb1 장치를  mount해서 사용해야 함. ( 그 폴더를 들어가면 장치를 이용하는 것과 같은 효과)



1. 물리적인 하드디스크를 Edit virtual machine을 통해 장착함.


2. fdisk를 사용하여 파티션 분할을 시작한다.



-  ls /dev/sd* : 내가 삽입한 장치를 검색한다

- fdisk /dev/sdb : 파티션 분할 시작

- Command n : new 파티션 생성

- Select P : primary 기본 파티션으로 간다.

- Partion number 1 : 첫번째 파티션으로 지정 하고 first sector와 last sector는 default 값으로 지정하였다.

- 마지막으로 Command w(write)를 입력하면 현재까지 파티션한게 적용 된다.


3. 포맷한다. (파일 시스템 생성)


- mkfs.ext4 /dev/sdb1




4. mount 와 umount를 실습해본다.



- mkdir /mydata : mydata 디렉토리를 만든다.

- touch test1 : test1 파일을 생성.

- mount /dev/sdb1 /mydata : mydata 폴더에 삽입한 장치를 마운트 시킨다.

- 그다음 test1 파일이 안보이는걸 확인

- touch test2 : mount시킨 상태에서 test2 파일을 생성해본다.

- umount /mydata : umount 시킨후 파일 목록을 확인 하면 test2가 아닌 test1파일이 들어있음을 알 수있다.

(test1 파일은 swap공간 영역에 test2는 마운트된 mydata안에 존재)


5. 설정이 완료되었다면 재부팅시 마운트가 풀리므로 마운트가 풀리지 않도록 /etc/fstab을 편집한다.




'Linux' 카테고리의 다른 글

[Linux] LVM  (0) 2018.07.03
[Linux] RAID  (0) 2018.06.28
[Linux] 모듈과 커널 컴파일  (0) 2018.06.27
[Linux] GRUB 부트로더  (0) 2018.06.27
[Linux] 파이프,필터,리디렉션, 응급복구  (0) 2018.06.27

모듈이란 ? 


필요할 때마다 호출하여 사용되는 코드



리눅스 모듈에 대한 이미지 검색결과



-> 부팅시 필요한 내용만 커널에 담아 둔다. (커널이 커지는 것을 방지하며 커널을 가볍게 유지할 수 있음)


커널 컴파일





자세한 컴파일 하는 과정 : https://hychome.blogspot.com/2015/09/blog-post_21.html


커널 컴파일을 통해 컴퓨터를 부팅 시 원하는 커널을 가지고 그때그때 마다 부팅이 가능하다.


'Linux' 카테고리의 다른 글

[Linux] RAID  (0) 2018.06.28
[Linux] SATA와 SCSI, 하드디스크 추가해보기  (0) 2018.06.28
[Linux] GRUB 부트로더  (0) 2018.06.27
[Linux] 파이프,필터,리디렉션, 응급복구  (0) 2018.06.27
[Linux] cron과 at  (0) 2018.06.27

GRUB 부트로더

부트 정보를 사용자가 임의로 변경해 부팅할 수가 있다. 즉, 부트정보가 올바르지 않더라도 수정하여 부팅할 수 있음.

다른 여러가지 운영채ㅔ제와 멀티 부팅 가능

대화형 설정을 제공해줘서, 커널의 경로와 파일 이름만 알면 부팅이 가능하다.


GRUB2의 장점

셸 스크립트 지원

동적 모듈 로드

ISO 이미지를 이용해서 바로 부팅가능


GRUB2 설정 방법

/boot/grub/grub.cfg 설정파일 (직접 X)

/etc/default/grub 파일과 /etc/grub.d/디렉터리 파일을 수정한 후에 grub-mkconfig 명령어를 실행


실습 1) GRUB 부트로더 변경 해보기.


1. vi/etc/default/grub 으로 vi를 실행 후 Timeout과 Distributor 변경을 해 보았음. (20초, This is linux)



실행 결과 Grub 



실습 2) GRUB 관리자 생성 ( 무분별한 사용자의 GRUB 부트로더 접근을 막기 위하여)


1. vi /etc/grub.d/00_header 접속 후 맨 밑에 입력 코드 추가.



2. 계정 생성후 부팅 시에 로그인 화면이 출력되며 비밀번호 틀렸을 시 접속이 불가능함.



파이프


두 개의 프로그램을 연결해 주는 연결 통로

" | " 사용

ex) ls -l /etc | less


필터


필요한 것만 걸러주는 명령어

grep, tail, wc, sort, awk, sed 등

주로 파이프와 같이 사용

ex) ps -ef | grep bash


리디렉션


표준 입출력의 방향을 바꿔 줌

ex) ls -l -> list.txt


응급복구


root 비밀번호 분실 시 복구 방법.


1. Vm 부팅시 ESC를 눌러 GRUB 편집에 들어간다 Ubuntu에 올려놓은채로 알파벳 e (edit)을 누른다.



2. 커서를 밑으로 내려서 linux 부분에 커서를 놓고 end 키를 눌러서 보이는 부분에 코드를 추가한다. 



3. Ctrl + X를 눌러서 부팅한다. -> root로 로그인됨


4. passwd 를 이용해 패스워드를 바꿔보려 하지만 

mount 명령어로 확인해 본 결과 /(root) 파티션이 읽기전용으로 되어있기 때문에 비밀번호를 변경할 수 없다.

-> 마운트 변경 : mount -o remount rw /


5. 비밀번호 변경이 이루어지는 걸 확인 후 Restart를 통해 로그인 하면 된다.

'Linux' 카테고리의 다른 글

[Linux] 모듈과 커널 컴파일  (0) 2018.06.27
[Linux] GRUB 부트로더  (0) 2018.06.27
[Linux] cron과 at  (0) 2018.06.27
[Linux] apt-get 작동원리와 패키지저장소  (0) 2018.06.26
[Linux] 파일 소유권과 허가권  (0) 2018.06.26

Cron


주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정

관련된 데몬은 "crond", 관련 파일은 "/etc/crontab"

/etc/crontab 형식

분 | 시 | 일 | 월 | 요일 | 사용자 | 실행명령

00  05   1     *     *       root      cp -r /home/backup


At


일회성 작업을 예약

사용 예시)

예약 : #at {시간}

#at 3:00am tomorrow -> 내일 새벽 3시

#at now + 1 hours -> 1시간 후

at> 프롬프트에 예약명령어 입력 후 <Enter>

완료되면 Ctrl+D


확인 : at -l

삭제 : atrm <작업번호>


cron 실습) 매월 새벽 3시 1분에 /home 디렉토리와 그 하위 디렉토리를 /backup 디렉토리에 백업하기


1. systemctl status cron를 이용하여 cron 서비스 작동하는지 확인하기.



2. /etc/crontab 열어서 코딩하기.


 

-> 명령은 shell 파일을 만들어서 실행. (간단한 스크립트 프로그램 -> 날짜를 뽑아옴)


3. myBackup.sh 만들고 권한 조정.



4. myBackup.sh를 vi로 열어서 코딩.



5. date를 임의로 조절 후 1분후에 결과 확인.



At 실습) 내일 오전 4:00에 명령어 설정하기.


1.  apt-get -y install rdate at -> rdate랑 at 패키지 설치.


2. time 서버에서 시간가져와서 현재시간 설정후 at 명령어 입력.



-> at -l 로 at 확인 후 삭제까지 실습.


1. docker pull ubuntu:(version) -> 본인은 14.04를 pull 했음


-> 우분투 자체를 받는게 아니라 우분투 패키지 이미지를 받는 개념이 중요!


2. docker images



-> 본인이 받은 이미지들을 확인 가능함.


3. sudo docker run -i -t ubuntu:14.04 /bin/bash



-> 호스트 OS 안에 docker 안에 ubuntu 컨테이너로 진입한 모습. (컨테이너는 안과 밖은 서로 완전히 독립적인 환경)


4. docker ps -a




-> exit 명령으로 종료시 docker는 완전히 종료되고 docker ps -a 옵션 이용시 종료된 컨테이너 까지 모두 확인가능.


4. docker run 명령은 docker 실행과 함께 컨테이너 안으로 들어가고, docker start는 컨테이너를 실행만하고 들어가지는 않음

docker attach [container ID] 를 통해 컨테이너 진입 가능, Ctrl + P + Q를 통해 컨테이너를 종료하지 않고 빠져나오기 가능


5. 컨테이너 삭제시 명령어 : docker rm [Container ID]

이미지 삭제시 명령어 : docker rmi [파일 이름]

=> 이미지는 하나지만 여러개의 컨테이너를 실행 할 수있음. 컨테이너 레벨에서 데이터가 저장되고 이미지에 영향X


6. 실습) nginx 설치해보기



=> nginx 파일은 입출력이 필요없기 때문에 -i 가아닌 데몬 -d 옵션을 사용.


7. exec 명령어 실습)  메인 프로세스 메인 실행파일 이외의 다른 실행파일을 실행 할 수 있는 명령어 실습



=> ubuntu 14:04 이미지를 이용하여 name이 hello인 컨테이너를 만들고, Ctrl+P+Q로 컨테이너를 종료하지 않고 빠져나온 후에 외부에서 exec 명령어를 이용하여 hello.txt 파일을 만든 후 attach를 통해 컨테이너 진입후 컨테이너 안에 hello.txt.가 생성되어 있는것을 확인.


ps. 같은 프로그램 사용 경우 호스트OS안에 포트 충돌이 일어날 수도 있지만 컨테이너 생성시 -p옵션을 이용해 포트 포워딩 조절가능

'Docker' 카테고리의 다른 글

[Docker] 도커 설치하기  (0) 2018.06.26
[Docker] 도커(Docker)란 ?  (0) 2018.06.26

1. 공식 도커 다운로드 메뉴얼 : https://docs.docker.com/install/linux/docker-ce/ubuntu/


2. 정리된 홈페이지 (권장) http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter02

'Docker' 카테고리의 다른 글

[Docker] 기본 실습  (1) 2018.06.26
[Docker] 도커(Docker)란 ?  (0) 2018.06.26
도커란(Docker)?

이 글은 가장 빨리 만나는 도커(이재홍 저)를 참고하여 작성하였고, 초보를 위한 도커 안내서 블로그를 참고하여 작성하였습니다.


블로그: https://subicura.com/


도커는 컨테이너를 관리하는 플랫폼
도커는 컨테이너를 관리하는 플랫폼

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.


컨테이너라 하면 배에 실는 네모난 화물 수송용 박스를 생각할 수 있는데 각각의 컨테이너 안에는 옷, 신발, 전자제품, 술, 과일등 다양한 화물을 넣을 수 있고 규격화되어 컨테이너선이나 트레일러등 다양한 운송수단으로 쉽게 옮길 수 있습니다.

서버에서 이야기하는 컨테이너도 이와 비슷한데 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있습니다.

컨테이너를 가장 잘 사용하고 있는 기업은 구글인데 2014년 발표 에 따르면 구글은 모든 서비스들이 컨테이너로 동작하고 매주 20억 개의 컨테이너를 구동 한다고 합니다. 

컨테이너(Container)

docker container
docker container

컨테이너는 격리된 공간에서 프로세스가 동작하는 기술입니다. 가상화 기술의 하나지만 기존방식과는 차이가 있습니다.

기존의 가상화 방식은 주로 OS를 가상화하였습니다.

우리에게 익숙한 VMware나 VirtualBox같은 가상머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식입니다. 이 방식은 여러가지 OS를 가상화(리눅스에서 윈도우를 돌린다던가) 할 수 있고 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 사용할 수 없었습니다.

이러한 상황을 개선하기 위해 CPU의 가상화 기술(HVM)을 이용한 KVMKernel-based Virtual Machine과 반가상화 Paravirtualization방식의 Xen이 등장합니다. 이러한 방식은 게스트 OS가 필요하긴 하지만 전체OS를 가상화하는 방식이 아니였기 때문에 호스트형 가상화 방식에 비해 성능이 향상되었습니다. 이러한 기술들은 OpenStack이나 AWS, Rackspace같은 클라우드 서비스에서 가상 컴퓨팅 기술의 기반이 되었습니다.

가상머신과 도커
가상머신과 도커

전가상화든 반가상화든 추가적인 OS를 설치하여 가상화하는 방법은 어쨋든 성능문제가 있었고 이를 개선하기 위해 프로세스를 격리 하는 방식이 등장합니다.

리눅스에서는 이 방식을 리눅스 컨테이너라고 하고 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작합니다. CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 거어어어어의 손실이 없습니다.

하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어 마치 가벼운 VMVirtual Machine을 사용하는 느낌을 줍니다. 실행중인 컨테이너에 접속하여 명령어를 입력할 수 있고 apt-get이나 yum으로 패키지를 설치할 수 있으며 사용자도 추가하고 여러개의 프로세스를 백그라운드로 실행할 수도 있습니다. CPU나 메모리 사용량을 제한할 수 있고 호스트의 특정 포트와 연결하거나 호스트의 특정 디렉토리를 내부 디렉토리인 것처럼 사용할 수도 있습니다.



도커 입문 영상 : https://www.youtube.com/watch?v=Bhzz9E3xuXY&t=1s

'Docker' 카테고리의 다른 글

[Docker] 기본 실습  (1) 2018.06.26
[Docker] 도커 설치하기  (0) 2018.06.26

apt-get 작동원리



저장소 URL : /etc/apt/sources.list


/etc/apt/sources.list 에 vi로 접속하면 각 패키지의 경로를 미러사이트로 지정하여 apt-get을 사용 가능 하다.


국내 우분투 미러사이트

1. 카이스트서버 (http://ftp.kaist.ac.krhttp://kr.archive.ubuntu.com)

2. 다음카카오서버(http://ftp.daumkakao.com)

3. 네오위즈서버(http://ftp.neowiz.com)


 

 ftp.kaist.ac.kr

ftp.daumkakao.com

ftp.neowiz.com 

 속도

 그럭저럭

(새로운 배포판이 나오면 느려짐)

 빠름 

 평일 낮에는 최고,주말에는 최악

 이용자 수

 공식 서버이기에 매일 붐빔

 우분투, 페도라 등을 쓴다면 이쪽을 추천

 우분투, 페도라를 쓰는데 다음카카오가 맛이 가면 이쪽으로

 이용자 성향

 리눅스 초보자부터 고수까지 다양 (따로 설정하지 않으면 자동으로 이쪽으로 연결됨)

 source.list를 수정할 줄 알기만 하면 이쪽 이용

 변태

 

 비영리

 영리

 영리



미러사이트 표 출처: http://moordev.tistory.com/209 


파일의 리스트와 파일 속성


파일 허가권(Permission)
 - "rw-", "r--", "r--" 3개씩 끊어서 읽음 (r은 read, w는 write, x는 execute의 약자)
 - 첫 번째 "rw-"는 소유자(User)의 파일접근 권한
 - 두 번째의 "r--"는 그룹(Group)의 파일접근 권한
 - 세 번째의 "r--"는 그 외의 사용자(Other)의 파일접근 권한
 - 숫자로도 표시 가능 (8진수)

 chmod 명령

파일 허가권 변경 명령어
예) # chmod 777 sample.txt

파일 소유권(Ownership)
파일을 소유한 사용자와 그룹을 의미

chown/chgrp 명령
파일의 소유권을 바꾸는 명령어
예) # chown centos.centos sample.txt 
# chown centos sample.txt
# chgrp centos sample.txt

 

링크


- 파일의 링크(Link)에는 하드 링크(Hard Link)와 심볼릭 링크(Symbolic Link 또는 Soft Link) 두 가지가 있음

- 하드 링크를 생성하면 "하드링크파일"만 하나 생성되며 같은 inode1을 사용 (명령 : # ln 링크대상파일이름 링크파일이름)
- 심볼릭 링크를 생성하면 새로운 inode2를 만들고, 데이터는 원본 파일을 연결하는 효과 (명령 : # ln -s 링크대상파일이름 링크파일이름)

 

 


=> 원본파일 basefile 생성후 하드링크 파일로 hardlink를 만들고 심볼릭 링크파일로 softlink 파일 생성

inode number 확인 결과 원본파일과 하드링크 파일은 같고 심볼릭 링크 파일은 다른걸 알수 있다

두 파일의 내용은 같은걸 확인.



=> 원본파일을 다른 디렉토리로 이동시 하드링크 파일과  다르게 심볼릭 링크 파일은 내용을 읽을 수 없음.

논리적 설계를 이해

 


참고 :  https://www.youtube.com/playlist?list=PLVsNizTWUw7EoFNBhIdVFp9eT6P22hU1o&nohtml5=False


+ Recent posts