2016.06.01 01:17

서버 동작 상태 출력 스크립트

#!/bin/bash

clear

DAEMON_MYSQL=$(   ps -ef | grep mysqld  | grep -v grep | awk '{print $2}')
DAEMON_NGINX=$(   ps -ef | grep nginx   | grep -v grep | awk '{print $2}')
DAEMON_OPENVPN=$( ps -ef | grep openvpn | grep -v grep | awk '{print $2}')
DAEMON_SAMBA=$(   ps -ef | grep smbd    | grep -v grep | awk '{print $2}')
DAEMON_VSFTPD=$(  ps -ef | grep vsftpd  | grep -v grep | awk '{print $2}')

echo "============================================================="
echo " Server daemon status                                        "
echo "============================================================="
echo " daemon  |  status PID                                       "
echo "-------------------------------------------------------------"
echo " mysql   :" $DAEMON_MYSQL
echo " nginx   :" $DAEMON_NGINX
echo " openvpn :" $DAEMON_OPENVPN
echo " samba   :" $DAEMON_SAMBA
echo " vsftp   :" $DAEMON_VSFTPD
echo "============================================================="

ps 명령어로 데몬을 조회하고, 해당 PID를 추출하여 이쁘게(?) 출력하는 스크립트 입니다.




실행 결과






Posted by 해비
2016.05.30 00:52

vsftpd 를 설치하면서 세팅한 내용들을 정리하고자 한다.


listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

listen_port=21

pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=12000
pasv_max_port=12100

write_enable=YES
local_umask=022
file_open_mode=0644

local_root=/haebinas/data

chroot_local_user=YES
allow_writeable_chroot=YES


pasv_ 관련 설정

FTP 서버가 동작하는 모드는 크게 Active 모드와 Passive 모드가 있다. 여기서는 Passive 모드로 동작 시킨다.


[Passive, Active 차이첨] - https://www.segger.com/embosip_ftp_client.html



pasv_ 관련 옵션

 pasv_enable 

 Passive 모드로 동작 

 pasv_promiscuous 

 ?

 pasv_min_port

 Passive 모드로 동작 시 데이터 전송에 사용할 포트 범위 최소값

 pasv_max_port

 Passive 모드로 동작 시 데이터 전송에 사용할 포트 범위 최대 값 


기본 21번 포트로 접속 후, 데이터 전송에 12000 ~ 12100 포트 범위를 사용하게 된다.

(방화벽에서 Input 규칙에 해당포트 오픈 해 주어야 한다)



write 관련 설정

 write_enable

 이 옵션이 설정되지 않으면 쓰기가 거부된다

 local_umask

 mask가 022 이므로, 777 - 022 = 755. 즉 기본 권한 설정

 file_open_mode

 업로드 시 적용될 파일의 권한



접근 제한, 기본폴더 관련

 local_root

 FTP 접속 시, / 경로에 지정할 폴더 이다. 

 chroot_local_user

 사용자 홈 폴더 위로 넘어가지 못하게 할 때 사용한다. 

 allow_writable_chroot

 chroot가 적용 된 상태에서 쓰기를 허용에 관한 세팅.





Posted by 해비
2016.04.04 22:31


NAS에 파일시스템을 ZFS로 사용하면서 정리한 것들 입니다.


이 한페이지로 모든 상황에 다 써먹을순 없겠지만... 제가 사용중인 명령어들만 간단하게 한번 정리 해봤습니다.


누군가에겐 도움이 되겠지요~?


일부 틀린 내용 있을수도 있으니 참고 하셔서 조심조심 사용 바랍니다.




ZFS 사용을 위해서는 크게 2단계를 작업해야 합니다.

1. 풀 생성

2. 파일시스템 생성


linux에 ZFS 설치 할때 필히 커널에 모듈로 설치되는 Native ZFS 설치하시기 바랍니다.

