OS/SOLARIS2018. 7. 11. 15:20
반응형

1. 물리적 CPU 수
# psrinfo -p

2. 물리적 core 수
# kstat cpu_info | grep core_id | uniq | wc -l

3. 각 core의 core_id 확인
# kstat cpu_info | grep core_id | uniq

4. CPU당 core 수
물리적 core 수 / 물리적 CPU 수

5. 물리적 CPU 수 및 각 CPU 당 Virtual Processor 수
# psrinfo -pv

6. CPU당 Thread 수
# CPU 당 Virtual Processor 수 / CPU 당 core 수

반응형

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

solaris ndd 사용법  (0) 2010.03.09
solaris network 설정  (0) 2010.03.09
solaris cd-rom mount 하기  (0) 2010.03.05
solaris root 패스워드 복구  (0) 2009.10.28
solaris10 vsftp 설치 및 포트변경  (0) 2009.08.03
Posted by [PineTree]
OS/SOLARIS2010. 3. 9. 15:27
반응형

1. ndd 커맨드를 이용한 방법

ndd -set /dev/hme adv_autoneg_cap 0 (오토센싱 기능 off)
ndd -set /dev/hme adv_100fdx_cap 1 (100Mbps 풀 듀플렉스 기능 on)
ndd -set /dev/hme adv_100hdx_cap 0
ndd -set /dev/hme adv_100T4_cap 0

/etc/init.d/inetsvc에 다음과 같은 문장을 추가한다.

/usr/sbin/ndd -set /dev/hme adv_100fdx_cap 1

2. /etc/system에 설정하는 방법

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_100fdx_cap=1


- tcp_time_wait_interval 조정

/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 60000

or

/etc/system 파일에

set ip:ip_forwarding=0

+ /etc/system 설정 잘못으로 부팅이 안되는 경우

boot prom에서

boot -i로 부팅한 다음에

/etc/system을 참조할 때 /dev/null을 참조한다고 해서 부팅후에 다시 수정할 것


- tcp 설정 정보 조회

ndd -get /dev/tcp ?

- tcp tuning parameter 목록중에 자주 이용하는 것 정리.

+ tcp_time_wait_interval

Solaris 2.6 이전까지는 tcp_close_wait_interval 이다.

메모리에서 TCP 연결이 끊어져도 tcp가 쓰던 소켓 정보를 일정 기간 대기 상태로 가지고 있고, 이를 가지고 있는 시간인데 기본값은 240,000ms(4분)이지만, 이는 tcp 소켓을 많이 요구하는 서버, 즉 웹 서버에서는 너무 길게 waiting 하는 것이 메모리 낭비이므로 60,000ms(1분) 정도로 줄이는 것이 좋다. 그러나 이를 너무 줄일 경우, 커넥션 품질 자체가 불안할 수 있으므로 더 이상 줄이지 않는 것이 바람직하다.

+ tcp_conn_req_max_q0

TCP/IP 프로토콜 통신에서 half-open connection 상태, 즉 마지막 ACK를 받지 못한 상태의 커넥션을 몇 개까지 가지고 있을지에 대한 파라미터 값이다. 기본값은 1024인데 이 파라미터는 tcp_conn_req_max_q와 형태가 비슷하다고 무조건 늘리는 경우가 있는데 불필요하며, 이 파라미터는 completed connection 마저도 listen queue에 들어가지 못하는 경우를 제외하고는 변경할 필요가 없다.

+ tcp_conn_req_max_q

웹 서버 튜닝에서 가장 많이 사용하는 파라미터이다.
기본값은 128인데, 1024 이하 정도로 늘려주는 것이 바람직하다. 이는 completed connection이 실제 처리되기까지 받아주는 큐 크기로 너무 부족하면 상당히 바쁜 웹 서버의 경우, 사용자의 요청을 놓치는 경우가 발생할 수 있기 때문이다.

+ tcp_slow_start_initial

TCP 프로토콜 통신에서 처음에 테스트용으로 보내는 초기화 패킷 수를 말한다. Sun의 기본값은 1인데 다른 벤더들(특히 MS)이 2개를 사용하므로 변경해주는 것이 바람직하다.
솔라리스 8의 경우 가끔 4인 사례를 발견할 수 있었다.


- 네트워크 모니터링

netstat -s -Ptcp 커맨드를 이용하면 모든 프로토콜의 졍보를 출력하는데 -Ptcp라는 옵션을 추가하면 우리가 TCP 프로토콜의 파라미터를 변경하기 전 TCP와 관련한 정보만 출력해 준다.

trax´s note: trax가 사용하는 Solaris 2.4, 2.6 환경에서는 netstat -s -P tcp라고 사용한다. 아마 레퍼런스가 틀린 것이 아닌가 싶다.

ais011# netstat -s -P tcp


TCP tcpRtoAlgorithm = 4 tcpRtoMin = 200
tcpRtoMax =240000 tcpMaxConn = -1
tcpActiveOpens = 10737 tcpPassiveOpens = 53520
tcpAttemptFails = 491 tcpEstabResets = 53
tcpCurrEstab = 28 tcpOutSegs =2640894
tcpOutDataSegs =2411701 tcpOutDataBytes =2076891073
tcpRetransSegs = 18540 tcpRetransBytes =13528493
tcpOutAck =229065 tcpOutAckDelayed = 30144
tcpOutUrg = 0 tcpOutWinUpdate = 81
tcpOutWinProbe = 212 tcpOutControl =157770
tcpOutRsts = 26705 tcpOutFastRetrans = 6732
tcpInSegs =2187955
tcpInAckSegs =1496281 tcpInAckBytes =2076911268
tcpInDupAck = 88774 tcpInAckUnsent = 0
tcpInInorderSegs =770953 tcpInInorderBytes =343372713
tcpInUnorderSegs = 1019 tcpInUnorderBytes =1046324
tcpInDupSegs = 2854 tcpInDupBytes =372742
tcpInPartDupSegs = 245 tcpInPartDupBytes =142283
tcpInPastWinSegs = 0 tcpInPastWinBytes = 0
tcpInWinProbe = 0 tcpInWinUpdate = 198
tcpInClosed = 35 tcpRttNoUpdate = 13508
tcpRttUpdate =1459914 tcpTimRetrans = 12237
tcpTimRetransDrop = 366 tcpTimKeepalive = 358
tcpTimKeepaliveProbe= 12 tcpTimKeepaliveDrop = 0
tcpListenDrop = 0 tcpListenDropQ0 = 0
tcpHalfOpenDrop = 0

여기서 주목할 것은 tcpListenDropQ0와 tcpListDrop인데,
tcpListenDropQ0는 accept() system call시 drop된 것의 카운트이고
tcpListenDrop(Q)은 three-way handshake라고도 불리는 처음 두번째 ACK를 받기 전
incompleted connection이 큐에 들어가지 못한 카운트다.
반응형
Posted by [PineTree]
OS/SOLARIS2010. 3. 9. 15:23
반응형
1. Interface 확인
# more /etc/path_to_inst
hme, bge, bnx 등의 Interface 확인한다.

또는 dmesg 에 Load된 내용을 확인!

2. Hostname.hme 생성 ; Broadcom Interface 임!
# vi /etc/hostname.hme0
hostname

3. Interface 활성화 및 Network 설정
# ifconfig hme0 plumb ; Kernel에 인식시킴
# ifconfig hme0 xxx.xxx.xxx.xxx netmask 255.255.255.xxx broadcast + up
dhcp 로 ip 할당시 ==> # ifconfig hme auto-dhcp

4. Router 추가
# route add default xxx.xxx.xxx.xxx
# vi /etc/defaultrouter
xxx.xxx.xxx.xxx

5. Hostname 추가
# vi /etc/hosts
127.0.0.1   localhost
xxx.xxx.xxx.xxx   hostname   hostname.co.kr   loghost

6. Nameserver 추가
# vi /etc/resolv.conf
nameserver xxx.xxx.xxx.xxx 
dns서버  아이피 셋팅

7. nsswitch.conf 수정
 # vi /etc/nsswitch.conf
hosts : dns files

-------------------------------------------------------------------
1. Network Status 확인
# ndd -get /dev/hme link_status
 0 : link down / 1 : link up

2. Network Speed 확인
# ndd -get /dev/hme link_speed
 0 : 10M bps / 1 : 100M bps

3. Network Duplex 확인
# ndd -get /dev/hme link_duplex
 0 : Half-Duplex mode / 1 : Full-Duplex mode

반응형
Posted by [PineTree]
OS/SOLARIS2010. 3. 5. 14:59
반응형
cdrom을 driver에 삽입하면 Volume Management Daemon인 "vold" process에 의해
cdrom 이 자동 mount 되지만, vold process가 운영 중이 아니거나 다른 이유로
인하여 cdrom이 자동 mount 되지 않으면 아래의 명령으로 mount 한다.

1. vold daemon이 운영중인 경우
"volcheck" 명령을 실행하여 vold daemon이 cdrom을 mount 하도록 한 후 df 명령
으로 cdrom이 mount 되었는지 확인한다.
% /bin/volcheck
% df -k
2. volcheck 명령으로 mount가 되지 않는경우
아래와 같이 "mount" 명령을 사용한다.
# /etc/mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom
CD Driver는 기본적으로 /dev/dsk/c0t6d0s0 device를 사용한다
반응형

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

solaris ndd 사용법  (0) 2010.03.09
solaris network 설정  (0) 2010.03.09
solaris root 패스워드 복구  (0) 2009.10.28
solaris10 vsftp 설치 및 포트변경  (0) 2009.08.03
SWAT SVM RAID  (0) 2009.05.25
Posted by [PineTree]
OS/SOLARIS2009. 10. 28. 15:32
반응형
1. 시스템을 down 시키고 OS CD를 CD-ROM drive에 넣는다. 

   root로 login을 할수 없으므로 시스템을 재부팅 시키기 위해서는 keyboard에서 
   "stop" key와 "a" key를 동시에 눌러서 시스템을 PROM mode(ok prompt 상태) 
   로 전환한다 

2. 아래와 같이 CDROM 을 이용하여 single-user mode로 부팅한다 

   ok  boot cdrom -sw 

