OS/SOLARIS2005. 4. 2. 03:28
반응형
1. autofs 란 ?


클라이언트가 서버에서 공유한 자원을 사용하려고 할 때
mount 란 명령을 사용하지 않아도 자동적으로 mount 하는 방법


2. 사용방법?
클라이언트 사용자가 특정한 디렉토리(mount point) 로 이동하면 됨
예) cd /TEST/abc


3. 설정 방법!
예) 서버 comedu159 가 공유한 /CJK 를 /TEST/abc 에 자동 마운트 설정함.
1) indirect 방법
# dfshares comedu159  <- 상대방의 공유를 확인
# vi /etc/auto_master <- master 파일 수정
/TEST auto_home
# vi /etc/auto_home <- master 파일에서 설정한 파일 수정
abc comedu159:/CJK
# automount -v <- automount 를 제기동

2) direct 방법
# dfshares comedu159   <- 상대방의 공유를 확인
# vi /etc/auto_master    <- master 파일 수정
/- auto_direct
# vi /etc/auto_direct <- master 파일에서 설정한 파일 수정
/TEST/abc comedu159:/CJK
# automount -v <- automount 를 제기동

반응형
Posted by [PineTree]
OS/WINDOWS2005. 4. 1. 02:58
반응형

메일과 주소록 백업하기

아웃룩 익스프레스는 e-메일을 c 드라이브에 보관하기 때문에 윈도우즈를 깔기 전에 반드시 다른 곳에 백업해 놓는다. 그렇지 않으면 지금까지 받았던 메일이나 보낸 편지가 모두 사라진다.

1. 아웃룩 익스프레스로 주고받은 편지는 c:\windows\applicationdata\identities\{afd67783-d1de-11d4-8634-0050047f76f0}\microsoft\outlook express 폴더에 보관된다. 여기에는 7가지 파일이 있다.

2. C 드라이브가 아닌 곳에 임시 폴더를 만들어 7가지 파일을 복사해서 옮긴다.

3. 주소록 파일은 c:\windows\applicationdata\microsoft\address book에 있다. 주소록 파일을 복사한다.

4. 주소록 파일인 wab 파일을 복사해 c 드라이브가 아닌 곳에 옮겨놓는다.

e-메일 되살리기

윈도우를 새로 설치한 뒤 백업한 e-메일과 주소록 파일을 원래 자리로 옮겨 놓는 과정을 보자. 백업할 때와 반대로 해당 파일들을 원래 있던 폴더로 복사한다. 그럼, e-메일 파일을 되살리는 방법을 살펴보자.

1. 7가지 e-메일 파일을 백업한 폴더에서 이들을 복사한다. 원래 e-메일 파일이 있던c:\windows\applicationdata\identities\{afd67783-d1de-11d4-8634-0050047f76f0}\microsoft\outlook express 폴더에 붙여넣는다.

2. [파일 바꾸기 확인] 창에서 덮어쓰겠냐고 물어보면 모두 덮어씌운다.

'즐겨찾기' 폴더 백업하고 되살리기

e-메일과 함께 반드시 백업할 것이 인터넷 익스플로러의 ‘즐겨찾기’다. 자주 다니는 사이트를 모아놓은 이 폴더를 옮겨놓지 않고 윈도우즈를 깔면 처음부터 다시 등록해야하는 불편이 따른다.

1.인터넷 익스플로러의 즐겨찾기는 c:\windows\favorites 폴더에 있다. 이 폴더를 마우스 오른쪽 버튼으로 누른 뒤 [복사] 메뉴를 선택다.

2. c 드라이브가 아닌 곳에 백업 폴더를 만들어 favorites 폴더를 옮겨 놓는다. 마우스 오른쪽 버튼을 누른 뒤 [붙여넣기] 메뉴를 선택한다.

3. favorites 폴더가 생겼다. 이제 윈도우를 설치한뒤 이 폴더를 다시 복사해서 windows 폴더에 덮어씌운다.

화면 배색 백업하기

좋아하는 색으로 꾸민 화면 배색은 윈도우즈를 다시 깔면 기본색으로 돌아간다. 한 가지 색으로 꾸몄다면 되살리는 것이 간단하겠지만 여러 가지 색을 썼다면 시간이 오래 걸린다. 화면 배색을 백업해 놓으면 윈도우즈를 다시 깔고 마우스로 누르기만 하면 내가 좋아하는 색으로 다시 되돌아온다.

1. 바탕화면에 커서를 대고 마우스 오른쪽 버튼을 눌러 [등록정보] 메뉴를 선택하면 [디스플레이 등록정보] 창이 열린다.

2.[화면 배색] 탭을 고른 뒤 [다른 이름으로 저장] 버튼을 누른다.

3.[구성표 저장] 창이 뜨면 기억하기 쉬운 이름을 적고 [확인] 버튼을 눌러 저장한다.

4. [시작]-> [실행] 버튼을 누른 뒤 [열기] 칸에 regedit를 적어 [레지스트리 편집기] 창을 연다.

5. HKEY_CURREN_USER\Control Panel\Appearance\Schemes를 차례로 누르면 방금 저장한 색 구성표 이름이 보인다.

6. [레지스트리]-> [레지스트리를 파일로 저장] 메뉴를 선택해서 c 드라이브가 아닌 다른 드라이브에 레지스트리를 저장한다.

7. 레지스트리 파일은 reg 파일로 저장된다.

8. 방금 저장한 레지스트리 파일을 되살리려면 파일에 대고 더블클릭을 한다. '레지스트리에 추가하겠습니까?' 라는 메시지가 뜨면 [확인] 버튼을 누른다. 디스플레이 등록 정보에서 색상표가 복원된 것을 확인한다.

액티브 데스크탑 백업하기

액티브 데스크탑은 바탕화면을 웹 브라우저처럼 만든다. 즉 바탕 화면이나 폴더 등 어디에서나 웹으로 바로 이동할 수 있다는 말이다. 나만의 액티브 데스크탑을 꾸몄다면 이것도 백업해 두었다가 그대로 옮겨보자. 액티브 데스크탑과 함께 배경 화면도 백업해두자.

1. 액티브 데스크톱 파일은 c:\windows\web\wallpaper에 모여 있다.

2. c 드라이브가 아닌 곳에 액티브 데스크톱 백업 폴더를 만든다. html 파일과 바탕화면 그림파일을 복사해 백업 폴더에 모두 옮겨놓는다.

3. 윈도우를 다시 설치한 뒤 액티브 데스크톱 파일을 되살리려면 원래 자리인c:\windows\web\wallpaper에 덮어씌운다.

