OS/LINUX2005. 2. 15. 01:00
반응형

<     >

 

4.1 NFS(Network File System)란?

4.2 NFS 선행조건

4.3 NFS 서버구성

4.3.1 mount

4.3.2 /etc/exports의 설정

 4.4 NFS 테스트

 4.5 NFS 클라이언트

 4.6 마운트 정보

 4.7 마운트 해제

 

 

4.1 NFS란?

Network File System (NFS)은 썬 마이크로 시스템(SUN)에서 네트워크를 통해 파일을 공유할 수 있도록 만든 프로토콜 이다. NFS는 하드웨어, 운영체제 또는 네트워크 구조가 달라도 파일을 공유 할 수 있도록 고안되었다. 파일 공유등을 비롯해 다른 부가 기능을 제공한다. 하지만 공유된 파일들에 대한 보안 문제가 생길 수도 있다. 사용하는 프로토콜은 Network Lock Manager (NLM)과 Network Status Monitor (NSM)이다.

기능상 삼바와 비슷하지만 가장 큰 차이는 커널에서 NFS를 지원한다는 점이다.

NFS는 리눅스머신에서 윈도우 파티션을 마운트하여 사용하듯 NFS서버의 특정 디렉토리를 클라이언트에서 마운트하여 자신의 영역인것처럼 사용한다.

그러나 위와 같은 편리한 점에도 불구하고 보안상 많은 취약점을 드러내고 있다. 가장 단적인 예로 클라이언트인양 속여서 서버에 접속하게 되면 특정 디렉토리를 마음대로 조작할 수 있는 단점이 있다.

NFS는 스토리지가 고가였던 시절 디스크가 없는 시스템을 지원하기 위하여 개발되었으나 스토리지 및 컴퓨터의 성능이 좋아지면서 파일 공유 및 파일 서버를 위한 방법으로 사용되고 있다.

 

4.2 NFS 선행조건

기본적으로 커널에서 지원을 해주어야 한다. 물론 최근에 나오는 리눅스 배포판들은 이미 지원이 되고 있으므로, 아무런 걱정없이 NFS를 사용할 수 있다.

portmap 설치역시 NFS를 사용하기 위해서 필수적인 프로그램이다. portmap은 포트요청이 있을 때 새로운 포트를 할당해주고 맵핑해주는 역할을 하게 된다. 즉, NFS에 접근한 시스템이 있으면 NFS 포트에서는 인증을 하고 파일을 주고 받는 포트는 새로운 포트를 할당을 하게 되는 것이다.

NFS는 웹서버나 FTP 서버와는 다르게 데몬 프로세스가 특정 네트워크 포트를 점유하면서 동작하여 접속을 대기하고 있는 것이 아니라 portmapper 라는 프로그램을 이용해서 네트워크 포트를 할당 받는다. portmapper는 111번 포트를 점유하면서 데몬 상태로 대기하고 있다가 NFS 서비스를 요구하는 접속이 들어오면 nfsd(또는 rpc.nfsd)에게 포트 번호를 바꾸어 접속을 연결시켜 준다. 

 

4.3 NFS서버 구성

다음은 서버의 구성을 그림으로 나타내어 보면 다음과 같다.

 구분

 

서버

 

클라이언트

호스트명

mmx

ns

용도

NFS 서버

NFS 클라이언트

공유 디렉토리

/data

/nfs

Ip

192.168.0.2

192.168.0.4

mmx에서는 data라는 디렉토리를 공유시키고, ns에서는 nfs라는 이름으로 data 디렉토리를 마운트시킬 것이다. 그러면, 다음과 같은 구성을 하는데 있어 필요한 사항들에 대해 알아보도록 하자. 현재 mmx의 data 디렉토리에는 다음과 같은 파일이 있으며, /etc/exports에는 해당 디렉토리를 서비스하도록 설정되어 있다.

 

ex) [root@mmx /] cat /etc/exports 

      

     /data 192.168.0.*(rw) 

 



 

 

4.3.1 mountd

클라이언트로부터의 마운트 요청을 처리하는 데몬으로 /etc/exports의 내용을 읽어 어떤 호스트에게 마운트를 허가하고 어떤 제한을 주어야 하는지 판단하게 된다.

  [root@mmx /etc]# cat exports

/data 192.168.0.*(rw)

[root@mmx /etc]#    

exports파일은 마운트될 디렉토리와 허가 대상, 제한을 명시하며 또한 NFS클라이언트는 서버의 exports파일을 사용하기 이전에 명확하게 허가된 파일 또는 디렉토리를 마운트 해야 한다. 서버에서는 마운트를 허가해주기 이전에 인증을 거쳐 올바른 사용자인지를 판단하며 이를 masic cookie라고 합니다.

리눅스는 BSD와 비슷한 동작을 취하게 되는데, 그 동작은 mountd는 클라이언트의 요청이 있으면 /etc/exports의 내용을 읽어 호스트에 접속을 허가하고 디렉토리에 제한을 두게 되는 것이다.


 

4.3.2 /etc/exports의 설정

exports의 설정은 라인단위로 처리하게 됩니다. 즉 하나의 라인이 하나의 디렉토리 공유를 표시하게 됩니다. 다음은 각 필드별 설명이다.

첫 번째 필드 : 제공할 디렉토리의 절대 경로입니다. 위의 예제에서는 /data가 된다.

두 번째 필드 : 허가할 사용자 목록(속성)으로 위의 예제에서는 192.168.0.에 속해 있는 모든 호스트에게 허용하게 된다.

 

허가할 사용자 목록 형식은 다음과 같습니다.

호스트 네임 형식 : mmx ns2

도메인 네임 형식 : *.zero.com

주소 형식 : 192.168.1.*

 

마지막으로 ()에 묶여있는 속성이다.
속성에는 다양한 설정을 부여할 수 있으며, 보안에 매우 민감한 사항이므로 항상 유의하여야 한다.

 성

 능

Ro

읽기전용

Rw

읽기 / 쓰기 가능

Root=n

n으로 표시된 계정의 UID를 루트권한으로 사용 가능하게 한다.

Insecure

이 머신에서 인증 받지 않은 억세스를 허용한다.

Unix-rpc

이 머신에서 UNIX-도메인 RPC 인증절차를 요구한다. 이것은 단순히 예약된 인터넷 포트에서 일어나는 request를 필요로한다. (즉, 포트번호는 1024 아래여야 한다.) 이 옵션은 디폴트로 켜져있다.

secure-rpc

이 머신에서 secure RPC 인증절차를 요구한다. 이것은 아직 수행되지 않는다. Secure RPC에 관한 Sun의 문서를 보라.

Kerberos

이 머신에서의 억세스에 kerberos 인증절차를 요구한다. 이것 역시 아직 수행되지 않는다. Kerberos 인증 시스템에 관한 MIT의 문서를 보라.

root_squash

이것은 클라이언트 호스트의 uid 0에서의 request를 서버의 uid 65534(-2)로 매핑함으로써, 지정된 호스트의 슈퍼 유저의 억세스를 거부하는 보안기능이다. uid 65534는 유저 nobody의 것이다.

no_root_squash

uid 0으로부터의 request를 매핑하지 않는다. 이것은 디폴트로 켜져있다.

link_relative