3. Bourne shell prompt(#)가 나타나면, /로 사용하던 disk device를 /a로 mount 
   한다. /로 사용하던 disk device가 /dev/dsk/c0t0d0s0인 경우 아래와 같이 한다.  

   # fsck -y /dev/rdsk/c0t0d0s0 
   # mount -F ufs -o rw /dev/dsk/c0t0d0s0 /a 

4. 위와 같이 하면 기존에 /etc directory에 있던 shadow 화일이 /a/etc/shadow로 
   존재하게 되며,  이 화일을 vi로 열어서 root에 정의되어 있는 password부분을 
   지운다. 

# vi /a/etc/shadow 
root:vBrrOh8AIqYV6:6445:::::: 
             ^^^^^^^^^^^^^ 이 부분을 지운다 

        변경후 

# cat /a/etc/shadow 
root::6445:::::: 

5. 위와 같이 한후 시스템을 재부팅 하면  root로 password 없이 login가능하다. 
반응형

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

solaris network 설정  (0) 2010.03.09
solaris cd-rom mount 하기  (0) 2010.03.05
solaris10 vsftp 설치 및 포트변경  (0) 2009.08.03
SWAT SVM RAID  (0) 2009.05.25
미러 디스크 장애시 디스크 교체하기  (0) 2009.05.07
Posted by [PineTree]
OS/SOLARIS2009. 8. 3. 15:03
반응형
출처 :http://blog.tinyfall.net/142

기본 ftp 삭제

# pkginfo | grep ftp
로 FTP에 관련된 패키지 목록 확인

# svcs | grep ftp
확인
# svcadm disable /network/ftp
라고 쳐서 ftp 정지

ftp 삭제
# pkgrm SUNWftpr SUNWftpu


Solaris10에서 일반적인 형태로 (ssl 와 익명접속 제외,  tcp_wrappers 포함) 설치하는 것을 정리해 볼까 합니다.

간단설명
VsFTPD는 Very Secure FTP Daemon의 약자이며, 이름에서 그대로 나오듯이 보안에 매우 신경을 쓴 데몬입니다. 레드햇, 데비안 등의 기본 패키지에 포함이 될 정도라고 하며 사이트에서도 그렇게 홍보하고 있군요. 제 개인적으로는 별다른 신경을 안써도 손쉽게 컴파일 및 설치가 된다는 장점이 가장 큰 것 같습니다.


vsftpd 다운로드


vsftpd 홈페이지 : http://vsftpd.beasts.org

vsftpd-2.0.5.tar.gz 다운로드

한글을 위한 소스 수정
기본적으로 UTF8같은 유니코드를 지원하지 않으므로 source 파일을 수정해 주어야 한글이 제대로 로그파일이나 전송처리가 됩니다. 그렇지 않으면 표준 ASCII 문자 외에는 모두 ?(물음표)로 처리해 버립니다.

logging.c 파일을 vi로 불러들여 아래 라인을 주석처리합니다. (157 라인입니다.)

원본 : str_replace_unprintable(p_str, '?');
변경 : /* str_replace_unprintable(p_str, '?'); */

postlogin.c 파일을 vi로 불러들여 아래 라인을 주석처리합니다. (121 라인입니다.)

원본 : str_replace_unprintable(&proctitle_str, '?');
변경 : /* str_replace_unprintable(&proctitle_str, '?'); */

또한 tcp_wrappers를 지원하기 위해서는 builddefs.h 파일을 불러서 아래와 같이 수정합니다.

원본 : #under VSF_BUILD_TCPWRAPPERS
변경 : #define VSF_BUILD_TCPWRAPPERS

그리고 solaris는 PAM을 지원하지 않으므로 바로 밑에 있는 PAM 지원부분을 무효화시켜줍니다.(이 부분을 설정하지 않으면 컴파일시 에러가 줄줄줄주루루루루루 뜹니다.)

원본 : #define VSF_BUILD_PAM
변경 : #undef VSF_BUILD_PAM


vsftpd 컴파일 및 설치
vsftpd는 기본적으로 configure 작업이 없습니다. 그냥 make 하시면 됩니다. 조심하실 것은 INSTALL 문서에 있는대로 make install 을 하시면 안됩니다. vsftpd는 리눅스 계열의 운영체제를 기본으로 만들어져 있으므로 xinetd 등을 이용하도록 설정되어 있는데, solaris에서는 해당 데몬이 존재하지 않습니다. 게다가 solaris10으로 올라오면서 서비스 관리를 svcs 또는 svcadm, inetadm 등 패키지로 분리되어 운영됩니다. 그러므로 make 만 실행하셔서 컴파일만 하시고 나머지 설치작업은 수동으로 하셔야 합니다.

컴파일 화면(성공)

컴파일 화면(성공)


만일 위의 builddefs.h 부분에서 PAM 부분을 undeine 시켜주시기 않았다면 아래와 같은 경고가 뜨고 운영중에 로그인이 안되거나 에러가 발생하는 경우가 생깁니다.(PAM을 undefine 시키면 shadow 모드로 동작하는 듯 합니다.)

사용자 삽입 이미지

컴파일이 무사히 넘어갔다면 vsftpd 파일이 생성되어있습니다.

사용자 삽입 이미지

vsftpd 파일의 생성을 확인하셨다면 아래와 같이 관련 파일들을 세팅합니다.

# mkdir /usr/local/sbin   ;; 없는 경우만 만들어 주시면 됩니다.
# cp vsftpd /usr/local/sbin 
# chmod 755 /usr/local/sbin/vsftpd

# cp vsftpd.conf.5 /usr/share/man/man5   ;; vsftpd.conf 매뉴얼 복사
# cp vsftpd.8 /usr/share/man/man8          ;; vsftpd 매뉴얼 복사
# mkdir /usr/share/empty
# chown root:root /usr/share/empty
# chmod 755 /usr/share/empty
# cp vsftpd.conf /etc                 ;; 설정파일 복사


vsftpd를 Solaris 10의 SMF에 연결
이젠 남은것은 실행하는 방법입니다.
solaris10 에서는 inetd 서비스가 SMF(Service Management Facility)로 통합운영되어 집니다. 모든 서비스 관리는 svcadm 명령으로 제어할 수 있는데, 네트워크 관련 서비스는 inetadm 이라는 명령을 이용하여 특별히 관리할 수 있습니다. vsftpd를 SMF 서비스로 등록하여 이용하면 편리하게 관리할 수 있도록 합니다. (자세한 기타 내용은 마지막에 참고사이트를 보세요.)

우선 첫번째로 /etc/services 파일 내용중 ftp 가 기술되어 있는지 확인합니다.
사용자 삽입 이미지

현재 디렉토리에 아래와 같은 내용을 /etc/inetd.conf 라는 내용으로 저장합니다.

ftp stream tcp nowait root /usr/sfw/sbin/tcpd /usr/local/sbin/vsftpd

※ 미리 tcp_wrappers 가 설치되어 있어야 합니다.

그리고 아래 명령을 수행하면 smf 관련 명령으로 확인하거나 관리하실 수 있습니다.

# inetconv -i inet.ftp
# svcs -a | grep ftp
online          21:02:07    svc:/network/ftp/tcp:default      <== vsftpd 데몬이 서비스로 등록된 모습

이후부터 서비스의 시작과 중지를 아래와 같이 수행할 수 있습니다.

# svcadm enable /network/ftp/tcp:default     ;; vsftpd 서비스 시작
# svcadm disable /network/ftp/tcp:default  ;; vsftpd 서비스 중지

svcs 명령으로 보았을 때 online 은 동작중, offline은 중지된 상태, maintenance 는 문제가 있어서 작업이 필요하다는 의미입니다. online 상태로 서비스를 시작하고 localhost 로 접속하여 정상적으로 FTP 접속이 되는지 확인합니다. 현재는 제대로 설정이 되어 있지 않으므로 anonymous (익명)으로 접속하셔야 하며, 접속되더라도 OOPS! 라는 메세지가 보입니다.(웁스~)


vsftpd.conf 설정
구글링이나 기타 인터넷상에 올라온 자료들을 검색해 본 결과 예전 버젼이거나 linux 계열의 운영체제에 맞게 설정되어 있어서 제가 사용할려는 solaris 운영체제에는 전혀 맞지가 않더군요. 로그처리 부분도 마찬가집니다. 그래서 제가 사용하는 Solaris 10 환경에 맞게 나름대로 설정파일을 세팅하는 과정에서 겪은 시행착오을 줄이기 위해 vsftpd.conf 파일의 옵션을 정리해 보았습니다. SSL 은 사용하지 않으므로 자세한 설명은 생략하며 익명도 사용하지 않는 환경임을 미리 인지하시고 참고하여 주시면 되겠네요. (해당 환경과 관련된 옵션은 설명에서 몽땅 제외입니다. 뷁~~~~)

또한 위에서 manpage 파일을 정상적으로 설치하셨다면 man vsftpd.conf 명령으로도 옵션들을 확인하실 수 있습니다.

옵션을 사용하기 전에 주의할 점 : 반드시 옵션명=값 으로 설정하셔야 합니다. 즉 =(equal) 좌우에 공백이 있어서는 절대 안됩니다. 반드시 옵션과 값사이에 =(equal)을 딱!!! 붙여서 주셔야 합니다.


anonymous_enable=NO ( 기본값 : YES )
  익명 사용자의 접속을 허용할 것인지를 결정합니다.


background=YES ( 기본값 : NO )
listen_port=21 ( 기본값 : 21 )
listen_ipv6=NO ( 기본값 : NO )
  기본적으로 vsftpd는 inetd 또는 xinetd 또는 Solaris10의 서비스로 등록하여 사용이 가능하도록 설정되어있습니다. 위 옵션대로 설정하게 되면 standalone(proftpd 의 standalone 동작과 동일) 모드로 동작합니다. Solaris10에서는 위에서 서비스로 등록해 놓았으므로 모두 주석처리합니다. 일반적으로 FTP 접속이 그리 많지가 않는 경우에는 기본 동작모드(inetd 등)가 유리하며 FTP 접속자가 많은 경우에는 standalone 모드가 유리하다고 합니다.

listen_address=none ( 기본값 : none )
listen_address6=none ( 기본값 : none )
  standalone 모드로 동작시 대기할 IP를 지정합니다.(멀티 IP 서버를 이용할때) address6는 IPV6 상황에서 사용합니다.

pasv_address=none ( 기본값 : none )
  Use this option to override the IP address that vsftpd will advertise in response to the PASV command. Provide a  numeric IP address, unless pasv_addr_resolve is enabled, in which case you can provide a hostname which will be DNS resolved for you at startup. (해석불가)

nopriv_user=nobody ( 기본값 : nobody )
  vsftpd가 구동할 유저명을 지정합니다.

max_clients=50 ( 기본값 : 0 )
  최대 접속자수를 결정합니다. 0으로 두면 무제한입니다.

max_per_ip=5 ( 기본값 : 0 )
  하나의 IP에서 동시에 접속할 수 있는 수를 결정합니다.

local_max_rate=0 ( 기본값 : 0 )
  로컬 사용자의 접속시 업/다운로드 속도 제한을 지정합니다. 단위는 초당 Bytes 입니다.

trans_chunk_size=0 ( 기본값 : 0 )
  한번에 전송할 크기를 지정합니다. 단 일정단위로 묶어서 전송하게 되는데 이 항목은 전송량 조절 옵션인 rate 관련 옵션들과 연관성이 있습니다. 되도록이면 이 옵션은 수정하지 않는 것이 좋다고 제작자는 밝히고 있군요. 다만 8192로 하면 부드럽게 대역폭 제한이 가능하다고 하는데 당최 무슨 뜻인지;;;;;;

use_localtime=YES ( 기본값 : NO )
  파일의 시간을 보여줄 때 시스템의 Local time에 맞춰서 보여줍니다. 기본적으로 vsftpd는 GMT를 따르고 있습니다. 우리나라의 시간은 GMT + 9 입니다.

setproctitle_enable=YES ( 기본값 : NO )
  FTP의 현재 상황을 PS 로 볼 수 있도록 해줍니다. 즉 현재 세션의 상황을 ps 명령으로 나오는 값을 조작하여 접속자 등을 파악할 수 있습니다.

user_config_dir=none ( 기본값 : none )
  특정 사용자의 접속 환경을 vsftpd.conf 가 아닌 파일로 저장시켜 두고 적용시킬 수 있게 해줍니다. 여기서 지정하는 값은 디렉토리를 의미합니다. 예를 들어 /etc/vsftpd_user/chris 라는 파일을 생성한 후 파일속에 vsftpd.conf 와 같은 각종 지시어를 이용하여 환경을 구축해 놨을 때 chris라는 사용자가 접속하면 vsftpd.conf 가 아닌 /etc/vsftpd_user/chris 라는 파일의 환경에 적용을 받습니다. 물론 /etc/vsftpd_user/chirs 안에 없는 옵션은 vsftpd.conf 옵션에 적용을 받습니다. 다만 /etc/vsftpd_user/chris 파일내에 유저의 환경과는 관계가 없는 옵션들(banner_file, max_per_ip, max_clients, xferlog_file 등)은 무시됩니다.

local_enable=YES ( 기본값 : NO )
  시스템에 등록된 유저의 접속을 허용합니다.

userlist_enable=NO ( 기본값 : NO )
  유저 목록을 담고 있는 파일속의 내용에 있는 사용자만 접속을 허용합니다. 이 옵션은 userlist_deny 옵션이 비활성화된 상태에서만 효과가 있습니다.(userlist_deny 옵션과 반대역활입니다.)

userlist_deny=YES ( 기본값 : YES )
  유저 목록을 담고 있는 파일속의 내용에 있는 사용자만 접속을 불허합니다. userlist_enable 옵션과 반대 역활을 합니다. 특정 유저의 접속을 허용하지 않고자 할때 주로 사용합니다.

userlist_file=/etc/vsftpd.user_list ( 기본값 : /etc/vsftpd.user_list )
  userlist_enable 옵션과 userlist_deny 옵션에서 사용되는 유저 목록을 담고 있는 파일입니다.

text_userdb_names=YES ( 기본값 : NO )
  디렉토리 목록을 보여줄 때 유저명과 그룹명을 문자로 표시할 것인지를 결정합니다. 성능상과 보안문제상 NO로 되어 있는 듯 하며 개인적으로는 YES를 좋아라 합니다.

pam_service_name=vsftpd ( 기본값 : ftp )
  Solaris10과는 관계없는 옵션이며, pam 사용자 인증을 할때 사용할 인증파일을 지정합니다.

tcp_wrappers=YES ( 기본값 : NO )
  TCP wrappers에 의해서 FTP 접속을 제어할 것인지를 설정합니다. 미리 tcp_wrappers가 설치되어 있어야 하며, sunfreeware 에서는 현재날짜 기준으로(2008. 08. 04) 7.6 버젼이 공개되어 있으므로 vsftpd 설치전에 tcp_wrappers를 설치하시길 바랍니다. 참고로, solaris10 을 기본으로 설치할 경우 tcp_wrappers가 설치되어 있습니다만, 버젼이..... 전 7.6 버젼을 새로 설치하였습니다.

ssl_enable=NO ( 기본값 : NO )
  ssl 접속을 허용할 것인지를 결정합니다. 이 옵션을 사용할려면 컴파일 하기전에 builddefs.h 파일에서 SSL 옵션을 활성화시켜야 하며 관련 라이브러리 및 데몬들도 설치가 되어 있어야 합니다. 솔라리스에서는 SSL 연결이 좀 까탈스럽더군요. OTL;;;;;;

ssl_tlsv1=NO ( 기본값 : YES )
ssl_sslv2=NO ( 기본값 : NO )
ssl_sslv3=NO ( 기본값 : NO )
  ssl 접속시 어떤 프로토콜을 사용할 것인지를 결정합니다. 각각 TLS, V2, V3 를 의미하며 ssl_enable 옵션이 활성화되어 있을 때 기본 프로토콜은 SSL v1 프로토콜을 이용하여 접속합니다.

dsa_cert_file=none ( 기본값 : none - RSA certificate suffices 를 사용 )
  SSL의 암호화 접속시 사용할 DSA 인증서의 위치를 지정합니다.

dsa_private_key_file=none ( 기본값 : none )
  SSL의 암호화 접속시 사용된 DSA 개인키 파일의 위치를 지정합니다.

rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem ( 기본값 : none )
  SSL 접속시 RSA 인증서를 지정합니다.

rsa_private_key_file=none ( 기본값 : none )
  SSL 접속시 RSA 인증에 사용할 RSA 개인키 값 파일을 지정합니다.

force_local_data_ssl=YES ( 기본값 : YES )
  ssl_enable 옵션이 활성화되어 있을때만 활성화되는 옵션이며, 로컬 사용자가 데이터를 전송시 SSL을 사용하도록 강제적으로 규정합니다.

force_local_logins_ssl=YES ( 기본값 : YES )
  ssl_enable 옵션이 활성화되어 있을때만 활성화되는 옵션이며, 로컬 사용자가 로그인시 강제적으로 SSL을 이용하도록 합니다.

connect_timeout=60 ( 기본값 : 60초 )
  Port 모드로 접속시 사용자의 접속 허용 시간을 설정합니다. 지정된 시간내에 접속이 완료되지 않으면 접속이 끊어집니다.

accept_timeout=60 ( 기본값 : 60초)
  Pasv 모드로 접속시 사용자의 접속 허용 시간을 설정합니다. connect_timeout 옵션과 동일하게 동작합니다.

data_connection_timeout=300 ( 기본값 : 300초)
  데이타를 전송한 후 (업/다운) 지정된 시간동안 아무런 동작이 없을 경우 접속을 끊습니다.

idle_session_timeout=300 ( 기본값 : 300초)
  접속 완료 후 지정된 시간동안 아무런 동작을 하지 않으면 접속을 끊습니다.

banner_file=/etc/vsftpd.banner_file ( 기본값 : none )
  사용자가 접속했을 때 보여줄 환영 메세지를 가진 파일을 지정합니다.

ftpd_banner=Welcome to FTP Service ( 기본값 : none - vsftpd의 기본 메세지가 보입니다.)
  사용자가 접속했을 때 보여줄 안내 메세지를 지정합니다.
 
dirmessage_enable=NO ( 기본값 : NO )
  디렉토리로 접속할때 해당 디렉토리에 message_file 옵션에서 지정한 파일의 내용을 보여줄 것인지를 결정합니다.

message_file=.message ( 기본값 : .message )
  dirmessage_enable 옵션이 YES로 되어있다면 읽어서 보여줄 파일명을 지정합니다.

port_enable=YES ( 기본값 : YES )
  FTP의 Port 모드를 활성화홥니다. 일명 Active 모드라고도 합니다.

connect_from_port_20=YES ( 기본값 : NO )
  Port 모드로 동작시 데이터 전송의 기본 포트인 20번 포트의 사용 여부를 결정합니다.

ftp_data_port=20 ( 기본값 : 20 )
  Port 모드로 동작시 데이터 전송에 사용할 포트 번호를 지정합니다. 이 옵션은 connect_from_port_20 옵션이 활성화되어 있어야 정상적으로 작동합니다.

port_promiscuous=NO ( 기본값 : NO )
  Port 모드에서의 보안 체크 기능을 해제합니다. FXP(서버대 서버전송) 기능 사용시 활성화시켜줍니다.

pasv_enable=YES ( 기본값 : YES )
  Pasv 모드로 동작할 것인지를 결정합니다.

pasv_promiscuous=NO ( 기본값 : NO )
  동일한 IP에서 접속이 이루어질때 PASV 보안체크를 해제시켜 줍니다? 영어가 딸려서 해석이 꼬이네요. FXP (서버 대 서버 전송) 기능을 사용할 때나 SSH를 이용한 터널링 기능을 이용할 때 활성화시켜주는 옵션입니다.

pasv_min_port=0 ( 기본값 : 0 )
pasv_max_port=0 ( 기본값 : 0 )
  Pasv 모드로 접속시 할당할 최저(min) 포트번호와 최고(max) 포트번호를 지정합니다. 기본값인 0을 설정하게 되면 1024 이상 무작위로 할당합니다. 1024 이하의 포트번호는 일반적으로 well kown port 번호라고 하여 부르며 root 권한만 해당 포트를 제어할 수 있도록 되어있습니다. ( /etc/services 파일 참고 )

ascii_download_enable=NO ( 기본값 : NO )
ascii_upload_enable=NO ( 기본값 : NO )
  ASCII 모드로 전송을 허용할 것인지를 결정합니다. 일반적으로 UNIX 모드의 텍스트 파일과 PC(or Windows) 모드의 텍스트 파일은 LF/CR 처리부분에서 다르므로 이 옵션을 활성화(YES)시켜주면 전송시 자동으로 변환이 됩니다. 하지만 요즘 텍스트 에디터들은 자동으로 변환해주므로 크게 문제되지 않는다면 보안문제상 기본값으로 설정된 NO로 해주심을 권장합니다.

local_umask=022 ( 기본값 : 077 )
  파일 생성 umask 값을 지정합니다. 이 값을 보면 vsftpd가 보안에 까칠하다는게 확실히 알 수 있겠군요. 기본적으로 파일 생성시 할당되는 퍼미션은 최대퍼미션 - umask 의 값을 가집니다. 최대퍼미션은 디렉토리의 경우 0777, 파일인 경우 0666 으로 결정됩니다. 그러므로 디렉토리의 경우 vsftpd의 기본 umask를 적용하면 0700 ( 0777 - 077 = 0700 ) 으로 설정됩니다. 즉 올린 사람외에는 손대지마!!! 라는 것이 되죠. 다만 이렇게 된다면 웹서버를 운영할 경우 웹상에서 접근을 못하게 되는 사태가 벌어집니다. 일반적인 umask 옵션인 022 로 정해줍시다.

file_open_mode=0644 ( 기본값 : 0666 )
  업로드되는 파일의 기본 퍼미션을 지정합니다. 이 옵션은 반드시 local_umask 옵션보다 뒤에서 지정되어야 하며, 기본값을 주게 되면 업로드된 파일이 아무나 읽기쓰기로 되어버리기 떄문에 가능하면 0644 로 설정하는 것이 좋습니다.

dirlist_enable=YES ( 기본값 : YES )
  디렉토리 목록을 볼 수 있게 합니다. NO로 할 경우 목록을 볼 수가 없게 됩니다.

force_dot_files=NO ( 기본값 : NO )
  .(dot)로 시작하는 파일들의 표시 여부를 결정합니다. 보안관계상 기본 값은 NO로 되어있습니다.

tilde_user_enable=NO ( 기본값 : NO )
  일반적으로 사용하는 ~crhis/pics 와 같은 지정을 해석할 수 있도록 합니다. 사용자 계정명앞에 ~(틸드)가 오게 되면 해당 사용자 계정의 홈디렉토리를 의미하게 되는데 이것을 해석할 수 있도록 해주는 것입니다. 다만 이 옵션은 /etc/passwd 파일을 찾을 수 있을 경우에 정상적으로 작동합니다.

hide_ids=NO ( 기본값 : NO )
  이 옵션이 활성화되면 모든 파일의 사용자는 FTP로 표시됩니다. 보안에 도움이 될 수도 있는 옵션입니다.

write_enable=YES ( 기본값 : NO )
  사용자가 기록을 할 수 있도록 합니다. (STOR, DELE, RNFR, RNTO, MKD, RMD, APE, SITE 등의 명령이 실행가능해 집니다.)

download_enable=YES ( 기본값 : YES )
  파일을 다운로드할 수 있게 합니다.

chmod_enable=YES ( 기본값 : YES )
  로컬 사용자가 퍼미션을 변경할 수 있도록 합니다. 익명 접속 사용자는 불가능합니다.

use_sendfile=YES ( 기본값 : YES )
  서버 운영체제의플랫폼에서 sendfile() 시스템 호출을 허용합니다. 내부 세팅인것 같은데 그냥 YES~~~

cmds_allowed=none ( 기본값 : none )
  사용자에게 허용할 명령어를 지정합니다. 이 명령은 지정한 명령만 사용할 수 있도록 만드는 것입니다. 적용하지 않으면 모든 명령을 사용할 수 있으며 지정하게 되면 지정한 명령어만 사용가능합니다. 단 로그인 전의 명령어나 로그아웃 등의 명령어는 해당되지 않습니다. ( USER, PASS, QUIT 등 )

deny_file=none ( 기본값 : none )
  업로드를 거부할 파일명을 지정합니다. { 와 } 으로 묶으며, 와일드 카드 ( ? , * )를 사용할 수 있습니다. 각각의 파일은 ,(comma)로 구분하도록 되어있습니다. 예) deny_file={*.mp3,*.mov,.private}