자료제공 : PC 사랑(http://www.ilovepc.co.kr)

반응형
Posted by [PineTree]
OS/WINDOWS2005. 3. 31. 22:31
반응형
OutLook Express 백업 및 복구



먼저 D:에 아래 폴더를 만들어준다. 그래야 작업하기 편하다. 물론 안해도 된다.
b_outlook
b_addr
b_account



□ 편지함
A컴터:
1. 먼저 편지함이 저장되는 폴더를 D:b_outlook폴더로 변경해 놓으면 B컴터로의 복사나 유지관리가 쉽다.
2. 도구 - 옵션 - 유지관리 - 폴더저장클릭 - 변경 - D:b_outlook 폴더지정 - 확인

B컴터:
1. 이제 B컴터에서 이 폴더를 복사해서 가져온후, 아웃룩실행
2. 파일 - 가져오기 - 메시지 - 파일선택 - outlook express 6 - outlook express 6 저장디렉토리에서 메일가져오기.





□ 주소록
1. 도구 - 주소록 - 파일 - 주소록 - 내보내기 - D:b_addr파일이름입력 - 저장
2. 복구할땐 도구 - 주소록 - 파일 - 주소록 - 가져오기 - 파일선택.



□ 계정
1. 도구 - 계정 - 계정선택 - 내보내기 - D:b_account에 각 계정별로 1개씩 반복저장
2. 도구 - 계정 - 가져오기 - 계정파일선택 - 확인.

※ 백업은 아무리 강조해도 지나치지 않다
반응형
Posted by [PineTree]
OS/WINDOWS2005. 3. 23. 23:50
반응형
[MS-Office]Outlook과 Outlook Express 메일 및 주소록 백업 2004/01/20 19:10
http://blog.naver.com/aircjs/20000626121

Outlook이나 Outlook Express 를 쓰는 분들중에.. 메일의 백업이 필요하신 분은 참고하시기 바랍니다.

 

어떤 문제에 의해서 컴퓨터를 포맷하기 전에 data들을 back_up 받게 되는데 가끔 Outlook과 Outlook Express 의 메일과 주소록을 백업받지 않아서 곤란을 당하는 분들이 계시던데.. 아래와 같은 방법으로 메일과 주소록을 back_up 받으실 수 있습니다.

 

단.. 메일 계정은 제외한 순순한 보관메일들과 주소록입니다.

물론 계정과 메일들을 Outlook과 Outlook Express 에서 "내보내기" 방법으로 백업 받을 수 있지만 별로 추천해 드리고 싶지는 않네요.. 운영체제라든지.. 계정에 따라서.. 혹은 같은 OS의 서비스팩에 따라서도 가끔 불러오기 실패등의 오류로 "불러오기"가 되지 않더라구요.. 저의 경험에 비추어 보면 "내보내기" 방법보단 메일계정 설정의 불편함이 조금 있지만 data 파일을 back_up 받는게 가장 확실한 방법이더군요..

 

각설하고..

 

방법은 3개다 동일합니다. 하드디스크 내에 보면 Outlook과 Outlook Express 의 data 파일이 저장되어 있는 폴더가 있습니다. 거기에서 data 파일을 복사하면 됩니다.. ^^;

 

 

1. 아웃룩의 data 파일의 위치는 아래와 같습니다.

"C:\Documents and Settings\사용자(제 경우에는 Administrator)\Local Settings\Application Data\Microsoft\Outlook" 밑에 가보시면


 
 
extend.dat 파일과 Outlook.pst 파일이 있습니다. 이 두개의 파일이 아웃룩의 data 파일입니다.
 
2. 아웃룩 익스프레스의 경우에는..

"C:\Documents and Settings\사용자(제 경우에는 Administrator)\Local Settings\Application Data\Identities\{문자조함}\Microsoft\Outlook Express" 밑에 가보시면

 
 

 

확장자가 .dbx 파일들이 있습니다. 이것들 모두를 복사해서 옮기면 됩니다. 개수는 사용하고 계신 편지함의 개수 만큼 있습니다.

 
3. 아웃룩 익스프레스의 주소록 백업..
아웃룩은 data 파일인 Outlook.pst 안에 같이 있지만 아웃룩 익스프레스는 아웃룩과 달리 주소록을 따로 보관합니다.
아웃룩 익스프레스의 주소록 위치는..
"C:\Documents and Settings\사용자(제 경우에는 Administrator)\Application data\Microsoft\Address Book" 밑에 가보시면
 

 
 
사용자.wab 파일이 있습니다. 이 파일이 아웃룩 익스프레스에서 사용하는 주소록 파일입니다.

 
이상처럼 Outlook 과 Outlook Express의 메일 및 주소록 위치를 알려드렸습니다. 물론 동일한 위치에 다시 복사해서 붙여넣으셔야 사용이 가능합니다. 물론 이방법 말고도 다른 방법이 있습니다.
Outlook 과 Outlook Express의 옵션이나 환경설정 부분에 보면 data 파일을 다른 폴더로 지정하실 수 있습니다. 가령 파티션이 다른 폴더(D:\드라이브 의 특정 폴더)로 지정해 놓으시면 C:\ 드라이브의 포맷과 상관없이 data back_up문제등은 발생하지 않겠지만.. 원래 폴더가 아닌 다른 폴더로 data 파일들을 옮겨놓구 쓰시면 로딩의 문제라든지 여타 문제로 조금씩 속도가 느려지더군요.
 
 
반응형
Posted by [PineTree]
OS/SOLARIS2005. 3. 18. 23:34
반응형
[/]# vi /etc/hosts
# Internet host table
#
127.0.0.1 localhost
192.168.1.226  unix226
192.168.1.227  unix227
192.168.1.228  unix228
192.168.1.229  unix229
192.168.1.230  unix230
192.168.1.231  unix231
192.168.1.232  unix232
192.168.1.233  unix233
192.168.1.234  unix234 unix226 netcollege.co.kr loghost
192.168.1.235  unix235
192.168.1.236  unix236
192.168.1.237  unix237
192.168.1.238  unix238
192.168.1.239  unix239
192.168.1.240  unix240
192.168.1.241  unix241
192.168.1.242  unix242
192.168.1.234  me


[/]# vi /etc/ethers
08:00:20:b0:80:de unix233
08:00:20:f8:42:52 unix236


[/]# mkdir jumpstart

[/]# cd jumpstart

[/jumpstart]# ls

[/jumpstart]# vi sysidcfg
system_locale=ko
system_locale=ko
timezone=ROK
timeserver=localhost
terminal=dtterm
name_service=NONE
network_interface=hme0{netmask=255.255.255.0 protocol_ipv6=no}
root_password='rZQJGqTPDT1BA'
security_policy=NONE

[/jumpstart]# vi host_class
install_type    initial_install
system_type     standalone
locale          ko
cluster         SUNWCXall
partitioning    explicit
filesys         c0t0d0s0        free    /
filesys         c0t0d0s1        512     swap
filesys         c0t0d0s3        10      /p1
filesys         c0t0d0s4        10      /p2
filesys         c0t0d0s5        10      /p3
filesys         c0t0d0s6        10      /p4
filesys         c0t0d0s7        10      /p5


[/jumpstart]# vi rules
any - - host_class -


[/jumpstart]# l cd /export/install/Solaris_8/Misc/justart_sample

[/export/install/Solaris_8/Misc/jumpstart_sample]# ls
any_machine      net924_sun4c     upgrade          x86-class
check*           rules            x86-begin
host_class       set_root_pw*     x86-begin.conf/


[/export/install/Solaris_8/Misc/jumpstart_sample]# cp check /jumpstart

[/export/install/Solaris_8/Misc/jumpstart_sample]# cd -

[/jumpstart]# ls
check*       host_class   rules        sysidcfg


[/jumpstart]# ./check
Validating rules...
Validating profile host_class...
The custom JumpStart configuration is ok.


[/jumpstart]# ls
check*       host_class   rules        rules.ok     sysidcfg


[/jumpstart]# cd /export/install/Solaris _8/Tools/

[/export/install/Solaris_8/Tools]# ls
Boot/                  dial*                  setup_install_server*
add_install_client*    rm_install_client*

[/export/install/Solaris_8/Tools]# ./add _ _install _client  \
> -s  unix234:/export/install  -c unix234:/jumpstart  \
> -p  unix234:/jumpstart  unix236 sun4u
saving original /etc/dfs/dfstab in /etc/dfs/dfstab.orig
Adding "share -F nfs -o ro,anon=0 /export/install" to /etc/dfs/dfstab
making /tftpboot
enabling tftp in /etc/inetd.conf
starting rarpd
starting bootparamd
updating /etc/bootparams
copying inetboot to /tftpboot


[/export/install/Solaris_8/Tools]# vi /etc/dfs/dfstab
# Place share(1M) commands here for automatic execution
# on entering init state 3.
#
# Issue the command '/etc/init.d/nfs.server start' to run the NFS
# daemon processes and the share commands, after adding the very
# first entry to this file.
#
# share [-F fstype] [ -o options] [-d "<text>"] <pathname> [resou
rce]
# .e.g,
# share  -F nfs  -o rw=engineering  -d "home dirs"  /export/home2
share -F nfs -o ro,anon=0 /export/install
share  /jumpstart


[/export/install/Solaris_8/Tools]# unshareall
[/export/install/Solaris_8/Tools]# shareall
[/export/install/Solaris_8/Tools]# dfshares
RESOURCE                                  SERVER ACCESS    TRANSPORT
   unix234:/export/install               unix234  -         -
   unix234:/jumpstart                    unix234  -         -

[/export/install/Solaris_8/Tools]# cd /tftpboot

[/tftpboot]# ls -l
총 344
lrwxrwxrwx   1 root     other         26  1월  8일  20:37 C0A801EC -> inetboot.SUN4U.Solaris_8-1*
lrwxrwxrwx   1 root     other         26  1월  8일  20:37 C0A801EC.SUN4U -> inetboot.SUN4U.Solaris_8-1*
-rwxr-xr-x   1 root     other     158576  1월  8일  20:37 inetboot.SUN4U.Solaris_8-1*
-rw-r--r--   1 root     other        317  1월  8일  20:37 rm.192.168.1.236
lrwxrwxrwx   1 root     other          1  1월  8일  20:37 tftpboot -> ./