절대 심볼릭 링크(링크의 내용이 슬래쉬로 시작하는)를, 링크를 포함하는 디렉토리에서 서버의 루트 디렉토리까지 필요한 수 만큼의 ../를 앞에 붙여 상대 링크로 변환한다. 이 옵션은 오직 호스트의 전체 파일 시스템을 마운트 할 때만 쓸만한 것이지, 그렇지 않을 경우 어떤 링크는 어느 곳도 지시하지 않을 수 있고, 심하면 가리키려 의도하지 않던 파일을 지시하는 수도 있다. 이 옵션은 디폴트로 켜져있다.

link_absolute

모든 심볼릭 링크를 그대로 놔둔다. (Sun에서 제공하는 NFS 서버에선 보통의 동작방식이다).

map_identity map_identity

클라이언트가 서버와 동일한 uid와 gid를 사용한다고 가정하라고 서버에게 말해준다. 이 옵션은 디폴트로 켜져 있다.

map_daemon

이 옵션은 NFS 서버에게 클라이언트와 서버가 동일한 uid/gid를 공유하지 않음을 가정하라고 말한다. 그러면 nfsd는 클라이언트의 ugidd 데몬에 쿼리하여 클라이언트와 서버간의 id를 매핑한 목록을 생성한다.

위의 예제에서는 (ro)속성만을 주었다.

여기까지 했다면, NFS서버에 해당 사항을 전달해주어야 한다.
그러한 명령어가 exportfs이며 반드시 실행해 주어야만 NFS가 제대로 동작한다.

만약 exports에 공유에 관한 설정이 존재하지 않느다면 NFS데몬은 정상적으로 설치되어있어도 동작하지 않는다.

리고 확실하게 하기 위해 NFS데몬을 재기동 한다.

 

ex) [root@mmx /root]# exportfs

/data                     192.168.0.*

[root@mmx /root]# /etc/rc.d/init.d/nfs restart 

done.rting NFS services: rpc.mountd                     [OK]

 

4.4 NFS 테스트

NFS테스트는 자기자신을 마운트해봄으로써 확인할 수 있다.

mount명령을 통해 마운트를 하였을 때 아무런 메시지가 표시되지 않는다면 성공한 것이다.

명령은 다음과 같다.

# mount   -t   nfs   호스트명(혹은 ip):/공유디렉토리  /마운트포인트

 

ex) [root@nmx /root]# mount -t nfs 192.168.0.0:/data  /root/nfs

 

일반적으로 성공하지 못하는 경우는 nfs에 관련된 데몬(portmap, nfsd, mountd)에 문제가 발생하였다고 볼 수 있다. 이 경우에는 각 데몬들이 제대로 동작하는지 먼저 체크해 보아야 합니다.

 

4.5 NFS 클라이언트

nfs 마운트 형식은 위의 형식을 그대로 사용해도 되며, 만일, 부팅시 마운트를 시키려고 한다면 /etc/fstab에 등록함으로써 가능하다. 일반적으로 하드디스크가 필요없는 시스템을 구축하는 경우에도 바로 파일시스템 자체를 NFS로 구성하는 것이 가능하다. 즉 부팅과 동시에 NFS데몬이 가동되면서 네트워크에 있는 하드디스크를 자신의 하드디스크 인것처럼  NFS를 사용해 공유하는 것이다.


 

 mount를 이용할 경우

mmx의 data디렉토리를 ns에서 /nfs라는 디렉토리로 마운트 시킬 경우 다음과 같은 명령으로 마운트시킬 수 있다.

 

ex) [root@ns /root]# mount -t nfs 192.168.0.2:/data/nfs

 

# mount -t nfs 192.168.0.2:/data /nfs

만일 부팅때부터 마운트되도록 하려면 /etc/fstab 파일을 수정해야 하는데 기본적인 내용을 살펴보면

다음과 같다.

  LABEL=/                 /                       ext2    defaults        1 1

/dev/cdrom              /mnt/cdrom              iso9660 noauto,owner,ro 0 0

/dev/fd0                /mnt/floppy             auto    noauto,owner    0 0

none                    /proc                   proc    defaults        0 0

none                    /dev/pts                devpts  gid=5,mode=620  0 0

/dev/hda5               swap                    swap    defaults        0 0

 


 

다음의 내용에 추가하면 되고, 추가하는 형식은 다음과 같다.

호스트명(ip주소):/공유디렉토리   /마운트포인트   nfs(파일시스템)   옵션   덤프   점검여부

 

실제적으로 적용시 내용은 다음과 같습니다.

192.168.0.2:/data       /nfs      nfs     bg,soft,rw      0 0

위의 내용은 192.168.0.2의 data디렉토리를 /nfs디렉토리로 마운트 하되 파일시스템은 nfs이며 백그라운드로, 소프트타입으로, 읽기쓰기가 가능하도록하며 부팅시 파일시스템 점검은 하지않도록 설정한 것이다.

 

마운트 옵션을 살펴보면 다음과 같다.

 션

 능

suid, nosuid

보안상 원격파일 시스템에서 suid모드보다는 nosuid모드가 권장된다.

Bg

nfs 마운트가 처음에 실패할 경우 백그라운드 상태에서 계속 시도하게 되는 것으로 원격파일시스템이 허용되지 않을 경우 부트 시간을 단축시킨다.

Retry=n

포기할 때가지의 마운트 시도횟수로 기본은 100000이다.

timeo=n

타임아웃 시간을 설정한다.

retrans=n

n번 요구를 재전송하는 것으로 기본은 3번이다.

soft,hard

재시도 횟수가 끝이 났을 때 연결을 계속할지 말지를 결정한다.  읽기전용으로 마운트될 경우엔 soft가, 읽기/쓰기가 가능하도록 마운트될 경우엔 hard가 적합하다. soft로 마운트된 파일시스템은 프로세스가 멈추어지는 문제를 피할 수도 있다.

Intr

정지 프로세서를 죽이기 위한 인터럽트를 허용한다. 터미널에 대해 CTRL-C를 누르고 백그라운드 프로세스인 경우 INT(2) 혹은 QUIT(3) 신호를 보내면 다시 동작된다.

resize=n

nfs서버에 있는 읽기 버퍼의 크기(바이트단위)

wsize=n

nfs서버에 있는 쓰기 버퍼의 크기(바이트단위)

 

4.6 마운트정보

마운트 정보를 보기 위해서는 다음과 같이 showmount로 확인할 수 있습니다.

  [root@ns /root]# showmount 192.168.0.2

Hosts on 192.168.0.2:

192.168.0.2

192.168.0.4

[root@ns /root]#

현재 192.168.0.2에 NFS로 접속한 호스트는 자기 자신과 192.168.0.4번이라는 것을 확인할 수 있다.

 

4.7 마운트의 해제

마운트의 해제는 umount로 해당 마운트 포인트를 지정함으로써 해제할 수 있다.

 

 


 

 

반응형
Posted by [PineTree]
OS/LINUX2005. 2. 15. 00:57
반응형
NFS설정하기 (Linux -> HPUX)
 
1. rpcinfo -p HOSTIP 로 체크 (Client -> Server)
 
2. nfsconfig 화일 수정
/etc/rc.config.d/nfsconf
NFS_CLIENT=0
NFS_SERVER=1              <-----  0을 1로 수정한다.
NUM_NFSD=16
 
3. export 화일을 생성하여 공유할 디렉토리를 지정한다.
 