hide_file=none ( 기본값 : none )
  숨길 파일명을 지정합니다. 즉 존재는 하되 파일목록에서는 보이지 않습니다. deny_file 옵션과 동일한 형식으로 지정가능합니다.

async_abor_enable=NO ( 기본값 : NO )
  특정 클라이언트가 파일 전송중 취소했을 때 정상적으로 취소되지 않는 경우가 발생하는데 이때 이 옵션을 enable 하게 되면 이런 증상을 막을 수 있습니다. 제작자는 오직 ill adviced FTP clients가 이런 증상을 발생시킨다고 하며 보안관계상 NO를 권장하고 있습니다.

ls_recurse_enable=NO ( 기본값 : NO )
  ls 명령의 옵션중 하위 디렉토리의 구조까지 모두 읽어올 수 있는 -R 옵션 사용 여부를 결정합니다. 서버에 대한 부하가 크므로 기본적으로 NO 로 설정되어 있습니다.

chroot_local_user=YES ( 기본값 : NO )
  로컬 사용자가 접속하면 자신의 상위 디렉토리로 접근할 수 없도록 설정합니다.

passwd_chroot_enable=YES ( 기본값 : NO )
  If enabled, along with chroot_local_user,  then a chroot() jail location may be specified on a per-user basis. Each user's jail is derived from their home directory  string in /etc/passwd. The occurrence of /./ in the home directory string denotes that the jail is at that particular location in the path. (해석불가 -.-;;)