[/tftpboot]# vi /etc/bootparams
unix236 root=unix234:/export/install/Solaris_8/Tools/Boot install=unix
234:/export/install boottype=:in sysid_config=unix234:/jumpstart instal
l_config=unix234:/jumpstart rootopts=:rsize=32768
반응형
Posted by [PineTree]
OS/HP-UX2005. 3. 11. 02:08
반응형
1. UID GID 의 Server-Client 간의 일치성 확인
  
2. NFS Server 설정
   1) NFS subsystem이 server에 설치되어 있는가? (kernel에 compile 되어 포함되어 있는지 확인)
   2) server의 /etc/rc.config.d/nfsconf 파일 편집
   3) nfs server daemons 시작
   4) /etc/exports 파일 편집
   5) 디렉터리 export 하기
   6) server 설정 점검
  
3. NFS Client 설정
    1) NFS subsystem이 client에 설치되어 있는가? (kernel에 compile 되어 포함되어 있는지 확인)
    2) client의 /etc/rc.config.d/nfsconf 파일 편집
    3) nfs client daemons 시작  
    4) /etc/fstab에 nfs에 대한 마운트 정보 입력
    5) nfs mount 하기
    6) client 설정 점검
  
4. NFS Check List
  
  
이제 각 단계별로 설명을 드리겠습니다.
  
1. UID GID 의 일치성 유지
  
예를 들어, server 의 /etc/passwd 파일이 다음과 같고,
  
    user1:...:101:100:...:/home/user1:...
    user2:...:102:100:...:/home/user2:...
    user3:...:103:100:...:/home/user3:...
  
client 의 /etc/passwd 파일이 다음과 같을 때,
  
    user1:...:103:100:...:/home/user1:...
    user2:...:102:100:...:/home/user2:...
    user3:...:101:100:...:/home/user3:...
  
client 가 server 의 /home 디렉터리를 mount 하였을 때, 어떤 현상이 벌어지겠습니까?
user1 의 $HOME 은 /home/user1 이 되어야 하나, client 와 server 의 user1에 대한 UID 가 서로 다르기 때문에, user1은 /home/user3 을 access 할 수 있으나, /home/user1 은 access 할 수 없어 지게 되며, user3는 그 반대 경우로 됩니다. 즉, client - server 간의 UID, GID를 일치시킬 필요가 있는 것입니다.
  
2-1) nfs subsystem 이 kernel에 존재하는지 확인
  
sam을 통해 확인하는 방법
    # sam --> Kernel Configuration --> Subsystems
  
                  Current    Pending
                  State      State
    LAN/9000        In         In
    NFS/9000        In         In
  
HP-UX 10.x  
    # grep -n -e nfs -e lan /stand/system
  
HP-UX 11.x
    # kmsystem | grep -e nfs -e lan
  
위의 세가지 중 하나를 선택하시어 확인하시면 됩니다.
  
만약, nfs subsystem이 kernel에 존재하지 않으면, sam에서 추가하신 후, reboot 하시면 됩니다.
  
2-2) server의 /etc/rc.config.d/nfsconf 파일 편집
  