유저레벨에서 돌아가는 Fuse는 성능 이슈가 있습니다.




 zpool

 import

 poolname

 

 - 기존에 존재하던 풀을 등록.
   (운영체제 재설치 후 기존에 쓰던 풀을 재등록 가능)

 zpool

 create

 poolname

 /dev/sdx /dev/sdy ...

 - 새로운 풀을 생성.
 - 뒤에 나열되는 저장장치들을 모두 묶어 하나의 스토리지 풀 구성.

 - 기존에 풀이 존재하는 경우 제거되고, 새 풀이 생성.

   (기존에 존재하던 풀을 사용하고자 할 경우 이 명령어 금지!!)

 zpool

 add 

 poolname

 /dev/sdx

 - 기존 풀에 새 저장 장치를 추가.

  (기존 풀에서 사용중인 장치 제거는 아직 몰라용 ㅠㅠ)

 zpool

 add

 poolname

 cache /dev/sdx

 - 캐시(L2ARC)로 사용할 장치를 추가

 zpool

 remove

 poolname cache /dev/sdx

 - 캐시(L2ARC)로 사용중인 장치 제거

 ARC(캐쉬)상태 확인

 # cat /proc/spl/kstat/zfs/arcstats


* ARC는 캐쉬 입니다. 총 2단계로 존재.

- L1 ARC : 시스템 메모리를 캐쉬로 사용하는데 권장 용량은 저장소 1TB 당 1GB의 메모리 캐쉬를 권장

- L2 ARC : 블록디바이스(저장장치)를 캐쉬로 사용하는데 고속 액세스 가능한 SSD를 풀의 캐쉬로 구성 가능




파일시스템

 파일시스템 - 가장 기본적인 사항!! 

 zfs

 list

 

 

 - ZFS 파일시스템의 리스트 출력

 zfs

 create

 

 poolname/data

 - data 라는 파일시스템 생성

 zfs

 create

 -V 50G

 poolname/anime

 - 50GB 용량의 볼륨 생성

 - 볼륨은 그 /dev/sdx 와 같은 방식으로, 장치가 생긴다고 보면된다.

 zfs

 destroy

 

 poolname/anime

 - 파일시스템 삭제

  (주의!! - 추가확인 없이 그냥 지워버림 주의 또 주의 !!)

 스냅샷 - ZFS를 사용하는 이유! ZFS의 꽃! 바로 스냅샷 기능입니다. ★★★★★

 zfs  snapshot poolname/data@original - poolname/data 파일시스템에 original 스냅샷 생성
 zfs

 list -t

 snapshot -r 

 poolname/data - 스냅샷 목록 확인
 zfs list -o space -r poolname/data - 스냅샷이 차지하는 공간 사용을 확인
 zfs rollback  poolname/data@original

 - original 시점으로 롤백

 - original 스냅샷 생성 이후에 발생한 모든 변경사항을 취소.

 zfs destroy  poolname/data@original - original 스냅샷 삭제

 쿼터 - 디스크 공간 할당을 자유 자재로!! 

 zfs set

 quota=10G

 poolname/data

 - 쿼터(할당공간) 설정.

 - 사용 중에 자유롭게 공간 사이즈를 재지정 할 수 있다.

  (당연하겠지만, 실제로 데이터가 차지하는 공간보다 작게는 설정불가)

 zfs get quota poolname/data

 - 현재 쿼터 설정정보 확인

 압축 - 풀에 압축 사용여부 설정 

 zfs

 set

 compression=lz4 poolname

 - 풀에 저장되는 데이터에 lz4 압축 사용

 zfs set compression=off poolname

 - 풀에 저장되는 데이터에 압축 사용 안함

 zfs get

 compression

 poolname - 현재 풀의 압축정보 확인


* 압축 관련

- 압축 지정 후 들어오는 데이터에 한해서 압축이 적용.

- 마찬가지로 압축을 꺼도 기존 들어온 데이터는 이미 기존 설정대로 저장된 상태로 진행.

- 압축종류가 몇가지 있는데 lz4를 추천하는 이유는 가장 빠른 속도 때문. 거의 제로타임 압축이라 불려질 정도로 빠르다고 함.



본인은 압축을 안씁니다. 대부분 동영상 데이터인데 압축 해봐야 용량이 줄어지 않기 때문

개인의 판단에 따라 사용을 하면 되겠습니다.






[참고]

https://docs.oracle.com/cd/E24846_01/html/E23284/toc.html

- 여기 페이지에 더 많은 내용이 상세히(?) 있으므로 부족한 내용은 이쪽 참고 바랍니다.




Posted by 해비
2016.03.06 15:22

분명 파일을 지웠는데 용량은 그대로 차지하고 있는 경우가 있다. 


이럴 때는 휴지통을 찾아봐야 한다.