chroot_list_enable=NO ( 기본값 : NO )
  이 옵션을 활성화하면 명시된 사용자만이 자신의 홈상위 디렉토리에 접근할 수 없게 되어 있습니다. 단 chroot_local_user 옵션이 비활성화되어 있어야 작동합니다.

chroot_list_file=/etc/vsftpd.chroot_list ( 기본값 : /etc/vsftpd.chroot_list )
  chroot_list_enable 옵션이 활성화되어 있다면 chroot() 기능을 적용시킬 사용자 목록을 가지게 되며, chroot_local_user 옵션이 활성화되어 있다면 chroot() 기능에서 제외할 사용자 목록을 가지게 됩니다.

secure_chroot_dir=/usr/share/empty ( 기본값 : /usr/share/empty )
  secure chroot()에서 사용될 디렉토리를 지정하며 반드시 비어있어야 합니다. 또한 ftp user에 대한 쓰기 권한이 없어야 합니다. (이게 왜 있는건지......) 참고로, 저 디렉토리는 반드시 생성되어 있어야 하며 조건에 맞지 않게 되어 있다면 vsftpd 실행시 에러가 발생합니다. 그냥 /usr/share/empty 디렉토리를 만들고 root:root 로 권한을 주고 755로 퍼미션 주시면 됩니다.

check_shell=YES ( 기본값 : YES )
  이 옵션은 non-PAM 시스템에서만 정상적으로 동작하며, 접속자의 Shell 체크 여부를 결정합니다.

delay_failed_logins=5 ( 기본값 : 1 초 )
  로그인이 실패하고 난 뒤 다음 로그인 시도까지의 딜레이 시간을 지정합니다.

delay_successful_logins=0 ( 기본값 : 0 초 )
  로그인이 성공하고 난 뒤 다음 과정으로 넘어가기 전까지의 딜레이 시간을 지정합니다.

max_login_fails=3 ( 기본값 : 3 회)
  지정한 횟수만큼 연속적으로 로그인을 실패하면 연결을 끊어버립니다.

local_root=none ( 기본값 : none )
  로컬 사용자(익명 사용자가 아닌) 로그인을 하게 되면 해당 디렉토리로 이동시킵니다. 로그인을 실패한 경우에는 아무런 동작을 하지 않습니다.

lock_upload_files=NO ( 기본값 : NO )
  이 옵션을 활성화하면 모든 업로드되는 파일들은 기록 lock이 설정됩니다. 단 모든 다운로드 파일들은 공유 읽기 lock이 설정되는데 이 옵션을 활성화화면 악의적인 목적으로 업로드를 방해할 수 있으므로 주의해서 사용해야 합니다.

mdtm_write=YES ( 기본값 : YES )
  mdtm 기능을 사용할 수 있게 합니다. mdtm은 업로드되는 파일의 시간과 날짜를 변경할 수 있게 하는 기능힙니다.

pasv_addr_resolv=NO ( 기본값 : NO )
  이 옵션을 사용하게 되면 IP 주소가 아닌 호스트 네임을 pasv_address에서 사용할 수 있게 합니다. 

vsftpd_log_file=/var/log/vsftpd.log ( 기본값 : /var/log/vsftpd.log )
  vsftpd의 로그파일을 지정합니다. 단 xferlog_enable 옵션이 활성화되고 xferlog_std_format 옵션이 비활성화되어야 동작합니다. 또는 dual_log_enable 옵션아 활성화될 경우에도 동작합니다. 주의할 점은 syslog_enable 옵션이 활성화되면 모든 로그들은 system log로 보내어지므로 vsftpd_log_file 옵션에 기록된 파일에는 로그가 기록되지 않습니다.

dual_log_enable=YES ( 기본값 : NO )
  이 옵션이 활성화되면 /var/log/xferlog 와 /var/log/vsftpd.log 파일 둘다 로그 기록에 사용합니다.

syslog_enable=NO ( 기본값 : NO )
  이 옵션이 활성화되면 모든 로그들은 system log(syslogd 데몬을 이용한)에 기록되며 /var/log/vsftpd.log 파일은 사용되지 않습니다.

