728x90
반응형
rsync 란?


rsync(remote sync)는 원격에 있는 파일과 디렉토리를 복사하고 동기화 하기 위해서 사용하는 툴이며 동시에 네트워크 프로토콜이다.
리눅스와 유닉스에서는 백업용도로 사용하는 툴이며 rsync는 CLI툴로 커맨드 라인의 옵션들을 이용해서 배치 프로그램을 개발하기 쉽다는 장점이 있다.
이 스크립트를 cron 등에 올리는 걸로간단하게 백업 혹은 미러(mirror)시스템을 구축할 수 있다.


rsync의 기능상 장점들

- 원격 시스템으로부터 파일을 효율적으로 복사하거나 동기화 할 수 있다.
- Link, device, 파일의 소유자와 그룹권한등 파일의 부가정보도 복사할 수 있다.
- scp보다 빠르다. rsync는 remote-update 프로토콜을 이용해서 차이가 있는 파일만 복사한다.
  처음에는 모든 파일과 디렉토리를 복사하겠지만 다음부터는 차이가 있는 파일만 복사하기 때문에 더 빠르고 효율적으로 작동한다.
- 데이터를 압축해서 송/수신하기 때문에 더 적은 대역폭을 사용한다.


rsync의 동기화 알고리즘

1) 파일 전송 결정
기본적으로 rsync는 파일의 크기와 수정 시간을 비교하는 것으로 파일을 전송할지 말지 결정한다.
이 방법은 아주 작은 CPU 자원을 소모하지만 실수가 발생할 수 있다.
일반적으로 파일의 내용을 변경하면 크기와 수정시간이 변하지만 항상 그렇다고 단정할 수는 없기 때문이다.
--checksum 옵션을 이용하면 비교 방법을 개선할 수 있다. 이 옵션을 켜면 파일의 checksum을 비교한다.
크기/시간을 이용한 비교 방법보다 안전하지만 더 느리고 더 많은 자원을 사용한다.

2) 전송할 파일 부분의 결정
파일 전송을 결정했다고 가정해보자. 파일을 전송하기 위한 간단한 방법은 전체 파일을 그대로 복사해버리는 것이다.
쉬운방법인데 파일의 크기가 클 경우 효율적이지않다.
1G크기의 파일이 있을때 바뀐 부분이 1K라고 하면 1K의 수정  내용때문에 1G를 복사하게 된다.
rsync는 파일의 변경된 부분만 효과적으로 복사하기 위한 알고리즘을 가지고 있다.
rsync는 파일의 고정 크기를 가지는 청크(chunk)로 나눈 다음에 checksum을 계산한다.
이 checksum을 서로 계산해서 다를 경우 해당 부분의 청크만을 복사한다.
만약 앞 부분의 정보가 수정되어 정보들이 밀린다면 모든 청크의 checksum이 어긋날 것이다.
이 문제를 피하기 위해서 Rolling hash를 사용한다.





rsync 사용법


명령어

# rsync [options] [source] [destination]


옵션

-a : 아카이브 모드로 자주 사용하는 옵션을 하나로 묶는 옵션(파일 스탬프, 퍼미션, 소유자 정보를 그대로 복사)

-v : 상세모드로 실제 복사하는 파일 목록과 전송량을 표시하는 옵션으로 명령어 실행결과를 바로 확인

-n : dry-run모드로 실제 파일 복사는 하지 않고 처리될 대상 파일목록만 출력

-r : 하위 디렉토리 포함하여 전송

-z : 데이터 파일을 압축

-c : checksum을 사용하는 옵션

-b : 동기화할 디렉토리아 이미 파일이 존재하는 경우 동기화할 디렉토리에 백업(이 경우 기본적으로 ~ 가 붙음)

-u : 동기화할 디렉토리에 원본보다 최신파일이 있을 경우 해당 파일은 복사하지 않음

-d : 동기화 소스에 없는 파일이 동기화할 곳에 있는 경우 그 파일을 삭제

-h : 결과를 사람이 읽기편한 포맷으로 출력

-i : 모든 업데이트를 요약하여 출력

-p : 퍼미션 정보를 유지하면서 동기화

-o : 소유자 정보를 유지하면서 동기화(root 권한을 가진 유저만 사용가능)

-g : 그룹 정보를 유지하면서 동기화

-e : ssh, rsh 같은 remote shell 프로그램을 선택(안전한 통신을 보장해주는 ssh를 이용하는데 -e 옵션이 없다면 ssh를 사용)

--progress : 전송 진행상황을 표시

--stats : 결과 보고

--delete : 원본 서버에 없는 파일은 백업 서버에서 삭제

--exclude : 제외할 파일 지정

--bwlimit : 대역폭(복사속도) 제어

--daemon : rsync를 데몬 모드로 실행

--max-size : 특정 크기 이상 파일 제외 (rsync 2.6.4 버전부터 추가된 옵션)

--min-size : 특정 크기 이하 파일 제외 (rsync 2.6.7 버전부터 추가된 옵션)