배포판 마다 경로가 제각각인듯 한데...


민트 17.3 의 경우는 아래 경로 였다.

/home/haebi/.local/share/Trash/files


중간에 haebi는 계정 이름 이다.




배포판 마다 틀리면 직접 찾는 수 밖에...

계정의 홈 폴더에서 현재 폴더 아래의 Trash 를 검색 했더니 아래와 같이 나오더라...


haebi@haebi-LPC ~ $ find . -name Trash

./.local/share/Trash


그럼 이제...

cd ./.local/share/Trash

하면 해당 경로로 이동이 될 것이다.


rm -rf *

묻지도 따지지도 않고 싹 날려준다.


실수로라도 중요한 파일있는 위치에서 rm 명령어 시전하지 않도록 조심... 또조심 하자!!






Posted by 해비
2016.02.29 17:47

네트워크로 저장소를 제공하는 서비스 이다.

쉽게 말해서 네트워크에 연결된 하드디스크 정도로 생각하면 되겠다.



설치

# apt-get install iscsitarget



iSCSI 서버 설정

vi /etc/default/iscsitarget

   ISCSITARGET_ENABLE=true


서비스 시작 명령어

ietadm --op new --tid=1 --params Name=nas.haebi.master

ietadm --op new --tid=1 --lun=0 --params Path=/mnt/hdd1/iscsi/disk1-win7.img

ietadm --op new --tid=1 --lun=1 --params


tid=1 --params Name=이름

서비스 이름이다. 연결 할때 이 부분이 표시된다.


--tid=1 --lun=0

tid를 기준으로 묶는다고 생각하면 된다.

하나의 tid 밑에 여러개의 lun 이 올 수 있고, 각 lun은 1개의 하드디스크를 의미한다.

tid 하나에 lun 2개를 설정 하면 디스크 2개가 연결된다.





연결 (window)

시작 - iscsi 검색 - 검색탭 - 포털검색 - IP입력

대상탭 - 이름선택 - 연결

내컴퓨터 - 관리 - 디스크관리 - 파티션초기화 - 포맷 - 사용




Posted by 해비
2016.02.29 17:38

이번에는 운영체제 재 설치, 또는 교체 후 기존 ZFS 풀을 연결하는 방법에 대해 다룹니다.


일단 기존 풀이 여러개의 디스크에 걸쳐 있었다면, 당연히 모든 디스크가 다 준비되어 있어야 합니다.


그렇지 않으면 아래와 같이 불가능 또는 오류 메시지가 나타납니다.



- 총 4개의 디스크 중 1번 만 연결한 경우의 예시

- 하나 이상의 디스크가 빠진 경우, 사용이 불가능합니다.



- 총 4개의 디스크 중 2번만 연결한 경우의 예시

- 이번에는 메타데이터 정보가 문제 있어 폴트가 발생하였습니다.



위 오류 메시지들은 시스템에 따라 다를 수 있습니다.


중요한 것은 풀을 구성했던 당시의 모든 디스크가 준비되어 있어야 한다는 것입니다.




이번에는 모든 디스크를 다 연결 후 다시 시도한 경우의 예 입니다.

- zpool import 로 풀을 확인 하고

zpool import [pool] 로 풀을 추가합니다.

- zpool status 로 상태를 확인 해 보면 정상으로 ONLINE 상태가 된 것을 확인 할 수 있습니다.






[테스트 환경]

- Linux Mint 17.3 x86_64

- VirtualBox 에서 테스트 하였습니다.






Posted by 해비
2016.02.23 07:51

리눅스 배포판은 민트 17.3 을 기준으로 합니다.


ZFS는 유저레벨에서 돌아가는 ZFS-fuse 와 커널레벨에서 돌아가는 모듈 방식이있는데 여기서는 후자쪽, 커널에 모듈방식으로 올리는 것으로 합니다.

(fuse는 안정성이나 퍼포먼스가 좋지 못하다고 합니다.)


zfsonlinux 사이트에 관련 정보가 있습니다.




1. 리포지터리 추가

add-apt-repository ppa:zfs-native/stable



2. 업데이트 및 패키지 설치

apt-get update

apt-get install ubuntu-zfs build-essential kmod spl

- Repo를 추가 하였으므로 추가된 Repo 로 부터 패키지 리스트를 갱신(업데이트) 합니다.