xferlog_file=/var/log/xferlog ( 기본값 : /var/log/xferlog )
  이 옵션 wu-ftpd 형식의 로그들을 기록할 파일을 지정하는 것입니다. 반드시 xferlog_enable 옵션이 활성화되어야 정상적으로 동작하며 xferlog_std_format 옵션과 연관성이 있습니다. 또는 dual_log_enable 옵션이 활성화되어도 본 옵션이 동작합니다.

xferlog_enable=YES ( 기본값 : NO )
  상세한 파일의 전송상황을 로그파일에 기록할 것인지를 결정합니다. 기본값은 /var/log/vsftpd.log 에 기록하며, 이 파일의 위치는 xferlog_file 옵션에서 변경가능합니다.

xferlog_std_format=NO ( 기본값 : NO )
  xferlog_enable 옵션으로 기록되는 로그 형식을 표준으로 할 것인지를 결정합니다.

log_ftp_protocol=YES ( 기본값 : NO )
  아주 상세한 FTP 이용 상황을 로그에 기록할 지를 결정합니다.

no_log_lock=NO ( 기본값 : NO )
  로그 파일을 기록할 때 로그 파일에 lock 을 걸 것인지를 결정합니다. 일반적으로 걸지 않아도 되지만, 솔라리스 OS에서 베리타스(Veritas) 파일 시스템을 사용할 경우 문제점이 발생할 수 있으므로 해당 OS와 파일시스템을 사용하고 있을 경우 YES로 설정하시기 바랍니다.

session_support=YES ( 기본값 : NO )
  세션 기록을 wtmp 또는 utmp 에 남길것인지를 결정합니다. wtmp/utmp를 이용하게 되면 last 명령으로 접속여부를 확인할 수 있으므로 YES를 권장합니다.

one_process_model=NO ( 기본값 : NO )
  하나의 접속자에 하나의 프로세스 모델을 생성하여 할당합니다. 효율면에서는 좋으나 보안면에서는 조금 떨어질 수 있다고 제작자는 밝히고 있습니다. 단 리눅스 커널이 2.4 이상일때만 권장하는 것 같군요. 솔라리스10에서 서비스로 등록을 해 놓았으므로 이 옵션과는 무관하게 접속자별로 2개씩의 프로세스가 생성됩니다. OTL;;;;;;

기타 설명하지 않은 옵션들
  가상 사용자나 익명사용자에 대한 설정은 본인이 사용하지 않으므로 설명을 생략합니다. 인터넷상에 많이 알려져 있으므로 해당 문서를 검색하시거나 아래 참고사이트를 이용하시면 상세하게 설명되어 있습니다.
guest_enable=NO
guest_username=ftp
virtual_use_local_privs=NO
user_sub_token=none
allow_anon_ssl=NO
deny_email_enable=NO
banned_email_file=/etc/vsftpd.banned_emails
secure_email_list_enable=NO
email_password_file=/etc/vsftpd.email_passwords
ftp_username=ftp
no_anon_password=NO
anon_root=none
anon_max_rate=0
anon_upload_enable=NO
anon_world_readable_only=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chown_uploads=NO
chown_username=root
anon_umask=077
force_anon_data_ssl=NO
force_anon_logins_ssl=NO


참고용 설정파일
제가 사용하고 있는 옵션들을 간단하게 옮겨봅니다. Solaris10에서 익명과 SSL을 사용하지 않으며, 웹서버 운영 용도로 사용하고 있는 서버입니다. 이중 로그파일을 한 이유는 xferlog.log 에서 전송량을 체크하기 위함이며, vsftpd.log 에서는 접속현황 및 계정 관리를 위해서 세팅하였습니다.

anonymous_enable=no
max_clients=50
max_per_ip=10
use_localtime=YES
setproctitle_enable=YES
local_enable=YES
ftpd_banner=Welcome to KYUNGSUNG University Web server......
port_enable=YES
max_login_fails=1
write_enable=YES
local_umask=022
file_open_mode=0644
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog.log
session_support=YES
xferlog_std_format=NO
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
text_userdb_names=YES
tcp_wrappers=YES


참고사이트
기존 vsftpd 관련 자료들이 많긴 합니다만, 대부분 티니님의 자료를 옮겨 놓은 듯 하더군요. 다만 티니님의 자료는 1.0.1 버젼을 기준으로 하여 없는 옵션이나 내용이 조금 바뀐 옵션들이 있어서 따로 정리를 해봤습니다. 정말 항상 글을 쓸때마다 느끼는 것이지만, 글 제대로 쓰시는 분들 존경스럽네요. ;;;;;

- VsFTPD FTP 서버 설치 by 티니님 ( http://coffeenix.net/board_view.php?bd_code=1470 )
- FTP 설정하기 by 아햏햏님 ( http://blog.naver.com/ssanzing2?Redirect=Log&logNo=140025729151 )


Error 수정

vsftp를 설치하고 난 뒤 아래의 메세지가 표시되면서 접속이 안되는 경우가 있다.

500 OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in
: 위의 메세지는 sunfreeware.com 에서 다운받아서 pkgadd 로 설치했을 경우 tcp_wrapper가 지원되지 않도록 컴파일되어 있기 때문입니다. 결론은, 소스 받아서 컴파일 하세요~

500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp
: 위의 메세지는 ftp라는 그룹과 유저가 생성되어 있어야 합니다. 아래 명령으로 유저와 그룹을 생성하세요.
: groupadd -g 199 ftp
: useradd -u 199 -g 199 -s /bin/false -m ftp

500 OOPS: could not bind listening IPv4 socket

SMF(Service Management Facility) 사용시에 /etc/vsftp.conf 파일에서  listen=YES 로 설정시에 NO로 변경
listen=NO


포트 변경 하는 방범

/etc/services 파일 포트 수정

 

수정 전

ftp-data        20/tcp
ftp-data        20/udp
# 21 is registered to ftp, but also used by fsp
ftp             21/tcp
ftp             21/udp                fsp fspd

 

수정 후

ftp-data        6500/tcp
ftp-data        6500/udp
# 21 is registered to ftp, but also used by fsp
ftp             6500/tcp
ftp             6500/udp                fsp fspd

 

 

/etc/vsftpd/vsftpd.conf

 

수정 전

# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES

 

수정 후

# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=NO

 

추가

listen_port=6500

 


 

변경 작업 후 리스타트

svcadm disable /network/ftp/tcp

svcadm enable /network/ftp/tcp

포트 변경 완료

반응형

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

solaris cd-rom mount 하기  (0) 2010.03.05
solaris root 패스워드 복구  (0) 2009.10.28
SWAT SVM RAID  (0) 2009.05.25
미러 디스크 장애시 디스크 교체하기  (0) 2009.05.07
samba  (0) 2008.02.28
Posted by [PineTree]
OS/SOLARIS2009. 5. 25. 15:22
반응형
출처 : http://moonlite.tistory.com/trackback/29

swat : samba가 제공하는 웹 관리 도구
  예) SWAT ----------------------------------------------------
          #cp /etc/apache/httpd.conf-example /etc/apache/httpd.conf
          #/usr/apache/bin/apachectl start
         웹브라우저에서 http://ip:901/ 입력후 swat화면으로 접속

삼바클라이언트 : 윈도우서버의 공유자원을 클라이언트(솔라리스 삼바)가 접속할 때 사용
    #smbclient //컴퓨터이름(IP)/공유폴더이름
    #smbclient -U username //moonlite/share     :: username에 해당하는 사용자로 접속


SVM (Solaris Volume Manager) : 다수의 디스크와 디스크상의 데이터를 관리 할 수 있게 하는 소프트웨어 (논리적인 디스크 = metadevice)
       - 물리적인 디스크와 데이터를 논리적인 디스크로 구성
       - 논리적인 디스크 구성 시 기본단위는 slice또는 disk partition
      장점> 디스크의 I/O 성능 향상
               저장용량과 데이터의 가용성 향상
               디스크 장애 발생시 복구 방안 제공

SVM 오브젝트
    - Metadevice : 물리적인 슬라이스 그룹을 논리적인 단일 디바이스로 표현
                            RAID기법을 이용하여 스토리지 용량과 데이터 가용성을 향상
         Raid : 논리적으로 대용량의 저장공간을 만들 수 있으면서 데이터 입출력을 향상과 관리향상을 가진 S/W기법
 
    - MetaDB : SVM(Metadevice)구성 상태에 관한 디스크 정보를 저장하고 있는 데이터 베이스
    - Hot Spare Pool : 물리적인 슬라이스 장애 발생시 자동으로 복구할 슬라이스나 디스크

 Metadevice
     device파일은 /dev/md/rdsk, /dev/md/dsk에 목록 생성
     metadevice name은 기본적으로 128개의 디바이스 이름 사용 (/dev/md/dsk/d0~127)
       + 1024까지 사용하려면 /kernel/drv/md.conf에서 수정
     metadevice에 대해 파일 시스템 명령어 사용이 가능하지만, format명령어는 사용할 수 없음
       + mount, umount, ufsdump, ufsrestore 등..

MetaDB
    MetaDB의 크기는 기본적으로 517KB이며 파티션의 시작부분에 저장됨
    메타디바이스를 생성하기 전에 반드시 먼저 생성해야 함
    저장공간을 할당해야 하기 때문에 사용하지 않는 슬라이스에 생성하는 것이 좋다
    MetaDB는 여러개의 복제 metaDB를 생성하며, 단일 metaDB의 장애로 인한 데이터 손실을 방지함 (기본적으로 3개의 복제본이 요구되며, 디스크의 분산저장함)
   최대 50개의 metaDB 생성 가능
    디스크 또는 슬라이스의 장애로 인해 MetaDB의 손실이 일어날 경우 50%이상일 경우는 running, 이하일경우 panic이나 reboot

--------------------------------
실습1) Metadb를 만드는 명령어
     c0d0 - s0 : solaris
                 s1 : swap
                 s3 : metadb
                 s4 : metadb 복제
