PineTree/Eat2005. 3. 19. 17:55
반응형

얼마전 미국 LA에서 교민들을 따라 피크닉을 간 적이 있다.

점심은 한국인들의 단골 소풍메뉴인 상추쌈과 불고기.

그런데 불고기를 굽는 순간 이상한 일이 벌어졌다.

갑자기 주위 사람들이 몰려와 우리 일행을 에워싸는 것이다.

뭔가 금지된 행동을 한 게 아닐까싶어 내심 당황했는데 같이 간 교민들은 자주있는 일이라며 태연해 했다.


알고 보니 주변에 있던 사람들이 좋은 냄새의 정체가 궁금해서 모여든 것.

개중에는 비위좋게 좀 먹어보자는 사람들도 있었다.

음식인심 좋기로 유명한 한국인들인지라 모두에게 시식을 시켜줬다.

불고기 맛을 본 외국인들의 공통점은 한없이 행복한 표정을 지으며 엄지손가락을 치켜세우는 것인데 결코 과장된 표현같아 보이진 않았다.

우리나라 음식중에서 세계에 내세울만한 것을 꼽는다면 단연 불고기이다.

김치도 있지만 불고기와는 비교가 안된다.

미국에서 김치찌개를 끓여보면 안다.

단독주택이 아닌 아파트에서 살면서 김치찌개를 끓이는 것은 굉장한 용기를 필요로 하는 일이다.

항의 차원이 아니라 고발을 당한다.

외국인들에게 김치는 특이한 음식일 뿐이다.

고기와 간장이 어우러져 새로운 맛을 이끌어낸 불고기의 보편적인 매력에는 아무래도 미치지 못한다.

맛좋고 이름난 불고기집들을 알아본다.


<>서초사리원(서초동.02-3474-5005)=와인을 곁들여 불고기를 먹는집으로 알려져 있어 퓨전성향의 현대적인 음식점일 것으로 보이지만 실제로는 지극히 전통에 충실한 집이다.

사리원출신 할머니가 만든 매뉴얼에 따라 불고기와 냉면을 만들기 3대째,지금은 손자가 이어받았다.

불고기는 2종류다.

옛날에 먹던 맛 그대로인 육수불고기와 얇게 썬 생등심을 배즙과 마늘즙만으로 버무려 굽는 사리원불고기가 있다.

십여 가지 과일과 야채로 만든 소스에 찍어먹는 사리원불고기는 가전(家傳)의 비법에 따라 만드는 특별요리이다.

당뇨로 고생하던 할아버지를 위해 할머니가 무(無)설탕 무(無)간장으로 만들어주던 음식이 사리원불고기라는 이름으로 메뉴화되었다.

이 집은 불고기가 전문이지만 냉면맛도 좋다.

한입 먹어보면 면발에서 좋은 메밀임이 느껴진다.

국내산 통메밀을 1년치씩 사놓고 그때그때 메밀을 빻아서 쓰는 게 1대때부터 내려오는 이 집의 냉면 노하우다.

사리원 도곡점(02-573-2202)도 있다.


<>한일관(종각사거리.02-732-3735)=종합한식당인 이 집은 불고기를 1인분을 시켜도 조그만 철판에 구워다 준다는점 외에는 그다지 크게 특별한 점이 없는 평범한 불고기집이다.

그렇지만 이 집에서 불고기를 먹는다는 것은 단순한 식사차원을 넘어 불고기의 역사도 함께 맛본다는 의미도 있다.

서울에서 자란 사람치고 한일관에 한번쯤 안 가본 사람은 드물다.

1939년에 개업했으니 벌써 60년이 넘었다.

지금 주인은 3대째.

고객도 3,4대로 이어진다.

할아버지 할머니 생신때 따라와서 불고기를 얻어먹었던 어린이가 이제는 가장이 되어 가족들을 데리고 종종 방문하기도 한다.

가격도 불고기 1인분 1백80g에 1만3천원이니 합리적인 수준이다.


<>우래옥(대치동.02-561-6121)=불고기는 이래야 한다는 기준을 제시하는 집이다.

을지로 4가에 있는 본점(02-2265-0151)은 50년을 넘었으니 이쯤 되면 불고기 맛의 노하우를 나름대로 완벽하게 갖춘 집이라고 봐야 한다.