pc1:[/etc/net] vi /etc/exports
"/etc/exports" 1 line, 34 characters
/public  -ro
 
 EXAMPLES
      /usr/games cocoa fudge              # export to only these machines
      /usr       -access=clients          # export to my clients
      /usr/local                          # export to the world
      /usr2      -access=bison:deer:pup   # export to only these machines
      /var/adm   -root=bison:deer         # give root access only to these
      /usr/new   -anon=0                  # give all machines root access
      /usr/temp  -rw=ram:alligator        # export read-write only to these
      /usr/bin   -ro                      # export read-only to everyone
      /usr/stuff -access=bear,anon=-2,ro  # several options on one line
      /usr/subnet -access=@mysubnet    #use mysubent in /etc/networks
      /usr/subnet1 -access=@192.5          #clients must be in the 192.5.0.0 subnet
      /usr/domain -access=.myd.myc.com #clients must be in .myd.myc.com
      /usr/restrict -access=-host1.myd.myc.com:sales # disallow -host1 in the sales netgroup.
~
~
4. nfs관련 데몬을 Restart한다. (생성된 exports화일을 읽어오기위하여)
pc1:[/etc/net] /sbin/init.d/nfs.server restart
usage: /sbin/init.d/nfs.server {start|stop}
 

pc1:[/etc/net] /sbin/init.d/nfs.server stop
killing nfsd
killing rpc.mountd
pc1:[/etc/net] /sbin/init.d/nfs.server start
    starting NFS SERVER networking
   
    starting up the rpcbind daemon
        rpcbind already started, using pid: 544
    Reading in /etc/exports
    starting up the mount daemon
        /usr/sbin/rpc.mountd
    starting up the NFS daemons
        /usr/sbin/nfsd 16
    starting up the Status Monitor daemon
        /usr/sbin/rpc.statd
    starting up the Lock Manager daemon
        /usr/sbin/rpc.lockd
pc1:[/etc/net]
 

5. client쪽 /etc/fstab 수정
7. client쪽  /etc/hosts에 서버 등록
6. mount -t nfs pc1:/public /public  혹은 mount -a
 
최종 완료
 
 
 
 
 
 
반응형
Posted by [PineTree]
OS/LINUX2004. 11. 24. 18:43
반응형

리눅스 표준 디렉토리의 구조의 확립

 

유닉스 시스템 또는 유닉스에서 유래한 UNIX-like 시스템들은 다향한 형태로 발전해 왔고 ,

필연적으로 환경을 통합하기 위한 표준화 노력이 있어 왔습니다.

이것은 리눅스에 있어서도 마찬가지로 표준파일시스템 체계 개발은 리눅스의 파일과 디렉터리

구조를 재구성하려는 노력과 함께 1993년 8월에 시작되었고,