┌────┐
│    c0d1 │      s0 : 100m
│ c2t0d0 │       s1 : 100m
│ c2t2d0 │       s3 : 100m
│ c2t1d0 │       s4 : 100m - metadb
└────┘
 
 #metadb -a -f c0d0s3      :: c0d0디스크의 슬라이스3번에 metadb를 생성함
 #metadb      :: metadb정보를 확인
 #metadb -a c0d0s4         :: c0d0디스크의 슬라이스4번에 복제metadb 생성
 #metadb      :: metadb정보를 확인
 #metadb -d c0d0s4         :: c0d0디스크의 슬라이스4번의 생성된 metadb 삭제
 #metadb -a -c3 c0d0s4  :: c0d0디스크의 슬라이스4번에 복제metadb를 3개 생성
 #metadb      :: metadb정보를 확인하면 제일 위에있는것이 실제 서비스하는 metadb이며 나머지것은 레플리카라고 함

 다시셋팅>
 #metadb -a -f -c3 c0d0s4
 #metadb -a -f -c3 c2t1d0s4
 #metadb -a -f -c3 c2t2d0s4

concatenate volume
 - RAID 0 : 여러개의 물리적인 디스크를 하나의 논리적인 디스크로 구성하는 방식 (concat / stripe)
           장점 - 대용량의 디스크를 구성할 수 있으며, 파일시스템의 변경 없이 추가적으로 용량을 늘려 사용할 수 있다
           단점 - 물리적인 디스크 장애가 발생할 경우 데이터 손실이 발생함

       #metainit d10 2 1 c2t0d0s2 1 c2t1d0s2   :: 2개의 물리적 디스크를 d10이라는 이름으로 1개의 논리적인 디스크로 만듬
-----------------------
실습 ) c0d1s0 과 c2t0d0s0을 묶음
 #metainit d10 2 1 c0d1s0 1 c2t0d0s0
 #metastat            :: meta device 구성 정보를 확인하는 명령어
 현재는 파일시스템 구성이 안되어있으니 사용할 수 없다
 #newfs /dev/md/rdsk/d10   :: ufs로 파일시스템 구성
 #mkdir lab     :: 마운트 할 디렉토리 구성
 #mount /dev/md/dsk/d10 /lab     :: /lab에 마운트
 #df -h    :: 확인
-----------------------
 실습2 ) File system이 구성된 disk의 volume 구성방법
  #newfs c2t1d0s0    ::  c2t1d0s0에 ufs 파일 시스템 구성
  #mkdir /lab/test1    ::  마운트할 디렉토리 생성
  #mount /dev/dsk/c2t1d0s0 /lab/test1     ::  /lab/test1에 마운트
  #cd /lab/test1        :: 디렉토리 이동
  #mkfile 5m testtest   :: testtest라는 5mb짜리 파일을 만듬
  #metainit -f d11 2 1 c2t1d0s0 1 c2t2d0s0     :: -f 옵션을 이용하여 강제로 raid 구성
  #metastat    ::  확인
  #df -h          :: mount정보 확인하면 아까 마운트 한 정보만 있음,
  #mkdir /lab/test2    :: 마운트 할 디렉토리를 생성
  #mount /dev/md/dsk/d11 /lab/test2       :: raid 한 metadevice를 test2에 마운트
  #umount /lab/test1  :: /lab/test1 마운트 해제
  #growfs -M /lab/test2 /dev/md/rdsk/d11  :: 파일시스템을 재구성
  #df -h        :: mount정보 확인 (용량)
  #cd /lab/test2
  #ls    :: 파일이 존재하는것을 알 수 있음
----------------------------------
실습3 ) 실습1의 용량이 꽉차있다고 가정하고, c0d1s1을 하나 더 붙이기
  #metattach d10 c0d1s1 :: 이미 만들어진 metadevice에 물리적인 디스크를 추가하여 size 확장
  #metastat  ::  확인
  #df -h       ::  파일시스템 갱신이 안되어 size가 안늘어 나있음
  #growfs -M /lab /dev/md/rdsk/d10  :: 파일시스템을 재구성
  #df -h       :: size가 늘어나 있음을 확인
-----------------------------------

Raid 0 - stripe volume
 여러개의 물리적인 디스크를 하나의 논리적인 디스크로 구성하지만 데이터기록을 지정된 stripe size로 분산하여 동시에 디스크를 사용함, 장점은 file access 속도가 빨라짐

 명령어 : metainit d20 논리적인디스크 갯수, 물리적인디스크 갯수 장치명

-------------------------------
실습4) stripe raid 0 생성
 #metainit d20 1 2 c0d1s3 c2t0d0s3  :: stripe raid 0 구성
 #metastat  :: start block 확인해보면 둘다 0인것을 확인
 #newfs /dev/md/rdsk/d20  :: 파일시스템 생성
 #mkdir /lab/test3        :: 마운트 할 디렉토리 생성
 #mount /dev/md/dsk/d20 /lab/test3  :: /test3에 마운트
 #mkfile 150m /lab/test3/test         ::  150m용량의 test파일을 만들어서 hdd엑세스 확인
-------------------------------
실습5) 파일시스템을 미리 만들어놓고 metadevice 생성
#newfs /dev/rdsk/c2t1d0s3      :: c2t1d0s3에 대해 파일시스템 생성
#mkdir /lab/test3 /lab/test4      ::  마운트 할 test3,4 디렉토리 생성
#mount /dev/dsk/c2t1d0s3 /lab/test3   :: test4에 마운트
#metainit -f d21 1 2 c2t1d0s3 c2t2d0s3  :: raid 0 구성
#mount /dev/md/dsk/d21 /test5  :: 마운트 하지만 결과는 안됨
  ★stripe는 동시에 파일시스템을 만들어야하기 때문에, 데이터가 있는것에 대해 설정할 수 없음
--------------------------------
실습 6) 실습4의 결과물에 stripe volume size 확장          
  #metaclear d21       :: 실습 5에 한 metadevice 제거
  #metaattach d20 c2t1d0s3 c2t2d0s3     :: d20에 device 추가 (장치를 2개써야 완벽한 확장)
  #metastat  :: 확인
  #growfs -M /lab/test3 /dev/md/rdsk/d20   :: 파일시스템 재구성
  #cd /lab/test3
  #mkfile 350M testfile   :: 350mb테스트파일을 만들어서 hdd access 확인


volume제거
Metaclear device_name
    -r : 연결된 것까지 지움
    -a : all metadevice clear
    -f : force clear


Metadevice 손상
 stripe의 물리적인 디스크 손상시, 전체적인 metadevice 볼륨이 손상됨



RAID 5  (Parity Volume) : raid0의 단점을 보안하기 위해 패리티 데이터생성하여 각 디스크에 데이터와 패리티데이터를 동시에 분산 저장함
     장점 : 대용량의 디스크를 구성할 수 있다
               데이터의 가용성을 제공함
               디스크 장애시 추가적인 백업없이 복구 기능을 제공
              읽기 성능이 향상
     단점 : 패리티 데이터를 저장할 공간을 낭비함 (최소 디스크3개, 볼륨 공간에 1/3을 소요)
              쓰기성능이 다소 느려짐. (패리티연산 때문)
---------------------------
실습 7) raid5 구성
#umountall          :: 전 실습에 쓰인 mount 해제
#metaclear -a    ::  전 실습에 쓰인 metadevice 해제

#metainit d10 -r c0d1s0 c2t0d0s0 c2t1d0s0
#newfs /dev/md/dsk/d10
#mount /dev/md/dsk/d10 /lab/test1
#cd /lab/test1
#mkfile 100m filename
----------------------------------------


반응형

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

solaris root 패스워드 복구  (0) 2009.10.28
solaris10 vsftp 설치 및 포트변경  (0) 2009.08.03
미러 디스크 장애시 디스크 교체하기  (0) 2009.05.07
samba  (0) 2008.02.28
VMSTAT  (0) 2007.12.07
Posted by [PineTree]
OS/SOLARIS2009. 5. 7. 14:19
반응형
[root@tiger /]metastat
d11: 이중화
    서브미러 0: d21
      상태: 확인        
    서브미러 1: d31
      상태: 확인        
    전달: 1
    읽기 옵션: roundrobin (기본값)
    쓰기 옵션: parallel (기본값)
    크기: 2099106 블록(1.0 GB)

d21: d11의 Submirror
    상태: 확인        
    크기: 2099106 블록(1.0 GB)
    스트립 0:
        장치       시작 블록    Dbase         상태 Reloc 핫 스패어
        c0t0d0s1          0     아니          확인    예


d31: d11의 Submirror
    상태: 확인        
    크기: 2099106 블록(1.0 GB)
    스트립 0:
        장치       시작 블록    Dbase         상태 Reloc 핫 스패어
        c0t8d0s1          0     아니          확인    예


d10: 이중화
    서브미러 0: d20
      상태: 확인        
    서브미러 1: d30
      상태: 관리 필요   
    전달: 1
    읽기 옵션: roundrobin (기본값)
    쓰기 옵션: parallel (기본값)
    크기: 33555384 블록(16 GB)

d20: d10의 Submirror
    상태: 확인        
    크기: 33555384 블록(16 GB)
    스트립 0:
        장치       시작 블록    Dbase         상태 Reloc 핫 스패어
        c0t0d0s0          0     아니          확인    예


d30: d10의 Submirror
    상태: 관리 필요   
    호출: metareplace d10 c0t8d0s0 <새 장치>
    크기: 33555384 블록(16 GB)
    스트립 0:
        장치       시작 블록    Dbase         상태 Reloc 핫 스패어
        c0t8d0s0          0     아니          관리    예


Device Relocation Information:
Device   Reloc  Device ID
c0t8d0   예     id1,sd@SSEAGATE_ST318404LC______3BT18QVH0000V1060DM0
c0t0d0   예     id1,sd@SSEAGATE_ST318404LC______3BT1083K000021073AZM
[root@tiger /]metastat -p
d11 -m d21 d31 1
d21 1 1 c0t0d0s1
d31 1 1 c0t8d0s1
d10 -m d20 d30 1
d20 1 1 c0t0d0s0
d30 1 1 c0t8d0s0


[root@tiger /]format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SEAGATE-ST318404LC-0006 cyl 14187 alt 2 hd 6 sec 421>
          /pci@1f,4000/scsi@3/sd@0,0
       1. c0t8d0 <drive not available>
          /pci@1f,4000/scsi@3/sd@8,0
       2. c0t9d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /pci@1f,4000/scsi@3/sd@9,0