3. zfs 및 zfs status 명령어 테스트

- 둘다 잘 된다면 여기서 끝~!!


제 경우, zfs는 되는데 zfs status 는 모듈이 없다고 합니다.



3-1. 모듈 올리기

modprobe zfs

- 역시나 올라가면 여기서 끝~!!


제 경우 역시 여기서 모듈을 찾을 수 없다 합니다. 아놔 -_-;;




3-2. 모듈 리빌드

dpkg-reconfigure spl-dkms

dpkg-reconfigure zfs-dkms

- 모듈을 새로 빌드해 줍시다. 근데 이거 시간 쪼매 걸립니다. (그냥 몇분 정도...)

- 출처 : http://askubuntu.com/questions/431879/error-when-installing-ubuntu-zfs


빌드 후에 다시 3-1 의 모듈 올리기를 시도하면...?

반갑게도 아무런 오류를 내뱉지 않습니다. (오류 메시지 없으면 정상요)




이제 다시

zfs

zfs status

- 2개의 명령어 테스트를 해봅니다.

- 모듈 어쩌서 메시지 안뜨면 잘 된겁니다. 



설치는 여기까지 끝~!!  이후 활용편에서 계속합니다.






Posted by 해비
2015.06.29 01:07


한성 U35S 노트북에서 밝기 조절이 안되어 찾아서 설정한 자료 입니다.


기존파일 백업

sudo cp /etc/default/grub /etc/default/grub.bak


설정파일 열어서

sudo vim /etc/default/grub

   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video.use_native_backlight=1"

(진하게 표시된 부분 추가 또는 수정)


grub 업데이트

sudo update-grub


재부팅






[참고]https://bbs.archlinux.org/viewtopic.php?id=177616



Posted by 해비
2015.06.04 23:45


2TB 이상의 하드를 단일파티션으로 사용하기 위해 GPT 볼륨을 생성해야 한다.



1. parted 설치

sudo apt-get install parted



2. GPT 라벨 생성

mklabel gpt



3. 파티션 생성

mkpart primary 0% 100%



4. ext4 파일시스템 생성

sudo mkfs.ext4 /dev/sdb1





5. UUID 확인

ls -l /dev/disk/by-uuid 



6. fstab 에 추가

sudo vim /etc/fstab



7. fstab 마운트 테스트

sudo mount -a





8. 파일시스템 점검

sudo umount /dev/sdb1



umount 했는데도 자동 재마운트가 되는 경우가 있는경우

sudo vim /etc/fstab 

점검을 위해 임시로 해당장치 설정 앞에 # 으로 주석처리 하고, 재부팅 후 작업 한다.


sudo fsck -TV /dev/sdb1







[참고]

http://devanix.tistory.com/242 [파일 시스템 점검 명령어]







Posted by 해비
2015.05.08 23:19


여기서 셋팅하는 프로그램 목록입니다

- NAS 기능을 위한 것.

samba (네트워크 드라이브)

openVPN (원격에서 네트워크 드라이브 연결용)



- 시스템 설정

iptables (방화벽)

SSH (원격 쉘 접속)

디스크 마운트



배포판은 아무거나 취향에 따라서~~

여기 설정은 데비안 8 기준입니다.

SSH, 기본구성유틸리티를 제외한 모든 체크를 해제 후 설치 진행합니다. (권장)



설치 시 파티션 설정

 /boot

 ext4

 250 MB

 /

 ext4

 29.5 GB

- 32GB MicroSD 에 설치 해서 USB로 부팅하였다.

- /boot 에 250 MB 제외한 모든 용량을 / 에 할당 하였다.

- MicroSD 에 운영체제를 설치하는 이유는 관리의 편의성 때문이다. usbit 로 통째로 이미지 백업을 해두고, 필요시 복원하면 간편하게 관리가 된다. (32GB 기준으로 이미지 백업 하는데 약 50분 소요되는 듯 하다)




스왑공간 생성

$ sudo apt-get install dphys-swapfile

- 설치만 하면 기본 2 GB의 스왑공간이 생성된다.


스왑공간 설정(옵션)

$ sudo vim /etc/dphys-swapfile

CONF_MAXSWAP=100

- 주석을 해제하고 원하는 용량을 지정할 수도 있다. (단위 MB)




쉘 프롬프트 색상 설정