설치

# yum install rsync





rsync 사용 예제


로컬내에서 파일과 디렉토리 복사 및 동기화

1) 로컬에서 파일 복사 및 동기화

원격파일 복사 프로그램이지만 로컬에서 사용해도 문제가 없다. 만약 목적지 디렉토리가 없다면 자동으로 디렉토리를 생성

2) 로컬에서 디렉토리 복사 및 동기화

디렉토리를 로컬의 다른 위치로 복사할 수 있다. moniwiki 디렉토리를 /tmp/backups 디렉토리로 복사했다.


moniwiki 디렉토리를 다시 한번 복사해봤다. rsync의 설명이 맞다면 복사하는 파일이 없어야 할 것이다.


파일을 하나 추가해서 추가된 파일만 복사되는지 확인 (README.txt. 파일을 생성하였고 해당 파일만 복사가 되었다)


README.txt. 파일만 수정한 후 rsync를 실행하였을 때 수정된 README.txt 파일이 동기화된다.


서버로부터 파일과 디렉토리를 복사 혹은 동기화 하기

1) 로컬에 있는 moniwiki 디렉토리를 원격 서버로 복사하는 예제


2) 원격 서버의 디렉토리를 로컬 서버로 복사하기



rsync server 모드로 사용

--daemon 옵션을 이용하여 서버모드로 작동할 수있다. xined를 이용해 시스템 서비스로 등록

1) xinetd 패키지 설치
# yum install xinetd

2) /etc/xinetd.d/rsync 설정 파일 생성


3) rsync 설정파일은 /etc/rsync.conf이고 파일이 없는 경우 직접 만들어야 한다.

- 복사(동기화) 디렉토리로 /home/share를 선택했다.
- 읽기/쓰기 모두 가능하게 했다.
- 디렉토리에 대한 소유자는 nobody.nogroup로 했다. /home/share 소유자를 nobody.nogroup로 변경한다.
- 접속 허용 유저로 yundream을 추가했다.
- auth users에 대한 설정파일은 /etc/rsyncd.secrets에 저장한다

4) /etc/rsyncd.serets 파일에 접속유저와 패스워드를 설정할 수 있다. (패스워드를 mypassword 로 설정)


5) 읽기 테스트


6) 쓰기 테스트



데이터 복사 진행 상황 확인하기


--progress 옵션을 키면 진행정도를 화면에 출력


include, exclude 옵션

include와 exclude 옵션을 이용해서 복사할 파일을 추가하거나 제외할 수 있다.


data 디렉토리를 복사에서 제외


*도 사용할 수 있다.


delete 옵션

rsync는 파일이나 디렉토리가 없으면 새로 만든다. 그러나 파일이나 디렉토리가 존재할 경우 삭제하고 싶을때 이 옵션을 사용한다.


로컬 서버에 text.txt 파일이 있으면 삭제한 후 복사하는 예제


전송할 파일의 최대 크기를 정하기

--max-size 옵션을 이용해서 전송할 파일의 최대크기를 정할 수있다


10K 이내의 파일만 복사하는 예제


성공적으로 전송한 후 원본파일 지우기

--remove-source-files를 이용하면 전송이 끝난 후 원본파일을 삭제




Bandwidth 제한 설정

--bwlimit 옵션을 이용해서 파일 전송에 사용할 네트워크 대역폭을 제한할 수 있다.
인터넷 서비스중인 서버를 다른 서비스에 영향을 주지않는 범위내에 파일 복사를 원할 경우 사용


bwlinit를 사용해서 대역폭 제한



반응형

'Linux' 카테고리의 다른 글

Linux strace  (0) 2018.08.08
Linux Memory 재할당  (0) 2018.08.08
Linux xargs  (0) 2018.08.08
Linux Multipath Error  (0) 2018.08.08
Linux FTP 구성  (0) 2018.08.08
728x90
반응형
  • 기본적인 명령어 뒤에 파이프로 추가하여 사용
  • 파이프 이전에 명령을 인자로 받아 명령어를 실행하는 구조