1번 디스크 교체

metadetach -f d10 d30
metadetach -f d11 d31

metaclear d30
metaclear d31

metadb -d -f c0t8d0s7

디스크 교체

디스크 파티션 구성

prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t8d0s2

newfs /dev/rdsk/c0t8d0s0
newfs /dev/rdsk/c0t8d0s7

metadb -a -f -c 3 c0t8d0s7

metainit d30 1 1 c0t8d0s0
metattach d10 d30

metainit d31 1 1 c0t8d0s1
metattach d11 d31

반응형

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

solaris10 vsftp 설치 및 포트변경  (0) 2009.08.03
SWAT SVM RAID  (0) 2009.05.25
samba  (0) 2008.02.28
VMSTAT  (0) 2007.12.07
솔라리스에서 xmanager 접속을 차단하거나, 통제하기  (0) 2007.11.17
Posted by [PineTree]
OS/SOLARIS2008. 2. 28. 22:31
반응형

출처

http://solarisschool.com/tip/view.html?board=tip1&no=17879&start=0&sselect=&mode=&qry_string=

 

 

솔라리스에서 삼바 서버는 지원한다.
이 문서는 선에서 지원하는 삼바서버를 참고로 한다. 소스로 삼바를 설치한다면
문서가 조금 달라질 것이다.


1. 삼바 서버 기본 환경

pkginfo 명령어로 삼바 서버가 설치되어 있는지 확인해보자.

[root@/root] # pkginfo |grep samba
system SUNWsmbac samba - A Windows SMB/CIFS fileserv
er for UNIX (client)
system SUNWsmbar samba - A Windows SMB/CIFS fileserv
er for UNIX (Root)
system SUNWsmbau samba - A Windows SMB/CIFS fileserv
er for UNIX (Usr)

위와 같이 나온다면 당연히 설치되어 있다.

이제 계획을 잡자.
삼바 서버로 접속하는 외부 클라이언트에게 어떤 계정을 줄 것이며, 이 계정으
로 작동할 것인가?
삼버 서버의 데이터로는 어디로 할것인가? 이다.

우선 외부에서 삼바 서버로 접속하는 클라이언트에게 samba라는 계정을 주자
그리고 이 계정은 sambagroup라는 그룹으로 묶자
왜? 삼바 데이터 서버는 여러개 만들 수 있다. 그리고 각 데이터 서버로 접속
하는 클라이언트에 다른 계정을 줄 수 있다. 그러니 그룹으로 관리해주면
편할것이다.

간단히 삼바 서버의 데이터 저장 등으로 사용할 디렉토리를 /export/home/samba
로 잡자.

정리해보자

삼바 서버 계정 : samba
삼바 서버 그룹 : sambagrp
삼바 서버 디렉토리 : /export/home/samba
윈도우 작업 그룹 : MSHOME
(이것을 확인하는 방법은 내컴퓨터-> 속성 누르면 시스템 등록 정보가 뜬다
일반, 컴퓨터 이름, 하드웨어.. 등등 많은 메뉴가 있다 이중 컴퓨터 이름에
들어가 본다면
전체 컴퓨터 이름: canard.
작업 그룹 : MSHOME
로 등록되어 있다.)

그리고 확인해보자. 클라이언트로 사용할 컴퓨터에서 삼바 서버가 돌아가는지
확인해보자. 당연히 삼바 서버에서 서버가 작동하지 않으니 않나올 것이다.
window xp에서 확인하는 방법이다.

네트워크 -> 작업 그룹 컴퓨터 보기
해보면 작업 그룹 컴퓨터에 삼바 서버가 전혀 보이지 않는다.


2. 삼바 서버 기본 작업

자 삼바 서버 돌리기 전에 우리는 삼바 서버를 어떻게 구성할 것이며 어떤 계
정을 사용할 지 계획을 세웠다. 이에 맞춰서 작업을 해보자.
우선 그룹과 계정 및 삼바서버에서 사용할 데이터 디렉토리를 만들어야할 것
이다. 이때 데이터 디렉토리는 계정을 만들면서 사용자 홈디렉토리를 사용하면
편할 것이다. (그래서 /export/home/samba)를 사용했따.

[root@/root] # groupadd sambagrp
[root@/root] # useradd -m -d /export/home/samba -G sambagrp -s /bin/false samba
64 blocks
[root@/root] #

useradd의 옵션은 잘 아리라 생각한다. 그래서 다른 설명은 하지 않는다. 그리
고 이곳에서 보안을 위해서 쉘을 /bin/false(-s /bin/false) 사용해서 일반 접
속을 막는다.

자 이것으로 기본 설정은 끝이 났는가? 아니다. 몇가지 설정이 더 남았다.
/etc/hosts 파일과 /etc/lmhosts 파일에 삼바 서버에 접속할 클라이언트를 삽입
한다.

클라이언트를 살펴보면
211.175.131.32 의 IP를 가지며 netbios의 이름으로 canard를 가진다. 그리고
작업 그룹으로 MSHOME를 가진다. 이곳 설정에서는 약간 난이도를 높여서 삼바
서버에서 클라이언트 서버에서 붙이는 이름과 netbios 이름을 다르게 설정해
서 테스트 해보자.

[root@/root] # cat /etc/hosts
127.0.0.1 localhost
211.175.147.154 ns loghost
211.175.131.32 www1
211.175.131.33 www2
이 서버에서는 클라이언트의 이름을 www1으로 줬다.

다음은 /etc/lmhosts 파일이 남았다. 이 파일은 무엇이냐면 netbios 이름과
/etc/hosts 파일에서 설정해 놓은 이름과 매칭 시키는 설정 파일이다.
삼바 서버에서는 www1 컴퓨터를 가르치지만 netbios에서의 이름은 다를 수있
으며 같을 수도 있다.

[root@/root] # cat /etc/lmhosts
localhost ns
www1 canard
www2 test

자 첫 번째 이름은 서버에서 지정해 준 이름이며 두번째 이름은 netbios 이름
이다. 즉 www1은 netbios 이름으로 canard를 뜻한다.

이제 기본적인 설정은 끝이 났다. 이제 삼바 설정 파일의 설정으로 삼바 서버
가 올바로 작동하는 것인가? 아니면 올바로 작동하지 않을 것인가가 결정된다.


3. SWAT 작동시키기

우리는 삼바 서버의 설정을 편하게 하고 싶다. 이것은 사람의 욕망이라면 당연
한 반응이다. (내가 볼 때는 SWAT로 설정하거나 손으로 작업하거나 그게 그거
같다. 설정의 어려움은 대략 비슷하다.)

사람들은 manpage를 뒤져보지 않는 경향이 많다. 그러나 우리는 필히 맨패이지
를 보고 확인해야한다. 이유는? 맨페이지를 뒤져보면 활용법 및 설정이 어느
정도 선까지는 자세히 설명되어 있기 때문이다.

잡설은 넘어가고 위에서 필요로 하는 패키지가 모두 설치되어 있다면 삼바 서
버에 관련된 파일들이 모두 설치되어 있다. 당연히 swat로 설치되어 있다.
확인해보자.

[root@/root] # ls /usr/sfw/sbin/
nmbd smbd tcpd tcpdmatch
safe_finger swat tcpdchk try-from
[root@/root] #

위의 명령어를 사용해보니 nmbd smbd swat 파일이 모두 있다.

그리고 shell> man swat 명령어를 사용해보니 swat를 사용하기 위해서는 2가지
설정을 해줘야 한다고 나온다.
참고로 man swat 않된다고 하지 말자
[root@/root] # man swat
No manual entry for swat.
[root@/root] # export MANPATH=/usr/man:/usr/sfw/man
[root@/root] #
환경변수 MANPATH를 설정 안해줘서 그렇다.

맨패이지 중 중요한 부분을 발췌했다.

You need to edit your /etc/inetd.conf and /etc/services to
enable SWAT to be launched via inetd.

In /etc/services you need to add a line like this:

swat 901/tcp

In /etc/inetd.conf you should add a line like this:

swat stream tcp nowait.400 root /usr/sfw/sbin/swat swat

One you have edited /etc/services and /etc/inetd.conf you
need to send a HUP signal to inetd. To do this use kill -1
PID where PID is the process ID of the inetd daemon.

봐서 알겠지만 /etc/services 파일에
swat 901/tcp
를 적어 넣으라고 나와있다

그리고 /etc/inetd.conf 파일에
swat stream tcp nowait.400 root /usr/sfw/sbin/swat swat
를 적어 넣으라고 나왔다.

그러면 이제 inetd 서버스를 재 시작해보자. 여러 방법이 있으니 알아서..
(이런 것까지는 알갈쳐준다.)

이제 삼바 서버에서 넷스케이프를 띄워서
http://localhost:901 의 주소를 사용해본다.

잘나온다. 이제 노력과 끈기로 자신의 시스템에 맞는 설정을 찾아야한다.

그리고 우리는 삼바 시작 스크립트를 살펴보자.
shell> vi /etc/init.d/samba
case "$1" in
start)
[ -f /etc/sfw/smb.conf ] || exit 0

/usr/sfw/sbin/smbd -D
/usr/sfw/sbin/nmbd -D
;;

위에서 보다 싶이 설정 파일은 /etc/sfw/smb.conf이다. SWAT를 작성하면 이곳
에 설정 파일이 만들어 질 것이다.
그리고 서버 시작시 삼바 서버가 작동하도록 스크립트를 활성화 시키자.


4. 삼바 설정 파일

사실 노력과 끈기로 삼바 설정파일을 구성하는 것은 상당히 힘들다. 그리고
설정의 하나하나의 뜻을 알아야 삼바 설정을 마무리 할 수 있다.
삼바 설정에 관련된 내용을 모두 적으면 무척이나 내용이 길어질 수 있다.
그래서 보안이 아~주 허술하지만 작동은 하는 설정을 예시한다.

shell> vi /etc/sfw/smb.conf
# Global parameters
[global]
workgroup = MSHOME
server string = nimp.samba
security = SHARE
guest account = samba
hosts allow = 211.175.131.32