FSSTND(Linux Filesystem Structure Standard_이 1995년 2월 14일에 발표되었습니다.

그리고 1995년 초, DSD개발 커뮤니티 구성원들의 도움으로 리눅스 뿐만 아니라

UNIX-like 시스템들을 아우르는 보다 포괄적인 버전을 개발하는 목표가 채택되고,

개발 끝에 파일시스템 체계 표준(FHS, Filesystem Hierarchy Standard)이라는

새로운 버전의 표준이 탄생하게 되었습니다.

이런 표준안이 어떤 강제력을 지니고 있는 것은 아니지만

대부분의 리눅스 배포판이 이를 따르고 있습니다.

 

 

리눅스 표준 디렉토리의 구조

 

/

모든파일 시스템이 연결되는 루트 디렉토리

/bin

주요한 명령어 바이너리 파일들. 시스템과 자체와는 직접적인 관련성이 적으면서 기본이되는프로그램들이 존재한다. 이것들은 대체로 일반 사용자들도 사용할 수 있는 기본 명령 파일들이 위치한다. 그렇지만 mount 등 root만 사용 할 수 있는 명령어들도 존재한다. 그래서, 이곳의 파일들은 기본적으로 파일 시스템에 관련된 것이나 시스템 정보에 관한 것들이 위치하게 된다.

/boot

부트로더를 위한 고정 파일들이 위치하는 디렉토리. 커널과 부팅 관련 파일들이 존재한다.

/dev

시스템의 장치 파일들이 위치하는 디렉토리

/etc

시스템의 환경 설정에 관계된 파일들이 위치하는 디렉토리

/home

사용자들의 홈 디렉토리로 사용된다.

/lib

주요한 공유 라이브러리들과 커널 모듈들이 위치하는 디렉토리

/mnt

파일시스템을 임시로 마운트하기 위한 마운트 포인트 디렉토리

/opt

추가된 어플리케이션 패키지들을 위한 디렉토리

/root

root 사용자의 디렉토리

/sbin

주요한 시스템 바이너리 파일들. 슈퍼유저만이 쓸 수 있는 기본 명령 파일들이 위치한다. 이곳의 파일들은 대부분 시스템에 직접적으로 연관성이 있어 보안이 필요한 것들이다.

/tmp

임시 작업 디렉토리. X Window버퍼링이 일어나기도 하며, 프로그램 설치시에 임시 작업 공간이기도 하다.

/usr

이 아래에서 다시 파일 시스템 체계가 이루어지며, 리눅스의 대부분의 파일들이 위치하게 된다. 공유해서 사용해야 하는 프로그램이나 문서들이다.

/var

내용이 수시로 바뀔 수 있는 파일들이 위치한다.(예: 시스템 로그 파일, 메일 파일등).

 

 

 

 

표준 파일시스템 구조에 포함되지는 않았지만 중요한 파일 시스템들

 

 

/proc 가상 파일 시스템으로 현재 시스템의 상태를 나타내는 정보들이 위치한다.
/lost+found

파일 시스템에 문제가 생길 경우 fsck를 이용해 검사하게 되는데, 손상된 자료를 이 디렉토리에 연결한 수 수정한다. 이 디렉토리는 mount 에 의해 연결되는 mount point마다 하나씩 존재하게 된다.

 

 

 

 

 

 

<문서 출처 : 사이텍미디어 / 리눅스, 너만 모른다 / 저자:강기봉>

반응형

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

LINUX : NFS 설정하기.  (0) 2005.02.15
[펌] NFS설정하기 (Linux -&gt; HPUX)  (0) 2005.02.15
[펌] sar 이용하여 시스템 모니터링하기  (0) 2004.09.20
[펌] sar (system activity reporter)  (0) 2004.09.20
[펌] NFS(Network File System)  (0) 2004.09.10
Posted by [PineTree]
OS/LINUX2004. 9. 20. 19:05
반응형

1. sysstat 웹 사이트 http://perso.wanadoo.fr/sebastien.godard/

 

2. sar는 redhat 7.x 에 기본 들어있는 sysstat 패키지에 있는 프로그램이다. sar 프로그램은 시스템의 다양한 활동에 대하여 모니터링을 할 수 있는데 모니터링 대상이 상당히 넓은 편이다. 기본값은 CPU 활동에 대한 통계를 출력한다. sar는 각종 활동에 대한 통계를 다른 프로그램을 이용하여 파일로 저장하고 통계치를 출력할 수 있는 기능을 제공한다.

 

3. sar에서 모니터링 가능한 항목은 다음과 같다.

 

- I/O 전송량
- 페이징
- 프로세스 생성 숫자
- 블락 디바이스 활동
- 인터럽트
- 네트워크 통계
- run 큐 및 시스템 부하 평균
- 메모리와 스왑 공간 활용 통계
- 메모리 통계
- CPU 이용도
- 특정 프로세스에 대한 CPU 이용도
- inode, 파일, 기타 커널 테이블에 대한 상태
- 시스템 스위칭 활동(context switch)
- 스와핑 통계
- 특정 프로세스 통계
- 특정 프로세스의 자식 프로세스 통계
- TTY 디바이스 활동

 

4. sar 설정하기

 

# cat /etc/cron.d/sysstat
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A

 

sa1 는 매10분마다 시스템모니터링한 결과를 /var/log/sa/saxx 파일에 바이너리 형태로 기록한다. xx는 기록하는 날짜이다. sa2 -A 는 23시 53분에 바이너리 파일을 읽어서 사람이 편하게 볼 수 있도록 보고서를 만든다. /var/log/sa/sarxx 형태로 기록된다. sa1 에서 5 3 이라고 해놓으면 매 10분마다 실행을 하면서 5초동안 3번을 기록한다는 뜻이다. 그러면 매10분마다 15번의 기록이 남는다. sa2 에서 -A는 모든 데이터를 보는 것인데 실제로는 자신에게 필요한 내용만 옵션을 이용하여 뽑아서 보는 것이 편할 것이다.

man 페이지의 예를 참고하면 된다.

 

# 8am-7pm activity reports every 10 minutes during weekdays.
0 8-18 * * 1-5 /usr/lib/sa/sa1 600 6 &
# 7pm-8am activity reports every an hour during weekdays.
0 19-7 * * 1-5 /usr/lib/sa/sa1 &
# Activity reports every an hour on Saturday and Sunday.
0 * * * 0,6 /usr/lib/sa/sa1 &
# Daily summary prepared at 19:05
5 19 * * * /usr/lib/sa/sa2 -A &

 

서비스에 따라 다르겠지만 sa2 에서 자세히 보아야 할 부분들은 다음과 같다. -r 메모리 및 스왑 스페이스 사용현황, -u CPU 활용량, -W 스와핑 상황. -q load average

 

# sar -ruW -f sa27 3600  -> 메모리, cpu, 스왑 레포트를 sa27에서 만들며 3600초(1시간) 기준으로 만든다.
# sar -r -f sa25 1800 -s 08:00:00 -e 19:00:00 -> 오전 8시부터 저녁 19시가지 30분간격으로 메모리 모니터링

 

sar -r -f sa07 | awk 'NF > 0' | grep -vi linux | grep -v memfree | grep -vi average | awk '{printf "%s %s => used : %d / buffer : %d / cached : %d / used-buffer-cache : %d MB\n", $1,$2,$4, $7, $8, $4-$7-$8}' => 메모리 확인하는 경우 스크립트를 이용해 쉽게 확인

 

스왑아웃

 

- vmstat를 이용하여 CPU와 I/O 활동을 모니터링할 수 있는데 vmstat에서 나오는 첫 줄은 부팅 이후의 각 통계치에 대한 평균값을 보여주므로 무시하고 두 번째 줄부터 통계를 보면 된다. vmstat에서 중요한 것은 procs 영역의 b 필드이다. r은 현재 실행중인 프로세스 수이고 b는 인터럽트가 불가능한 sleep 상태에 있는 프로세스로 I/O 처리를 하는 동안 블럭 처리된 프로세스이며 w는 강제로 스왑아웃된 프로세스 수이다. si와 so는 스왑인, 스왑아웃을 말한다.

 

- 스왑아웃이 지속적으로 발생한다면 메모리가 부족한 것이다. 그러나 일정 간격을 두고 주기적으로 스왑아웃이 발생하는 것은 정상적인 일이다. BSD 시스템에서는 비상호 대화적인 작업을 스왑아웃 한다. 현재 실행하고 있는 프로그램에서 스왑아웃이 계속 발생한다면 프로그램이 멈출 수도 있으며 심각하게 메모리가 부족하다는 것을 의미한다. 스왑아웃필드(so)는 항상 0에 가까워야 한다. 그렇지 않다면 프로세스들은 가상 메모리를 놓고 경쟁하게 되며 시스템은 페이징 상태가 된다. 페이징 활동은 심각한 가용 메모리(free)의 부족과 직접적인 관련을 가지며 간접적으로는 시스템의 높은 CPU 사용 시간 비율(sy)과 관련이 있다. 프로세스가 시작할 때 항상 이미지와 데이터를 page-in 해야 하므로 page-in 열에서 높은 숫자가 항상 심각한 것은 아니라는 사실은 기억하고 있어야 한다.

 

- 시스템에서 사용하는 시간이 지나치고 높으면(50퍼센트 이상) 디스크 I/O에서 문제가 있을 가능성이 크다. 시스템 전체의 부하가 높은데 CPU에서 휴지시간(idle time, id 항목)이 일반적으로 10퍼센트를 넘는다면 I/O나 메모리에 문제가 있을 가능성이 크다. 휴지시간(id)이 항상 0이라면 CPU를 100퍼센트 사용하고 있는 상태이다. CPU의 기능을 최대한 활용하는 것은 좋은 현상이다. 그런데 항상 100퍼센트로 활용중인 상태라면 어떤 작업이 계속 축적되고 있다는 것이며 CPU가 과부하를 가진다는 의미한다. 이 때는 CPU를 계속 사용하고 있는 프로세스를 찾아야 하며 디스크의 활동이 분산되지 않았다면 I/O 작업을 효율적으로 분산시켜야 한다.

 

- 대부분의 사용자가 vmstat에서 si, so(스왑인, 스왑 아웃)를 주로 보고 id가 넉넉하면 시스템에 무리가 없는 것으로 생각한다. 이는 시스템의 상황에 대해서 잘못 파악할 가능성이 많은 것으로 b의 수치가 높은 경우 I/O작업을 위해 CPU가 계속 대기 상태로 있는 경우이다. 이런 경우에는 디스크 I/O 문제를 확인해야 한다.

반응형

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

[펌] NFS설정하기 (Linux -&gt; HPUX)  (0) 2005.02.15
[펌] 리눅스 표준 디렉토리 구조  (0) 2004.11.24
[펌] sar (system activity reporter)  (0) 2004.09.20
[펌] NFS(Network File System)  (0) 2004.09.10
VI Editor  (1) 2004.06.02
Posted by [PineTree]
OS/LINUX2004. 9. 20. 19:01
반응형

CPU

 

[sar -q ] 프로세스에 대한 정보

 

SunOS fqrc 5.7 Generic_106541-19 sun4us    06/04/04

17:58:37 runq-sz %runocc swpq-sz %swpocc
17:58:42     1.0      20
17:58:47
17:58:52
17:58:57     5.0      20
17:59:02

Average      3.0       8

 

runq>3 또는 %runocc > 90 또는 runq > 10

-> CPU 부하가 높다.

 

일반적으로 runq-sz가 2보다 크고 동시에 %runocc 가 90이상이라면 CPU에 대한 부하가 커지고 response가 저하될수도 있다.

이것은 CPU할당을 기다리는 프로세스가 매우 많아 시스템의 response 에 미치지 못함을 나타낸다.

 

swpq 가 2보다 큰 경우는 메모리 부족을 생각할수 있다.

 

runq-sz 메모리상에서 실행가능한 프로세스의 실행큐 수

%runocc 실행큐가 점유되어 있는 시간의 비율

swpq-sz 스왑아웃되어 있는 실행가능한 프로세스의 실행큐수

%swpocc 스왑아웃되어 있는 실행큐가 점유되어 있던 시간의 비율

 

메모리

 

[sar -r] 빈메모리 정보에 대해서 리포트


18:08:37 freemem freeswap
18:08:42    2913  6228086
18:08:47    2964  6339745
18:08:52    2963  6352258
18:08:57    2964  6352335
18:09:02    2965  6352335

실제 freemem 산정방법

freemem(2913) x pagesize(8192) = 23863296 byte (23Mbyte)

 

실제 freeswap 산정방법

freeswap(6228086) x blocksize(512) = 3188780032 (3.2Gigabyte)

 

freemem값이 작다 ->

메모리 부족가능성

 

메모리 부족문제는 -q,-g,-w,-u 옵션의 결과도 비교해서 조사한다.

freemem이 작은 경우는 메모리 부족의 가능성이 있다. 이 값이 대단히 작은 경우에는 sar -k f로 커널 메모리 leak 가 발생하지 않도록 체크가 필요하다.

sar -r 로 표시된 freemem치에 여유가 있어도, swap -s 커맨드로 표시되는 available block 값이 0이하로 되면 swapping 영역부족이 발생할 우려가 있다.

 

freemem 유저 프로세스가 사용가능한 페이지의 평균치 (4K byte or 8k byte)

freeswap 프로세스의 스와핑에 이용 가능한 디스크 블록수 (512 byte)

 

 

[sar -p]: pagein 상황리포트 


18:12:38  atch/s  pgin/s ppgin/s  pflt/s  vflt/s slock/s
18:12:43    0.00    0.00    0.00  134.99  283.30    0.00
18:12:48    0.00    0.00    0.00  117.50  248.11    0.00
18:12:53    0.60    0.00    0.00  293.84  382.50    0.00
18:12:58    0.40    0.00    0.00  181.11  353.68    0.00
18:13:03    0.40    0.20    0.20  157.34  316.47    0.00

Average     0.28    0.04    0.04  176.95  316.81    0.00

 

vflt/s > 50 ->

메모리 부족 및 메모리 Inode 부족가능성

 

vflt/s는 유효한 page address 를 가상공간내에서 발견하지 못한 경우에 발생한다.

vflt/s 가 50이상이로 sar -g 결과, pgfree/s 가 5 이상인 경우 메모리가 부족할 가능성이 있다.

이것은 비어있는 페이지를 찾는데 시간이 걸리기 때문이다.

또한 sar -u,sar -w 및 sar -r 을 사용하면 메모리가 bottleneck 쌍태로 되어있지 않은가를 확인할

수있다.

 

평가기준

 

atch/s 메모리내의 페이지를 재요구함으로써 해소되는 페이지 결함(fault)수/초

pgin/s 페이지인 요구의 평균 수 /초

ppgin/s 페이지인 된 평균 페이지 수 /초

pflts/s 보호 에러에 기인한 페이지 결함(fault)수/초

vflt/s 어드레스 변환 페이지 fault 수 /초

slocak/s 물리 I/O를 요구하는 software lock 에 의한 fault 수/초

 

[sar -g]: pageout 상황리포트 

 

18:13:43  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf
18:13:48     0.00     0.00     0.00     0.00     0.00
18:13:53     0.20     0.20     0.20     0.00     0.00
18:13:58     0.40     0.60     0.20     0.00     0.00
18:14:03     0.20     0.60     0.60     0.00     0.00
18:14:08     2.98     6.36     4.57     0.00     0.00

Average      0.75     1.55     1.11     0.00     0.00

 

pgfree/s > 5 or pgscan/s >5 ->

메모리 부족가능성이 있다.

 

sar -g 커맨드는 Pageout 상황을 리포트 한다.

pgfree/s 나 pgscan/s 가 5를 초과하는 경우는 메모리 부족가능성

 

페이지 데몬은 메모리의 내용을 디스크 장치에 쓰고 해방할 수 있는 메모리르 찾는다.

이 데몬은 빈 메모리량이 적어짐에 따라 빈번하게 동작하게 되며, 시스템의 실행 프로세스의 대부분이 페이징 동작에 점유되어 버림으로써 Bottleneck 이 된다.

이 경우는 sar -p, sar -u, sar -r 과 sar -w 등으로 메모리 부족을 판단하면 된다.

 

pgout /s 시스템에 요구된 페이지 아웃의 평균요구수/초

ppgout/s 페이지아웃된 평균 페이지수/초

pgfree/s 페이지데몬에 의해 freelist에 추가된 평균논리 페이지수/초

pgscan/s 페이지 데몬에 의해 스캔된 평균논리 페이지수/초

%ufs_ipf 메모리상의 빈 페이지로부터 i노드를 획득한 비율

 

swapping & process switch

 

[sar -w] 페이지아웃상황을 리포트

18:18:54 swpin/s bswin/s swpot/s bswot/s pswch/s
18:18:59    0.00     0.0    0.00     0.0     335
18:19:04    0.00     0.0    0.00     0.0     313
18:19:10    0.00     0.0    0.00     0.0     275
18:19:15    0.00     0.0    0.00     0.0     297
18:19:20    0.00     0.0    0.00     0.0     298

Average     0.00     0.0    0.00     0.0     303

 

swpot/s > 1.0 -> 

메모리 부족

 

swpot/s 가 1을 초과한 경우는 시스템은 심각한 메모리 부족 상태인 것을 나타낸다.

그러나 이 결과만으로는 bottleneck 의 측정이 불가능하므로 다시 sar -g , sar -r 등의 결과를 고려한다.

이 결과 메모리 부족이 확실한 경우는 버퍼 공간의 삭감 또는 메모리의 증설이 필요하다.

버퍼공간을 줄임으로써 메모리상에 존재할 수 있는 페이지를 제한할 수가 있으므로 프로세스에 메모리를 할당할 수 있게 된다. 그러나 스왑아웃이 빈번히 발생하고 있는 경우는 메모리의 증설이 필요하다.

또, pswch/s 가 클수록 프로세스 스위치에 의한 오버헤드가 커지는 것을 알수있다.

 

swpin/s  swapin의 횟수/초

bswin/s swapin에의해 전송된 page수/초

swpot/s swapout의 횟수/초

bswot/s swapout을 위해 page 전송된 블록수/초

pswch/s 프로세스 스위치 횟수/초

 

디스크

 

[sar -d] 디스크 사용상황

18:22:26   device        %busy   avque   r+w/s  blks/s  avwait  avserv

18:22:27   fd0               0     0.0       0       0     0.0     0.0
           nfs1              0     0.0       0       0     0.0     0.0
           sd0               2     0.0       1      15     0.0    17.1
           sd0,a             0     0.0       0       0     0.0     0.0
           sd0,b             0     0.0       0       0     0.0     0.0
           sd0,c             0     0.0       0       0     0.0     0.0
           sd0,d             0     0.0       0       0     0.0     0.0
           sd0,e             0     0.0       0       0     0.0     0.0
           sd0,f             2     0.0       1      15     0.0    17.1
           sd1               0     0.0       0       0     0.0     0.0

%busy > 60 -> 디스크 부하가 크다.

%busy 값이 특정 디스크에 편중되어 있다. -> 디스크의 부하가 편중되어 있다.

 

%busy 가 60을 초과한 경우는 그 디스크 장치의 부하가 매우 높은 상태임을 나타낸다.

또한 %busy 가 각 디스크 장치간에 편중되어 있는 경우는 특정 디스크 장치에 대한 부하가 높은 상태임을 알수 있다. 이 경우는 디스크 장치상의 각 파일 시스템의 구성을 변경하여 특정 디스크에 부하가 집중되지 않도록 디스크내의 데이터를 다른 디스크에 분산시키는 것이 가능한가 검토해 볼 필요가 있다.

 

또한 sar -g, sar -p 등을 실행한 결과 페이징이 자주 발생한다면 메모리 증설하여 디스크 장치에 대한 입출력 동작을 감소시키도록 한다.

 

%busy 값이 적고 avserv가 큰 경우에는 시스템이 정기적으로 sync를 실행한 결과, 변경된 블록의 디스크에 쓰기(write)를 지연없이 실행하고 있다고 생각한다.

 

%busy 디바이스가 전송요구 서비스에 소비한 시간의 비율

avque 실행을 기다리고 있는 요구의 평균수

r+w/s 디바이스에 대한 read/write 의 전송횟수/초

blks/s 디바이스에 전송된 블록수/초 (512바이트/블록)

avwait 전송요구가 queue상에서 기다리고 있는 평균시간(milisecond)

avserv 전송요구가 디바이스로부터 서비스를 받은 평균시간(milisecond)

 

 

시스템 호출

 

[sar -c] 시스템 호출 발생상황

 

일관되게 exec/s > fork/s x3 ->

환경변수 PATH의 내용이 효율적이지 않다.

 

1회의 읽기/쓰기 전송바이트 <  8Kbyte ->

시슽ㅁ 호출 발행을 위한 오버헤드가 커진다.

 

일관되게 exec/s 가 fork/s 의 3배 이상인 경우는 환경변수 PATH의 순서가 자주 사용하는 순서로 되어 있는 가를 조사할 필요가 있다. 단 exec/s 는 쉘 스크립트 실행의 경우에 증가한다.

일반적으로 read와 write 시스템 호출의 합계는 시스템 호출총수의 약 절반이 된다.

단, 그 비율은 시스템이 실행하는 동작에 비해 크게 다르다. 1회당 전송 바이트수가 8K 바이트보다 작은 경우, read와 write 시스템 호출의 발행을 위한 오버헤드가 커진다.

이러한 경우는 큰 파일을 작은 단위로 액세스하고 있는 할당의 유무를 조사하여 액세스 크기를 8K 바이트 이상으로 하는 편이 낫다.

 

전송바이트 계산식

read 전송바이트 수 = rchar/s / sread/s

write 전송바이트 수 = wchar/s / swrit/s

 

scall/s 발행된 전체 시스템 호출수/초

sread/s read 시스템 호출 발행횟수/초

swrit/ write 시스템 호출 발행횟수/초

fork/s fork시스템 호출 발행횟수/초

exec/s exec 시스템 호출 발행횟수/초

rchar/s read 시스템 호출이 전송한 문자수 (바이트수) /초

wchar/s write 시스템 호출이 전송한 문자수 (바이트수) /초

 

 

 

 

반응형

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

[펌] NFS설정하기 (Linux -&gt; HPUX)  (0) 2005.02.15
[펌] 리눅스 표준 디렉토리 구조  (0) 2004.11.24
[펌] sar 이용하여 시스템 모니터링하기  (0) 2004.09.20
[펌] NFS(Network File System)  (0) 2004.09.10
VI Editor  (1) 2004.06.02
Posted by [PineTree]
OS/LINUX2004. 9. 10. 22:35
반응형

NFS(Network File System)

1. what's NFS

1980년대 중반에 SUN에서 개발되어 현재 여러 운영체제에서 지원되는 서비스로 서버의 리소스를 클라이언트 상에서 마치 지신의 리소스를 사용하는 것과 같이 사용할수 있게 제공되어 지는 것이다. NFS가 일단 설치되면 클라이언트 상의 사용자들은 마치 자신의 시스템에 있는 것처럼 서버의 파일 시스템에 파일들을 읽거나 쓸 수 있다.

2. 관련 파일들

 

Server

Client

Commands

share / unshare
shareall / unshareall
dfmounts
/etc/init.d/nfs.server

mount / umount
mountall /umountall -r
dfshares
/etc/init.d/nfs.client

Files

/etc/dfs/dfstab /etc/dfs/fstypes
/etc/dfs/sharetab
/etc/rmtab

/etc/vfstab
/etc/dfs/fstypes
/etc/mnttab

Daemons

/usr/lib/nfs/nfsd
/usr/lib/nfs/mountd

/usr/lib/nfs/statd
/usr/lib/nfs/lockd

Automounter

없음

/usr/sbin/automount

 

3. Configuring the NFS Server

Manual Sharing

# share /usr/share/man ; command line에서의 사용

# /etc/init.d/nfs.server start ; server daemon 기동

  • Automatic Sharing

    # vi /etc/dfs/dfstab

    share -F nfs /usr/share/man

    ; run level 3로 들어갈 때마다 이 file을 참조

    # dfmounts ; /etc/rmtab의 내용을 참조하여 display

    ; /etc/rmtab : server의 resource를 mounting하는 client의 table



4. Configuring the NFS Client

  • Manual Mounting

    # mount venus:/usr/share/man /usr/share/man

    ; client의 /usr/share/man이 mount point

    ; mount point는 empty라야 함

  • Automatic Mounting

    # vi /etc/vfstab

    venus:/usr/share/man - /usr/share/man nfs - yes -

    ; run level 2로 들어 갈 때마다 이 file을 참조

    # umount /usr/share/man ; mount를 해제

5. Commaind Reference for NFS Server

  • # share [ -F nfs ] [ -o options ] [ -d description ] pathname

    /etc/dfs/dfstab : share command는 share된 모든 file resource들에 대한 정보를 이 file에 기록

    -F nfs : command line에서는 필요 없다.(default remote file sytem type)

    remote file system type : /etc/dfs/fstypes 참조

    -o options : rw=client[:client] ; read-write

    ro=client[:client] ; read-only

    root=client[:client] ; root access

    anon=0 ; 어느곳에서나 UID 0으로 access 한다.

    -d description : file resource를 설명하는 comment

    : share command (argument 없는)가 실행되면 display

    -pathname : file resource의 path name

    <Example> # share -F nfs -o root=seven:indy,rw=sun /usr/share/man

  • # unshare [ -F nfs ] pathname

    ? /etc/dfs/sharetab에서 해당 resource를 삭제

    -F nfs : share와 동일

    -pathname : unshare될 file resource path name

    <Example> # unshare /usr/share/man

  • # shareall [ -F nfs ]

    /etc/dfs/dfstab에 있는 share command의 list를 실행

    -F nfs : nfs type으로만 제한

  • # unshareall [ -F nfs ]

    /etc/dfs/sharetab을 참조, share된 resource를 unshare한다.

    -F nfs : nfs type으로만 제한

6. Commaind Reference for NFS Client

  • # umount [ -F nfs ] server:pathname mount-point
  • # mountall -r [ -F nfs ]

    /etc/vfstab 참조

    -r : remote resource로만 제한할 경우

    -F nfs : remote에 rfs type과 같은 resource와 nfs resource가 함께 존재 할 경우 nfs type으로만 제한할 경우 사용

  • # umountall -r [ -F nfs ]

    /etc/vfstab 참조

    -r, F nfs : mountall과 동일

  • # dfshares server-name ; share된 resource를 display
  • # mount [-F fs_type] [options] [-o options] special directory

 

-F fs_type

-p

-v

-V


-m

-r

-o

파일 시스템 타입을 지정한다. 디폴트 ufs (nfs, hsfs, swap)

/etc/vfstab 파일에 넣을수 있도록 현재 설치된 화일 시스템의 리스트를 모두 출력한다.

장황한 형태로 현재 설치된 파일 시스템의 리스트를 모두 출력한다.

모든 디폴트 설정을 포함하여 주어진 명령을 확장하고 그 결과를 출력한다. 그러나 실재로 실행하지는 않는다. 시스템 디폴트 설정이 복잡할 때 mount 명령을 검증하는데 유용하다.

파일 시스템을 설치하지만 /etc/mnttab에 출력하지 않는다.

파일시스템을 읽기 전용으로 설치한다.

-o 플래그 뒤의 매개변수는 -F 플래그 뒤에 오는 파일 시스템 타입에 따른 옵션이다. 파일시스템에 타른 옵션들은 ,로 구분하여 여러 개 지정할수 있다.

options

<UFS>

f

n

rw|ro

nosuid

remount


/etc/mnttab에 기록을 하지만 실제로 파일 시스템을 설치하지는 않는다.

파일 시스템을 설치하지만 /etc/mnttab에 기록하지 않는다.

파일 시스템을 읽기/쓰기(default)나 읽기 전용으로 설치한다.

이 파일 시스템 내에서는 setuid 프로그램들의 실행을 허용하지 않는다.

읽기 전용으로 설치된 파일 스스템에 대해 임시로 읽기-쓰기 access 용으로 다시 설치한다.

<NFS>

rw|ro

setuid|nosuid

remount

intr|nointr

soft|hard

fg|bg

retry=n

rsize+n

wsize=n

timeo=n

retrans=n


파일 시스템을 읽기-쓰기(default)나 읽기 전용으로 설치한다.

이 파일 시스템 내에서는 setuid 프로그램들의 실행을 허용하지 않는다. (default : 허용)

읽기 전용으로 설치된 파일 시스템에 대해 임시로 읽기-쓰기 access용으로 다시 설치한다.

설치가 완요되기를 기다리는 프로세스를 키보드 인터럽트로 중단 가능(불가능)하게 만든다. (default : 허용)

soft는 NFS 서비스가 응답하지 않을 때 에러를 리턴함을 의미하고, hard는 응답이 있을때까지 계속 재시도 함을 의미한다.

첫 번째 설치시도가 실패시 수행할 작업방법(default : fg)

설치가 실패하였을 때 재시도 회수 (default : 1000)

n 바이트의 읽기 버퍼 크기를 사용한다.

n 바이트의 쓰기 버퍼 크기를 사용한다.

NFS 타임 아웃 간격을 n/10초로 지정한다.

NFS 전송 각각을 최대 n번 재시도 한다.


7. Automounter

소프트웨어로 사용자가 Server에서 SHARE된 디렉토리 안으로 이동할 때 자동으로 마운트되고 일정기간(5분 정도) 사용하지 않으면 그 디렉토리를 언마운트 시켜주는 시스템 서비스이다.

NFS를 통해 원격으로 설치된 파일시스템들은 각 시스템의 /etc/vfstab에 수록된다.
그런 디스크와 파일 시스템의 수가 증가하면 모든 호스트의 파일 시스템 목록을
관리하기가 어렵기 때문에 문제가 발생한다.

또 NFS가 여러 곳에 설치되면 기계의 의존성이 증가한다.
과부하로 Server의 성능이 저하되면, 그곳으로부터
파일시스템의 설치하고 있는 모든 호스트의 성능이 떨어진다.

정전과 같은 사고로부터 복구 하는데에는 심각한 문제가 있다.
모든 호스트가 일시에 부팅하려고 하면,
서로 다른 호스트가 가지고 있는 파일 시스템을
기다리기 때문에 데드록이 발생하거나 오랜 시간 동안 지연될 수 있다.

AUTOMOUNT는 NFS 클라이언트상의 어떤 사용자 프로그램이 Automounter에 의해서
Control되는 Remote 파일이나 디렉토리의 Access를 필요로 할 때,

Local Automounter Daemon (/usr/sbin/automount)은 Mount될 파일 자원에
대한 파일 Handle을 얻기 위해 Server의 Mount Daemon(/usr/lib/nfs/mountd)을 접촉한다.

그 때, Local Mount Process는 파일 Handle을 Mount된 자원의 다른 정보와 함께
/etc/mnttab에 추가한다. Mount가 완료된 후, Local Kernel은 파일 자원을
Access할 때마다 이 파일 handle을 사용한다.

  • Automount Script

    /etc/auto_master

    mount-point map-name [ options ]

    ; mount-point : mount point의 full path name 또는 partial path name

    ; map-name : direct 또는 indirect map의 name

    ; options : gener3l option

    Master map 또는 Direct map의 내용이 변경되면, 기존 automount daemon을 kill하고 다시 시작해야 한다.

# /etc/init.d/nfs.client stop | start

# more /etc/auto_master

/net -hosts -nosuid

/- /etc/auto_direct ; DIRECT MAP

/home /etc/auto_home ; INDIRECT MAP


/net -hosts -nosuid

; hosts database(/etc/inet/hosts)에 있는 각 host가 share시킨 resource를

/net/host 디렉토리 밑에서 이용 가능하게 한다.

; /etc/inet/hosts내에 "mars"라는 host가 등록되어 있고, 어떤 사용자가 다음과 같이 #cd /net/mars 라고 type하면, "mars"가 share시킨 파일 시스템은 /net/mars아래로 mount된다.

/- /etc/auto_direct ; DIRECT MAP

; /- 는 mount point의 full path name을 direct map에 정의하였음을 Automounter에게 말해 준다.

# cat /etc/auto_direct

key [ options ] location(server path)

/usr/frame -ro,soft mars:/export/unbundled

/usr/share/man -ro,soft earth:/usr/share/man,saturn:/usr/share/man


/home /etc/auto_home ; INDIRECT MAP

; /etc/auto_home에 list된 모든 mount point는 /home 아래로 mount된다.

# cat /etc/auto_home

key [ options ] location(server path)

lister -ro mars:/export/home/lister

kryten reddwarf:/export/home/kryten

** Mount point는 /home/lister, /home/kryten

Client의 각 사용자의 home 디렉토리를 Server에 위치시키는 예

# vi /etc/auto_home ; file 수정

* mars:/export/home/&

; * (wildcard character) : 모든 key 값 (client의 모든 user)

; & (substitution character) : 현재의 key값을 &위치에 대치

; Client의 /home/username은 Server의 /export/home/username을 Mount

; 네트워크상의 각 사용자가 어? host에서 Login해도 Home 디렉토리는 동일 Hard disk의 위치로 Login하기 위해서는 각 Host는 동일 auto_home Map 을 갖고 있어야 하고 각 Host의 /etc/passwd home 디렉토리가 같아야 한다.

반응형

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

[펌] NFS설정하기 (Linux -&gt; HPUX)  (0) 2005.02.15
[펌] 리눅스 표준 디렉토리 구조  (0) 2004.11.24
[펌] sar 이용하여 시스템 모니터링하기  (0) 2004.09.20
[펌] sar (system activity reporter)  (0) 2004.09.20
VI Editor  (1) 2004.06.02
Posted by [PineTree]
OS/LINUX2004. 6. 2. 05:33
반응형

1.시작  
vi file vi를 시작하여 지정한 파일 편집
vi -R file 읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집
view file 읽기 전용(read- only) 편집기로서 vi를 시작하여 지정한 파일 편집

2.종료  
:wq 데이터를 저장하고 종료
:q! 데이터를 저장하지 않고 종료

3. 디스플레이 제어하기  
^L 현재 화면을 다시 디스플레이하기
:set number 내부 줄 번호 디스플레이
:set nonumber 배부 줄 번호 디스플레이 않기


4. 마지막으로 지운 것 복사하기  
p 마지막으로 지워진 것을 커서의 뒤/아래에 삽입
P 마지막으로 지워진 것을 커서의 앞/위에 삽입
xp 두 문자를 바꿈
deep 두 단어를 바꿈
ddp 두 줄을 바꿈


5. 패턴 검색  
/rexp 지정된 정규 표현식에 대해 앞으로 이동
/ 이전의 패턴에 대해 앞으로 검색을 반복
?rexp 지정된 정규 표현식에 대해 뒤로 이동
? 이전의 패턴에 대해 뒤로 검색을 반복
n /나 ?명령에 대해 같은 방향으로 반복
N /나 ?명령에 대해 반대 방향으로 반복

6. 약어의 사용  
:ab short long short를 long에 대한 약어로 변경
:ab 현재 약어 목록을 표시
:una short 약어 short를 표시

7. 줄 길이의 조정  
r<Return> 문자를 뉴라인으로 변경
J 줄의 결합
:set wm=n 오른쪽으로 n문자 위치에서 자동적으로 줄 나눔

8. 커서 이동  
h<Left> 커서를 한 칸 왼쪽으로 이동
j<Down> 커서를 한 줄 아래로 이동
k<Up> 커서를 한 줄 위로 이동
l<Right> 커서를 한 칸 오른쪽으로 이동
<Backspace> 커서를 한 칸 왼쪽으로 이동
<Space> 커서를 한 칸 오른쪽으로 이동
- 커서를 이전 줄의 처음으로 이동
+ 커서를 다음 줄의 처음으로 이동
<Return> 커서를 다음 줄의 처음으로 이동
0 커서를 현재 줄의 맨 앞으로 이동
$ 커서를 현재 줄의 맨 끝으로 이동
^ 커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동
w 커서를 다음 단어의 첫 글자로 이동
e 커서를 다음 단어의 끝 글자로 이동
b 커서를 이전 단어의 첫 글자로 이동
W w와 같음(문장 부호 무시)
E e와 같음(문장 부호 무시)
B b와 같음(문장 부호 무시)
( 다음 문장의 처음으로 이동
) 이전 문장의 처음으로 이동
{ 다음 문단의 처음으로 이동
} 이전 문단의 처음으로 이동
H 커서를 화면 맨 위로 이동
M 커서를 중간으로 이동
L 커서를 맨 아래로 이동

9. 편집 버퍼를 통한 이동  
^F 한 화면 아래로 이동
^B 한 화면 위로 이동
n^F n화면 아래로 이동
n^B n화면 위로 이동
^D 반 화면 아래로 이동
^U 반 화면 위로 이동
n^D n줄만큼 아래로 이동
n^U n줄만큼 위로 이동

10. 셸 명령 실행  
:!command vi를 중단하고 지정한 셸 명령을 실행
:!! vi를 중단하고 이전의 셸 명령을 실행
:sh vi를 중단하고 셸을 실행
:!csh vi를 중단하고 새로운 C-셸을 실행


11. 패턴에 의한 치환  
:s/pattern/replace/ 현재 줄의 치환
:lines/pattern/replace/ 지정한 줄의 치환
:line,lines/pattern/replace/ 지정한 범위의 치환
:%s/pattern/replace/ 모든 줄의 치환


12. 데이터 읽기  
:liner file file의 내용을 지정한 줄 다음에 삽입
:r file file의 내용을 현재의 줄 다음에 삽입
:liner !command command의 결과를 지정한 줄 다음에 삽입
:r !command command의 결과를 현재의 줄 다음에 삽입
:r !look pattern 지정한 pattern으로 시작된 단어 삽입

13. 정규 표현식을 사용하기 위한 특수 기호  

.

뉴라인을 제외한 모든 단일 문자와 대응

*

영 또는 그 이상의 선행 문자와 대응

^

줄의 시작과 대응

$

줄의 끝과 대응

\<

단어의 시작과 대응

\>

단어의 끝과 대응

[ ]

묶여진 문자중의 하나와 대응

[^ ]

묶여진 문자를 제외한 아무것하고나 대응

\

이어지는 기호를 문자 그대로 해석


14. 줄 번호  
nG 줄번호 n으로 건너뛰기
1G 편집 버퍼의 첫 줄로 건너뛰기
G 편집 버퍼의 마지막 줄로 건너뛰기
:map g lG g가 lG와 같도록 매크로 정의

15. 삽입  
i 입력 모드로 전환, 커서 위치 앞에서 삽입
a 입력 모드로 전환, 커서 위치 뒤에서 삽입
I 입력 모드로 전환, 현재 줄의 앞에 삽입
A 입력 모드로 전환, 현재 줄의 끝에 삽입
o 입력 모드로 전환, 현재 줄의 아래에 전개
O 입력 모드로 전환, 현재 줄의 위에 전개

16. 편집하고 있는 파일을 바꾸기  
:e file 지정한 파일의 편집
:e! file 지정한 파일의 편집, 자동 점검의 생략

17. 내용 고치기
r 단지 한 글자만 변경(입력 모드로 바뀌지 않음)
R 입력하는 대로 겹쳐 써서 변경
s 삽입에 의해 한 단어의 변경
C 커서의 위치로부터 줄 끝까지 삽입에 의한 변경
cc 전체 줄을 삽입에 의한 변경
S 전체 줄을 삽입에 의한 변경
cmove 커서부터 move까지 삽입에 의해 변경
~ 대,소문자 바꾸기


18. 고치기의 취소 또는 반복  
u 편집 버퍼를 수정했던 마지막 명령을 취소
U 현재 줄을 저장
. 편집 버퍼를 수정했던 마지막 명령 반복

19. 문자 삭제  
x 커서가 있는 문자 삭제
X 커서의 왼쪽 문자 삭제
D 커서부터 줄의 끝까지 삭제
dd 현재 줄의 전체 삭제
dmove 커서부터 move까지 삭제
dG 커서부터 편집 버퍼의 끝까지 삭제
d1G 커서부터 편집 버퍼의 맨 앞까지 삭제
:lined 지정한 줄의 삭제
:line, lined 지정한 범위의 삭제

20. 여러 줄의 복사와 이동  
:linecotarget 지정한 줄을 복사하여 target 줄 밑에 삽입
:line, linecotarget 지정한 범위를 복사하여 target 줄 밑에 삽입
:linemtarget 지정한 줄로 이동하여 target 줄 밑에 삽입
:line, linemtarget 지정한 범위로 이동하여target 줄 밑에 삽입

21. 데이터를 처리하기 위한 셸 명령의 사용  
n!!command n번 줄에서 command의 실행
!move command 커서부터 move까지 command 실행
!move fmt 커서부터 move까지 줄들을 형식 맞추기

22. 데이터 저장하기  
:w 원래의 파일로 데이터를 저장
:w file 지정한 파일로 데이터를 저장
:w>> file 지정한 파일에 데이터를 추가

반응형
Posted by [PineTree]