xargs [옵션] 명령어

  • 옵션
    - a : 표준 입력 대신 파일에서 항목을 읽음, 이 옵션을 사용하여 명령을 실행하면 stdin(표준 스트림)은 변경되지 않는다. 그렇지 않으면 stdin이 /dev/null에서 리다이렉션 됨
    - O : 공백이나 특수문자를 찾을때 사용 (문자를 그대로 사용)
    (Ex. find /opt -name “*.[ch]” | xargs touch -> 여기서 파일 이름에 공백이 있을 경우 각각 분리된 파일로 넘겨지는데 find /opt -name “*.[ch]” -print0 | xargs -O touch 형식으로 사용하면
    -print0 은 파일 사이의 공백을 \0으로 분리자로 출력하고 xargs에서는 \0으로 표시된 분리자를 인식하여 하나의 파일이름으로 인식하고 다음 인자로 넘어간다)
    - d : 입력된 문자를 그대로 사용한다 (따음표, 백슬래쉬 같은 특수문자), 단순히 문자가 스페이스 같은걸로 분리되어 있을때 사용가능 하지만 다른 인수와 같이 처리되는 데는 사용 불가능
    - n : 지정된 숫자만큼 행을 출력 (앞에서 들어오는 인자의 수를 제한할 수 있다. 앞에서 5개의 표준 입력이 만들어져도 -n 으로 지정한 숫자만큼의 매개변수가 넘어온다.)
    - p : 사용자에게 각 명령 행을 실행할지 여부와 터미널에서 행을 읽는거에 대한 여부를 묻는다 ( yes , no 지정)
    - P : 하나의 명령에 프로세스 지정, -n 옵션과 같이 사용 ( -n으로 10개의 출력을 한다면 -p를 사용시 -n만큼의 프로세스가 실행, -p를 0으로 지정하면 한번에 사용할수 있는 프로세스를 모두 사용)
    - t : xargs를 통해 구성된 명령어를 표준 에러로 출력 (실행된 커먼드가 무엇인지 표시하므로 디버깅과정에 유용)
    - s : 한 라인에 들어갈 수 있는 문자열 수를 지정, 기본적으로 128k 안으로 문자열을 만들어 하나의 명령을 실행하나 해당 옵션은 최대 1024k까지 사용가능하게 한다.
    - x : -s 로 지정한 크기가 초과되면 종료시킨다
    —show-limits : xargs의 버퍼 크기 선택 및 -s 옵션에 대한 길이 제한을 출력
    - E : 문자열 끝을 eof-str로 설정한다. 
    - I(i) : xargs에 전달된 라인 전체를 뒤에 나오는 명령어의 인자로 사용 (디폴트로 라인 전체를 의미하는 기호는 {} 이다)
    (Ex. find . -name “*.c”” | xargs -i {} sh -c ‘echo -n {} >> c_file.txt; stat -c %Y {} >> c_file.txt’ -> 하위 폴더에서 모든 C로 끝나는 파일들을 찾아 파일이름과 날짜롤 c.file.txt에 저장)
    - l(L) : 해당 명령을 사용하면 명령어 뒤에 공백이 있으면 다음 행으로 인식하는게 아닌 다음줄에 입력 라인에 있어도 논리적으로 이어지게 한다.
    (-l 옵션을 사용하면 읽어들이는 각 행은 내부적으로 버퍼링이 된다. -l 옵션만 사용하는 경우 허용하는 버퍼의 상한이 있어 제한이 걸리는데 (대량의 파일이나 행을 읽어들이는 경우) -s 옵션을 함께 사용하면
    -s 옵션에 지정된 만큼 버퍼 크기를 늘릴 수 있으며 매우 긴 행이 발생되지 않도록 할 수 있다)

  • 예제
    # find /tmp -name core -type f -print | xargs /bin/rm -f
    (/tmp 디랙토리 아래 core라는 파일을 찾아 삭제)

    # fine /tmp -name core -type -f -print0 | xargs -O /bin/rm -f
    (공백이나 개행 문자가 들어가 있는 파일이나 디렉토리 이름을 올바르게 처리되도록 파일 이름을 처리하여 core 파일을 삭제)

    # find /tmp -depth -name core -type f -delete
    (위의 두 예제와 같은 내용이나 이번 예제가 더 효율적이다. rm 을 시작하기위해 fork와 exec를 사용하여 프로세스를 생성하지 않기 때문)

    # ls *.txt | xargs cat >> abc.txt
    (ls를 이용하여 text파일을 모두 읽어와 하나의 파일로 병합한다)

    # ls | grep “*.bak” | xargs cp /home/bak_file -> X
    위와 같이 명령을 실행하면 오류가 발생한다. 출력값이 cp 명령에서 맨끝이 아니라 중간에 인자로 들어가기 때문이다. 이럴 경우 -i(-I) 옵션을사용하여 출력값을 어느위치에서 인자로 사용할 것인지 지정해주면 된다.
    # ls | grep “*.bak” | xargs -I{} cp {} /home/bak_file -> O 또는 # ls | grep “*.bak” | xargs -i cp {} /home/bak_file -> O
    (소문자 i를 사용하는 방식이 옛날 방식이므로 대문자 I를 사용한것을 권장한다, -i에는 기본값을 지정하는 것이 없다)

    # find ~/ -type f | grep -H “*.txt$” | xargs grep -H “abcd”
    (디렉토리에서 txt파일을 우선 찾은 다음 이름에 abcd를 포함하는 파일을 또 찾음)

    # cat url-list.txt | xargs wget -c
    (파일안에 url이 있을 경우 해당 인자들을 모두 wget으로 넘겨 다운받는다)

    # find / -name “*.jpg” -type -f -print | xargs tar -cvzf images.tar.gz
    (모든 jpg파일을 찾아 images.tar.gz로 압축) 

    # ls *.jpg | xargs -n1 -I{} cp {} /external-hard-drive/tmp
    (ls 로 출력된 모든 이미지를 하나씩 인자로 받아 외장하드로 복사)

   