$ cd ~

$ vim .bashrc

force_color_prompt=yes

- 주석처리 되어있다면 풀어준다.

- 저장 후 로그아웃 했다가 다시 로그인 한다.




ll 명령어 사용(ls -l)

$ sudo vim /etc/profile

alias ll='ls $LS_OPTIONS -l'

- 일일이 ls -l 치는거 귀찮다. 그냥 ll 입력을 위해 설정한다.




SSH 설치 및 설정

$ sudo apt-get install ssh

$ sudo vim /etc/ssh/sshd_config

Port 22

PermitRootLogin no

- SSH 접속포트 설정

- Root 계정 로그인 금지




방화벽 설정

$ vim iptables

iptables -P INPUT ACCEPT
iptables -F


iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP


# Allow any connection from this host.
iptables -A INPUT -i lo -j ACCEPT

# Allow all broadcast traffic.
iptables -A INPUT -m pkttype --pkt-type broadcast -j ACCEPT

# Avahi
iptables -A INPUT -m udp -p udp --dport 5353 -j ACCEPT



# SSH
iptables -A INPUT -m tcp -p tcp --dport 22 -j ACCEPT

# SAMBA
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 137:139 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 137:139 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

# OpenVPN
iptables -A INPUT -m udp -p udp --dport 1194 -j ACCEPT



iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
iptables -P INPUT DROP


iptables -P OUTPUT ACCEPT


iptables -nL


iptables -t nat -F
#iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -nL


방화벽 설정 스크립트 파일 생성 및 적용

$chmod 700 iptables
$sudo ./iptables

현재 방화벽 설정을 담은 파일 생성 및 /etc/ 폴더 아래에 복사
$sudo iptables-save > iptables.conf
$sudo mv iptables.conf /etc/

부팅시 지금 설정한 규칙이 유지되도록 설정
$sudo vim /etc/network/interfaces

pre-up iptables-restore < /etc/iptables.conf

- 부팅시 iptables 규칙 자동 재적용 설정.




장치마운트

마운트 할 경로 생성

$ sudo mkdir /mnt/hdd1


장치의 UUID 확인

$ sudo blkid


장치의 UUID와 현재 파일시스템을 설정.

$ sudo vim /etc/fstab

UUID=장치의UUID       /mnt/hdd1       ext4      defaults        0        0 


장치 마운트

$ sudo mount -a

- /etc/fstab 설정이 잘못된 경우 부팅시 문제가 되므로 꼭 마운트 하여 테스트 해 보도록 한다.




Samba 설치 및 설정

$ sudo apt-get install samba

$ sudo apt-get install samba-common-bin 


사용자 추가

먼저 시스템 사용자를 추가하고, samba 유저에 추가를 한다.

$ sudo useradd net1

$ sudo useradd netr

$ sudo smbpasswd -a net1

$ sudo smbpasswd -a netr

- 기존 samba 사용자 패스워드 변경 시 -a 옵션(samba사용자 추가)을 제거 한다.


$ sudo vim /etc/samba/smb.conf

workgroup = WORKGROUP

dos charset = CP949

display charset = UTF8

unix charset = UTF8



[nas_rw]

path = /mnt/hdd1/nas

writable = yes

valid users = net1


[nas_r]

path = /mnt/hdd1/nas

writable = no

guest = yes

- smb.conf 는 기존 내용을 전부 지우고 이 내용으로 대체 한다.

- 동일 경로를 공유명칭 2개 (nas_rw, nas_r) 로 권한을 달리 하여 공유 하고 있다.

- nas_rw 는 쓰기권한이 주어졌고, nas_r 은 쓰기가 허용되지 않는다.

- net1 로 로그인 하면 nas_rw, nas_r 둘 다 접근이 가능하며, net1을 제외한 smbuserpasswd 에 등록된 모든 계정에 대해 nas_r 에만 접근이 가능하다.




OpenVPN 설정

- 이 블로그의 OpenVPN 설치 항목을 참고... (너무 길다 -_-)






넉넉한 메모리는 파일 복사시 버퍼로 활용되기도 합니다.

- 넉넉한 용량의 메모리는 파일 복사시 기가비트 랜의 빠른 속도를 감당하지 못하는 느린 5400 rpm하드디스크의 속도를 일정부분 커버 해 줍니다.









Posted by 해비