nfs client는 run-level 2에서 자동으로 실행됩니다.
start-up script를 통해 다음과 같이 동작됩니다.
  
        /sbin/rc2.d/**** ----(link)----> /sbin/init.d/nfs.core
        /sbin/rc2.d/**** ----(link)----> /sbin/init.d/nfs.client
  
nfs server는 run-level 3에서 자동으로 실행됩니다.
start-up script를 통해 다음과 같이 동작됩니다.
  
        /sbin/rc3.d/**** ----(link)----> /sbin/init.d/nfs.server
  
위에서 보시는 바와 같이 nfs 와 관련된 startup script 는 3가지가 있습니다.
  
        /sbin/init.d/nfs.core       portmap(10.20) / rpcbind (11.x) daemon 들을 시작하고
                                    nfs server, client 모두에 필요한 다른 초기화 작업 수행.
                                    이 script는 run-lever 2에서 실행 됨.
  
        /sbin/init.d/nfs.client     nfs client에서 필요한 daemon 들을 실행.
                                    이 script는 run-lever 2에서 실행 됨.
  
        /sbin/init.d/nfs.server     nfs server에서 필요한 daemon 들을 실행.            
                                    이 script는 run-lever 3에서 실행 됨.
  
위의 세가지 script 는 공통적인 configuration 파일을 사용하며, 그 파일이 바로
  
        /etc/rc.config.d/nfsconf
  
파일입니다.
  
파일의 내용을 다음과 같이 수정하여 주십시오.
  
        NFS_SERVER = 1             boot process 중, nfs server 시작.  
                                   (0로 하시면, nfs server 동작 안 함)
    
        NUM_NFSD = 16              boot time 시 몇 개의 nfsd daemon을 실행할 것인가?
                                   client 가 늘어나면, 당연히 이 값도 늘어야 함.
  
        PCNFS_SERVER = 1           windows (Microsoft) client 들에게 좀 더 권한을 주고 싶다면,
                                   "1"로 setting. rpc.pcnfsd daemon 이 실행됨.
                                   일반적인 access 만을 원한다면, "0"으로 셑팅.
  
        START_MOUNTD = 1           rpc.mountd daemon 을 실행 하도록 함.
  
        NFS_TCP = 1                HP-UX 11.00에서 nfs server를 동작시키고,  
                                   NFS over TCP patch를 설치 하였다면... 반드시 "1"로 셑팅.
  
2-3) nfs server daemons 시작
  
nfs server 시작 및 종료 방법은 다음과 같습니다.
  
        # /sbin/init.d/nfs.server start (시작)
        # /sbin/init.d/nfs.server stop  (종료)
  
시작하였을 때,  ps -ef로 확인 가능한 daemon 들은 다음과 같습니다.
  
        portmap             (HP-UX 10.20 경우)        
        rpcbind             (HP-UX 11.x 경우)
        nfsd 16             (NUM_NFSD = 16 이므로, 이 daemon 이 16개 동작 됨.)
        rpc.mountd           client 의 file system mount 요청을 처리
        rpc.pcnfsd          (PCNFS_SERVER = 1 인 경우)
        rpc.statd              
        rpc.lockd  
  
2-4) /etc/exports 파일 편집
  
이 파일이 무엇을 공유할 것인가를 정의 하는 파일입니다.
  
Examples:
  
        /usr/share/man
        /home                     -access=hosta:hostb
        /opt/games                -ro
        /opt/appl                 -access=hosta:hostb,ro
        /usr/local                -rw=hosta
        /etc/opt/appl             -root=hosta,access=hostb
  
  
위의 예는 다음과 같은 권한을 부여 한 것입니다.
  
        /usr/share/man       모든 host 에게 rw (read/write) 권한
        /home                hosta, hostb 에게 rw 권한
        /opt/games           모든 host 에게 ro (read only) 권한
        /opt/appl            hosta, hostb 에게 ro 권한
        /usr/local           hosta 에게 rw, 나머지는 ro
        /etc/opt/appl        hosta에게 root+rw, hostb 에게 rw
  
다음의 테이블은 export option 들을 정리한 것입니다. 참고로 하십시오.
Table 1
Export options used: hosta hostb others
/home &#8211;access=hosta rw - -
/home &#8211;access=hosta:hostb rw rw -
/home rw rw rw
/home &#8211;rw=hosta:hostb rw rw ro
/home &#8211;rw=hosta rw ro ro
/home &#8211;ro rw ro ro
/home &#8211;access=hosta:hostb,ro ro ro -
/home &#8211;access=hosta,ro ro - -
Table 2
Export options used: hosta hostb others
/home &#8211;root=hosta,access=hosta root+rw - -
/home &#8211;root=hosta,access=hosta:hostb root+rw rw -
/home &#8211;root=hosta root+rw rw rw
/home &#8211;root=hosta,rw=hosta:hostb root+rw rw ro
/home &#8211;root=hosta,rw=hosta root+rw ro ro
/home &#8211;root=hosta,rw=hosta,access=hosta:hostb root+rw ro -
/home &#8211;root=hosta,access=hosta root+rw   -
  
  
2-5) 디렉터리 export 하기
/etc/export에 등록된 디렉터리들을 실제적으로 export / uxexport 하는 명령은 다음과 같습니다.
        # exportfs -a        /etc/exports에 등록된 것을 모두 export 하는 명령)
        # exportfs           현재 export 된 파일 시스템을 보여주는 것.
        # exportfs -i /home  /etc/exports 등록하지 않고 바로, /home 을 export
        # exportfs -u /home  /home 파일 시스템을 unexport
        # exportfs -ua       /etc/exportfs에 등록된 모든 파일 시스템 unexport
  
2-6) server 설정 점검
NFS Server daemon 이 등록되었는지 확인
        # rpcinfo -p  
어떤 파일시스템이 누구에게 export 되어 있는지 확인
        # showmount -e  
어떤 export 옵션이 지정되었는지 확인
        # exportfs
어떤 client 가 현재, server 의 파일시스템을 mount 하여 사용하고 있는가?
        # showmount -a  
위에서  은 nfs server 의 hostname 입니다.        
  
3-1) NFS subsystem이 client 에 설치되어 있는가? (kernel에 compile 되어 포함되어 있는지 확인)
2-1) 내용과 동일

  
3-2) client의 /etc/rc.config.d/nfsconf 파일 편집
  
2-2) 내용 참조 후, 다음의 내용 체크

    NFS_CLIENT = 1
    NUM_NFSIOD = 16
    NFS_TCP = 1
  
3-3) nfs client daemons 시작  
  
nfs client 시작 및 종료 방법은 다음과 같습니다.
  
        # /sbin/init.d/nfs.client start (시작)
        # /sbin/init.d/nfs.client stop  (종료)
  
시작하였을 때,  ps -ef로 확인 가능한 daemon 들은 다음과 같습니다.
  
        portmap             (HP-UX 10.20 경우)        
        rpcbind             (HP-UX 11.x 경우)
        biod 16             (NUM_NFSIOD = 16 이므로, 이 daemon 이 16개 동작 됨.)
        rpc.statd              
        rpc.lockd  
  
  
3-4) /etc/fstab에 nfs에 대한 마운트 정보 입력
  
만약, nfs server hostname이 nfsserver 라고 가정하고, nfs로 mount 하려는 파일시스템이
/home 이라고 가정 했을 때, /etc/fstab에 다음의 내용을 입력합니다.
  
        nfsserver:/home    /home    nfs    defaults    0         0
설명:   서버와 exported    mount    F/S    mount     backup     fsck
        파일시스템         point    type   option    frequency  option
  
  
3-5) nfs mount 하기
  
Mount Examples:
        # mount :/home /home      서버로부터 /home을 /home으로 mount
        # mount /home                      /etc/fstab 의 내용을 참조하여 /home mount
        # mount -aF nfs                    /etc/fstab 내용 중 nfs type 의 파일 시스템 모두 mount
        # mount -a                         /etc/fstab 의 모든 내용 mount
        # mount -v                         현재 mount 된 파일 시스템 정보 출력
  
Umount Examples:
        # umount :/home          :/home umount
        # umount /home                     umount /home
        # umount -aF nfs                   nfs type 의 파일 시스템 모두 umount
        # umount -a                        모든 파일 시스템 umount
  
  
3-6) client 설정 점검 
반응형

'OS > HP-UX' 카테고리의 다른 글

Glance  (0) 2009.01.21
HP-UX memory buffer 변경하는 방법  (0) 2009.01.20
[HP-UX ] 한글 입력하기.  (0) 2009.01.19
HP-UX Language 설정  (0) 2009.01.19
HP-UX NFS 설정하기  (0) 2009.01.19
Posted by [PineTree]
OS/SOLARIS2005. 2. 18. 00:03
반응형

How to do a disk-to-disk copy via ufsdump/tar under Solaris 2.X.

[1.] 새로 디스크를 추가하여 작업하고자 할 경우 일단 system down을 함.

        # init 0

[2.] Find an available target setting.  This command will show
   what you currently have on your system.

        # probe-scsi
       
   If the disk is on another scsi controller (another card off of
   an sbus slot)    
       
        # probe-scsi-all
       
[3.] Attach the new disk with the correct target setting.  Run
probe-scsi again to make sure the system sees it.  If it doesn't, the disk is
either not connected properly, has a target conflict, or is defective.
Resolve this issue before continuing.

     In this example, we'll say:
     T3 original internal drive
     T1 new/other internal drive where a duplicate copy of the OS will be placed.
  
[4.] Perform a reconfiguration boot.

     # boot -rv
       
     rv -> reconfigure in verbose mode.

[5.] Run format and partition the disk.

     (Here's our example):
       
     # format
       Searching for disks...done


     AVAILABLE DISK SELECTIONS:

     1. c0t1d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
 /iommu at 0,10000000/sbus at 0,10001000/espdma at 5,8400000/esp at 5,8800000/sd at 1,0
     2. c0t3d0 <SUN0535 cyl 1866 alt 2 hd 7 sec 80>
 /iommu at 0,10000000/sbus at 0,10001000/espdma at 5,8400000/esp at 5,8800000/sd at 3,0
        Specify disk (enter its number): 1
        selecting c0t1d0
        [disk formatted]


        FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        quit
        format> part
       
        PARTITION MENU:
        0      - change `0' partition
        1      - change `1' partition
        2      - change `2' partition
        3      - change `3' partition
        4      - change `4' partition
        5      - change `5' partition
        6      - change `6' partition
        7      - change `7' partition
        select - select a predefined table
        modify - modify a predefined partition table
        name   - name the current table
        print  - display the current table
        label  - write partition map and label to the disk
        quit
        partition> print
       
        Current partition table (original):
        Total disk cylinders available: 2036 + 2 (reserved cylinders)

        Part      Tag    Flag     Cylinders        Size           Blocks
        0       root    wm       0 -  203      100.41MB    (204/0/0) 205632
        1       swap    wu     204 -  407      100.41MB    (204/0/0) 205632
        2     backup    wm       0 - 2035     1002.09MB    (2036/0/0) 2052288
        3 unassigned    wm       0               0         (0/0/0) 0
        4        var    wm     408 -  611      100.41MB    (204/0/0) 205632
        5 unassigned    wm     612 - 1018      200.32MB    (407/0/0) 410256
        6        usr    wm    1019 - 2034      500.06MB    (1016/0/0) 1024128
        7 unassigned    wm       0               0         (0/0/0) 0

        partition>
       
        ****** Modify partitions to suit your needs ******
        ****** Do NOT alter partition 2, backup !!! ******

       In this example we'll go with the current displayed partition table listed:

       partition> 0
      Part      Tag    Flag     Cylinders        Size            Blocks
       0 unassigned    wm       0 -  162       80.23MB    (163/0/0)  164304
  
      Enter partition id tag[unassigned]:
      Enter partition permission flags[wm]:
      Enter new starting cyl[0]: o
      `o' is not an integer.
      Enter new starting cyl[0]: 0
      Enter partition size[164304b, 163c, 80.23mb, 0.08gb]: 100.41mb
      partition> pr
      Current partition table (unnamed):
      Total disk cylinders available: 2036 + 2 (reserved cylinders)

      Part      Tag    Flag     Cylinders        Size            Blocks
      0 unassigned    wm       0 -  203      100.41MB    (204/0/0)  205632
      1 unassigned    wu     163 -  423      128.46MB    (261/0/0)  263088
      2     backup    wu       0 - 2035     1002.09MB    (2036/0/0) 2052288
      3 unassigned    wm       0               0        (0/0/0)          0
      4 unassigned    wm     424 -  749      160.45MB    (326/0/0)  328608
      5 unassigned    wm     750 - 1109      177.19MB    (360/0/0)  362880
      6 unassigned    wm    1110 - 2035      455.77MB    (926/0/0)  933408
      7 unassigned    wm       0               0        (0/0/0)          0

      partition> 1
      Part      Tag    Flag     Cylinders        Size            Blocks
      1 unassigned    wu     163 -  423      128.46MB    (261/0/0)  263088

      Enter partition id tag[unassigned]:
      Enter partition permission flags[wu]:
      Enter new starting cyl[163]: 204
      Enter partition size[263088b, 261c, 128.46mb, 0.13gb]: 100.41mb
      partition> pr
      Current partition table (unnamed):
      Total disk cylinders available: 2036 + 2 (reserved cylinders)

      Part      Tag    Flag     Cylinders        Size            Blocks
      0 unassigned    wm       0 -  203      100.41MB    (204/0/0)  205632
      1 unassigned    wu     204 -  407      100.41MB    (204/0/0)  205632
      2     backup    wu       0 - 2035     1002.09MB    (2036/0/0) 2052288
      3 unassigned    wm       0               0        (0/0/0)          0
      4 unassigned    wm     424 -  749      160.45MB    (326/0/0)  328608
      5 unassigned    wm     750 - 1109      177.19MB    (360/0/0)  362880
      6 unassigned    wm    1110 - 2035      455.77MB    (926/0/0)  933408
      7 unassigned    wm       0               0        (0/0/0)          0
  
      partition> 4
      Part      Tag    Flag     Cylinders        Size            Blocks
      4 unassigned    wm     424 -  749      160.45MB    (326/0/0)  328608

      Enter partition id tag[unassigned]:
      Enter partition permission flags[wm]:
      Enter new starting cyl[424]: 408
      Enter partition size[328608b, 326c, 160.45mb, 0.16gb]: 100.41mb
      partition> pr
      Current partition table (unnamed):
      Total disk cylinders available: 2036 + 2 (reserved cylinders)

      Part      Tag    Flag     Cylinders        Size            Blocks
      0 unassigned    wm       0 -  203      100.41MB    (204/0/0)  205632
      1 unassigned    wu     204 -  407      100.41MB    (204/0/0)  205632
      2     backup    wu       0 - 2035     1002.09MB    (2036/0/0) 2052288
      3 unassigned    wm       0               0        (0/0/0)          0
      4 unassigned    wm     408 -  611      100.41MB    (204/0/0)  205632
      5 unassigned    wm     750 - 1109      177.19MB    (360/0/0)  362880
      6 unassigned    wm    1110 - 2035      455.77MB    (926/0/0)  933408
      7 unassigned    wm       0               0        (0/0/0)          0

      partition> 5
      Part      Tag    Flag     Cylinders        Size            Blocks
      5 unassigned    wm     750 - 1109      177.19MB    (360/0/0)  362880

      Enter partition id tag[unassigned]:
      Enter partition permission flags[wm]:
      Enter new starting cyl[750]: 612
      Enter partition size[362880b, 360c, 177.19mb, 0.17gb]: 177mb
      partition> pr
      Current partition table (unnamed):
      Total disk cylinders available: 2036 + 2 (reserved cylinders)

      Part      Tag    Flag     Cylinders        Size            Blocks
      0 unassigned    wm       0 -  203      100.41MB    (204/0/0)  205632
      1 unassigned    wu     204 -  407      100.41MB    (204/0/0)  205632
      2     backup    wu       0 - 2035     1002.09MB    (2036/0/0) 2052288
      3 unassigned    wm       0               0        (0/0/0)          0
      4 unassigned    wm     408 -  611      100.41MB    (204/0/0)  205632
      5 unassigned    wm     612 -  971      177.19MB    (360/0/0)  362880
      6 unassigned    wm    1110 - 2035      455.77MB    (926/0/0)  933408
      7 unassigned    wm       0               0        (0/0/0)          0

      partition> 6
      Part      Tag    Flag     Cylinders        Size            Blocks
      6 unassigned    wm    1110 - 2035      455.77MB    (926/0/0)  933408

      Enter partition id tag[unassigned]:
      Enter partition permission flags[wm]:
      Enter new starting cyl[1110]: 972
      Enter partition size[933408b, 926c, 455.77mb, 0.45gb]: $
      partition> pr
      Current partition table (unnamed):
      Total disk cylinders available: 2036 + 2 (reserved cylinders)

      Part      Tag    Flag     Cylinders        Size            Blocks
      0 unassigned    wm       0 -  203      100.41MB    (204/0/0)  205632
      1 unassigned    wu     204 -  407      100.41MB    (204/0/0)  205632
      2     backup    wu       0 - 2035     1002.09MB    (2036/0/0) 2052288
      3 unassigned    wm       0               0        (0/0/0)          0
      4 unassigned    wm     408 -  611      100.41MB    (204/0/0)  205632
      5 unassigned    wm     612 -  971      177.19MB    (360/0/0)  362880
      6 unassigned    wm     972 - 2035      523.69MB    (1064/0/0) 1072512
      7 unassigned    wm       0               0        (0/0/0)          0
  
      partition>

      NOTE: You will know for certain that your partitioning is correct if you add all the cylinder values [the values enclosed in ()], like so, 204+204+204+360+1064=2036 which is the same value for slice 2 or the whole disk (Tag = backup).

      Now label the disk. This is important as this is what saves the partition table in your VTOC (Virtual Table Of Contents).  It's also always recommended to do the labeling part twice to be certain that the VTOC gets saved.
        
      partition> label
      partition> q
      format> q

      After partitioning c0t1d0 to be exactly the same as c0t3d0, be sure you label the disk so that VTOC gtes updated with the correct partition table.
   
      To recap, our scenario is:
      c0t3d0 (running Solaris 2.6) being copied to c0t1d0 (which will have the copied Solaris 2.6 slices/partitions)

      c0t3d0s0 /     ->  c0t1d0s0 /
      c0t3d0s4 /var  ->  c0t1d0s4 /var
      c0t3d0s5 /opt  ->  c0t1d0s5 /opt
      c0t3d0s6 /usr  ->  c0t1d0s6 /usr
    
    
[6.] For each of the partitions that you wish to mount, run newfs to contruct a unix filesystem.
           
     So, newfs each partition.

     # newfs -v /dev/rdsk/c0t1d0s0
     # newfs -v /dev/rdsk/c0t1d0s4
     # newfs -v /dev/rdsk/c0t1d0s5
     # newfs -v /dev/rdsk/c0t1d0s6


[7.] To ensure that they are clean and mounted properly,
     run fsck on these mounted partitions:

     # fsck /dev/rdsk/c0t1d0s0
     # fsck /dev/rdsk/c0t1d0s4
     # fsck /dev/rdsk/c0t1d0s5
     # fsck /dev/rdsk/c0t1d0s6
 
[8.] Make the mount points.
     # mkdir /mount_point

     Create mountpoints for each slice/partition, like so:
  
     # mkdir /root2
     # mkdir /var2
     # mkdir /opt2
     # mkdir /usr2

[9.] Mount the new partitions.
     # mount /dev/dsk/c0t1d0sX /mount_point

     Mount each partition (of the new disk), like so:
  
     # mount /dev/dsk/c0t1d0s0 /root2
     # mount /dev/dsk/c0t1d0s4 /var2
     # mount /dev/dsk/c0t1d0s5 /opt2
     # mount /dev/dsk/c0t1d0s6 /usr2

[10.] Now we ufsdump each slices/partitions:
      It is often difficult to copy from one disk to another disk.  If you try to use dd, and the disks are of differing sizes, then you will undoubtedly run into trouble. Use this method to copy from disk to disk and you should not have any problems.

      Of course you're still on the old disk (that's where you booted from c0t3d0):

      # cd /
      (Just ensures that you are in the root's parent/top directory).

      # ufsdump 0f - /dev/rdsk/c0t3d0s0 | (cd /root2; ufsrestore xf -)
      # ufsdump 0f - /dev/rdsk/c0t3d0s4 | (cd /var2;  ufsrestore xf -)
      # ufsdump 0f - /dev/rdsk/c0t3d0s5 | (cd /opt2;  ufsrestore xf -)
      # ufsdump 0f - /dev/rdsk/c0t3d0s6 | (cd /usr2;  ufsrestore xf -)

      The gotcha here is that you can't really specify the directory name as ufsdump will interpret it as not being a block or character device.
      To illustrate this error:

      # cd /usr
      # ufsdump 0f - /usr | (cd /usr2; ufsrestore xf - )


        DUMP: Writing 32 Kilobyte records
        DUMP: Date of this level 0 dump: Wed Dec 10 17:33:42 1997
        DUMP: Date of last level 0 dump: the epoch
        DUMP: Dumping /dev/rdsk/c0t3d0s0 (tmpdns:/usr) to standard output.
        DUMP: Mapping (Pass I) [regular files]
        DUMP: Mapping (Pass II) [directories]
        DUMP: Estimated 317202 blocks (154.88MB).
        DUMP: Dumping (Pass III) [directories]
        DUMP: Broken pipe
        DUMP: The ENTIRE dump is aborted.

       However, using tar instead of ufsdump will work in this type of scenario:

       Example:
      
       # cd /usr
       # tar cvfp - . | (cd /usr2; tar xvfp - )

[11.] OPTIONAL (This may be redundant BUT ensures that the copied files are once again clean and consistent).  Checking the integrity of a filesystem is always highly recommended even if it becomes redundant in nature.
       
      Now, check and run fsck on the new partition/slices:

      # fsck /dev/rdsk/c0t1d0s0
      # fsck /dev/rdsk/c0t1d0s4
      # fsck /dev/rdsk/c0t1d0s5
      # fsck /dev/rdsk/c0t1d0s6

[12.] Edit your /mount_point/etc/vfstab file to have this disk bootup from the correct disk/devices c0t1d0 as opposed to c0t3d0.
  
      # cd /root2
      # vi /root2/etc/vfstab
     
      Change c0tXd0sX devices to reflect the new disk!

      #
      #/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2      /usr      ufs      1     yes -
      fd                 -                   /dev/fd   fd       -     no -
      /proc              -                   /proc     proc     -     no -
      /dev/dsk/c0t1d0s1  -                   -         swap     -     no -
      /dev/dsk/c0t1d0s0  /dev/rdsk/c0t1d0s0  /         ufs      1     no -
      /dev/dsk/c0t1d0s6  /dev/rdsk/c0t1d0s6  /usr      ufs      1     no -
      /dev/dsk/c0t1d0s4  /dev/rdsk/c0t1d0s4  /var      ufs      1     no -
      /dev/dsk/c0t1d0s5  /dev/rdsk/c0t1d0s5  /opt      ufs      2     yes -
      swap               -                   /tmp      tmpfs    -     yes -
       
      :wq!


[13.] Now you must run installboot to load a new bootblk on that disk. Not loading a bootblk will leave this disk in an unbootable state as the boot strap program is contained within the bootblk, and this in turn is what loads the boot file called ufsboot after interfacing with the OBP (Open Boot PROM).
   
      You can do this from your current booted disk or you may choose to boot off from cdrom via ok> boot cdrom -sw (single-user mode, writeable mode off of cdrom's mini-root).

      If you choose to get bootblk from your current disk:

      The location of the bootblk in Solaris 2.5 or higher is under:
      /usr/platform/`uname -i`/lib/fs/ufs/bootblk
 while in Solaris 2.4 or lower it's at:
      /usr/lib/fs/ufs/bootblk
   
      # /usr/sbin/installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk \      
 /dev/rdsk/c0t1d0s0
             
      If you choose to get bootblk from your cdrom image:
   
      ok> boot cdrom -sw

      # installboot /cdrom/solaris_2_5_sparc/s0/export/exec/sparc.Solaris_2.5 \ 
        /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0txd0s0

      ANOTHER SPARC EXAMPLE:

      To install a ufs bootblock on slice 0 of target  0  on  controller  1,  of the platform where the command is being run,
      use:

      example# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk \
               /dev/rdsk/c1t0d0s0

[14.] Now create an alias for the other disk (this may be existent if it's off of the onboard/first scsi controller).
   
      ok> probe-scsi
    
          T3  original boot disk
          T1  new disk with copied slices
       
      Verify via devalias command to see current aliases:
      disk1 is for sd at 1,0 which is scsi id/target 1
    
      ok> devalias  
           
      ok> setenv boot-device disk1
      ok> boot -rv
    
      (You do not necessarily need to do a reconfiguration boot as devices had already been created. This parameter will only be run if you attached new devices to your system).
     
      By default this will always boot from the new disk. If you want to boot from   the old disk you can manually tell it to boot to that alias, like so:
 
      ok> boot disk
      or
      ok> boot disk3
   
      (This will boot off from any Target 3/scsi id 3 internal disk).
    
      Also see INFODOC #'s 14046, 11855, 11854 for setting different boot devalias'es.
    
      NOTE: If the new disk encounters a problem on booting, most likely cause
            would be inappropriate devlinks so, the  course of action to
            take here is the /etc/path_to_inst, /dev, /devices fix:
         
      The following is a solution to solve problems with /dev, /devices, and/or /etc/path-to_inst. This routine extracts the defaults (with links intact)
      from the Solaris 2.x CD-ROM.

      ok> boot cdrom -sw

      # mount /dev/dsk/c0t1d0s0 /a    ** This step assumes your boot disk is c0t1d0s0

      # cd /tmp/dev
      # tar cvfp - . | (cd /a/dev; tar xvfp - )
      # cd /tmp/devices
      # tar cvfp - . | (cd /a/devices; tar xvfp - )
      # cd /tmp/root/etc
      # cp path_to_inst /a/etc/path_to_inst
      # reboot -- -rv


[15.] If you plan to move this new disk you copied the OS on, you
      MUST ensure that it will be moved to a similar architecture
      and machine type as hardware address paths are usually
      different from one machine to another.

      Each hardware platform has a hardware device tree which must
      match the device tree information saved during installation in
      /devices and the /dev directories.

      Another reason is that a kernel from one architecture cannot
      boot on a machine of a different architecture.  Customers often
      overlook these architecture differences (Sun 4/4c/4m/4d/4u). A
      boot drive moved from a SPARCstation 2 (sun4c architecture)
      cannot boot on a SPARCstation 5 (sun4m architecture).

      For more details on why you can't move Solaris 2.X boot disk
      between machines please see INFODOC 13911 and 13920.
   
      Also ensure that you have the correct hostname, IP address and
      vfstab entries for this new drive if you plan to move it to
      another machine.     

 

<@NHN@LINEBREAKER@NHN@>

 

반응형
Posted by [PineTree]
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. 01:00
반응형

[출처:http://www.linuxcenter.or.kr]

1. 개요

1.1 개 념

NFS(Network File System)란 랜 등 정보 통신 네트워크에 접속되어 있는 다른 컴퓨터에 있는 파일이나 파일 시스템을 공유하기 위한 분산 파일 공유 시스템 소프트웨어로 정의되어 있다. 1985년에 미국의 선 마이크로시스템즈사가 개발하였는데, 그 유용성 때문에 많은 시스템에서 이용할 수 있어 업계 표준과 같이 되어 있다. NFS는 개발사인 선 마이크로시스템즈사의 등록 상표이다.

현재의 컴퓨팅 환경은 많은 사용자들이 네트워크와 접속되어 있으며, 이에 따른 파일시스템의 이용 필요성이 급증하고 있다. 그러므로 NFS를 사용하여 서버를 구축하고 이를 적절히 활용하여 가격이 저렴해진 저장공간을 활용하고 있다. 하지만 이 서비스 자체는 보안에 문제의 소지가 있으므로 제한적인 용도로 사용하기를 바란다.

(NFS)은 네트워크를 통해 파일을 공유할 수 있도록 만들어진 프로토콜이다. NFS는 하드웨어, 운영체제 또는 네트워크 구조가 달라도 파일을 공유할 수 있도록 고안되었으며, 파일공유 등을 비롯해 다른 부가기능을 제공한다. 그러나 서비스 자체의 보안 문제과 공유 파일의 보안 문제가 발생할 소지가 있으며, 특히 다른 시스템이 재부팅을 하거나 꺼지게 되면 다른 컴퓨터에 오류가 생기거나 심지어 멈춰버릴 수 있는 단점을 갖기 때문에 제한적인 용도로 사용된다. 사용하는 프로토콜은 NLM(Network Lock Manager)과 NSM(Network Status Monitor)이다.


2. 설정

2.1 설치 전 준비사항

NFS 서버를 운영하려면 가장 먼저 커널레벨에서 NFS 지원 옵션이 선택되어야 한다.

 

Filesystems -> Network File System -> NFS server support(NEW)

이 옵션을 확인하기 위해서는 다음의 옵션이 선택되어야 한다.

 

Code maturity level options

-> Prompt for development and/or incomplete code/drivers 

이 기능 역시 모듈 혹은 커널 내부에 정적으로 설정할 수 있다. 이러한 옵션을 선택하고 정상적으로 커널 컴파일이 이루어졌다면 새로 컴파일한 커널을 기반으로 재부팅 후 데몬을 설정한다.

NFS 데몬을 설정하기 전에 포트맵(portmap)이라는 프로그램이 필요한데 이것은 NFS의 독특한 서비스 구성 때문이다. 일반적인 서버의 경우 데몬이 특정 포트로 신호가 들어오는가를 대기하고 있다가 신호가 들어오면 시스템이 응답하는데 반하여 NFS의 경우에는 포트맵이라는 프로그램이 포트 111번에서 대기하고 있다가 신호가 오면 데몬을 호출하여 연결을 시작하기 때문에 NFS를 설치하기 전에 반드시 포트맵을 설치해야 한다.

2.1 설정 파일

(1) /etc/hosts 

원할한 시스템 사용을 위하여 /etc/hosts에 NFS를 사용할 각 시스템의 항목을 등록해 주는 것이 좋다.

[root@ksw /root]# vi /etc/hosts

# Do not remove the following line, or various programs 

# that require network functionality will fail. 

127.0.0.1             nfs localhost.localdomain        localhost 

218.49.223.155               nfs linuxman.localdomain        linuxman 

218.49.223.154               client ksw.localdomain 

(2) /etc/exports

이 파일은 NFS가 소유 파티션의 어느 부분을 외부로부터 액세스 허용할 것인지를 정의한다. 이 파일의 정의는 다음과 같이 진행한다. 현재 클라이언트에게 임의의 1개 디렉토리를 읽기/쓰기 권한으로 부여하고 싶다면 다음과 같은 형식으로 설정한다. 이때 /home 디렉토리 밑에 test라는 디렉토리를 생성해야 한다.

 

# /etc/exports

/home/test 218.49.223.154(rw,no_root_squash) 

기본적으로는 /etc/exports 파일은 생성되어 있지만 내용은 전혀 없기 때문에 원하는 형식으로 설정해야 한다. #으로 시작하는 부분은 주석으로 무시된다. 만약 여러 개의 클라이언트에게 파일 공유를 설정하려면 다음과 같이 한다.

 

# /etc/exports

/home/test 218.49.223.154(rw,no_root_squash) linuxer(rw,no_root_squash) 

sinyoung(ro,no_root_squash) www.linuxcenter.or.kr(rw,no_root_squash)  

이때 스페이스(space)로 서로 다른 클라이언트를 지정하면 된다. 또한 로컬로 연결된 곳외의 원격지는 도메인명이나 IP주소만 적어주면 똑같이 사용할 수 있다.

문법은 매우 간단한데 개략적으로 살펴보면 다음과 같다. 가장 앞부분에 지정하는 것이 제공할 디렉토리이고 그 다음에 위치하는 것이 접근을 허용할 호스트의 이름 혹은 인터넷 주소이다. 이 주소 부분은 직접 IP를 지정하여 사용하거나 도메인 이름을 사용할 수도 있다. 마지막으로 ( ) 안에 들어 있는 부분은 옵션이며, 그 내용은 다음 표와 같다. 이때, 각각의 옵션은 NFS의 버전에 따라 기본값이 약간씩 다르기 때문에 유의하기 바란다.

 

옵 션

기        능

rw/ro

rw는 읽기/쓰기를 가능하게 하는 옵션이며, ro는 읽기 전용으로 설정하는 옵션이다.

root_squash

모든 클라이언트는 루트(uid/gid=0)가 부여한 익명 사용자 UID/GID로 접근하게 된다. 기본값으로 적용되어 있으며, 클라이언트상에서 루트의 권한을 가지고 있는 사용자라 하더라도 권한의 변경이 되지 않는다. 일반적으로는 원격 루트가 시스템을 관리할 수 있도록, no_root_squash 옵션을 사용하는 것이 일반적이다.

squash_uid

접속에 사용될 특정한 uid를 설정한다.

squash_gid

접속에 사용될 특정한 gid를 설정한다.

all_squash

이 옵션을 사용하게 되면 익명 uid,gid로 전환한다.

noaccess

하위 디렉토리에서 몇몇 디렉토리를 제외하고자 할 때 사용되는옵션이다.

link_relative

모든 심볼릭 링크를 변환한다.


3. 실행

3.1 데몬 실행

파일 설정이 모두 완료되었다면 이를 적용하기 위해 포트맵 데몬과 NFS 데몬을 재구동해야 한다.

 

[root@ksw /root]# /etc/rc.d/init.d/portmap restart

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

3.2 클라이언트 실행

(1) 클라이언트에서 마운트

클라이언트 개념에서는 NFS를 이용하기 위한 다른 동작은 없으며, 접근하고자 하는 서버의 하드가 자신의 시스템에 부착될 수 있도록만 하면 된다. 즉 유닉스나 리눅스 시스템의 모든 장치는 파일로 인식되기 때문에 마운트를 해야 한다. 그러나 마운트를 위한 서버 시스템에서 클라이언트에게 NFS 서비스 디렉토리를 허용하지 않는다면 클라이언트는 NFS를 이용할 수 없다. 만약 이런 제한 조건이 없다면 클라이언트는 단지 마운트만 하면 손쉽게 NFS를 이용할 수 있다.

(2) 마운트

클라이언트에서도 앞에서 수행하였던 커널에서의 NFS 클라이언트 지원 옵션이 지원된다는 전제로 설명하도록 하겠다. 클라이언트에서는 아주 간단히 사용할 수 있는데, 다음과 같은 명령을 루트의 권한으로 입력한다.

 

[root@ksw /root]# mount -t nfs -o timeo=10 218.49.223.155:/home/test /mnt/test

위의 명령을 사용하면 /mnt/test 디렉토리에 원격서버(218.49.223.155)의 /home/test 디렉토리가 마운트된다. 위의 옵션을 개별적으로 살펴보면 -t는 파일시스템의 형식이 nfs라는 것을 알려주는 옵션이고, -o 는 timeout 값을 지정하는 옵션이다. NFS는 네트워크를 기반으로 파일시스템을 제공하는 서비스이기 때문에, 네트워크의 상황이 나쁠 경우 무작정 기다린다면 네트워크의 장애를 일으킬 수 있다. 따라서 이러한 옵션 값 설정을 통해 조절한다.

NFS에 관련된 마운트 명령의 옵션을 간단히 살펴보면 다음과 같다.


1) rsize=n

NFS 서버로부터 읽어들이는 바이트 수를 지정한다. 기본값은 커널에 따라 다른데, 기본값은 1024 바이트이다.

2) wsize=n

NFS 서버에 쓰기를 할 때 사용하는 바이트 수를 정한다. 기본값은 커널에 따라 다른데 기본값은 1024 바이트이다.

3) timeo=n

RPC(Remote Procedure Call) 타임아웃이 발생한 이후 첫번째 재전송 요구를 보낼 때 사용되는 시간으로서, 1/10 초 단위이다. 기본값은 0.7 초이다. 첫 번째 타임아웃이 생기고 나서는 타임아웃 시간의 최대치인 60초에 이르거나 너무 많은 재전송 요구가 발생될 때까지 타임아웃 시간이 2 배로 변화한다. 이것은 네트워크 트래픽을 감소시키기 위한 방법으로 네트워크 속도가 느리거나 서버 자체가 느린 경우나 여러 개의 라우터와 게이트웨이를 경우할 경우에는 마운트 당시 타임아웃 시간을 늘려주는 것이 좋다.

4) retrans=n

타임아웃을 발생시키는 재전송 횟수를 설정한다. 기본값은 3번의 타임아웃으로 타임아웃이 일어나면 파일작업이 중지되거나 콘솔 상에 "server not responding"이라는 메시지가 출력된다.

5) acregmin=n

서버에게 최신 정보를 요청하기에 앞서 일반 파일 속성이 임시로 저장되어야 할 최소값을 설정한다. 기본값은 3초이다.

6) acregmax=n

서버에게 최신 정보를 요청하기에 앞서 일반 파일 속성이 임시로 저장되어야 할 최대값을 설정한다. 기본값은 60초이다.

7) acdirmin=n

서버에게 최신 정보를 요청하기에 앞서 디렉토리의 속성이 임시로 저장되어야 할 최소값을 설정한다. 기본값은 30초이다.

8) acdirmax=n

서버에게 최신 정보를 요청하기에 앞서 디렉토리의 속성이 임시로 저장되어야 할 최대값을 설정한다. 기본값은 60초이다.

9) actimeo=n

이 값을 다음 acregmin, acregmax, acdirmin와 acdirmax에 똑같이 적용한다. 기본값은 없다.

10) retry=n

백그라운드에서 진행중인 NFS 마운트 작업이 포기될 때까지 실행할 횟수를 설정한다. 기본값은 10000 번이다.

11) namlen=n

NFS 서버가 RPC 마운트 프로토콜의 버전 2를 지원하지 않을 때 원격 파일시스템에서 지원되는 파일명의 길이를 명시한다. POSIX pathconf 함수를 지원하기 위해 사용된다. 기본값은 255 개의 문자이다.

12) port=n

NFS 서버와 연결할 수 있는 포트번호를 설정한다. 만약 0(기본값)이라면 원격 호스트의 포트맵에게 질의하여 알아내도록 한다. 만약 포트맵에 NFS 데몬이 등록되어 있지 않은 경우에는 2049라는 표준 NFS 포트번호가 사용된다.

12) mountport=n

mountd 포트번호를 지정한다.

13) mounthost=name

mountd를 실행중인 호스트 이름을 설정한다.

14) mountprog=n

원격 호스트의 마운트 데몬과 접속하기 위해 사용할 수 있는 별도의 RPC 프로그램 번호를 설정한다. 만약 여러 개의 NFS 서버를 운영하고 있을 때 사용한다. 기본값은 표준 RPC 마운트 데몬 프로그램 번호인 100005이다.

15) mountvers=n

원격 호스트의 마운트 데몬과 접속하기 위해 사용하는 별도의 RPC 버전 번호를 명시한다. NFS 서버를 여러 개 운영하고 있을 때 사용한다. 기본값은 버전 1이다.

16) nfsprog=n

원격 호스트의 NFS 데몬과 접속하기 위해 사용하는 별도의 RPC 프로그램 번호를 설정한다. NFS 서버를 여러 개 운영하고 있을 때 사용한다. 기본값은 표준 RPC NFS 데몬 프로그램 번호인 100003이다.

17) nfsvers=n

원격 호스트의 NFS 데몬과 접속하기 위해 사용하는 별도의 RPC 버전 번호를 설정한다. NFS 서버를 여러 개 운영하고 있을 때 사용한다. 기본값은 버전 2이다.

18) bg

첫번째 NFS 마운트 시도가 타임아웃 되면 백그라운드에서 실행을 계속한다. 기본값은 fg로 설정되어 있다.

19) fg

첫번째 NFS 마운트 시도가 타임아웃 되면 그 즉시 포기해 버린다. 기본값이다.

20) posix

POSIX 규칙을 사용하여 NFS 파일시스템을 마운트한다. 파일 이름의 최대 길이에 대하여 POSIX pathconf 함수를 제대로 지원하기 위해 사용된다. 원격 호스트는 RPC 마운트 프로토콜 버전 2를 지원해야 한다.

21) nocto

파일이 생성될 때 새로운 속성을 가져오지 않도록 한다.

22) noac

모든 속성에 대한 캐시를 해제한다. 서버 효율을 떨어뜨리지만 두 개의 다른 NFS 클라이언트로 하여금 서버상의 공통 파일시스템에 쓰기작업을 할 때 효율이 좋아진다.

23) tcp

NFS 파일시스템을 기본값인 UDP가 아니라 TCP 프로토콜을 사용하여 마운트한다. 대부분의 NFS 서버는 오직 UDP만을 지원한다.

24) udp

NFS 파일시스템을 UDP 프로토콜로 마운트한다. 기본값이다.

수치값을 동반하지 않는 단독 옵션들은 no를 앞에 붙이는 형태로 사용할 수 있다. 예를 들어 nointr이라는 옵션은 파일작업을 가로챌 수 없도록 한다.

(3) 자동 마운트

만약, 특정한 사용자에게 임의의 디렉토리에 대한 공유를 허용하고자 한다면 서버 상의 설정파일인 /etc/exports를 다음과 같이 설정한다. 즉, 서버 상의 /home/ksw 디렉토리를 ksw라는 사용자의 /mnt/ksw 디렉토리에서 사용하도록 설정하는 것으로 이때 ksw라는 사용자의 uid와 gid는 각각 501이라고 가정한다.

 

# /etc/exports

/home/ksw 192.168.1.2(rw,no_root_squash,squash_uid=501,squash_gid=501) 

클라이언트가 부팅할 때마다 자동적으로 이러한 동작을 수행하도록 하고 싶다면 /etc/fstab에 다음 항목을 추가한다.

 

/192.168.1.13:/home/ksw /mnt/ksw nfs rw,squash_uid=501,squash_gid=501 1 1

이제 클라이언트가 구동될 때마다 자연스럽게 /mnt/ksw에 원격 디렉토리가 마운트된다.


4. 유틸리티

4.1 showmount

mount 데몬에 NFS 서버에 대해 질의하여 사용중인 상태를 표시하는 명령어로 옵션없이 사용하면, 해당 호스트에 접속한 사용자를 볼 수 있다. showmount는 사용자를 기준으로 정렬되어 출력된다. 옵션은 다음과 같다.

 

옵 션

기        능

-a, --all

클라이언트의 호스트 이름과 마운트된 디렉토리를 호스트:디렉토리 포맷으로 출력

-d, --directories

클라이언트에서 사용하는 디렉토리 이름만을 출력

-e, --exports

NFS 서버의 export 항목의 리스트를 출력

-h, --help

간단한 도움말을 출력

-v, --version

현재 사용중인 showmount의 버전 정보를 출력

--no-headers

출력에서 요약정보를 생략하고 출력

4.2 nfsstat

NFS 서버와 클라이언트의 동작상태를 보여주는 유틸리티이다. 옵션은 다음과 같다.

 

옵 션

기        능

-c

클라이언트의 상태만을 출력

-s

서버측의 상태만을 출력

-W

출력을 조정하는 옵션으로 일반적으로 -c -s와 함께 사용

-w

일정한 지연시간을 갖고 nfs서버와 클라이언트의 상태 출력

4.2 nhfsstone

NFS를 벤치마킹하기 위한 프로그램으로 시간당 부하 수, 전송율, 실패율 등의 NFS와 관련된 데이터를 제공한다. 이 프로그램은 NFS를 벤치마킹하기 위해 만들어진 프로그램이기 때문에 다른 종류의 파일시스템에서는 적용할 수 없다. 옵션은 다음과 같다.

 

옵 션

기        능

-v

자세한 정보 출력

-t

실행시간에 대한 초단위의 설정

-c

NFS에 발생시킬 요청의 총 개수

-l

초당 NFS에 호출을 발생시킬 부하의 개수(기본값은 30)

5. 보안

NFS를 이용해 외부에 있는 하드디스크를 자신의 하드디스크처럼 사용할 수 있다는 것은 매우 편리한 일이다. 그러나 NFS가 네트워크를 기반으로 만들어졌기 때문에 보안적으로도 치명적인 부분을 내재하고 있다.

따라서 NFS는 서버는 클라이언트와 신뢰를 갖고 구축해야 한다. 만약 외부 침입자가 서버의 exports 파일을 볼 경우, 침입자는 자신의 머신을 NFS로 마운트하여 정보를 빼내갈 수 있다. 이런 문제를 봉쇄하기 위해 위에서 설명한 여러 옵션들을 적절하게 설정해야 한다. 일단 침입자가 마운트에 성공하면 침입자는 고의적으로 용량이 큰 파일을 빼가거나 넣음으로써 서버를 비롯한 클라이언트까지 네트워크에 부하를 증가시켜 전체 네트워크를 다운시킬 수도 있다. 관리자는 이러한 문제가 일어나지 않도록 exports 파일을 잘 관리해야 한다.

기본적으로 TCP Wrapper를 이용하는데 hosts.deny에 rpc.mountd와 portmap을 모두 금지시키고 hosts.allow에 공유를 허용할 호스트를 입력하여 최소한의 보안기능을 유지한다.

반응형
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]