반응형

'Linux' 카테고리의 다른 글

Linux Memory 재할당  (0) 2018.08.08
Linux rsync  (0) 2018.08.08
Linux Multipath Error  (0) 2018.08.08
Linux FTP 구성  (0) 2018.08.08
Linux ipmitool (openimpi)  (0) 2018.08.08
728x90
반응형

  • Chunk란 하나의 영역을 뜻함
  • percpu 영역은 chunk단위로 관리되며 각 chunk는 하나의 cpu마다 부여된 unit으로 이루어진다.
  • 동적 메모리로 할당되는 영역(chunk)은 내부적으로 해당 chunk에 대한 metadata를 저장하기 위한 공간을 포함하는데 여기서 가장 중요한 정보는 해당 chunk의 크기이다. 
  • disk 또는 raid에서 말하는 stripe size (chunk size)는 각 stripe를 disk에 분배하는 것이다.
    예를 들어 32k stripe size를 갖는 raid가 있다면 각 disk는 연속된 데이터 공간을 사용하고 한 공간의 다음 데이터는 다른 disk에 저장된다. 이에 반해 파일시스템의 block size는 더 상위의 개념으로 파일 시스템에 의존적인 것이다. 64k block size라고 가정한다면 파일 시스템에서는 한 block을 읽거나 쓰기 위해 raid 컨트롤러에 요청을 하고 raid 컨트롤러에서는 stripe size 만큼 각 디스크에서 chunk를 읽어들여서 파일 시스템에 올려주거나 쓰게 된다. 결과적으로 파일시스템의 block size가 raid의 stripe size 와 다르다면 단일 읽기 동작임에도 불구하고 raid 컨트롤러는 여러 디스크에서 데이터를 읽어 들이게 된다. 


반응형

'System' 카테고리의 다른 글

HP-UX IP 설정 변경  (0) 2018.08.14
Solaris 네트워크 설정 (고정 IP)  (0) 2018.08.14
Semaphore(세마포어) & Mutex(뮤텍스)  (0) 2018.08.08
ECC, EDAC, Parity (Memory관련)  (0) 2018.08.08
System 프로세스와 쓰레드 차이  (0) 2018.08.08
728x90
반응형
원인 및 증상