수많은 시행착오를 거쳐 고객의 입에 맞춰왔으니 입에 넣는 순간 녹아내리는 것은 당연하다.

정신없이 먹다보면 1인당 2인분씩은 거뜬하게 해치운다.

1인분에 2만2천원이니 전통의 대가는 그다지 싸지 않다.

그렇지만 아무리 배가 불러도 이 집 냉면은 꼭 먹어보길 권한다.

부드러운 면발과 고소하고 깊은 맛의 육수는 음미할만한 가치가 충분히 있다.

/최진섭.맛칼럼니스트.MBC "찾아라!맛있는 TV" 책임PD (choijs@mbc.co.kr)

입력시간 04/11 15:28

 

[한국경제신문]

반응형

'PineTree > Eat' 카테고리의 다른 글

광주 맛집 -2  (0) 2023.06.10
목포 맛집  (0) 2023.06.09
광주광역시 맛집 - 1  (0) 2023.06.09
광화문 맛집!!!!!  (1) 2007.10.27
서울특별시 유명 맛집 연락처 및 주소  (1) 2007.04.14
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
반응형

[출처: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. 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/WINDOWS2005. 2. 14. 18:57
반응형

버젼 PC MacLAN8

 

이기종간의 파일공유를 위한 기초지식

컴퓨터 간의 네트웍 규약을
프로토콜이라고 한다.

네트웍 구성시 사용을 하는 프로토콜에는 여러 가지가 있으나

파일공유시 매킨토시에서 기본적으로 사용하는 프로토콜은 AppleTalk이고

IBM 계열의 PC(이하 PC라 명칭)에서는 노벨네트웍, 즉 NetBEUI를 기본 프로토콜로 사용을 한다.

그리고 인터넷을 이용하는 경우에는 TCP/IP라는 프로토콜을 사용하게 된다.

여기에서 우리는 기종간의 프로토콜 사용에 차이가 있음을 보게 되는데

이 부분을 곰곰히 생각해보면 이기종간의 네트웍을 위해 필요한 조치가 무엇인지를 알 수 있다.

PC에서 AppleTalk을 사용할 수 있게 설정을 하거나 아니면 그와는 반대로

맥에서 NetBEUI를 사용할 수가 있다면 이 두 기종간의 네트웍이 가능하다.

따라서 여기에서 소개하는 두 프로그램들이 그러한 역할을 하게 되는데

DAVE의 경우에는 TCP/IP를 이용하여 NetBIOS를 지원하는 방식으로

 AppleTalk을 직접 지원하는 PC MACLAN과는 이용방식에 차이가 있다.

DAVE는 매킨토시에 설치를 하고 PC MACLAN은 PC에 설치를 하게 된다.

둘 중 어느 방식을 취할 것인지는 네트웍 구성 상의 환경에 따라 판단을 하게 되는데

PC가 다수 있고 매킨토시가 한 대 있는 사무실을 예로 든다면 한 대 뿐인 매킨토시에

DAVE를 설치하여 PC의 네트웍에 참여를 시키는 것이 가장 간단한 방법일 것이다.

만약 이와는 반대로 구성을 하는 경우라면 다수의 PC에 각각 PC MACLAN을 설치해야 하므로

설치상의 시간적인 소요나 비용에 있어서 바람직하지 못한 면이 많다.

 

준비할 사항들

우선은 네트웍의 기기적인 구성을 한다.

컴퓨터 두 대를 1:1로 연결을 하는 경우라면 크로스케이블로 직접 연결하는것 만으로도

준비가 완료될 수도 있다. 하지만 두 대 이상인 경우에는 반드시 허브를 경유하여

네트웍을 구성해야 하며 단 두 대일 경우에도 허브를 사용하여 구성을 할 수가 있다.

허브를 사용하는 경우에는 다이렉트케이블을 사용하게 된다.

그 다음이 소프트웨어의 준비다.

우선 프로그램의 해당 제작회사의 홈페이지에 접속을 하여 Demo 버젼을 다운로드 한다.

PC MACLAN : Miramar Systems (http://www.miramarsys.com)
DAVE : Thursby Software (http://www.thursby.com)

단, PC MACLAN은 Windows 95/98용, Windows ME,

그리고 Windows 2000/NT/XP 버젼이 따로 있으므로 선별하여 다운로드 한다.

그리고 DAVE의 경우에는 다운로드 양식을 작성해야 하며 작성 항목에 있는

이메일 주소를 정확하게 기재를 하여야 Evaluation Key에 관한 회신을 받게 된다.

이 Evalution Key를 입력해야 사용이 가능하다.

 

 

PC MACLAN의 설치 및 설정

만약 바이러스 감시 프로그램 등이 기동이 되어 있는 경우라면

설치 전에 해당 프로그램을 종료를 시킨 후에 설치를 하는 것이 좋다.

설치 프로그램을 실행하면 압축이 풀리게 되며 압축이 풀림과 동시에 설치가 진행이 된다.
 

  

 

설치 도중에 시리얼번호를 물어오게 되는데 Demo의 경우 해당 항목을 공란으로 진행을 한다.

이후 설치가 진행이 되면서 여러 메세지 화면이 나오게 되는데
이들은 설치된 파일들을 확인하겠는가, 설치가 진행되면서 관련 Protocol을 설치한다 든가 하는
진행 메세지이므로 계속 "확인"을 클릭한다.
 
 
위의 메세지는 설치가 거의 완료되어 재시동을 해야 하므로
재시동 후에도 설치디스켓을 제거하지 말라는 내용이다.
즉, 재시동 후에도 일부 설치가 계속 진행이 된다는 의미이므로
재시동이 된 이후에 잠시 화면의 변화를 지켜 볼 필요가 있다.
재시동이 시작되면서 아래와 같은 메세지가 나오는데 이는 네트웍 어댑터의 설정이
아직 잡혀 있지 않다는 내용이니 "Don? display..."를 체크하여 준다.
재시동이 완료된 후 본격전인 설정을 하여 줄 것이기 때문에 이 메세지는 무시를 하여도 무관하다.
하지만 설정을 한 이후에도 파일공유가 되지 않고 재시동을 할 때 마다 아래의 메세지가
계속해서 나온다면 PC MACLAN을 제거하고 재설치해야 한다.

 

 

재시동이 완료되면 시작-->설정-->제어판에서 네트워크를 실행하여

아래 화면에서 처럼 "설치된 네트워크 구성 요소" 중에

AppleTalk Client와 Protocol이 설치가 되어 있음을 확인할 수 있다.

 

 

 
이제 PC MACLAN의 설치가 완료가 된 상태이므로
PC MACLAN을 실행하여 PC 쪽에서의 설정을 잡는다.
"윈도우 탐색기"나 내컴퓨터를 열어
C:\pcmaclan\에서 아래의 아이콘을 가진 Atserver.exe를 찾아서 실행한다.
 
아래의 윈도우가 PC MACLAN을 실행하면 최초로 나오는 윈도우다.
하지만 아직은 파일공유를 위한 Server를 기동시킨 상태가 아니므로
우선 Server 메뉴에서 Start Server를 실행하여 PC MACLAN이 설치된 컴퓨터가
파일공유를 위한 서버로서 동작을 하도록 한다.
 

 

Server 기능이 기동이 된다고 해서 바로 파일공유가 이루어지는 것은 아니며 다른 경우에서와

마찬가지로 서버의 기본환경에 대한 설정을 맞추고 파일공유를 위해 접속하는 사용자에 대해

권한 설정을 해주어야 하며 공유할 폴더나 하드디스크 등에 대한 지정을 하여야 한다.
 

 
Configure 메뉴에서 Server Information을 실행하여 Server의 기본 환경을 설정할 차례다.

 

 
컴퓨터를 기동할 때 마다 매 번 PC MACLAN을 수동으로 실행을 시켜야 하는것은 무척 번거롭다.
따라서 PC MACLAN이 컴퓨터의 시동 이후에 자동으로 실행이 되게 하며
PC MACLAN의 실행과 동시에 Server의 기능이 동작이 되도록 설정을 한다.
(Start server..., Start application...)

그리고 PC MACLAN이 실행이 되고 난 이후에 달리 설정을 할 부분이 없으므로
PC MACLAN의 윈도우가 자동으로 "최소화"가 되도록 설정을 한다. (Minimize...)
그리고 서버로서의 당연한 권리인 패스워드의 변경 기능이 가능하도록 설정을 해야 한다.
(Allow..., Allow...)

이제 서버의 기본환경에 대한 설정은 완료가 되었다.

 

 
Configure 메뉴에서 Users & Groups를 실행한다.
Sever인 Demo와 임의의 사용자인 Guest가 기본사용자로 등록이 되어 있을 것이다.
Guest에 대한 권한설정을 확인하기 위하여 Users 측의 Guest를 마우스로 클릭을 하여
선택한 상태에서 Edit를 클릭을 한다.
Guest의 방문을 허용하도록 설정이 되어 있음을 볼 수가 있다. (Can login에 체크가 되어 있음.)

여기에서 한 가지 보완설명을 한다면 추후에 필요에 따라 그룹을 생성한다든가
등록사용자를 생성한다든가 하는 과정을 진행을 할 수가 있다.
즉, 폴더의 성격에 따라 어느 특정한 폴더에는 특정그룹에 속한 등록사용자나 Guest에게만
접속을 허용하는등의 설정을 함으로써 부서별 혹은 그룹볍로 파일공유를 다원화 시킬 수도 있다
 

 

Configure 메뉴에서 Share Folders를 실행하여 공유할 폴더를 지정을 하게 된다.

공유할 폴더를 선택한 후에 Share 버튼을 눌러 권한을 지정하게 된다.

앞에서 설명한 바와 같이 여러 개의 공유 폴더를 생성하여 각 공유 폴더 별로 접속할 수 있는

사용자들의 권한을 조정할 수 있다.

아래의 화면이 해당 공유 폴더로 접속하는 사용자에 대한 권한을 설정하는 부분이다.

단, 이 번 예제에서는 등록사용자가 아닌 Guest로서도 접속을 할 수 있도록

Everyone에 읽기/쓰기/파일관리의 모든 권한을 지정하게 된다

 

 
 
권한을 지정한 후에 해당 설정 내용대로 적용을 하겠냐는 메세지가 나오면
예(Y)를 클릭하여 설정을 적용하게 된다.
이로써 PC에서의 설정은 완료가 되었으며 이제부터 매킨토시의 설정을 진행하도록 한다.
 
 

매킨토시에서의 설정

이미 설명을 한 바와 같이 PC MACLAN은 AppleTalk을 Protocol로 사용을 함으로로써

매킨토시와의 네트웍이 가능해지는 방식이다.

따라서 매킨토시의 방식을 따르게 되므로 매킨토시에서의 설정은

일반적인 매킨토시간의 네트웍 설정과 동일하다.

 

우선 조절판의 AppleTalk에서 이더넷으로 맞추고 윈도우를 닫으면서 저장을 합니다

 


 
 
조절판의 파일 공유를 실행하여 사용자 설정을 할 차례다.

참고로 등록사용자가 아닌 방문객의로서의 접근도 가능하도록 설정을 할 것이며
암호도 설정을 하지 않는 방식으로 진행을 할 것이다.
하지만 보안이 요구되는 폴더에 대한 접근 권한을 설정하여야 하는 경우라면
등록사용자로 등록을 하고 암호를 지정하는 것이 좋다.
따라서 본 예제에서는 소유자 암호를 공란으로 두었으며 파일 공유 끔의 하단에 있는
시작 버튼을 눌러 파일 공유를 개시하도록 한다.

 

 
잠시 파일 공유를 위한 과정이 진행이 되며 파일 공유에 대한 모든 과정이 완료가 되면
파일 공유 끔이 파일 공유 켬으로 그리고 시작 버튼이 중단으로 바뀌게 된다.

필자는 한글 시스템 8.6을 사용하였기 때문에 파일 공유 윈도우에
"시작/중단"과 "파일 공유 활용도" 탭만이 있으나 한글 시스템 9.0 이상에서는
"사용자와 그룹" 탭도 같은 윈도우 상에서 제공이 되므로 이를 참조하시기 바란다.

 

 
조절판의 사용자와 그룹을 실행하여 새로운 그룹이나 등록사용자를 생성을 할 수 있으나 이러한
경우에는 반드시 PC MACLAN에서 설정한 그룹과 등록사용자명을 동일하게 지정해야 한다.

방문객의 접속에 대한 권한을 설정하기 위하여 사용자와 그룹 상에 있는 방문객을
더블 클릭을 하여 방문객 윈도우를 연다.
보기 항목에서 공유를 선택한 후에 "방문객의 연결 허용"을 체크한다.

이로써 이 번 예제에서는 PC에서 매킨토시로 접근을 하는 경우이든
매킨토시에서 PC로 접근을 하는 경우이든 모두 다 방문객으로서 접근이 가능하게 된다.

 

 

 
 
이제 매킨토시에서의 마지막 설정 작업인 공유 폴더의 지정이 남아 있다.

공유를 지정할 폴더를 마우스로 선택을 하고 데스크탑 상의 파일 메뉴에서
정보입수의 공유를 선택한다.
아래의 정보 윈도우가 나오면 "이 항목과 내용을 공유" 항목을 체크를 하고
모든 사용자의 우측 항목에서 읽기/쓰기 권한을 지정한 후에 적용 버튼을 누른다.
조금 전에 지정한 설정 내용을 적용하겠느냐는 메세지가 나오면 적용을 선택한다.
 
 
이번 예제의 경우에서는 Library 폴더와 유틸리티 폴더를 공유 폴더로 지정하였으며
아래의 아이콘을 보면 공유가 지정이 되어 있음을 확인할 수가 있다.
다시 한 번 언급을 하지만 공유 폴더에 대한 접근시의 권한과 그룹과 등록사용자의 항목 등에
대해서는 필요성에 따라 추후 설정을 하여 사용환경을 맞추어 나가길 바란다


 

이제 매킨토시에서 먼저 파일 공유가 진행이 되는지의 여부를 확인하도록 하겠다.

선택자에서 AppleShare를 선택하면 파일서버인 PCMACLAN DEMO가 나타난다.
이를 더블 클릭을 하여 접속을 시도하게 됩니다. 방문객으로서도 접근을 할 수 있도록

설정을 하였으나 DEMO 버젼인 관계로 일부 제한이 있어 접근이 허용이 되지를 않는다.

따라서 등록 사용자인 Demo를 이름 항목에 기입하여 연결(Demo 버젼 사용자에 한함) 한 후에

두 개의 공유 폴더 중에서 My Document에 연결한다.

 

 


매킨토시의 데스크탑 상에아래와 같이 PC의 공유 폴더 중의 하나인

My Documents가 마운트가 된다.

 
아래의 화면은 매킨토시의 데스크탑의 전경이며 PC의 My Documents 내의 일부 파일들을
매킨토시로 복사를 한 모습이다.
 
 
이제 최종적으로 PC에서의 연결을 확인하도록 하겠다.
 
바탕화면에 있는 네트워크 환경을 실행한다.
네트워크 환경 윈도우에 매킨토시의 공유 폴더인 Hoon의 유틸리티와
Hoon의 Library 폴더가 나타나 있을 것이다.
만약 이러한 폴더가 없을 경우 전체 네트워크를 클릭을 하면 다음의 그림과 같이
매킨토시의 사용자인 Hoon이 나타나게 된다.
 
 
 
연결하고자 하는 매킨토시의 컴퓨터 이름을 더블 클릭을 한 후에
"게스트로서 연결"에 체크를 하고 확인을 누르시면 연결이 완료된다.
 
 
 

원본 : 피앙세 님

출처 : http://cafe.daum.net/easymac 

반응형
Posted by [PineTree]
OS/SOLARIS2005. 1. 24. 23:31
반응형

NFS ( Network File System )

 

NFS 정의 – 한 시스템(client)에서 다른 시스템(server)의 자원을 자신의 자원처럼 사용 가능한 파일 시스템으로 서버와 클라이언트의 두가지가 있다.

 

NFS 서버

(1) NFS 서버에서 사용되는 daemon

1. 실행되는 daemon

/usr/lib/nfs/nfsd     클라이언의 파일 시스템 요청을 처리한다.

/usr/lib/nfd/mountd  NFS 접근 정보에 대한 요청과 파일 시스템 마운트 요청에 대해 응답을 해주는 RPC 서버

 

2. Daemon이 실행되는 순서

Client가 NFS 서버에 접근 요청시 mountd 데몬 수행되어 /etc/dfs/sharetab 파일 참조

nfsd가 돌고 있다면, mountd를 꼭 데몬으로 실행시켜 주어야 NFS서버 운용이 가능함

 

3. 실행 스크립트 있는 위치

/etc/rc3.d/S15nfs.server  or   /etc/init.d/nfs.server

 

(2) NFS 서버에서의 작업 사항

 

1. 수동 공유

/usr/bin/share   명령어 사용

#share  F  nfs  o  rw=client  -d  pathname

 

* 명령어 라인설명

해당 클라이언트에게 옵션을 주기 위해서는 o 을 써주어야 한다.

-o 다음으로 올수 있는 옵션으로는

rw=client       client라는 계정에게 읽고 쓰기 권한을 부여

ro=client        client라는 계정은 읽기만 가능함을 의미

root=client      client라는 계정에게 root 권한을 부여함을 의미

anon=uid        지정된 uid로 해당 자원을 공유함을 의미

 

-d 옵션은 NFS에 대한 주석라인

pathname은 공유를 제공할 디렉토리를 적어줌.

 

share 명령어 사용해서 NFS 서버의 자원 공유시 /etc/dfs/sharetab 파일이 생성됨과 함께 저장된다. 클라이언트가 접근하면 이 파일로 허용 여부 판단.

 

명령어

기능

share

현재의 공유 정보 출력. 자원 공유에 사용

shareall

/etc/dfs/dfstab를 참조하여 리스트되어 있는 자원 공유

unshared

명시된 경로에 대해서 NFS 공유 모두 해제

unshareall

/etc/dfs/dfstab에 명시된 공유 리스트 모두 해제

 

2. 자동 공유

수동 공유는 장비 재부팅시에 모두 사라진다. 그래서 /etc/dfs/dfstab 파일에 정보 입력

# vi  /etc/dfs/dfstab     vi 편집기로 파일 내용 입력

share -F nfs   공유내용입력

위 작업 입력후에 shareall 명령어 사용해서 자원 공유

shareall은 /etc/dfs/dfstab 정보 공유 실행

그리고 마지막으로 /etc/init.d/nfs.server start  실행

 

NFS 클라이언트

(1) NFS 클라이언트에서 사용되는 데몬

Daemon

/usr/lib/nfs/statd   lockd 데몬과 함께 NFS 에서의 lockgin 서비스 제공위해 crash ,

recovery 기능 제공

/usr/lib/nfs/lockd  NFS lock 기능 담당 statd 데몬이 모니터링 서비스가 가능하도록 한다

/etc/rc2.d/S73nfs.client   or     /etc/init.d/nfs.client

 

(2) NFS 클라이언트에서 할 일

1.    수동 마운트

NFS 서버의 공유 내용은 클라이언트에서 사용하려면 서버에서 공유된 자원 마운트

# mount F nfs r o 공유내용 servername:pathname mountpoint

마운트 수행된 경우 /etc/mnttab 파일에 정보 저장됨

해제는 umount 사용해서 가능하다.

 

2.    자동 마운트

수동마운트의 경우 재부팅시에 마운트 정보 사라짐

마운트 정보 보존시에는 /etc/vfstab 파일에 해당 마운트 정보 입력 해줌.

 

(3) NFS 설정 예제

 

 

호스트 이름

IP 주소

NFS 서버

Sola1

192.9.200.10

NFS 클라이언트

Sola2

Sola3

192.9.200.20

192.9.200.30

 

1. NFS 서버에서 구성 순서 예제

 

# mkdir /data

# cd /data

# pwd

/data

# mkdir  user1  user2  user3  user4

# share F nfs /data/user1

# share F nfs o ro=sola2, rw=sola3 /data/user2

# share F nfs o rw=sola2:sola3,root=sola2 /data/user3

# share F nfs o rw=sola2:sola3,anon=0 /data/user4

# /etc/init.d/nfs.server  start

# dfshares

NFS 자원 리스트 보임

 

2.   NFS 클라이언트에서 구성 순서 예제

 

1.수동 마운트 할 경우

      # mount  F  nfs  sola1: /data/user1  /data/user1

      # mount  F  nfs  sola1: /data/user2  /data/user2

 

2.자동 마운트 할 경우

/etc/vfstab 에 내용추가

/etc/init.d/nfs.client start

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