[samba]
comment=SambaData
path = /export/home/samba
guest only = Yes
guest ok = Yes
read only = No

[global] 부분은 삼바에 접속하는 클라이언트에 해당하는 내용이다.
이후 내용은 삼바에서 데이터를 관리하는 부분에 관련된 설정이다.
[global] 부분은 네트워크 -> 작업 그룹 컴퓨터 보기에서 보여지는
내용이며 이후 내용은 작업 그룹 컴퓨터에서 삼바 서버로 접속시 보여지는
부분이다.
간단히 global 부분에서 설명하자면
클라이언트의 workgroup는 MSHOME의 작업그룹이며 보여지는 이름은 nimp.samba
이다. 직접확인해보면
canard 컴퓨터 옆에 nimp.samba(Ns)라는 컴퓨터가 하나더 보일 것이다. 이것이
삼바 서버로 작동하는 컴퓨터이다.
그리고 보안 방식으로는 SHARE (공유 방식)을 사용했으며, 삼바에 접속하는
클라이언트에게는 samba라는 계정을 사용하게 설정 해 놓은 것이다. 그리고
접속 가능한 클라이언트는 211.175.131.32 IP를 가지는 클라이언트 하나이다.
좀더 많은 클라이언트가 가능하게 하려면 /를 사용한다.

hosts allow = 211.175.131.32 192.168.0.1/24

이상이다. 이렇게 한다면 삼바 서버는 원할히 작동할 것이다. 자세히 설명을
읽어봐야 삼바 설정을 어떻게 해야하며, 클라이언트에 따라 어떻게 설정해야
하는 것인가를 잘 알 수 있다.

참고로 더 자세한 내용을 살펴보려면 삼바 홈페이지에 접속해서 설정에 들어
가는 옵션을 하나하나 설정해서 서버에 적용시키자. swat를 사용해도 된다.
그리고 위의 에제는 로그도 남지지 않는 아~주 보안에 허술한 설정이다. 작동
은 하지만 보안을 위해서 그대로 사용하는 것은 금물이다.

그리고 http://dosc.sun.com에 접속해서 삼바를 설정하는 것을 참고하자.
위의 내용은 리눅스에서도 적용이 가능한 내용이다. 그러나 솔라리스에서는
조금 다르게 작동할 수 있도록 할 수 있다. docs.sun.com의 자료를 살펴보면
다르게 설정할 수 있는 내용을 에시해 놓았으니, 자세히 살펴보자.
솔라리스 문서가 그렇듯, 상당히 허술하면서, 또한 상당히 복잡하다.

 

반응형

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

SWAT SVM RAID  (0) 2009.05.25
미러 디스크 장애시 디스크 교체하기  (0) 2009.05.07
VMSTAT  (0) 2007.12.07
솔라리스에서 xmanager 접속을 차단하거나, 통제하기  (0) 2007.11.17
sun ipmp 관련 정보 사이트들  (0) 2007.08.28
Posted by [PineTree]
OS/SOLARIS2007. 12. 7. 20:19
반응형

[sol9:root:/]# vmstat 1 2

 kthr      memory            page            disk          faults      cpu

 r b w   swap  free  re  mf pi po fr de sr f0 s0 s1 s2   in   sy   cs us sy id

 0 0 0 1795144 840456 4   9  0  1  0  0  0  0  2  0  0  515  152  167  0  0 100

 0 0 0 1790624 827744 1   9  0  8  0  0  0  0  1  0  0  511  272  170  0  0 100

kthr(proc)

프로세스 수와 그에 해당하는 데이터를 나타낸다.

r:           실행 가능한 상태로 대기 큐에 쌓인 프로세스 수 이 숫자가 크다는 것은 현재 cpu가 작업을 원활히 소화하지 못하고 있다는 의미이다.

             r=0                      white (cpu idle)

             0<r<3                  green (no problem)

             3<=r<=5 amber (cpu busy)

             5<r                     red (cpu busy)

b:          i/o 자원을 할당 받지 못해 블록된 프로세스

w:          swap-out 된 프로세스 수, 실행 가능한 대기 큐에는 쌓이지 않고 swap-out

             대기큐가 많다는 것은 physical 메모리 부족을 의미

memory

가상 메모리와 physical 메모리의 사용 가능량

swap:    현재 사용 가능한 스왑 크기

free:      현재 사용가능한 free 메모리 크기, free 메모리가 인스톨된 메모리의

             6% 보다 계속적으로 적으면 가용 메모리가 부족한 경우이고 잠재적 병목현상이다.

page

초당 발생하는 fault page 수와 실행중인 페이징 표시

Solaris에서 여유 있는 물리적 메모리를 화일 시스템의 캐쉬로 사용한다.

디폴트로 프리 메모리(free physical memory)가 전체 물리적 메모리 양의 1/64(lotsfree)보다 크면, 화일 시스템을 통한 디스크 I/O는 모두 메모리에 남겨두어 화일 시스템의 캐쉬로 사용한다. 프리 메모리가 물리적 메모리 양의 1/64보다 적으면, Solaris는 프리 메모리를 1/64로 채우기 위하여 시스템에 있는 페이지를 조사하여, 최근에 사용되지 않은 페이지를 찾아서 프리 시킨다.

 

re:         page reclaim 프리 메모리가 부족할 경우, paging이 발생하여 최근에 사용되지

않은 페이지를 찾아서 프리시켜 부족한 메모리를 보충하게 되는데, 이렇게 프리

되는 페이지의 내용은 훼손되지 않고 프리 메모리 영역에서 관리된다.

             이렇게 프리된 페이지가 프로세스의 요청에 따라 다시 사용될 수 있다.

             이렇게 다시 사용된 페이지 수를 re(reclaim)에 보여준다.

 

mf:         minor fault 프로그램을 실행할 경우에 운영체제는 프로세스에 대한 어드레스 맵핑

테이블을 만들고, 프로세스를 실행한다. 프로세스가 실행되다가 필요한 페이지가 자신의 어드레스 맵핑 테이블에 연결되어 있지 않으면, 페이지 폴트가 발생하는데, 그 페이지가 메모리에 있으면(minor page fault라고 함), 그 페이지를 자신의 어드레스 맵핑 테이블에 등록한다. vmstat mf(minor fault) minor page fault 횟수를 나타낸다.

pi:          page in(kb) Solaris에서 파일 시스템은 페이지 서브 시스템을 통하여 이루어 진다.

, 화일 시스템의 입출력은 모두 page I/O로 이루어 진다. 화일 시스템을 통하여 화일을 읽을 때, 읽은 양은 KB로 환산되어 pi(page in)에 보여준다.

po:        page out(kb)페이지를 프리시킬 페이지의 내용이 변경되었을 경우, 그 페이지를 disk에 저장한다. (변경된 페이지가 프로그램의 데이타일 경우, 스왑 파티션에 저장되고, 화일 시스템의 케쉬이면 해당 디스크 파티션에 저장된다.) 이때, 디스크에 저장된 페이지를 KB 환산하여 보여준다.

fr:          free(kb) 프리시킨 페이지 수는 KB 단위로 환산되어 fr(free)에 보여준다.

de:        short_term 메모리 부족분 즉 swap-in을 막기위해 swap-out 시에 설정된

             인공적인 메모리의 부족분이다.

sr:         clock 알고리즘에 의한 페이지 scanned. sr은 가용메모리 부족 시에 활성화된

페이지 데몬의 수를 나타낸다. sr이 크다는 것은 사용 가능 메모리가 부족하다는 것이다.

             sr=0                    white

             0<sr<200            green

             200<=sr<300       amber

             400<sr                red

disk

초당 디스크 조작 수

faults

초당 trap/interrupt 비율

in:          device interrupt(non clock)

sy:         초당 system fault

cs:        cpu context switch

cpu

cpu 사용 시간에 대한 백분율(%)

us:         사용자 사용 시간

sy:         시스템 사용 시간

id:          idle 시간

 

[sol9:root:/]# vmstat -s

       0 swap ins

       0 swap outs

       0 pages swapped in

       0 pages swapped out

  7377342 total address trans. faults taken

시스템 부팅 이후 현재까지 이벤트 출력

 

[sol9:root:/]# vmstat -S 1 2

 kthr      memory            page            disk          faults      cpu

 r b w   swap  free  si  so pi po fr de sr f0 s0 s1 s2   in   sy   cs us sy id

 0 0 0 1795136 840440 0   0  0  1  0  0  0  0  2  0  0  515  152  167  0  0 100

 0 0 0 1790616 827704 0   0  0  0  0  0  0  0  0  0  0  507   97  164  0  0 100

 

페이징 내용에 si so 추가 출력

 

si:          초당 swap-in된 페이지

so:        swap-out된 전체 프로세서 수

swap-in:             주기억 장치에서 어떤 작업을 실행하고 있는 동안 그 작업 보다 순위가 높은 작업수행이 필요하여 끼어들기 형태로 일을 해야 할 때 이미 실행 중인 프로그램과 데이터를 일시적으로 보조기억 장치에 옮기는 것

swap-out:           작업 종료 후 보조기억 장치에서 주기억 장치로 다시 프로그램과 데이터를 옮기는 것

 

[sol9:root:/]# vmstat -c 1 2

flush statistics: (interval based)

     usr     ctx     rgn     seg     pag     par

       0       0       0       0       0       0

       0       0       0       0       0       0

cache flushing 상태를 나타내는 것

시스템 부팅 후 현재까지 flush 캐시의 수를 나타낸다

 

usr:       user

ctx:        context

rgn:       region

seg:      segment

pag:       page

par:       partial-page

 

[sol9:root:/]# vmstat -i

interrupt         total     rate

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

clock          83489951      100

hmec0            242802        0

fdc0                  9        0

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

Total          83732762      100

 

각 디바이스의 인터럽트된 사항을 나타낸다.

반응형

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

미러 디스크 장애시 디스크 교체하기  (0) 2009.05.07
samba  (0) 2008.02.28
솔라리스에서 xmanager 접속을 차단하거나, 통제하기  (0) 2007.11.17
sun ipmp 관련 정보 사이트들  (0) 2007.08.28
IPMP  (0) 2007.08.28
Posted by [PineTree]