- Rhel 6.1 ~ 6.4에서 발생하는 문제로 기존에 5개의 LUN을 사용하다가 2개를 Online 상태 중에 제거하게 되었을때 Storage Volume 정보가 duplicate PV’s and Couldn't find device with uuid 와 같이 표시
- 이 문제는 rhel 6.5 버전부터는 픽스된 문제
- Rhel 6.1 ~ 6.4 버전까지는 dracut을 이용하여 initramfs 파일을 생성하게 되면 /etc/lvm/* 정보와 /etc/multipathd/* 정보가 포함되어 발생되는 문제로 기존 LUN 5개 상태일대의 /etc/multipathd/* 정보로 부팅을 시도하지만 실제 3개의 LUN만 있다 보니 Storage Volume에 대한 LVM, Multipath 정보가 맞지 않아 발생하는 문제


해결

- 기존 OS 설치 후 생성된 initramfs 파일로 부팅 후 dracut을 이용하여 새로운  initramfs 파일을 생성하고 재부팅
- 또는 /etc/dracut.conf 파일에 omit_dracutmodules+=”multipath” 를 추가 후 initramfs를 생성하여야 한다.
- darcut을 할때 -H 옵션도 검토 대상 

(-H, –hostonly Host-Only mode: Install only what is needed for booting the local host instead of a generic host.) 


반응형

'Linux' 카테고리의 다른 글

Linux rsync  (0) 2018.08.08
Linux xargs  (0) 2018.08.08
Linux FTP 구성  (0) 2018.08.08
Linux ipmitool (openimpi)  (0) 2018.08.08
Linux VLAN Create  (0) 2018.08.08
728x90
반응형
프로세스
- 운영체제로부터 자원을 할당받는 작업의 단위
- 프로세스는 실행될 때 운영체제로부터 프로세서를 할당받고 운영되기 위해 필요한 주소 공간, 메모리 등 자원을 할당 받음


쓰레드
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 한 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 쓰레드끼리 공유하면서 실행
- 기본적으로 하나의 프로세스가 생성되면 하나의 쓰레드가 같이 생성되는데 이것을 메인 쓰레드라 한다.
- 쓰레드를 추가 생성하지 않는 한 모든 프로그램 코드는 메인 쓰레드에서 실행되고 프로세스가 여러개의 쓰레드를 가지면 멀티 쓰레드라고 한다.


차이
- 프로세스는 자신만의 고유공간과 자원을 할당받아 사용하는데 비해 쓰레드는 다른 쓰레드와 공간과 자원을 공유하여 사용
- 쓰레드는 프로세스 내에서 각각의 스택 공간을 제외한 나머지 공간과 자원을 공유
- 프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우 메모리 공간은 물론 시스템 자원의 사용량도 줄어든다.
- 프로세스를 생성하는 것보다 쓰레드를 생성하는 것이 효율적 (멀티 프로세스 환경에서는 더욱 효과가 나타남)
- 쓰레드 간의 통신이 필요한 경우 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간을 이용하여 데이터를 주고받음


질문과 답변
* 운영체제가 시스템의 자원을 어떤 단위로 할당하고 프로세스와 쓰레드는 이 자원을 어떻게 사용하느냐에 대해 알고 있는 질문에 대한 답변
-> 여러 프로세스(멀티 프로세스)로 할 수 있는 작업들을 굳이 하나의 프로세스에서 쓰레드로 나눠가면서 작업하는 이유는 운영체제가 시스템 작업을 효율적으로 관리하기 위한 것이다. 그렇기 위해 쓰레드를 사용하는 것
-> 멀티 프로세스로 실행되는 작업을 멀티 쓰레드로 실행할 경우 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다. 뿐만 아니라 프로세스 간의 통신보다 쓰레드 간의 통신이 비용이 적으므로 작업들 간의 통신 부담이 줄어든다.
-> 쓰레드를 활용하면 자원의 효율성이 증가하기도 하지만 쓰레드 간의 자원 공유는 전역변수를 이용하므로 동기화 문제에 신경을 써야한다. (개발자 입장)


참조 URL




반응형

'System' 카테고리의 다른 글

HP-UX IP 설정 변경  (0) 2018.08.14
Solaris 네트워크 설정 (고정 IP)  (0) 2018.08.14
Semaphore(세마포어) & Mutex(뮤텍스)  (0) 2018.08.08
ECC, EDAC, Parity (Memory관련)  (0) 2018.08.08
System Chunk 개념  (0) 2018.08.08
728x90
반응형
FTP(File Transfer Protocol)


◆ 원격 서버에 파일을 주고 받을 때 사용하는 인터넷 통신 규약


◆ FTP 프로그램은 그 원격 서버에 접속하여 파일을 업로드/다운로드하기 위하여 사용하는 프로그램


◆ FTP 계정에 접속할 때는 FTP 주소, FTP ID, FTP 암호의 세 가지 정보가 필요


  20TCP FTP (파일 전송 프로토콜) - 데이터 포트공식


21TCP FTP - 제어 포트


FTP Mode

Active 모드: FTP 클라이언트가 FTP 서버로 접속을 시도할 때 TCP 21번 포트를 이용하여 접속이 이루어지고, 데이터를 수신하는 경우에는 TCP 20번 포트를 이용 (기본 설정)

Passive 모드: 클라이언트가 서버로 접속을 시도할 때 PASV 명령어로 표준 포트인 TCP 21번 포트를 이용하여 접속이 이루어지지만 데이터를 수신하기 위해
                       1024-5000번 포트 중 하나를 새롭게 열어서 클라이언트가 수신한다. 방화벽을 사용하는 경우 기본 FTP 포트(20, 21) 외 다른 포트를 사용하여
                       FTP 사이트를 서비스할 때FTP 클라이언트는 접속 시 Passive 모드로 접속







FTP 설치 및 설정


1. # yum -y install vsftpd ftp

  •  vsftpd는 리눅스 운영체제에서 사용하는 ftp 데몬


2. # vi /etc/vsftpd/vsftpd.conf
  • anoymous_enable=NO
    -> 익명의 사용자 접속 허용 여부
  • local_enble=YES
    -> 로컬 계정 사용자의 접속 허용 여부
  • write_enable=YES
    -> write 명령어 허용 여부
  • local_umask=022
    -> 로컬 계정 사용자용 umask
  • xferlog_enable=YES
    -> 파일 전송 로그를 남길것인지 여부
  • xferlog_file=/var/log/xgerlog (기본경로로 이미 설정되어 있음)
    -> 파일 전송 로그 경로 및 파일명
  • xferlog_std_format=YES (선택, 안해도 상관 없음)
    -> xferlogㅍ 표준 포멧으로 로그를 남길지 여부
  • chroot_local_user=YES
    -> 홈 폴더에서 벗어날수 없도록 할지 여부
  • chroot_list_enable=YES
    -> 사용자 홈 디렉토리에서 상위로 접근하지 못하도록 하기위한 설정
  • chroot_list_file=/etc/vsftpd/chroot_list (기본값으로 설정이나 사용은 선택)
    -> 해당파일의 사용여부를 설정하고 사용시 파일의 경로를 설정
  • pam_serivce_name=vsftpd
    ->  PAM 파일명을 지정
  • pasv_enable=YES   (passive mode 사용시에만 설정)
    -> 액티브 모드로 사용할시 no & 삭제
3. ftp 계정 설정 및 패스워드 설정
 
# useradd -d /ftp_data/data (ftp계정이 사용할 home 폴더 설정) ftp_test (계정명)
-> /ftp_data/data 로 지정하려면 미리 디렉토리가 생성되어 있어함
# passwd ftp_test
  
4. 방화벽 (선택) -> 네트워크 단에서 방화벽을 사용하면 설정할 필요가 없다. 대부분 이 부분은 패스한다.
  •  centos에서의 방화벽의 기본 정책은 모두 막아버리기 때문에 ftp서버에 사용되는 포트 20, 21 open
 # vi /etc/sysconfig/iptables
  -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
  -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
  • 만약 방화벽이 설정을 하였다면 서비스를 재시작 해주어야 적용
 
5. 서비스 시작
# systemctl start vsftpd (rhel 7)
# service vsftpd start (rhel 6)
6. 부팅 서비스 데몬 등록
# systemctl enable vsftpd (rhel 7)
# chkconfig —level 2345 vsftpd on (rhel 6)
  
7. 네트워크 포트 확인
  •  vsftpd ::21 포트확인
    # netstat -nbtlp |   grep -i vsftp
  
8. ftp 실행
 방법 1.
 
 ①  [root@localhost ~]# ftp            // ftp 실행
 ②  ftp> open                               // ftp open
 ③  (to) 해당 IP                            // open 하고자 하는 ip 입력
  
방법 2.
 
 ①  [root@localhost ~]# ftp
 ②  ftp> open 해당 IP                    //open 과 IP를 같이 써줌.





 기타 오류 및 정보확인


1. 500 OOPS: could not open chroot() list file:/etc/vsftpd/chroot_list

참조 : http://uiandwe.tistory.com/160

vi /etc/vsftpd/chroot_list (FTP 로그인할 계정을 등록)


2. ftp: connect: No route to host 

참조 : http://vstu77.blog.me/120050132415

리눅스에서 ftp를 사용할 때에 ftp: connect: No route to host 는 메시지가 나올 때가 있다.

이럴 경우에는 host server 의 iptable을 살펴 보아야 한다. 사용 하지 않을 거면 iptables 를 stop 한다
#/etc/init.d/iptables stop
그 후
500 OOPS : cannot change directory:/root
500 OOPS : child died
라고 나오는 경우 아래와 같이 입력한다.
# setsebool -P ftp_home_dir=1


3. vsftp에서 500 OOPS: cannot change directory 오류가 나올 때
참조 : http://opencode.co.kr/bbs/board.php?bo_table=linux_tips&wr_id=27
/etc/vsftpd/vsftp.conf를 수정했는데도 불구하고 500 애러가 나오면서 접속이 안될때는 SELinux 때문이라고 합니다. 

# setsebool -P ftp_home_dir=1
이렇게 하면, ftp directory에 대한 접근을 허가 하게된다. "-P"는 Rebooting 될더라도 값을 저장하여, 정상적으로 동작 하도록 한다. 

vsftpd(vsftp 데몬)의 상태를 보기

# service vsftpd status

iptables(방화벽)의 상태를 보기

# service iptables status


4. vsftpd.conf 파일의 정보
참조 : http://kch1183.blog.me/50099324984


5. CentOS. FTP 총정리
참조 : http://blog.naver.com/newkyh00?Redirect=Log&logNo=30111155337


6. 발생 가능한 오류 
- OOPS: cannot change directory:/home/ueco
-> # setsebool -P ftp_home_dir=1 명령으로 해결

- OOPS: could not read chroot() list file:/home/ueco
-> vsftp.conf설정에서 chroot관련 설정을 모두 주석처리함

- OOPS: 500 OOPS: child died
디렉터리 목록을 획득할 수 없습니다.
Entering Passive Mode (10,250,114,243,21,35).

->컴퓨터의 FTP툴에서 Passive 모드를 비활성화해서 접속함

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

vsftpd.conf에서
chroot_local_user=NO
allow_writeable_chroot=YES 
로 변경한다


반응형

'Linux' 카테고리의 다른 글

Linux xargs  (0) 2018.08.08
Linux Multipath Error  (0) 2018.08.08
Linux ipmitool (openimpi)  (0) 2018.08.08
Linux VLAN Create  (0) 2018.08.08
Linux ethtool  (0) 2018.08.08
728x90
반응형
IPMI 란?


- IPMI란 서버 관리를 위한 관리 인터페이스로 원격지나 로컬서버의 상태를 파악하고 제어할 수 있는 기능을 제공

- 요구사항 : IPMI version 1.5 이상을 지원하는 메인보드, OpenIPMI, IPMI 드라이버를 제공하는 커널


설치

1) 소스로 설치하기

ipmitool에서 소스를 다운받아 압축을 해제 후
# ./configure; make; make install


2) yum을 이용한 설치

# yum installl -y ipmitool


커널에 드라이버 올리기

- 필요한 모듈 : ipmi_devintf, ipmi_si, ipmi_msghadler

# ipmi_devintf
# ipmi_si
# ipmi_msghadler (위의 2개 모듈에 대한 의존성을 가진다)


※ /dev/ipmi0 또는 /dev/ipmi/0을 못찾는다는 error가 나온다면 커널에 ipmi 관련 모듈이 안올라가 있는 것


ipmi service 시작

# service ipmievd start (Rhel 6 version)
# systemctl start ipmievd (Rhel 7 version)





IPMI 사용법


# ipmitool


  • 옵션

-I intf : Interface to use(어떤 인터페이스를 통해서 서버에 접속할 것인지다.
           인터페이스의 종류는 open,imb,lan,lanplus 를 제공하고 있으며  open은
           리눅스의 OpenIPMI 인터페이스를 사용하겠다는 것이며 imb는 Intel IMB interface,
           lan 은 IPMI v1.5 Lan interface, lanplus는 IPMI v2.0 interface 다)

-H hostname : 원격지의 서버의 상태나 제어를 할때 적어준다

-p port : 해당 포트로 접속

-U username : 원격지에 접속할때 사용하는 유저명


  • 명령

lan : lan 채널에 대한 설정을 할수 있다.

chassis : 새시(보통 케이스와 파워) 상태와 전원을 관리할 수 있다.

power : 새시 명령의 단축 명령이다.

sdr : Print Sensor Data Repository entries and readings(메인보드에 있는 센서와 데이터를 읽어 들일때 사용한다.

sensor : 좀더 정확한 센서 정보를 제공해 준다.

fru : Print built-in FRU and scan SDR for FRU locators(Fiele replace unit의 약자인데 보통 메모리 정보나 메인보드 정보를 제공해 준다.)

sel : Print System Event Log (SEL)(시스템 event 로그를 보여준다.보통 서버가 하드웨어적으로 문제가 발생하면 발생하는데 하드웨어 점검할때 유용하게 쓰일 수 있다.)

sol : Serial-over-LAN 설정

isol : IPMIv1.5 Serial-over-LAN 설정

user : 유저 설정(원격에서 접속할 수 있는 유저를 생성하거나 권한을 부여한다.)

channel : 채널 설정(각가의 채널별로 접속하는 방식들이 차이가 난다. 예를 들면 1번 채널은 serial 접속,2번채널은 lan 접속등등)



  • 사용 예제

- 서버 파워 상태 및 제어
# ipmitool -I open chassis status

- 서버 센서 모니터링
# ipmitool -I open sdr

- 시스템 이벤트 로그 보기
# ipmitool -I open sel list

시스템 이벤트 정보 보기, 사용량이나 마지막으로 이벤트 로그 발생시점등등
# ipmitool -I open sel info 

이벤트 로그 지우기
# ipmitool -I open sel clear 

이벤트로그번호(이벤트 지우기)
# ipmitool -I open sel delete 


  • 사용 예제 - MGMT IP 변경

# ipmitool lan print 1
Set in Progress : Set Complete
Auth Type Support : NONE MD2 MD5 PASSWORD
Auth Type Enable : Callback : MD2 MD5
: User : MD2 MD5
: Operator : MD2 MD5
: Admin : MD2 MD5
: OEM :
IP Address Source : Static Address <-- static
IP Address : 192.168.0.120 <-- 셋팅 전
Subnet Mask : 255.255.255.0
MAC Address : ??:??:c4:ee:??:??
SNMP Community String : public
IP Header : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control : ARP Responses Enabled, Gratuitous ARP Disabled
Default Gateway IP : 192.168.0.1
Default Gateway MAC : 00:00:00:00:00:00

# ipmitool lan set 1 ipsrc static <-- DHCP로 되어 있으면 아래 명령 자체가 먹지 않는다. 보통 static으로 이미 되어 있음.

# ipmitool lan set 1 ipaddr 10.10.20.120
Setting LAN IP Address to 10.10.20.120

# ipmitool lan set 1 netmask 255.255.255.0
Setting LAN Subnet Mask to 255.255.255.0

# ipmitool lan set 1 defgw ipaddr 10.10.20.1
Setting LAN Default Gateway IP to 10.10.20.1

# ipmitool lan set 1 access on

# ipmitool lan print 1
Set in Progress : Set Complete
Auth Type Support : NONE MD2 MD5 PASSWORD
Auth Type Enable : Callback : MD2 MD5
: User : MD2 MD5
: Operator : MD2 MD5
: Admin : MD2 MD5
: OEM :
IP Address Source : Static Address
IP Address : 10.10.20.120 <-- 셋팅 후
Subnet Mask : 255.255.255.0
MAC Address : ??:??:c4:ee:??:??
SNMP Community String : public
IP Header : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control : ARP Responses Enabled, Gratuitous ARP Disabled
Default Gateway IP : 10.10.20.1 <-- 셋팅 후
Default Gateway MAC : 00:00:00:00:00:00





반응형

'Linux' 카테고리의 다른 글

Linux Multipath Error  (0) 2018.08.08
Linux FTP 구성  (0) 2018.08.08
Linux VLAN Create  (0) 2018.08.08
Linux ethtool  (0) 2018.08.08
Linux eth0이 안되고 eth1로 네트워크가 잡히는 경우  (0) 2018.08.08
728x90
반응형



/etc/sysconfig/network-scripts/ 아래에는 기본적으로 network과 관련된 설정파일이 있는데 이곳에서 아래와 같이 브릿지 설정파일을 추가하고 기존 eth0 또는 ens0 파일을 수정해야한다.

ifcfg-br1
DEVICE=br1
TYPE=Bridge
IPADDR=192.168.10.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no

ifcfg-ens1
DEVICE=enp0s25.1
BOOTPROTO=none
ONBOOT=yes
VLAN=yes
NM_CONTROLLED=no
BRIDGE=br1 

ifcfg-br2
DEVICE=br2
TYPE=Bridge
IPADDR=192.168.20.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no




ifcfg-ens2
DEVICE=enp0s25.2
BOOTPROTO=none
ONBOOT=yes
VLAN=yes
NM_CONTROLLED=no
BRIDGE=br2

이제 우리는 아래와 같이 IP를 할당 받을 수 있다.


반응형
728x90
반응형
ethtool 은 네트워크 카드의 설정사항을 보여주거나 변경할 수 있는 명령어


1. 주요 필드 설명

Supported link modes: 지원가능한 링크모드(속도와 전송모드)
Supports auto-negotiation: 자동협상인식기능 지원여부

Speed (10 | 100 | 1000Mbps)
케이블이 연결된 속도가 표시된다.

Duplex (Full | Half Duplex)
통신방식이 표시된다

Port (tp | aui | bnc | mii | fibre)
Device port 형태가 표시된다.

Transceiver (internal | external)
송수신 방식이 표시된다.

Auto-negotiation (on | off)
케이블이 연결 되었을때, 연결된 스위치장비와의 통신 속도와 통신 방식을 자동으로 맞추어 주는 방식으로 스위치 장비의 설정에 맞추어서 자동으로 랜카드의 설정이 적용되는 것이다.

Wake-on (p|u|m|b|a|g|s|d)
Wake-on 설정 옵션, 랜카드에 따라 지원 가능한 옵션이다를 수 있다. Supports Wake-on 옵션에 지원 가능한 옵션이 표시된다.

Link detected 
Link 연결상태를 표시해 주는 부분으로 yes 또는 no로 표시된다.


2. device 설정사항 확인

[root@localhost ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000001 (1)
        Link detected: yes
[root@localhost ~]#

위 설정사항으로는 Speed 1000M, Duplex 모드 Full, Auto-negotiation on 상태로 연결이 되어 있다. 
Auto-negotiation 이 on 상태이기 때문에 연결된 스위치 장비의 설정도, 1000M, Full Duplex 임을 짐작 할 수 있다.


3. 설정 변경

device 설정 변경은 ethtool -s 옵션으로 할 수 있다. 

ethtool -s 디바이스명 speed (10|100|1000) duplex (half|full) autoneg (on|off)

[root@localhost ~]# ethtool -s eth0 speed 100 duplex full autoneg off

[root@localhost ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000001 (1)
        Link detected: yes
[root@localhost ~]#


tip. 여러포트가 있는 랜카드(ex, 4포트 랜카드)를 장착 하였을 경우 실제 디바이스명과 매칭되는 포트를 구별 하지 못하는 경우가 있다. 
이런 경우는 ethtool -p 옵션으로 확인이 가능하다. 

ethtool -p eth3 으로 입력하고 엔터를 누를경우 해당 포트가 깜빡 거리게 된다. (모듈에 따라서 지원되지 않는 랜카드도 있음) 


반응형
728x90
반응형
해결 방법





◆ 다음과 같이 eth0이 안잡히고 eth1이 잡히는 이뉴는 udev와 관련이 있다

◆ 문제의 원인은 /etc/udev/rules.d/70_persistent-net.rules

# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:79:8b:58", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:60:3c:8c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

- 이렇게 되어있는데 위의 경우 MAC Address가 틀려서 재설정 한 것으로 보인다. 결론은 이 파일을 지워주면 된다. 지위준후 roboot 후 파일을 보면

# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:60:3c:8c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
- 이렇게 다시 잡혀있는것을 알수 있다. 그렇게 한후

/etc/sysconfig/network 설정, /etc/sysconfig/network-scripts/ 설정후 reboot


반응형

'Linux' 카테고리의 다른 글

Linux VLAN Create  (0) 2018.08.08
Linux ethtool  (0) 2018.08.08
Linux 물리 네트워크 포트 및 PCI 포트 확인 방법 (HBA Card 확인방법 포함)  (0) 2018.08.08
Linux Gateway 2개 설정  (0) 2018.08.08
Linux ipv6 비활성화  (0) 2018.08.08

+ Recent posts