번호   제목 닉네임 조회 등록일
18 I get "WARNING: System is in an unreliable state." when I log into my UnixWare evaluation system.
조인상
7208 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ I get "WARNING: System is in an unreliable state." when I log into my UnixWare evaluation system. Keywords evaluation unixware 7 711 710 warning system unreliable state violating the software license agreement unlicensed enter single user mode UW7EVAL60 defer deferred expired status manager ENGREF 516457 ERGREF 711656 Release UnixWare 7 Release 7.1.1 Problem I have installed UnixWare 7 and have deferred licensing at install time. This should provide me with a 60 day evaluation license but when I log into the system I get the following message: WARNING: System is in an unreliable state. You may be violating the Software License Agreement by having unlicensed software on your system. Please enter Single User Mode and contact your SCO Supplier. If I run the scoadmin License Manager, the manager indicates that the evaluation license (UW7EVAL60) expired on 03/15/1990. CAUSE: There is a problem with the calculation of expiry dates on licenses of systems that are installed after March 14th, 2001. Solution This problem has been reported to SCO Engineering. This problem only occurs on systems that are installed and licensed after March 14th, 2001. Systems installed before this date do not manifest the problem. To workaround this problem take the following steps: 1) Use the SCO License Manager to remove the UW7EVAL60 license 2) Use the SCO License Manager to add the following license to the system: License Number: UW711EVAL License Code: airhorpx License Data: d60;m7hjbtt NOTE: You can only add this license to your system once. If you attempt to remove and reapply the UW711EVAL license you will get an error from the License Manager. The error detail states: Unable to run brand command to add a license on the system Invalid License Data was specified. SEE ALSO: TA# 113321 "UnixWare 7, I get a "NOTICE: Licensed for a limited product evaluation period only." message when I log into my system.
17 OVERVIEW OF UnixWare 7 PATCHES AND SUPPLEMENTS
조인상
5724 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ OVERVIEW OF UnixWare 7 PATCHES AND SUPPLEMENTS (last updated 26-JUL-04) ============================================================================= FOR UNIXWARE 7.1.1 ------------------ Patches preceded by an "*" are those patches that Caldera Technical Support recommends be installed to the baseline system. Major Supplements: Location: ftp://ftp.sco.com/pub/unixware7/ * ./uw711pk: UnixWare 7.1.1 Maintenance Pack version a Minor Supplements: Location: ftp://ftp.sco.com/pub/unixware7/ ptf7723c: UnixWare 7.1.1 Maintenance Pack 4 libthread Supplement ptf7722a: Runtime C Library Supplement ptf7721a: ARCserveIT Client Supplement ptf7720a: ARCserveIT Server Supplement for ptf7141b ptf7718b: Post UW711 Maintenance Pack1 Supplement (requires uw711pk) ptf7707a: JDK 1.2.2 Supplement ptf7706a: ReliantHA vmac Driver Supplement ptf7705a: BIND version 8.2.3 Supplement ptf7699a: Reliant Patch Supplement ptf7684a: Verity Security Supplement ptf7670a: libprof Supplement ptf7663a: eelsd Security Supplement ptf7653a: Adaptec Ultra160 IHV HBA Supplement ptf7629a: Symbios 53c8xx PCI SCSI HBA Supplement ptf7617c: hw Utility Supplement ptf7607e: libc Supplement ptf7440a: ReliantHA MSW Supplement (See NOTE 1 for UW711 patches) ptf7141b: ARCserveIT v6.61 Maintenance Supplement ptf7140a: Webtop 1.4 Supplement (note: this patch approx. 29 meg) ptf7083c: ReliantHA gratuitous arp Supplement ptf7066c: I2O Subsystem Patch and HBA ptf7049j: DDI7 adsl HBA Supplement ptf7044g: ADABAS-C Driver API Supplement Security Supplements: Location: http://www.sco.com/support/security Device Drivers: Location: ftp://ftp.sco.com/pub/unixware7/drivers NOTES FOR UNIXWARE 7.1.1 PATCHES: NOTE 1: ptf7440 is mandantory, if Reliant HA is being used. FOR UNIXWARE 7.1.0 ------------------- Patches preceded by an "*" are those patches that Caldera Technical Support recommends be installed to the baseline system. Major Supplements: Location: ftp://ftp.sco.com/pub/unixware7/ ./arcserveIT/unixware7: Client Agents for ARCserveIT v6.6 Minor Supplements: Location: ftp://ftp.sco.com/pub/unixware7/ ptf7707a: JDK 1.2.2 Supplement ptf7706a: ReliantHA vmac Driver Supplement ptf7694a: lp Supplement ptf7687a: FTP Server Manager Supplement ptf7686a: Audit Supplement ptf7684a: Verity Security Supplement ptf7680a: ttymon Supplement ptf7675a: UUCP Supplement ptf7673b: cron Supplement ptf7672a: NetBIOS Driver Supplement ptf7670a: libprof Supplement ptf7664a: cu Security Supplement ptf7663a: eelsd Security Supplement ptf7662b: Curses Library Supplement ptf7659a: Task Scheduler Supplement ptf7657a: hostmibd Supplement ptf7656a: grep Supplement ptf7654b: xargs Supplement ptf7653a: Adaptec Ultra160 IHV HBA Supplement ptf7652a: csh Supplement ptf7651a: nroff/troff Y2K Number Register Supplement ptf7648a: bcheckrc & umountall Supplement ptf7646b: lp Driver Supplement ptf7643b: *.ns.so and cmds Supplement ptf7642a: pppGUI Supplement ptf7641d: mc01 Driver Supplement ptf7640b: vxslicer Supplement ptf7639b: vxvm-startup Supplement ptf7637c: processorfs Driver Supplement ptf7636a: vol Driver Supplement (See NOTE 7 for UW710 patches) ptf7635a: char Driver Supplement ptf7634a: mtrr Driver Supplement ptf7625b: cpio Supplement ptf7624b: diskadd and diskrm Supplement ptf7617c: hw Utility Supplement ptf7464a: ntp Buffer Overflow Supplement (requires ptf7446) ptf7459d: Networking Supplement (requires ptf7446) ptf7458a: libnsl Supplement (requires ptf7446) ptf7455a: ap Supplement ptf7454a: ES MSG Supplement ptf7453a: asyc and iasy Driver ptf7452a: SCOadmin Modem Manager Supplement ptf7451a: MDAC SCSI HBA Driver Supplement ptf7450a: SCOadmin DNS GUI Supplement ptf7449c: Internet Applications Supplement (requires ptf7408 and ptf7446) ptf7448a: ipc Driver Supplement ptf7447b: intmap, ldterm and ptem Supplement * ptf7446f: Kernel and Networking Supplement (See NOTE 6 for UW710 patches) ptf7440a: ReliantHA MSW Supplement (See NOTE 4 for UW710 patches) * ptf7439e: s5, sfs, memfs, and vxfs Driver Supplement (See NOTE 5 for UW710 patches) ptf7438g: Network Printing Supplement ptf7436a: OpenServer libc Compatibility Supplement ptf7433a: hw Utility Supplement ptf7432a: fold Supplement ptf7430i: Emergency Recovery Supplement * ptf7428g: Hot Plug, PCI Option ROM and remgr Update (may require ptf7425) ptf7426h: ksh Supplement ptf7425b: Install Supplement (See NOTE 1 for UW710 patches) ptf7423a: ttymon Supplement (superseded by ptf7680) ptf7421c: vtoc and disksetup Supplement ptf7420c: ktli and nfs Drivers Supplement * ptf7419e: st01 Driver Update * ptf7418c: mpio, sysdump and sd01 Driver Supplement * ptf7417a: Replacement dlpi Driver ptf7411b: passwd Display Patch * ptf7408e: Security Fix ptf7407c: crash Utility Supplement * ptf7402a: acctsh and clock Supplement ptf7141b: ARCserveIT v6.61 Maintenance Supplement (See NOTE 3 for UW710 patches) ptf7140a: Webtop 1.4 Supplement (note: this patch approx. 29 meg) ptf7134a: Intel PRO/100 Intelligent Server Adapter ptf7133a: Intel PRO/1000 Gigabit Server Adapter ptf7129a: make(1M) Supplement ptf7083c: Reliant HA gratuitous arp Supplement ptf7067e: I2O Mass Storage HBA (supersded by ptf7066) ptf7066c: I2O Subsystem and HBA Patch ptf7049j: DDI7 adsl HBA Supplement * ptf7045h: Intel Microcode Driver ptf7044g: ADABAS-C Driver API Supplement ptf7035a: CDFS Concurrency Supplement Security Supplements: Location: http://www.sco.com/support/security Device Drivers: Location: ftp://ftp.sco.com/pub/unixware7/drivers ./audio: Audio Drivers Directory ./graphics: Graphics Drivers Directory ./network: Network Drivers Directory NOTES FOR UNIXWARE 7.1.0 PATCHES: NOTE 1: ptf7425b - Install Supplement. Required for ISL issues NOTE 3: ptf7125a has been removed and is superseded by ptf7141 NOTE 4: ptf7440 is mandatory, if Reliant HA is being used. NOTE 5: ptf7439 is recommended as of version "d" NOTE 6: ptf7446f requires ptf7408c(or later) and spans the following packages: acp,base,cmds,dshm,inet,kdb, netmgt,nsu,osmp,ppp,uccs,uedebug,usoftint ptf7446f supersedes all versions of the following SLSs: SLS ptf7401 - In Kernel Sockets SLS ptf7406 - Katmai supplement SLS ptf7413 - VM subsystem supplement SLS ptf7414 - libc supplement SLS ptf7416 - cram and psm_mc146818 driver update SLS ptf7424 - libnsl and timod driver supplement SLS ptf7431 - debug supplement SLS ptf7441 - libmas supplement SLS ptf7443 - ping supplement SLS ptf7444 - ppptalk supplement NOTE 7: ptf7636 is recommended if ODM is being used FOR UNIXWARE 7.0.1 ------------------ Patches preceded by an "*" are those patches that Caldera Technical Support recommends be installed to the baseline system. Minor Supplements: Location: ftp://ftp.sco.com/pub/unixware7/ ptf7706a: ReliantHA vmac Driver Supplement ptf7670a: libprof Supplement ptf7662b: Curses Library Supplement ptf7659a: Task Scheduler Supplement ptf7656a: grep Supplement ptf7654b: xargs Supplement ptf7653a: Adaptec Ultra160 IHV HBA Supplement ptf7652a: csh Supplement ptf7651a: nroff/troff Y2K Number Register Supplement ptf7646b: lp Driver Supplement ptf7639b: vxvm-startup Supplement ptf7635a: char Driver Supplement ptf7634a: mtrr Driver Supplement ptf7440a: ReliantHA MSW Supplement (See NOTE 2 for UW701 patches) ptf7436a: OpenServer libc Compatibility Supplement ptf7433a: hw Utility Supplement ptf7407c: crash Utility Supplement ptf7219b: SCOadmin GUI DNS Configuration ptf7218a: FTP Service Supplement ptf7217a: processorfs Driver Supplement ptf7216a: vol Driver Supplement ptf7213b: ping Supplement ptf7215b: iasy Driver Supplement * ptf7208c: Emergency Recovery Supplement ptf7206b: libnsl Supplement ptf7205a: ttymon Supplement ptf7204a: async Patch ptf7143a: SCO ARCserve/Open 2.2.0 Maintenance Supplement ptf7135a: Year 2000 Supplement for SCO ARCserve/Open 2.2 (ptf7135a has been superseded by ptf7143a) ptf7134a: Intel PRO/100 Intelligent Server Adapter ptf7133a: Intel PRO/1000 Gigabit Server Adapter ptf7129a: make(1M) Supplement ptf7124b: Licensing Supplement ptf7123a: UnixWare/OpenServer Development Kit Supplement ptf7122b: Java Supplement ptf7104b: Intel EtherExpress PRO/100B Driver * ptf7096p: Virtual Memory and Streams Performance Supplement ptf7090a: Replacement rsh Supplement ptf7089a: sdiadd Supplement ptf7083c: Relian HA gratuitous arp Supplement ptf7082a: UnixWare 7.0.1 psm_time Driver Patch ptf7080d: ticots and ticotsor Supplement * ptf7079b: UnixWare 7.0.1 dlpi Driver ptf7076a: UnixWare 7.0.1 ca Driver Patch ptf7075a: UnixWare 7.0.1 cram Driver Patch * ptf7074e: st01, sc01 and mc01 Driver Supplement ptf7073c: UnixWare passwd and login Supplement * ptf7072a: UnixWare 7 vtoc Driver Supplement ptf7070a: UnixWare 7 Panic Dump Supplement * ptf7069h: Networking inet Driver * ptf7068c: UnixWare Package Installation Supplement ptf7067e: I2O Mass Storage HBA (superseded by ptf7066) ptf7066c: I2O Subsystem and HBA Patch ptf7064b: UnixWare 7 mod driver Supplement ptf7063c: DDI7 dak HBA Supplement ptf7062b: DDI7 adsb HBA Supplement ptf7061a: winxksh Supplement ptf7059a: mc01 Driver (superseded by ptf7074) ptf7057a: UnixWare 7.0.1 specfs Patch (superseded by ptf7096) * ptf7054b: UnixWare 7.0.1 Patch for libsocket ptf7053d: UnixWare 7 netcfg & Serial Manager Patch * ptf7052b: UnixWare 7.0.1 libthread Patch * ptf7051f: UnixWare 7.0.1 libc Patch ptf7050a: IDE HBA Driver Supplement ptf7049j: DDI7 adsl HBA Supplement ptf7048b: DDI8 qlc1020 HBA Supplement ptf7047c: DDI7 c8xx HBA Supplement ptf7046c: Hotplug Supplement * ptf7045g: Intel Microcode Driver ptf7044g: ADABAS-C Driver API Supplement ptf7038c: UnixWare 7.0.1 Patch for Multiple Drivers, Autopush and Header Files (superseded by ptf7096) ptf7037a: UnixWare 7.0.1 MP Mem Driver Patch (superseded by ptf7096) * ptf7036i: UnixWare 7.0.1 Mass Storage Supplement ptf7035a: CDFS Concurrency Supplement * ptf7034a: Year 2000 Supplement ptf4033a: UnixWare DPT HBA Supplement Security Supplements: Location: http://www.sco.com/support/security Device Drivers: Location: ftp://ftp.sco.com/pub/unixware7/drivers/ ./audio: Audio Drivers Directory ./graphics: Video Drivers, xclients, basex and xserver ./network: NICS Drivers NOTES FOR UNIXWARE 7.0.1 PATCHES: NOTE 2: ptf7440 is mandatory, if Reliant HA is being used. FOR UNIXWARE 7.0.0 ------------------ Patches preceded by an "*" are those patches that Caldera Technical Support recommends be installed to the baseline system. Major Supplements: UnixWare 7.0.1 OS Update Packages Location: ftp://ftp.sco.com/pub/unixware7/update701 Unixware 7 Release Supplement Location: ftp://ftp.sco.com/pub/unixware7/rs700 Minor Supplements: Location: ftp://ftp.sco.com/pub/unixware7/ ptf7706a: ReliantHA vmac Driver Supplement ptf7670a: libprof Supplement ptf7662b: Curses Library Supplement ptf7656a: grep Supplement ptf7653a: Adaptec Ultra160 IHV HBA Supplement ptf7652a: csh Supplement ptf7651a: nroff/troff Y2K Number Register Supplement ptf7635a: char Driver Supplement ptf7634a: mtrr Driver Supplement ptf7440a: ReliantHA MSW Supplement (requires rs700) (See NOTE 2 for UW700 patches) ptf7436a: OpenServer libc Compatibility Supplement ptf7407c: crash Utility Supplement ptf7218a: FTP Service Supplement ptf7217a: processorfs Driver Supplement ptf7216a: vol Driver Supplement * ptf7208c: Emergency Recovery Supplement ptf7143a: SCO ARCserve/Open 2.2.0 Maintenance Supplement ptf7135a: Year 2000 Supplement for SCO ARCserve/Open 2.2 (ptf7135a has been superseded by ptf7143a) ptf7129a: make(1M) Supplement ptf7124b: Licensing Supplement (requires rs700) ptf7123a: UnixWare/OpenServer Development Kit Supp. (requires rs700) ptf7122b: Java Supplement (requires rs700) ptf7121a: Advanced File and Print Server Supplement ptf7120a: 3Com e3H driver Supplement ptf7104b: Intel EtherExpress Pro/100B Driver ptf7090a: Replacement rsh Supplement ptf7089a: sdiadd Supplement ptf7084b: libnsl Supplement (requires rs700) ptf7083c: Reliant HA gratuitous arp Supplement (requires rs700) ptf7081a: UnixWare 7.0.0 psm_time Driver Patch ptf7080d: ticots and ticotsor Supplement (requires rs700) ptf7078a: UnixWare 7.0.0 ca Driver Patch ptf7077a: UnixWare 7.0.0 cram Driver Patch * ptf7074e: st01, sc01, mc01 Driver Supplement (requires rs700) ptf7073c: UnixWare passwd and login Supplement ptf7072a: UnixWare 7 vtoc Driver Supplement * ptf7071a: io Driver Patch (requires rs700) ptf7070a: Panic Dump Supplement (requires rs700) * ptf7068c: UnixWare Package Installation Supplement (requires rs700) ptf7063c: DDI7 dak HBA Supplement ptf7062b: DDI7 adsb HBA Supplement ptf7055b: Replacement Boot Floppy Installation Supplement (requires rs700) ptf7050a: IDE HBA Driver Supplement (requires rs700) ptf7049j: DDI7 adsl HBA Supplement ptf7047c: DDI7 c8xx HBA Supplement * ptf7045g: Intel Microcode Driver (requires rs700) ptf7044g: ADABAS-C Driver Supplement ptf7035a: CDFS Concurrency Supplement (requires rs700) * ptf7034a: Year 2000 Supplement (requries rs700) ptf7022a: cm_intr_attach Supplement (requires rs700) ptf7021b: NFS Update Supplement (requires rs700) ptf7020a: sysdump Supplement (superseded by ptf7002j) * ptf7018a: UnixWare 7 memsize Patch (requires rs700) * ptf7016m: mem Driver and VM Subsystem Supplement (requires rs700) ptf7014a: DDI8 CD-ROM Supplement (requires rs700) * ptf7013e: UnixWare 7 libsocket Patch (requires rs700) ptf7012b: UnixWare 7 SNMP Supplement * ptf7011: UnixWare 7 DLPI Update Supplement (requires rs700) * ptf7010d: UnixWare 7 networking inet driver (require rs700) ptf7004a: UnixWare 7 Language Extension Supplement (requires rs700) * ptf7003i: UnixWare 7 Supplement for Oracle 7 (requires rs700) * ptf7002j: MPIO Update Supplement (requires rs700) ptf4033a: UnixWare DPT HBA Supplement Security Supplements: Location: http://www.sco.com/support/security Device Drivers: Location: ftp://ftp.sco.com/pub/unixware7/ ./audio: Audio Drivers Directory ./graphics: Video Drivers, xclients, basex and xserver ./network: NICS Drivers NOTES FOR UNIXWARE 7.0.0 PATCHES: NOTE 2: ptf7440 is mandatory, if Reliant HA is being used.
16 inetd restart 하기
조인상
5723 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 프로세스 죽이기 # sacadm -k -p inetd 프로세스 살리기 # sacadm -s -p inetd
15 시스템 파라미터 변경
조인상
5347 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ /etc/conf/cf.d/stune /etc/conf/cf.d/mtune 파일 수정 후 /etc/conf/bin/idbuild -B 명령어로 업데이트 한다. stune과 mtune이 같이 물려있어서 해당항목이 같이 업데이트 되어야 한다.
14 디스크 및 디바이스 관리
조인상
5764 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ Disk 디바이스 디스크는 사용자가 시스템 사용에 있어서 관리해야할 가장 중요한 디바이스라 하겠다. 최근에는RAID를 지원하는 디스크 어레이 장비가 많이 상용화되어 데이터의 안정성에 기여하였으나 그래도 데이터 백업에는 신경을 써야 한다. MultiPath I/O(MPIO) SDI는 UnixWare 7에서 사용되는 많은 하드웨어 디바이스에 대한 드라이버 소프트웨어를 위한 뼈대라 할 수 있다. SDI(Storage Device Interface)를 사용하는 목적은 스토리지 디바이스들을 다루는 데 있어서 모듈식으로 관리하게 하기 위해서이다. 모듈식으로 하면 현재의 드라이버와 장래에 나올 드라이들 간의 호환성을 보장해 주고 드라이버들이 기록되어지는 방식이 표준화되는 장점이 있어서 이다. SDI는 두 개의 층으로 구성된다: target driver, host bus adaptor driver SDI 구조 Target Drivers  Host Bus Adaptor  Driver 상위층인 target driver는 디바이스 특유의 부분으로 디바이스마다 특유의 특성을 가지고 있는데, 이들 디바이스를 제어하는데 사용된다. 그리고 이들은 타겟 드라이버에 보내진 요청들을 만족시키기 위해 무슨 조치를 취해야 할 것인지를 결정한다. 타겟 드라이버들은 하드 디스크(sd01), 테이프 디바이스(st01), CD-ROM(sc01), WORM 디바이스(sw01)와 다른 mass storage 디바이스들을 위하여 존재한다. 보다 자세한 정보는 man 명령어를 이용하면 알 수 있다. SDI의 하위층은 HBA(Host Bus Adaptor) 드라이버로서, 타겟 드라이버로부터 요청을 받아 들여서 그 요청을 만족시키 위해 디바이스로 적절한 제어 신호들을 보낸다. UnixWare 7에서 지원하는 MPIO는 SCSI storage 디바이스로 리던던트 액세스 경로를 제공하여 준다. redundant 액세스 경로란, MPIO에는 active 경로와 inactive 경로가 있는데 정상 상태에서는 active 경로로 액세스하다가 무언가 잘못이 발생하면 active 경로가 죽고 inactive 경로가 active 경로로 대체되는 경로를 말한다. 이러한 redundant 경로를 UnixWare 7에서 기본적으로 지원하고 있다는 말이다. 위에 있는 I/O Architecture에서, MPIO드라이버는 target driver 위층에 얹혀있다. VTOC 드라이버 에서는 디스크의 분할 정보인 파티션들과 슬라이스들을 인식하고 있다. 그리고 MPIO 드라이버는 여러 개의 경로를 지원하기 위한 것이어서 단일 경로를 갖는 스토리지 디바이스로 구성이 된 시스템은 지원하지 않는다. RAID(Redundant Array of Inexpensive Disks) 드라이버는 UnixWare 7에서의 성능을 최대화 하기 위하여 각 벤더에서 제공하고 있다. MPIO가 지원되는 하드웨어로, 스토리지 디바이스들을 액세스 하는 여러 경로는 SDI에 의해 MPIO 드라이버로 보고된다. 그래서 MPIO 드라이버들은 사용중인 경로에서 장애가 발생하면 다른 경로를 사용하도록 해준다. 장애가 발생된 경로가 정상으로 동작하면 이 경로를 액티브로 지정하여 사용하게 된다. 다시말해 MPIO 드라이버는 부하 균형(load balancing)을 조절하는 역할도 해준다. 이런 모든 기능을 제공함으로 MPIO는 리던던트 데이터 경로를 통하여 I/O 서브시스템의 안정성을 부가 시켰고, 동시에 데이터 저장을 위한 액티브 경로를 여러 개 사용함으로 처리량을 증가시켰다. sdipath 명령어 Multipath를 관리하는 명령어로 ‘sdipath’란 명령어를 사용하는데, 이 명령어로 디스크로 가는 여러 경로를 리스트할 수 있다. Multipath I/O는 여러 개의 HBA(Host Bus Adapter)들이 같은 버스와 멀티포트화된 디바이스들에 연결될 수 있게 하여 준다. 이들은 두 가지 목적으로 사용된다: 첫째로, HBA에 장애가 발생하였을 때 디바이스들에게로의 높은 가용성(high availablity)을 제공하여 준다. 즉 컨트롤러가 고장났을 때, OS가 해당 디스크를 액세스하기 위해 다른 I/O 경로를 통해 I/O 액세스를 하게(I/O redirect) 해준다. 두번째로, 여러 개의 컨트롤러를 통하여 해당 디스크로의 액세스를 골고루 하도록 로드 밸런싱 (load balancing of I/O)을 제공하여 준다. 현재는 멀티패스 I/O를 위한 디바이스는 디스크만이 해당된다. 옵션에 따라 사용되는 명령어는 다음과 같다: [#] sdipath -o list [-qv] [-d device] [#] sdipath -o fail -d device path [#] sdipath -o repair -d device path -o 수행될 operation을 명시하기 위하여 list MPIO 드라이버에게 알려진 I/O 경로에 대한 정보를 리스트 하기 위하여 fail 명시된 경로로의 I/O 액세스를 중지시키기 위하여 repair 명시된 경로로의 I/O 액세스를 재개시키기 위하여 -d device 3 가지 방법으로 device 대신 표기 가능 c0b0t3d0p0 /dev/rdsk/c0b0t3d0p0 device.tab에 명시된 alias 명으로 -v 보여주는 정보의 헤더를 표시하여 줌 Device Name SCSI 디바이스의 이름을 붙이는 규칙은 특정한 형식을 갖고 있다. c#b#t#d#s# 하드디스크 슬라이스 c#b#t#d#p# 하드디스크 파티션 c#b#t#l# 테이프와 CD-ROM 디바이스 c# 디바이스가 위치하고 있는 컨트롤러의 번호이며, 0-31 번까지 이다. HBA를 위한 번호는 시스템에서 지원하는 보드 슬럿의 위치에 따라 정해지며 슬럿 중간에 새 컨트롤러가 장착되면 그 후단부터 번호가 밀린다. IDE 타입은 맨 뒤로 밀려난다. b# 컨트롤러에서 지원하는 버스 번호이다. 컨트롤러에 따라 여러 개의 버스를 지원 하는 것도 있다. 0-7번까지 이다. IDE 타입에 대해서는 항상 0 이다. t# 디바이스의 타겟 ID로, 일반적으로 디바이스에서 설정한 SCSI ID와 일치한다. 통상 부팅 디바이스를 0번으로 정하여 사용한다. 0-31까지 이다. d# 드라이브 번호이다. 이는 또한 LUN(Logical Drive Number)으로도 알려져 있다. 경우에 따라 디스크 어레이 장비같은 것들은 SCSI ID로 설정할 수도 있지만 LUN으로도 디바이스들을 설정할 때가 있다. 0-31까지 이다. IDE 타입에 대해서는 항상 0이다. p# 디스크에 있는 파티션을 의미한다. 전체 디스크는 p0이고, 실 파티션은 p1부터 p4까지 이다. 테이프와 CD-ROM 디바이스는 l#로 명시된다. s# 한 디바이스내, 한 파티션내의 슬라이스 번호이다. 한 파티션의 전체 슬라이스에 대한 정보를 나타내고, 실 슬라이스 정보는 s1부터 시작한다 . 0-b7(hex)까지이다. Sdiconfig 명령어 /sbin/sdiconfig 명령어는 어떤 디스크, 테이프, SCSI 컨트롤러가 시스템에 연결되어 있는 가를 SDI (Storage Device Interface) 서브시스템에 질의하여 표시하여 준다. ‘sdiconfig’ 명령어의 앞 부분의 숫자들이 할당된 디바이스 번호이다. #/:>sdiconfig -l 0:0,7,0: HBA : (adsl,1) Adaptec PCI SCSI 0,0,0: DISK : SEAGATE ST15150N 0023 0,2,0: DISK : UNISYS 003557M2954S-5120657 0,5,0: TAPE : SONY SDT-5000 330B 1:0,7,0: HBA : (mega,1) MEGA SCSI 0,0,0: DISK : MegaRAIDLD0 RAID0 4149RU.64 0,0,1: DISK : MegaRAIDLD1 RAID0 4095RU.64 0,0,2: DISK : MegaRAIDLD2 RAID0 4149RU.64 2:0,7,0: HBA : (ide,1) Generic ESDI/IDE/ATA 0,0,0: CDROM : LG CD-ROM CRD-8400C1.02 Disk 디바이스 이름 디스크 이름이 붙여지는 방법은 target ID로 명명되는 방식과 LUN 번호로 명명되는 방식이 있다. 인터널 디스크는 대부분 타겟 ID즉 SCSI ID에 따라 붙여지고 외장용은 대부분 디스크 케이지의 내부적 구성에 의거하여 붙여진다. 즉 디스크 모듈에도 디스크가 설치되는 순서가 있는데 정해진 순서에 따라 구성된다. 그리고 target ID 식인지 LUN번호 방식인지는 외장형 디스크어레이 장비가 어느 것을 지원하여 주는가에 달려 있다. target ID 방식 예) c0b0t0d0,c0b0t1d0, c0b0t2d0 …. LUN # 방식 예) c1b0t0d0,c1b0t0d1, c1b0t0d2 …. 인터널 용 디바이스들은 대부분 시스템 기본 구성요소이며, 시스템 관리나 시스템 관련 작업에 이용할 목적으로 구성된다. 그래서 부팅 디스크, 기본 백업용및 소프트웨어 설치용 QIC&DAT 테이프 드라이브와 CD-ROM 드라이브들이 연결되어 있다. 해당 디스크에 대한 보다 자세한 정보는 ‘devattr’ 명령어로 살펴보면 된다. #/:>devattr -v /dev/dsk/c0b0t0d0s0 MODNAME='vtoc' alias='disk1' bdevice='/dev/dsk/c0b0t0d0s0' cdevice='/dev/rdsk/c0b0t0d0s0' desc='Disk Drive 1' inquiry='COMPAQ DGHS09Y 01C0' real_addr='c0b0t0d0sXX' rm_key='64' scsi='true' stamp='JIWjtpJdxZeS' type='disk' /dev/dev/c0b0t0d0s0 디바이스의 가명이 disk1이란 것과 블록 디바이스로bdevice에 있는 이름, 캐릭터 디바이스로 cdevice에 있는 이름이 참조 정보로 이용된다. 슬라이스 이름은 한 파티션 전체에 대한 정보를 s0에서 가지고 있고, 그 파티션을 몇 개로 나누 었는지에 따라 s1부터 번호가 매겨 나간다. 슬라이스에 관한 자세한 내용은 “slice” 편을 참조하면 된다. Devattr 명령어 SCSI 디바이스에 대한 속성을 자세하게 표시하여 준다. 이 명령어는 /etc/device.tab에 있는 정보를 갖고 온다. 다음에 테이프를 예를들어 보았다. 디바이스 이름이 디스크와는 좀 다르게 붙여지며, d# 대신 l#을 사용한다. #/:>devattr -v /dev/rmt/c0s0 alias='ctape1' bklib='SCSI' bufsize='65536' cdevice='/dev/rmt/c0b0t6l0' cdevlist='/dev/erct0,/dev/nrct0,/dev/rct0,/dev/rmt/c0b0t6l0n,/dev/rmt/c0b0t6l0nr,/dev/rmt/c0b0t6l0r,/dev/rmt/c0b0t6l0u, /dev/rmt/c0s0,/dev/rmt/c0s0n,/dev/rmt/c0s0nr,/dev/rmt/c0s0r,/dev/rmt/ctape1,/dev/rmt/nrtape1,/dev/rmt/ntape1, /dev/rmt/rta pe1,/dev/rmt/utape1,/dev/xct0' copy='/bin/dd if=CDEVICE1 of=CDEVICE2 bs=10240' desc='Tape Drive 1' display='true' erasecmd='/usr/lib/tape/tapecntl -e /dev/rmt/c0b0t6l0n' inquiry='HP C1533A A708' norewind='/dev/rmt/c0b0t6l0n' pdimkdtab='true' removable='true' retension='/usr/lib/tape/tapecntl -t /dev/rmt/c0b0t6l0n' rewind='/usr/lib/tape/tapecntl -w /dev/rmt/c0b0t6l0n' rewindcmd='/usr/lib/tape/tapecntl -w /dev/rmt/c0b0t6l0n' scsi='true' type='qtape' volume='cartridge' 위의 것은 DAT 드라이브의 정보이며 /dev/rmt/c0s0란 이름은 가명으로 ctape1을 사용한다고 되어 있다. 보통 소프트웨어 패키지를 설치할 때 ‘pkgadd –d ctape1’과 같이 사용한다. 그리고 ‘dd’,‘cpio’와 ‘tar’ 같은 명령어로 테이프를 조작할 때는 /dev/rmt/c0s0 같은 디바이스명을 이용한다. 그리고 ‘tapecntl’ 같이 세부적으로 조작할 때는 /dev/rmt/c0d0t6l0n 같은 디바이스 명을 사용한다. 자세한 조작법은 명령어를 이용한 백업편을 참조하면 된다. Device 디렉토리 디스크에 대한 디바이스 디렉토리는 /dev 디렉토리 밑에 정의된다. 그래서 디스크 뿐만이 아니라 모든 디바이스로의 액세스는 디바이스들을 직접 액세스하는 것이 아니라 특정 디바이스 파일 즉 special device file라 부르는 파일을 통하여 이루어 진다. 이들 파일이 UnixWare 7 커널내에 있는 루틴들을 액세스하는 포인터가 된다. 특히 디스크 디바이스들은 /dev/dsk와 /dev/rdsk에 위치하고 있다. /dev/dsk 디렉토리는 블록형의 디바이스(block device) 포인터들이고 /dev/rdsk 디렉토리는 캐릭터형의 디바이스(character device) 포인터들이다. 먼저 블록 디바이스 파일들의 일부를 살펴보자. # ls –al /dev/dsk br-------- 1 root sys 7679,184 Oct 5 21:28 c0b0t0d0p0 brw------- 1 root sys 7679,185 Oct 5 21:28 c0b0t0d0p1 brw------- 1 root sys 7679,186 Oct 5 21:28 c0b0t0d0p2 brw------- 1 root sys 7679,187 Oct 5 21:28 c0b0t0d0p3 brw------- 1 root sys 7679,188 Oct 5 21:28 c0b0t0d0p4 brw------- 1 root sys 7679, 0 Oct 5 21:28 c0b0t0d0s0 brw------- 1 root sys 7679, 1 Oct 5 21:28 c0b0t0d0s1 brw------- 1 root sys 7679, 2 Oct 5 21:28 c0b0t0d0s2 brw------- 1 root sys 7679, 3 Oct 5 21:28 c0b0t0d0s3 brw------- 1 root sys 7679, 4 Oct 5 21:28 c0b0t0d0s4 brw------- 1 root sys 7679, 5 Oct 5 21:28 c0b0t0d0s5 brw------- 1 root sys 7679, 6 Oct 5 21:28 c0b0t0d0s6 brw------- 1 root sys 7679, 7 Oct 5 21:28 c0b0t0d0s7 brw------- 1 root sys 7679, 8 Oct 5 21:28 c0b0t0d0s8 brw------- 1 root sys 7679, 9 Oct 5 21:28 c0b0t0d0s9 brw------- 1 root sys 7679, 10 Oct 5 21:28 c0b0t0d0sa brw------- 1 root sys 7679, 11 Oct 5 21:28 c0b0t0d0sb brw------- 1 root sys 7679, 12 Oct 5 21:28 c0b0t0d0sc brw------- 1 root sys 7679, 13 Oct 5 21:28 c0b0t0d0sd brw------- 1 root sys 7679, 14 Oct 5 21:28 c0b0t0d0se brw------- 1 root sys 7679, 15 Oct 5 21:28 c0b0t0d0sf br-------- 1 root sys 7679,440 Oct 23 07:25 c0b0t2d0p0 리스트된 내용을 잘 살펴보면 major 디바이스 번호는 7679이고, 첫번째 디스크의 파티션에 대한 minor 디바이스 번호는 184에서부터 188까지 5개인데 p0인 184는 전체 파티션을 나타내고 185 부터 첫번째 파티션에서 188은 마지막 네번째 파티션을 나타낸다. 이는 인텔 기반 컴퓨터가 디스크를 위한 파티션을 4개 까지 지원하기 때문이다. 다음에는 슬라이스를 알아보자. 각 디스크의 슬라이스 번호는 0에서 sf까지이며 s0는 전체 슬라이스를 나타내며, 실재 슬라이스는 s1부터 sf까지 15개 까지를 지원한다. 이 슬라이스 하나 하나를 파일시스템로 할당하여 마운트시켜 사용할 수 있다. 최대 슬라이스 수는 0에서 183까지 할당하여 디스크 파티션당 184개의 슬라이스를 사용할 수 있다. 그래서 첫번째 디스크의 마이너 번호를 살펴보면 184번부터 파티션을 위한 마이너 번호를 매기고 있다. 이런한 규칙을 숙지하고 있으면 실수로 디바이스를 지웠다 하더라도 디바이스의 special 파일을 만드는 ‘mknod’ 명령어를 이용하여 디바이스 파일을 만들어 복구할 수 있다. 마이너 디바이스 번호는 디스크당 256개가 할당된다. 첫번째 디스크에 할당된 번호는 0번부터 255까지로 256개가 된다. 그래서 두번째 디스크의 마이너 번호는 256번부터 부여된다. Device 검색 디바이스를 검색하는 과정은, UnixWare 7에서는 부팅이 일어나면 /etc/rc2 스크립트를 읽는 과정 중에 /etc/scsi/pdimkdtab 실행파일이 SDI 드라이버에 의해 구성된 EDT(Equipped Device Table)을 읽고 /etc/device.tab에 있는 디바이스 테이블 엔츄리들을 갱신한다. 잠시 이와 관련된 rc2 파일을 살펴 보면 그 내용이 있음을 알 수 있다. #:> vi /etc/rc2 # update the device table and the contents file for PDI devices # if [ -s /etc/scsi/installf.input ] then pfmt -l $LABEL -s info -g $CAT:195 "\nPlease wait while Device Database is updated. This may take a few minutes.\n\n" /etc/scsi/pdimkdtab -fi 2>/etc/scsi/dtab.out fi # # backup the device table files in case of corruption # if [ \! -f /etc/.device.tab ] then cp /etc/device.tab /etc/.device.tab >/dev/null 2>&1 fi 디바이스들이 /etc/device.tab에 안보인다면 시스템이 해당 디바이스를 인식하지 못하고 있다는 의미이므로 사용할 수 없다. 그런 경우는 디바이스에 문제가 있던가 시스템이 지원하지 않을 때에 해당된다. device.tab의 정보를 읽어들이는 명령어로 ‘devattr’ 명령어가 있다. 이외에서 메모리와 주변장치 구성을 포함한 시스템 구성 정보를 보여주는 ‘/usr/sbin/prtconf’ 명령어가 있다. 먼저 ‘devattr’ 명령어에 관하여 알아보자. #:>devattr -v /dev/dsk/c0b0t0d0s0 MODNAME='vtoc' alias='disk1' bdevice='/dev/dsk/c0b0t0d0s0' cdevice='/dev/rdsk/c0b0t0d0s0' desc='Disk Drive 1' inquiry='SEAGATE ST15150N 0023' real_addr='c0b0t0d0sXX' rm_key='60' scsi='true' stamp='HIchQVFCpfxG' type='disk' 이 명령어는 현재 디바이스가 붙어 있지 않더라도 이전에 붙였던 디바이스라도 있는 것처럼 보여준다(devattr, prtconf) . 정확한 디바이스 구성을 알려면 ‘sdiconfig’ 명령을 이용한 결과이며, 이를 근거로 ‘devattr’ 명령어를 참조하면 된다. 아래는 ‘prtconf’ 명령어 결과이다. prtconf 명령어 주변장치나 메모리등의 시스템 정보를 간략히 보여준다. #>prtconf SYSTEM CONFIGURATION: Memory Size: 64 Megabytes System Peripherals: Floppy Drive 1 - 1.44 MB 3.5 SCSI CD-Rom Drive 1 - LG - CD-ROM CRD-8400C Tape Drive 1 - SONY - SDT-5000 Disk Drive 1 - SEAGATE - ST15150N - 4094 MB Disk Drive 2 - MegaRAID - LD0 RAID0 4149R - 4148 MB Disk Drive 3 - MegaRAID - LD1 RAID0 4095R - 4094 MB Disk Drive 4 - MegaRAID - LD2 RAID0 4149R - 4148 MB Disk Drive 5 - UNISYS - 003557M2954S-512 Disk Drive 6 - MegaRAID - LD0 RAID0 4149R - 4148 MB Disk Drive 7 - UNISYS - 003557M2954S-512 - 4149 MB 80387 Math Processor 자 이제 현재 시스템에 연결되어 있으며 시스템이 인식하고 있는 정확한 구성 정보를 알아내기 위해 사용하는 명령어인 ‘sdiconfig’ 혹 ‘pdiconfig’ 명령어에 관하여 알아보자. #/:>sdiconfig -l 0:0,7,0: HBA : (adsl,1) Adaptec PCI SCSI 0,0,0: DISK : SEAGATE ST15150N 0023 0,2,0: DISK : UNISYS 003557M2954S-5120657 0,5,0: TAPE : SONY SDT-5000 330B 1:0,7,0: HBA : (mega,1) MEGA SCSI 0,0,0: DISK : MegaRAIDLD0 RAID0 4149RU.64 0,0,1: DISK : MegaRAIDLD1 RAID0 4095RU.64 0,0,2: DISK : MegaRAIDLD2 RAID0 4149RU.64 2:0,7,0: HBA : (ide,1) Generic ESDI/IDE/ATA 0,0,0: CDROM : LG CD-ROM CRD-8400C1.02 SCSI와 (E)IDE 타입으로 붙어 있는 모든 디바이스에 관한 정보를 보여주고 있다. /etc/scsi 디렉토리 이 디렉토리에는 SCSI 디바이스에 관한 정보와 SCSI 유틸리티들이 존재한다. 또한 /sbin 디렉토리 일부와 파일들이 링크되어 있다. #/etc/scsi:>ls -al -rwxr-xr-x 1 bin bin 21976 Oct 6 05:36 cpqunits -rwxr-xr-x 1 root sys 90536 Mar 6 1999 diskcfg drwxr-xr-x 2 bin bin 96 Oct 6 04:47 format.d drwxrwxr-x 2 root sys 1024 Oct 6 05:21 mkdev.d -rwxr-xr-x 1 root sys 77540 Mar 6 1999 pdi_hot -rwxr-xr-x 1 root sys 119660 Mar 6 1999 pdi_timeout -rwxr-xr-x 2 root sys 97716 Mar 6 1999 pdiconfig -rwxr-xr-x 3 root sys 222220 May 21 18:13 pdimkdev -rwxr-xr-x 3 root sys 222220 May 21 18:13 pdimkdtab -r-------- 1 root root 2008 Apr 8 1998 pditimetab -r-------- 1 root root 2008 Apr 8 1998 pditimetab.orig -rwxr-xr-x 2 root sys 97716 Mar 6 1999 pdiunits -rw-r--r-- 1 root root 960 Oct 23 07:24 sdi_edt -rwxr-xr-x 2 root sys 1634 Apr 8 1998 sdiadd -rwxr-xr-x 3 root sys 222220 May 21 18:13 sdighost -rwxr-xr-x 1 root sys 4576 Apr 8 1998 sdimkosr5 -rwxr-xr-x 1 root sys 82396 Mar 6 1999 sdipath -rwxr-xr-x 2 root sys 1634 Apr 8 1998 sdirm -rwxr-xr-x 1 root sys 3799 Mar 6 1999 sdistatic drwxr-xr-x 2 root sys 96 Oct 6 04:47 target.d -r-xr-xr-x 1 bin bin 1360 Mar 6 1999 tc.index
13 유닉스웨어 환경설정
조인상
5705 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr /etc/conf/autotune.d --kernel 값 변경 /etc/conf/cf.d/stune ---- system parameta값변경 SHMMAX 204800000 MAXULWP 32000 NPROC 12000 MAXUP 12000 HVMMLIM 0X7FFFFFFF SFSZLIM 0X7FFFFFFF HFSZLIM 0X7FFFFFFF SVMMLIM 0X7FFFFFFF SSTKLIM 0X7FFFFFFF HSTKLIM 0X7FFFFFFF SDATLIM 0X7FFFFFFF HDATLIM 0X7FFFFFFF SFNOLIM 1024 HFNOLIM 1024 BUFHWM 32768 MSGMNB 131072 MSGMAX 32768 MSGMNI 8192 MSGTQL 16384 SEMMSL 100 SEMMNI 200 SEMMNS 200 ./iBuild reboot ====== 추가 내용 =========== 유닉스웨어 7.1.1 에서 위의 설정값대로 해주려다가 에러가 났다. MAXUP 12000 /etc/conf/cf.d/mtune 파일과 /etc/conf/autotune.d/kernel 파일에서 수정후 /etc/conf/bin/idbuild -B 명령어로 세팅.
12 메모리를 4기가 이상 사용해야 할때
조인상
5032 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr # cat /stand/boot #ident "@(#)unixsrc:usr/src/common/boot/conf/boot.hd /main/uw7_uk/1" #ident "$Header: $" BLM=hd.blm files=resmgr,license rootfs=vxfs TZ_OFFSET=-32400 ENABLE_4GB_MEM=Y ===> 요부분
11 IPSTOR 관련 MPIO세팅 file
조인상
5932 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ About sco ipstore mpio setting 시스템 관리를 위해 알아 두면 편리한 사항 *기본값 이외의 값으로 설정된 조정 가능한 매개 변수(Tunning Parameter)항목을 보고싶은 경우 /etc/conf/cf.d/stune file을 참조한다 *조정 가능한 매개 변수를 보거나 다루는 명령은 /etc/conf/bin/idtune 명령을 이용 */stand/unix는 지금 구동중인 kernel module로 늘 갱신되어진다. *시스템의 상황을 monitoring 하려면 rtpm (Real Tome Performance Monitor)utility 를 이용하면 알수 있다. *시스템이 시작시에 수행되길 원하는 Shell Script 혹은 program 이 있을경우, /etc/rc2.d directory 밑에 S 로 시작되는 shell script file 을 만들어 주고, 종료시에 자동으로 종료시키고 싶다면 대문자 K로 시작하는 shell script를 동일한 곳에 만들어준다. *Unix에서는 각각의 device 를 마치 하난의 file 처럼 취급하여 사용할 수 있도록 처리 *Device 를 handling 할 수 있는 각 file을 Device Node 라고 함 *Device node 는 모두 /dev directory 밑에 모아 놓음. *Device node 의 file 속성은 첫 문자가 b 혹은 c로 시작되며, b 는 block device를 c는 Character Special Device(Raw Device)의미 예) ls -l /dev/dsk/c0b0t0d0s0 ls -l /dev/rdsk/c0b0t0d0s0 rdsk ->가공전H/W dsk->가공후 사용할 수 이는 S/W PDI (Portable Device interface) Unix에서 Device 를 handling 하기 위해서는 /dev directory 밑에 연관돤 device node 및 device table 들이 생성되어 있어야함. device 정보가 변경된경우 시스템이 부팅하는 과정에서 please Wait While the Device Database update 라는 메시지를 볼수있음 이러한 특성은 PDI 라는 Device Interface 를 채택하여, 부팅 과정에 UnixWare가 자동으로 Device table을 검색하여 Portable하게 관리해 주는 특성때문임. UnixWare Disk 관리 명령어 1. fdisk ; disk의 Active partition설정. partition 분할 및 삭제,생성 수행시 사용 2. disksetup ; 하나의 Unix disk에 File System Slice 를 자동으로 생성코자 할때 사용 3. prtvtoc ; 디스크의 vtoc 정보 (Volume Table of Contents)를 출력하고자 할 때 사용 4. edvtoc ; 디스크의 vtoc 정보를 editing 하고자 할 때 사용 5. mkfs ; 디스크의 특정 slice 에 File System 을 만들고자 할때 사용 6. fsck ; 디스크의 특정 slice 를 File system check 하고자 할때 사용 7. mount ; 특정 slice 를 mount 시키고자 할때 사용 8. prtconf ; 시스템에 장착된 모든 device의 정보를 보고자 할때 사용 unixware mpio 점검 복구 방법 1. Unixware 에서 multipath관련 패키지가 반드시 설치되어 있어야 함. 그렇지 않고 듀얼패스로 연결이 되면 볼륨이 허상으로 보이는 현상과 이상 현상 발생 2. 설치 순서는 OS상에서 /etc/scsi/sdipath 쳐보면 설치 여부를 알 수가 있으니 설치된 것을 확인하고 볼륨 Assign하여 진행하면 됨 1. device scan 방법 /etc/scsi/pdiconfig -l 확인 --> 디스크에 FALCON IPSTOR Disk Name 으로 display 2. MPIO 구성방법 --> reboot 하면 자동으로 구성 3. MPIO 체크방법 /etc/scsi/sdipath -o list --> device 정보확인 및 Reads상에 Active 확인 4. MPIO 복구 방법 --> Reads 상에 Fail이 존재시 복구 수행 --> Fail 발생 Device의 Disk번호 및 Path 확인 ex) disk4 path125 Fail --> /etc/scsi/sdipath -o repair -d disk4 path125
10 네트웍 관련 설정(NIC,service)
조인상
6987 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr 3. configuring IP connectivity • ioscan –funC lan Class I H/W Path Driver S/W State H/W Type Description =================================================================== lan 0 60/6 lan2 CLAIMED INTERFACE Built-in LAN /dev/diag/lan0 /dev/ether0 - insf –eC lan 자동lan device file 생성 - lanscan - ifconfig lan0 • configuring network connectivity - /etc/rc.config.d/netconf ip,gateway,netmask등 환경구성정의 /sbin/init.d/net stop,start 적용 - /usr/bin/hostname $hostname /sbin/init.d/hostname stop,start 적용 - /usr/sbin/ifconfig lan0 210.133.109.23 netmask 255.255.255.0 up(down) lancard 구성적용,down시키기 run level 2에서 적용 -> who –r 확인 후 init 2 실행 - multiple ip 적용 ifconfig lan0:0 inet 210.233.109.23 ifconfig lan0:1 inet 210.233.108.22 - set_parms hostname, timezone, date_time, root_passwd, ip_address, addl_netwrk or initial (for entire initial boot-time dialog sequence) 4. configuring routing • netstat –rn 으로 routing table 확인 Routing tables Dest/Netmask Gateway Flags Refs Use Interface Pmtu 127.0.0.1 127.0.0.1 UH 0 10326 lo0 4136 203.233.109.23 203.233.109.23 UH 0 616 lan0 4136 203.233.109.0 203.233.109.23 U 2 0 lan0 1500 127.0.0.0 127.0.0.1 U 0 0 lo0 4136 default 203.233.109.254 UG 0 0 lan0 1500 - flags U : up H : host (blak) : network G : gateway • routing table 조작 - default route(gateway) route add default 203.233.109.23.254 1 - /usr/sbin/route [-f] [-n] [-p pmtu] add|delete [net|host] destination [netmask mask] gateway [count] 6. trobleshooting network connectivity • lanscan • linkloop 0x0800093B16C2 Link connectivity to LAN station: 0x0800093B16C2 -- OK -> data link level connectivity test • lanadmin Enter command: display LAN INTERFACE STATUS DISPLAY Mon, Dec 18,2000 22:50:13 PPA Number = 0 Description = lan0 Hewlett-Packard LAN Interface Hw Rev 0 Type (value) = ethernet-csmacd(6) MTU Size = 1500 Speed = 10000000 Station Address = 0x800093b16c2 Administration Status (value) = up(1) Operation Status (value) = up(1) Last Change = 100 Inbound Octets = 297076 Inbound Unicast Packets = 230 Inbound Non-Unicast Packets = 579 Inbound Discards = 0 Inbound Errors = 7 Inbound Unknown Protocols = 395 Outbound Octets = 18173 Outbound Unicast Packets = 248 Outbound Non-Unicast Packets = 2 Outbound Discards = 0 Outbound Errors = 0 Outbound Queue Length = 0 Specific = 655367 • arp : ARP kernel table • ping : IP connectivity • netstat –i : LAN interface status • nslookup : hostname 을 IP 로 변환 7. starting network service • /sbin/rc*.d/K|S###file : symbolic link file /sbin/init.d 실행_script /etc/rc.config.d/configure_file - 이 script를 고치려면 /sbin/init.d/template file을 고쳐서 샤용한다. • run revel - s single user mode(adminisrator) only consol - S s와 동일하나 terminal을 consol 대신 사용한다 - 1 s와 동일하나 file system이 mount되고 syncer가 실행됨 • /sbin/init 가 system을 /etc/inittab 에 정의된 initdefault까지 revel up 시킨다 이때 각 레벨 마다 init 가 /sbin/rc를 실행시킨다. 8.9 NFS • 간단히 말하면 remount mount 이며 window에서 파일공유와 유사하다 • nfs configuration server 1. ps –ef|grep nfs 2. /etc/rc.config.d/nfsconf 에서 NFS_SERVER=1, AUTO_MOUNT=1 로 변경 3. /sbin/init.d/nfs.server start 시킴 4. vi /etc/exports 에 file system, directory, file등이 포함될 수 있다. 5. exportfs -a client 1. nfsconf 구성 NFS_CLIENT=1 AUTO_MOUNT=1로 변경 2. /sbin/init.d/nfs.client start 3. showmount –e nfs_server_ip nfs 목록을 알 수있다 4. mkdir nfs_dir(mount point) 5. mount server_ip:목록 nfs_dir 6. bdf로 확인 -> 여기서 client의 user UID와 PID는 server에서 file permission인증에 적용된다. • nfs server daemon - rpcbind(hp10.30이후버전), nfsd 4, rpc.pcnfsd, rpc.mounted, rpc.statd, rpc.lockd nfs client daemon - rpcbind, rpc.statd, rpc.lockd • /etc/exports file 구성 – client 제한하기 - /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 (unknown user 에게 root의 UID 부여) /usr/temp -rw=ram:alligator # export read-write only to these /usr/bin -ro # export read-only to everyone /usr/stuff -access=bear,anon=65534,ro # several options on one line • /etc/exports, /etc/xtab file - exportfs –a 실행을 하면 exportfs의 내용을 xtab file로 구성한다. client는 xtab을 기초로 요청을 하게된다. exports file은 수동으로 구성가능 하지만 xtab file 은 자동생성되는 것이다. • boot시 자동 mount - /etc/fstab 구성 server:/mnt /mnt nfs defaults(or rw,hard(option)) 0 0 #mount from server. - client /etc/mnttab file 생성 : nfs mounted file system list - server /etc/rmtab file 생성 : nfs mount client 기록 • NFS troubleshooting - /etc/exports file - exportfs - inetd daemon - rpcbind daemon - rpc.mountd -> rpcinfo –p로 daemon 확인 - nfs 상태확인 nfsstat –s(server) –c(client) 10.automounter (nfs client) • automounter maps - master map - direct map - indirect map - special map • master map - /etc/auto_master /- /etc/auto.direct /home /etc/auto.home /net -hosts -soft - master map 재 구성 1. ps –ef|grep automount 2. kill –TERM pid 3. automount • direct map - nfs server의 /etc/exports file /usr/project -access=client_hostname - nfs client의 1. /etc/auto_master /- /etc/auto.direct 2. /etc/auto.direct /local_mount_dir nfs_server_ip(or hostname):/usr/project 3. /sbin/init.d/nfs.client start ps –ef | grep –e rpcbind –e biod –e automount - client /tmp_mnt/local_mount_dir mount 되고 이것이 /local_mount_dir로 symbolic link된다 11.NIS (network information service) • nis maps - /var/yp/domainname/ 에 map file생성 - 예) /etc/passwd 는 다음의 database file로 생성 passwd.byname.dir passwd.byname.pag passwd.byuid.dir passwd.byuid.pag ypservers는 자동으로 생성되는 nis domain list file /var/yp/Stratus> ls ./ netgroup.byhost.pag protocols.bynumber.dir ../ netgroup.byuser.dir protocols.bynumber.pag aliases.time netgroup.byuser.pag protocols.time auto.master.dir netgroup.dir publickey.byname.dir auto.master.pag netgroup.pag publickey.byname.pag auto_master.time netgroup.time publickey.time group.bygid.dir netid.byname.dir rpc.byname.dir group.bygid.pag netid.byname.pag rpc.byname.pag group.byname.dir netid.time rpc.bynumber.dir group.byname.pag networks.byaddr.dir rpc.bynumber.pag group.time networks.byaddr.pag rpc.time hosts.byaddr.dir networks.byname.dir servi.bynp.dir hosts.byaddr.pag networks.byname.pag servi.bynp.pag hosts.byname.dir networks.time services.byname.dir hosts.byname.pag passwd.byname.dir services.byname.pag hosts.time passwd.byname.pag services.time mail.aliases.dir passwd.byuid.dir vhe_list.dir mail.aliases.pag passwd.byuid.pag vhe_list.pag mail.byaddr.dir passwd.time vhe_list.time mail.byaddr.pag protocols.byname.dir ypservers.dir netgroup.byhost.dir protocols.byname.pag ypservers.pag • nis startup file - /etc/rc.config.d/namesvrs /sbin/init.d/nis.server nis.client • nis daemons nis server nis slave nis client rpcbind ypserv ypxfrd rpc.yppasswdd rpc.ypupdated keyserv ypbind rpcbind ypserv ypxfrd keyserv ypbind rpcbind ypbind keyserv • configuring nis - nis master server 1. domainname domain 2. ypinit –m(master) You will be required to answer a few questions to install the Network Information Ser vice. All questions will be asked at the beginning of this procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] y Can the existing directory "/var/yp/Stratus" and its contents be destroyed? [y/n: n] y At this point, you must construct a list of the hosts which will be NIS servers for the "Stratus" domain. This machine, kccfep, is in the list of Network Information Service servers. Please provide the hostnames of the slave servers, one per line. When you have no more names to add, enter a <ctrl-D> or a blank line. next host to add: kccfep next host to add: The current list of NIS servers looks like this: kccfep Is this correct? [y/n: y] y There will be no further questions. The remainder of the procedure should take 5 to 10 minutes. Building the ypservers database... ypservers build complete. Running make in /var/yp: updated passwd updated group updated hosts updated networks updated rpc updated services updated protocols updated netgroup WARNING: writable directory /var/yp/Stratus WARNING: writable directory /var/yp/Stratus WARNING: writable directory /var/yp/Stratus updated aliases updated publickey updated netid updated vhe_list updated auto.master kccfep has been set up as a master Network Information Service server without any errors. If there are running slave NIS servers, run yppush(1M) now for any databases which have been changed. If there are no running slaves, run ypinit on those hosts which are to be slave servers. 3. vi /etc/rc.config.d/namesvrs NIS_MASTER_SERVER=1 NIS_CLIENT=1 NIS_DOMAIN=domainname 4. /sbin/init.d/nis.server start - nis slave server 1. domainname domain 2. ypinit –s master_server 3. vi /etc/rc.config.d/namesvrs NIS_SLAVE_SERVER=1 NIS_CLIENT=1 NIS_DOMAIN=domainname 4. /sbin/init.d/nis.server start - nis client 1. domainname domain 2. vi /etc/rc.config.d/namesvrs NIS_CLIENT=1 NIS_DOMAIN=domainname 3. /sbin/init.d/nis.client start • change user passwd in nis environment - client : user passwd 변경 master server : rpc.yppasswdd daemon 이 /etc/passwd 와 map file을 변경시킴 - user 가 passwd를 잊은경우(master server의 root가 master server에서) 1. vi /etc/passwd 2. passwd –r map_file username 3. /var/yp/ypmake passwd • master server에서 map file 가져오기 : map file update 방법 - slave server ypxfr –h server mapname : ypxfr passwd.byuid - master server yppush passwd.byuid • restricting access client, slave 1. /etc/nsswitch.conf passwd : compat group : compat 2. /etc/passwd ……………………. +user1 +user2 -> 모든 local user와 nis user1,2 만이 사용가능 • restricting access master server -> master server 사용가능한 user 제한하기 1. cp /etc/passwd /etc/passwd.nis 2. vipw 제한하고픈 user 지우고 + 표기를 file 끝에 남김 3. vi /etc/nsswitch.conf passwd: compat group: compat 4. vi /etc/rc.config.d/namesvrs YPPASSWDD_OPTIONS=”/etc/passwd..nis –m passwd PWFILE=/etc/passwd.nis” 5. /sbin/init.d/nis.server start 6. vi /var/yp/ypmake PWFILE=${PWFILE:-$DIR/PASSWD.NIS} 7. /var/yp/ypmake passwd • NIS+ - 12.DNS name resolution • hostname 을 ip로 변경하기 - BIND, /etc/hosts/ ,NIS • configuring primary name server 1. vi /etc/hosts 203.233.109.29 airjo21.sysone.co.kr airjo21 2. mkdir /etc/named.data 3. vi /etc/named.data/param -d sysone.co.kr (domain) : 여러 개의 domain을 포함하는경우 모두 기재 -n 203.233.109 (subnet) : 여러 개의 domain을 포함하는경우 모두 기재 -z 203.233.109.primary_server_ip -b /etc/named.boot (boot file for named) 4. hosts_to_named –f param DNS data file 생성 /etc/named.boot /etc/named.data/에 db.ca, db.127.0.0, db.203.233.109, db.root, boot.sec boot.sec.save, boot.cachonly 5. vi /etc/rc.config.d/namesvrs NAMED=1 6. vi /etc/resolv.conf domain sysone.co.kr nameserver pri_ip nameserver sec_ip 7. /sbin/init.d/named start • configuring secondary name server 1. vi /etc/hosts 자신의 것만 구성되어도 됨 2. mkdir /etc/named.data chmod 755 /etc/named.data 3. ftp pri_ip mget /etc/named.data/db.* get /etc/named.data/boot.sec.save get /etc/named.boot 4. vi /etc/rc.config.d/namesvrs NAMED=1 5. vi /etc/named.data/db.cache . IN NS hostname.sysone.co.kr hostname.sysone.co.kr IN A pri_ip 6. /sbin/init.d/named start • configuring clients 1. vi /etc/resolv.conf search(doamin) sysone.co.kr nameserver 164.124.101.2 2. /vi/etc/nsswitch.conf hsots: dns nis files - /etc/nsswitch.hp_defaults 예제파일을 복사하여 사용 # /etc/nsswitch.hp_defaults: # An example file that could be copied over to /etc/nsswitch.conf; it # uses NIS (YP) in conjunction with files. # passwd: compat group: compat hosts: dns [NOTFOUND=return] nis [NOTFOUND=return] files networks: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files netgroup: nis [NOTFOUND=return] files automount: files nis aliases: files nis services: nis [NOTFOUND=return] files 3. vi /etc/hosts 127.0.0.1 localhost 203.233.109.33 airjo21.sysone.co.kr airjo21 4. vi /.rhosts /etc/hosts.equiv • /etc/named.boot file : DNS boot file ; ; type domain source file ; directory /etc/named.data ; running directory for named primary 0.0.127.IN-ADDR.ARPA db.127.0.0 primary sysone.co.kr db.sysone primary 109.233.203.IN-ADDR.ARPA db.203.233.109 cache . db.cache -> db.sysone : hostname and ip db.cache : root server location • updating primary server 1. vi /etc/hosts 2. /etc/named.data/hosts_to_named –f param 3. sig_named restart sig_named - send signals to the domain name server • updating secondary server 1. auto 2. 즉각적인 적용 sig_named restart 13.internet services • /sbin/init.d/inetd : super services process - boot시 실행되어 system shutdown시 down 되며 client의 services 요구에 telnetd, ftpd, rlogind 등을 실행시킨다 이것은 오직 server에서만 필요하며 client가 telnet등을 실행시에는 필요없다 /etc/inetd.conf /etc/services /var/adm/inetd.sec • /etc/inetd.conf file # ARPA/Berkeley services # ## #ftp stream tcp nowait root /usr/lbin/ftpd ftpd -l telnet stream tcp nowait root /usr/lbin/telnetd telnetd # Before uncommenting the "tftp" entry below, please make sure # that you have a "tftp" user in /etc/passwd. If you don't # have one, please consult the tftpd(1M) manual entry for # information about setting up this service. tftp dgram udp wait root /usr/lbin/tftpd tftpd\ /opt/ignite\ /var/opt/ignite bootps dgram udp wait root /usr/lbin/bootpd bootpd #finger stream tcp nowait bin /usr/lbin/fingerd fingerd login stream tcp nowait root /usr/lbin/rlogind rlogind shell stream tcp nowait root /usr/lbin/remshd remshd exec stream tcp nowait root /usr/lbin/rexecd rexecd #uucp stream tcp nowait root /usr/sbin/uucpd uucpd ntalk dgram udp wait root /usr/lbin/ntalkd ntalkd ident stream tcp wait bin /usr/lbin/identd identd - # 그 service 막기 - wait option은 daemon을 하나만 실행시켜 이미 실행되고 있을 때 요청한 client는 끝 날때까지 기다려야 한다 - 변경한 내용 강제적용 inetd -c • /etc/services - service port number • /var/adm/inetd.sec - login allow 10.* 192.54.24.5 to allow all hosts with network addresses starting with a 10, as well as the single host with address 192.54.24.5 to use rlogin: - sprayd deny 192.54.24.5 On a system running NFS, deny host 192.54.24.5 access to sprayd, an RPC-based server: - shell deny 10.3-5.* A range is a field containing a - character. To deny hosts in network 10 (arpa) with subnets 3 through 5 access to remsh: - login deny 192.54.24.5 cory.berkeley.edu testlan The following entry denies rlogin access to host cory.berkeley.edu, any hosts on the network named testlan, and the host with internet address 192.54.24.5: - If a remote service is not listed in the security file, or if it is listed but it is not followed by allow or deny, all remote hosts can attempt to use it. Security is then provided by the service itself. - ftp Allow all hosts to use ftp: - shell deny Deny all access to the shell service; i.e., remsh: • inetd logging - /var/adm/syslog/syslog.log에 기록됨 Dec 22 23:20:55 unknown inetd[1048]: telnet/tcp: Connection from unknown (203.233.109.29) at Fri Dec 22 23:20:55 2000 - /etc/rc.config.d/netdaemons export INETD_ARGS="-l" - last user를 확인 성공 login log /var/adm/wtmp에 실패 login log /var/adm/btmp에 기록 lastb 실패 user 보기 • system and user equivalency - user passwd free access to remote host - only rlogin, remsh, rcp - root homedir/.rhosts만 검사하며 user는 /etc/hosts.equiv와 homedir/.rhosts가 있을 경우 /etc/hosts.equiv에 우선적으로 적용을 받는다. - r—r—r-- /etc/hosts.equiv rw----- ~/.rhosts • FTP configure - ~/.netrc (rw--------) machine hpxdzg login guest password sesame -> host hpxdzg whose guest account has the password sesame ftp시 passewd 확인 없시 사용 root는 불가능 - /etc/ftpusers(r—r—r--) deny ftp access - anonymous ftp access 계정 만들기 /etc/passwd ftp:*:500:10::/home/ftp/:/user/bin/false mkdir /home/ftp 14. bootp and tftp server • /sbin/init.d/inetd : super 15. NTP network time protocol • NTP roles - local NTP server vi /etc/ntp.conf server 127.127.1.1 fudge 127.127.1.1 stratum 10 -> 127.127.1.1 : ntp use internal clock - client direct server polling vi /etc/ntp.conf server ntp_server_ip driftfile /etc/ntp.drift -> default polling interval 64초 - client broadcast polling vi /etc/ntp.conf brodcastclient yes driftfile /etc/ntp.drift -> clients same subnet, reduce traffic • configuring NTP server 1. vi /etc/rc.config.d/netdaemons ###################################### # xntp configuration. See xntpd(1m) # ###################################### # # Time synchronization daemon # # NTPDATE_SERVER: name of trusted timeserver to synchronize with at boot # (default is rootserver for diskess clients) # XNTPD: Set to 1 to start xntpd (0 to not run xntpd) # XNTPD_ARGS: command line arguments for xntpd # Also, see the /etc/ntp.conf and /etc/ntp.keys file for additional # configuration. # export NTPDATE_SERVER= export XNTPD=1 export XNTPD_ARGS= 2. vi /etc/TIMEZONE 3. vi /etc/ntp.conf server 127.127.1.1 fudge 127.127.1.1 stratum 10 - 127.127.1.1 pshedo server ip - stratum 1 ~ 15 , 1 most accurate 4. /sbin/init.d/xntpd start 5. ntpq -p • configuring NTP client 1. vi /etc/ntp.conf 2. vi /etc/rc.config.d/netdaemons export NTPDATE_SERVER=server_ip export XNTPD=1 export XNTPD_ARGS= 3. /sbin/init.d/xntpd start ======= 추가내용 ========== 서비스 올리는 방법 nd start nd restart nd stop
9 unixware 7 기본 교육설명서 file
조인상
7382 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr 1장 시스템의 시작 그리고 끝 unix의 처음 시작은 /stand/unix 라는 프로그램이며 시스템의 power 버턴을 누르고 한참후에 Starting Unixware …. 라는 메시지와 함께 unixware log 가 그래픽으로 시작되는 부분이 바로 os 의 시작점입니다. 그전은 H/W 에 관련된 부분이며 BIOS 에서 수행 되어지는 부분입니다. unixware 의 그래픽 화면이 나오는 부분에서 엔터키를 누르면 [boot] 라는 메시지가 나오며 시스템이 시작을 정지 합니다. 계속적으로 시스템을 시작 시키려면 boot 또는 go 라고 하면 시스템이 시작 됩니다. 이상태에서는 여러가지 작업을 할 수 있습니다. 시스템 level 상태 level 상태는 시스템의 운용 상태를 말합니다. level 상태 0번  시스템이 정지되어 있는 상태 1번 또는 s,S  시스템을 단독으로 사용하는 상태 2,3번  시스템을 네트웍에 참여 시켜 여러 사람이 함께 사용할 수 있는 상태 5번  시스템이 정지된 상태이며 일부 시스템은 h/w 상태로 만듬 6번  시스템을 정지 시켰다 시작 시키는 상태 level 상태별로 실행 시키는 디렉토리 각 레벨별로 /etc/rc0.d ~ /etc/rc6.d 번 아래의 프로그램을 실행 시킵니다. 만일 0번 상태다 하면 /etc/rc0.d 번 아래의 파일을 실행시키며 2번일경우 /etc/rc2.d 번 아래의 파일을 실행 시킵니다. 각 디렉토리 아래에 놓여져 있는 파일들은 반드시 다음의 규칙을 따름니다. 대문자 S 또는 K 이며 다음에 두자리의 숫자가 놓여집니다.뒤의 숫자는 프로그램이 실행되는 순서를 나타내며 작을 수로 다른 프로그램보다 먼저 실행이 됩니다. 예) /etc/rc2.d/S99dtlogin 과 S69inet 파일이 있다면S69inet 파일을 먼저 실행시킵니다. 역으로 K 는 프로그램을 종료시킬 때 쓰여집니다. 시스템의 level 상태를 변화 시키는 방법 init 라는 프로그램을 사용하며 init 레벨상태 라고 합니다. 예) init 0  /etc/rc0.d 아래의 파일을 실행시키는데 K 로 시작되는 파일을 실행 합니다. init 1  /etc/rc1.d 아래의 파일을 실행시키는 데 K 로 시작되는 파일을 실행시키고 S 로 시작되는 파일을 실행합니다. init 2  /etc/rc2.d 아래의 파일을 실행시키는데 S 로 시작되는 파일을 실행 시킵니다. init 3  /etc/rc3.d 아래의 파일을 실행시키는데 S 로 시작 되는 파일을 실행 시킵니다. 부팅시 init 0 init 1  init 2  init 3 등으로 실행됩니다. 현재의 레벨 상태를 확인하는 방법 who -r 로 확인합니다. . run-level 3 11월 7일 14시44분 3 0 S  3번이 현상태, 0번이 최초상태, S 가 시작 상태로 나타내며 현상태의 레벨을 3번입니다. 레벨이 변경된 시각을 표시합니다. 시스템을 종료하는 방법 프로그램을 종료하시고 sync init 0 하시면 시스템이 간단하게 종료 합니다. 4 장 Network Adapter IP 확인할 때 사용 # ifconfig –a lo0: flags=4049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet 127.0.0.1 netmask ff000000 inet/perf: recv size: 4096; send size: 8192; full-size frames: 1 inet/options: rfc1323 net0: flags=4043<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 165.244.175.49 netmask ffffffc0 broadcast 165.244.175.63 inet/perf: recv size: 24576; send size: 24576; full-size frames: 1 inet/options: rfc1323 ether 00:50:da:c1:66:91  여기서 lo0 는 localhost 를 나타내는 부분이며 loopback test 할때 쓰인다. Net0 라고 표기된 부분이 진정한 network 부분이다. Inet 165.244.275.49 는 네트웍 카드에 정해진 ip를나타냄 IP , netmask, router 를 수정할 때 # netcfg 명령을 수행하면 1.Network Configuration Manager 메뉴가 화면상에 보임 2. 화면상에 TCP/IP 를 마우스로 클릭한다. 3. 메뉴에서 protocol 을 클릭한다. 4. 아래 부메뉴가 나오면 Modify protocol configuration.. 을 선택한다. 5. IP 또는 netmask default router 을 바꾸어 주는 메뉴가 나옵니다. 6. 원하는 IP 로 바꾼후 ok 버튼을 누른다. 7. 메뉴를 빠져나온 상태에서 시스템을 rebooting 합니다. # ifconfig 명령으로 ip를일시적으로 수정할 때 # ifconfig net0 inet 111.234.10.2(바꾸려는 IP) # ifconfig 명령으로 netmask 를일시적으로 수정할 때 # ifconfig net0 netmask 255.255.255.0 (바꾸려는 netmask) 네트웍을 임시로 down/up 할 경우 # ifconfig net0 down  네트웍을 down # ifconfig net0 up  네트웍을 up default router 을 확인할 때 # netstat –r n 명령을 실행하면 default 라는 부분을 볼 수 있음 Routing tables Destination Gateway Flags Refs Use Interface default 165.244.175.1 UGS 0 0 net0 127.0.0.1 127.0.0.1 UH 4 708 lo0 165.244.175/26 165.244.175.49 UC 1 0 net0 165.244.175.49 127.0.0.1 UGHS 25 14 lo0 224/8 165.244.175.49 UGS 1 4 net0 defauktrouter (게이트웨이,또는 라우터) 의 등록 # route add default 165.244.175.1 (라우터 번호) 1 defaultrouter (게이트웨이,또는 라우터) 의 삭제 # route delete default 165.244.175.1 (라우터번호) hostname (시스템 이름) 을 확인 할 경우 # hostname 또는 # uname –n hostid (시스템 마다 고유의 번호) 확인법 # uname –i arp ( mac address 와 ip 의 상관 table ) 확인방법 # arp –a ? (165.244.175.4 at 0:0:21:20:95:be (802.3) 네트웍 상의 packet 개수 확인법 # netstat 1 ( 숫자 1은 1초당 보여준다는 의미임) 시스템에 서비스 되어지는 demon 확인 및 접속된 외부 client 들의 ip 확인법 # netstat –a  예) 현재 telnet 으로 login 되어있는 외부 장비들의 ip 를 체크 # netstat –a |grep telnet tcp 0 2 cjk.com.telnet 165.244.175.48.1026 ESTABLISHED 시스템에 login 되어있는 사용자를 확인 # finger # who –u # w 시스템에 ftp 관련 서비스로 접속한 사용자 확인 # ftpwho DNS client 셋팅 방법 (즉 ping www.yahoo.co.kr 이렇게 인터넷 URL으로 ping 을 할 수 있는 방법) /etc/resolv.conf 파일안에 다음처럼 nameserver 를 설정하면됨 nameserver 156.147.1.1 (지방별로 nameserver 는 다름 pc(win98) 의 DNS 설정부분을 참조) 5 장 TCP/IP Administration 네트웍 통신을 위하여 네트웍에 관련된 damon 들을 이용하여 통신을 합니다. 모든 통신 프로 토콜을 정의 하는 부분은 /etc/inet/inetd.conf 파일이며 통신시 필요한 port 는 /etc/services 파일에 기록 됩니다. 예) /etc/inet/inetd.conf ~ ~ ftp stream tcp nowait root /usr/sbin/in.tcpd in.ftpd -a telnet stream tcp nowait root /usr/sbin/in.tcpd in.telnetd ~ ~ 위와 같이 기록이 되어있으며 외부로부터 맨왼쪽에 ftp나telnet 에 해당되는 서비스 의뢰가 오면 in.ftpd 또는 in.telnetd 가 시작이 되어 서비스를 시작합니다. 만일 telnet 을 사용하지 않을 경우에는 # telnet stream tcp nowait root /usr/sbin/in.tcpd in.telnetd 과 같이 # 으로 막고 시스템을 rebooring 하던지 아니면 inetd 프로그램을 재기동 하시면 됩니다. [/etc/inet] # ps -ef|grep inetd root 1924 1917 TS 80 0 10시14분 ? 0:00 /usr/sbin/inetd [/etc/inet] kill –1 1924 이렇게 하면 rebooting 을 하지 않아도 됩니다. 서비스 port 설정 /etc/services 파일 각각의 통신 protocol 과 port 를 설정합니다. 형식 ] 서비스명 port번호/protocol 예) telnet 23/tcp  telnet 의 port 설정 과 protocol (tcp or udp )설정 Passwd 없이 현재 시스템에서 타 시스템으로 login 할경우 이방법은 보안상 사용하지 않는 것을 원칙으로 합니다. 현재 login 되어있는 시스템은 ABC 타시스템은 BBC 일경우 ABC 시스템에서 BBC 로 login 할경우 rlogin 이란 명령으로 login 하면 Passwd 없이 login 합니다. 이렇게 될경우 반드시 BBC 시스템에 ABC 시스템에 관련된 정보를 가지고 있어야 합니다. BBC 시스템의 /etc/host.equiv 파일이나 자신의 홈 디렉토리의 .rhosts 파일을 다음과 같이 설정하면 됩니다. /etc/hosts 파일에 ABC 시스템의 IP 를 설정합니다. # vi /etc/hosts ~ 165.278.3.10 ABC ~ 다음 /etc/host.equiv 파일안에는 다음처럼 설정이 되어야 합니다. 형식은 [호스명 유저명] # vi /etc/host.equiv ABC root 위의 내용은 ABC 시스템의 root 사용자에게만 허용한다는 뜻입니다. Host.equiv 파일에 등록하지않고 각 사용자의 홈디렉토리 아래의 .rhosts 파일에 등록 하셔도 됩니다. 형식은 [ 호스트명 ] # cd # vi .rhosts ABC Host.equiv 파일과 .rhosts 파일과의 다른점은 hosts.equiv 는 전체 user에 관련된 내용이고 .rhosts 파일은 개인적으로 설정할 수 있습니다. 위와 같이 설정을 하고 ABC 시스템의 root 사용자에서 rlogin ABC 하면 password 없이 login 이 됩니다. 상대방 시스템의 파일을 가져오거나 보낼경우 상대방 시스템에 /etc/host.equiv 나 .rhosts 파일에 위와 같이 등록 하여 있어야 합니다. [형식] rcp 복사할화일 복사될화일 /etc/hosts 파일에 상대방 시스템의 이름과 IP 가 등록이 되어있어야 합니다. BBC 167.2.3.5 와 같이 등록이 되어있어있을경우 # rcp BBC:/etc/passwd /tmp  BBC 시스템아래의 /etc/passwd 파일을 현시스템의 tmp 아래 놓는 다. # rcp /etc/hosts BBC:/tmp  현시스템의 /etc/hosts 파일을 BBC 시스템의 tmp 아래로 복사한다. 상대방 시스템의 파일을 실행시킬경우 [형식] rsh 상대방시스템 실행시킬파일명 /etc/hosts 파일에 상대방 시스템을 등록한후 # rsh BBC /usr/bin/ls –al  BBC 시스템아래의 /usr/bin/ls 파일을 실행합니다. 내부 외부로 메일을 보낼경우 내부사용자 (/etc/passwd 파일에 등록된 사용자) 에게 메일을 보낼경우 [형식] mailx 사용자 # mailx lp 주제: 잘모름  제목을 적습니다. 잘모른다니까!  내용을 적습니다. ^D  내용을 다적었으면 끝낼 때 (ctrl + d ) 외부 사용자에게 (/etc/resolv.conf 파일에 KRNIC DNS 가 등록이 되어야함) 메일을 보낼경우 # mailx chojaekoo@lge.com 주제:잘살아보세 정말 잘살아보세 ^D 6장 sco administration tool sco admin 명령으로 여러가지 작업을 할 수 있습니다. Console 상에서 작업을 하면 마우스로 제어를 하실수 있으며 일반 단말기에서 telnet 을 하시면 text 로 작업을 하실수 있습니다. Text mode 시 TAB key 를 가지시고 항목을 이동 하실 수 있습니다. 반드시 root 상태에서 하셔야 합니다. Scoadmin 의 주메뉴로 가려면 명령어 상태에서 # scoadmin 이라고 명령을 내립니다. 원하는 메뉴로 마우스로 이동하여 클릭을 하면 그항목의 메뉴를 실행합니다. 메뉴에서 빠져 나오려면 HOST 를누르시고  EXIT 를 누르면 주메뉴로 나옵니다. Scoadmin 주메뉴에서 빠져 나오려면 File  EXIT 를 누르면 됩니다. 메뉴로 들어가지않고 직접원하는 메뉴를 실행하려면 # scoadmin account manager 라고 하면 되며 앞글자 Acct 만 적으셔도 됩니다. Scoadmin 전체 항목을 확인하고 싶으시면 # scoadmin –t 라 명령을 실행하면 Account Manager Address Allocation Manager Application Installer ~ ~ 이렇게 많은 항목들을 보실 수 있습니다. SCO 의 도움말을 보고 싶으시면 # scohelp 라고 실행 하시면 됩니다. Help 의 전체 메뉴가 화면에 나옵니다. 7장 사용자 및 그룹계정 관리 group 등록 1. scoadmin 버전 scoadmin  계정관리자  그룹  새로운그룹 그룹명 입력, 그룹 ID 입력  확인을 누르면 등록이됨 2. 명령어 버전 [형식] groupadd -g 그룹번호 그룹이름 예) groupadd –g 1000 handsome  그룹번호가 1000번인 handsome 그룹 등록된 그룹의 변경 1. scoadmin 버전 scoadmin  계정관리자 바꾸고자 하는 그룹선택메뉴에서 그룹 변경  바꾸고자 하는 부분수정  확인 2. 명령어 버전 [형식] groupmod -g 그룹번호 그룹이름 예) groupadd –g 1330 handsome  handsome 그룹의 ID 를 1330 으로 수정 group 삭제 1. scoadmin 버전 scoadmin  계정관리자  바꾸고자 하는 그룹선택메뉴에서 그룹 삭제  원하는 그룹선택  확인 2. 명령어 버전 [형식] groupdel 그룹이름 예) groupdel handsome 사용자 등록 1. scoadmin 버전 scoadmin  계정관리자  사용자  새로운 사용자 추가  로그인명,사용자id, login shell 등 설정 확인 2. 명령어 버전 [형식] useradd -u (사용자id) -g (그룹id) -d (홈디렉토리명) –m(홈디렉토리를 만듬) -s (shell) -c “” (설명문) 사용자 예) useradd -u 1000 -g 1330 -d /home/hihi -m -s /bin/ksh -c “재구꺼..” cjk1004 위와 같이 복잡하게 user 를 등록하지 않으셔도 됩니다. /etc/default/useradd 라는 파일을 보시면 기본적으로 설정되어있는 값이 있기 때문에 useradd cjk1004 만하셔도 자동으로 등록이 됩니다. 사용자 변경 1. scoadmin 버전 scoadmin  계정관리자  사용자  변경login shell,hom dir 등 변경 확인 2. 명령어 버전 [형식] usermod -u (사용자id) -g (그룹id) -d (홈디렉토리명) –m(홈디렉토리를 만듬) -s (shell) -c “” (설명문) 사용자 중에 아무거나 원하는 것 홈디렉토리와 shell 을 바꿀경우 예) useradd -d /home/hihi2 -s /bin/csh cjk1004 사용자 삭제 1. scoadmin 방법 scoadmin  계정관리자 삭제를 원하는 사용자선택 사용자 메뉴  삭제  확인 2. 명령어로 삭제 [형식] userdel 사용자명 예) userdel cjk1004 만들어진 user 및 password 등 user 의 정보를 저장 방법 형식] ap –dv 사용자명1 사용자명2 …. 사용자명n > 파일명 예) cjk1004 의 user 와 ssamjan 의 user 를 acct.passwd 파일에 저장하기 # ap –dv cjk1004 ssamjan > acct.passwd 만들어진 파일로 사용자의 복구 형식] ap –ro -f 파일명 사용자명1 사용자2 … 사용자n 예) 위에서 만든 acct.passwd 파일에서 cjk1004 를 복구하기 # ap -ro -f acct.passwd cjk1004 혹여 복구시 ux:ap: 오류 :user ID …. Is currently being aged 라는 메시지가 나오면서 복구가 되지않으면 /etc/security/ia/ageduid 파일을 삭제해 주시고 다시 등록 하세요.. passwd 변경 및 수정 1. passwd 지우기 [형식] passwd -d 사용자명 예) passwd -d cjk1004  사용자의 passwd 를 지웠으며 그사용자가 login 시 바꿀수 있게 됩니다. 반드시 root 에서 실행하셔야 합니다. 2. password 변경 [형식] passwd 사용자명  root 에서만 가능 사용자가 만든 디렉토리나 파일을 찾아내기 [형식] find / -user 사용자명 -print 예) find / -user cjk1004 -print | more 특정한 그룹이 만든 디렉토리나 파일을 찾아내기 [형식] find / -group 그룹명 -print 예) find / -group handsome -print | more telnet 으로 login 하는user 가 바로 root 접속하지 못하게 하기 /etc/default/su 파일안에 CONSOLE=/dev/console 이라고 명기된 부분의 맨앞에 # 으로 막는다 #CONSOLE=/dev/console 특정한 사용자를 특정한 날짜 이후로 사용못하게 하기 [ 형식 ] usermod -e mm/dd/yy 사용자명 예) usermod -e 11/01/00 cjk1004  cjk1004 사용자를 2000년11월1일 이후로 사용하지 못하게 함 명령의 해제방법 [형식] usermod –e “” 사용자명 예) usermod -e “” cjk1004 8장 ~ 9장 파일 시스템 관리 디스크의 파일 시스템 구성 확인 [형식] prtvtoc –f 파일명 디스크 장치명 예) prtvtoc -f DISK0 /dev/rdsk/c0b0t0d0s0  반드시 s0 로 0번을 주셔야합니다. cat DISK0 #SLICE TAG FLAGS START SIZE 0 0x5 0x201 63 8803557 1 0x2 0x200 1285200 2104515 2 0x3 0x201 224910 1060290 3 0x0 0x0 0 0 4 0xb 0x200 3389715 5285385 5 0x0 0x0 0 0 6 0x0 0x0 0 0 7 0x1 0x201 63 34 8 0xd 0x201 97 15968 9 0x0 0x0 0 0 10 0x9 0x200 16065 208845 11 0x0 0x0 0 0 12 0x0 0x0 0 0 13 0x0 0x0 0 0 14 0x0 0x0 0 0 15 0xf 0x201 8675100 16065  slice 0~ 15 번까지 총 16개의 slice 로 나눠지며 0번은 전체 사이즈를 나타냅니다.  TAG 와 PLAGS 는 어떠한 용도로 사용한다는 내용이 있습니다.  Start 는 시작하는 섹터 번호 이며 size 은 섹터의 사이즈 입니다. Size 는 512 byte 이므로 위의 숫자에서 * 512 를 하시면 실제kbyte 로 보실수 있습니다. 파일 시스템 확인 방법 파일시스템 종류에는 bfs,sfs,memfs,ufs,vxfs 등 여러가지가 존재 합니다. 파일시스템 확인방법은 [형식] fstyp 장치명 예) fstyp /dev/rdsk/c0b0t0d0s4 vxfs 파일 시스템 mount 방법 [형식] mount -F 파일시스템명 장치명 mount할 위치 예) mount –F vxfs /dev/dsk/c0b0t0d0s4 /home 파일시스템 umount 방법 [형식] umount 마운트명 예) umount /home 어떤 파일을 어떤 사용자가 사용하는지 확인하는 방법 [형식] fuser 옵션 파일/장치명 예) fuser -u /home (or /dev/dsk/c0b0t0d0s4) 파일이나 장치를 사용하는 user 를 자동적으로 kill 시키는 방법 fuser -ku /home (or /dev/dsk/c0b0t0d0s4 ) mount 되어있는 파일시스템 확인법 df -k  사이즈를 kbyte 로 보여줌 파일시스템 용량(KB) 사용 가용 이용율 마운트포인트 /dev/root 1052257 876572 175685 84% / /dev/stand 104422 6078 98344 6% /stand mount 되어있는 파일 시스템의 inode 사이즈 확인법 참고로 inode 는 파일 및 디렉토리와 1:1 매칭이 되므로 inode 개수가 파일갯수임 df -i 마운트 Dir 파일시스템 iused ifree itotal %iused / /dev/root 52474 46522 98996 53% /stand /dev/stand 16 391 407 3% mount 되어있는 파일 시스템이 어떤 파일 시스템인지 확인법 df -V df -F vxfs -V /dev/root df -F bfs -V /dev/stand mount 되어있는 전체 disk 의 공간확인법 # dfspace / : Disk space: 171.56 MB of 1027.59 MB available (16.70%) /stand : Disk space: 96.03 MB of 101.97 MB available (94.18%) ~ ~ /DATA2 : Disk space: 166.66 MB of 2909.99 MB available ( 5.73%) Total Disk Space: 5120.99 MB of 12548.32 MB available (40.81%).  전체 용량의 몇%가 남음 Mount 되어있는 파일시스템의 disk 사용량 조사 방법 [ 형식 ] du -sk 디렉토리명/파일명  디렉토리 및 파일 사이즈를 1024byte 로 표시 예) du –sk /home 용량을 많이 사용한 디렉토리별로 sort 해서 보여주는 방법 du -k /home | sort -nr |more 파일시스템의 오류 검사 및 자동 복구 [형식] fsck -y (모든질문에 yes 대답,생략가능) –F (파일 시스템) -o (옵션,생략가능) 장치명 예) fsck -y -F vxfs -o full /dev/rdsk/c0b0t0d0s4 *** 파일시스템 check 시 파일시스템은 umount 하시고 check 하셔야 좋습니다. 케리터와 블록장치 /dev/dsk/c0b0t0d0s0 로 되어있는 장치를 블록 장치라고하고 /dev/rdsk/c0b0t0d0s0 처럼 rdsk 로 되어있는 장치를 케릭터 장치라고 합니다. 파일시스템 체크등에는 rdsk 장치를 사용하고 마운트 할때는 dsk 로 사용합니다. ls –al /dev/dsk/c0b0t0d0s0 /dev/rdsk/c0b0t0d0s0 brw------- 1 root sys 7679, 0 10월 20일 10시29분 /dev/dsk/c0b0t0d0s0 crw------- 1 root sys 7679, 0 10월 20일 10시29분 /dev/rdsk/c0b0t0d0s0 | |__> minor number |__-> device 번호 |_ _------ major number 이파일은 특수장치명라 일컬으고 major 와 minor 는 장치의 구성 번호를 나타냅니다. -- device 번호 는 아래와 같이 실제 Hardware와 매칭이 됩니다. c : controller번호 b : bus 번호 t : target 번호 d : lun 번호 s : slice 번호 p : 파티션번호 파일 /디렉토리 링크 하는 법 1.) 하드 링크  보이지 않는 링크로 동일 파일 시스템에서 존재 합니다. 형식] ln 링크할 파일명 링크이름 예) ln /etc/ddddvvv sdsd 2) 심볼릭 링크  링크된 것이 보임 형식] ln –s 링크할파일명 링크이름 예) ln -s /etc/ddddvvv sdsd 링크를 없애는 방법 형식] unlink link이름 예) unlink sdsd 또는 rm 특정 사이즈 이상/이하의 파일 탐색 [형식] find 어느디렉토리부터 -size (+/-) 사이즈(512byte) –exec (실행한다) ls –al {} \; 예) find / -size +1000 -exec ls -al {} \;  / 아래부터 1000 block (512,000byte) 이상되는 파일을 찾는다. floppy disk mount 하는 방법 mount -F dosfs /dev/dsk/f03ht /mnt umount 시는 umount /mnt cd rom mount 하는 방법 mount -F cdfs -o ro /dev/cdrom/cdrom1 /mnt  cdrom 은 read only 로 마운트 하여야함 umount 시는 umount /cdrom 10 ~11장 주변장치 이용 tape 장치명 /dev/rmt/ctape 평범한 백업 으로 장치 사용후 헤드위치를 원위치 한다 /dev/rmt/ntape 장치 사용후 헤드의 위치를 현재의 위치에 둔다 /dev/rmt/rtape 장치의 위치를 기록한고 처음 위치로 테이프를 돌린다. /dev/rmt/nrtape 장치의 위치를 기록하고 처음으로 테이프를 돌리지않는다. /dev/rmt/utape 장치 사용후 tape 를 꺼낸다. cdrom 장치 /dev/cdrom/cdrom1 tapecntl 명령으로 tape 구동하기 tapecntl -r 테이프를 초기화 시킨다. tapecntl -w 테이프를 거꾸로 돌린다. tapecntl -e 테이프의 내용을 지운다 tapecntl -c 3 테이프를 압축 모드로 만든다 tapecntl -c 0 테이프를 압축 모드에서 평범한 모드로 전환한다. floppy 명칭 /dev/dsk/f015ht 1.2M 5.25inch /dev/dsk/f03ht 1.44M 3.5inch /dev/dsk/f03ef 2.88M 3.5inch tar 명령으로 백업 ,확인 , 복구 - 백업 할경우 tar cvf /dev/rmt/ctape2 /usr /ORACLE /irais_data  절대 path 로 백업을 한다. tar cvf /dev/rmt/ctape2 .  . 아래 즉 현재의 디렉토리를 전부다 copy tar cvf /dev/rmt/ntape2 usr  usr 디렉토리를 상대로 받고 헤드위치를 정지 tar cvf /dev/rmt/utape2 /etc/passwd  백업을 받고 tape 을 튕겨 나오게 함 - 확인 할경우 tar tvf /dev/rmt/ctape1 - 백업 복구 tar xvf /dev/rmt/ctape2  tape 안에 있는 모든 데이터를 복구 합니다. 여기서 주의 하실 사항은 만일 백업시 /usr 처럼 / 가 앞에 나와있는 형태 즉 절대 디렉토리로 받을 경우에는 복구시 반드시 그 디렉토리 아래에 파일이 복구 됩니다. tar xvf /dev/rmt/ctape2 /etc/scsi/pdiconfig 또는 tar xvf /dev/rmt/ctape2 etc/scsi/pdiconfig 한 개의 파일을 복구 할 때 사용하며 반드시 백업 하였을 때의 디렉토리명 으로 작성합니다. vxdump 방법으로 파일 시스템 백업 root 를 백업합니다. df -k / 로 파일 시스템이 마운트 되어있는지 확인 합니다. 파일시스템 용량(KB) 사용 가용 이용율 마운트포인트 /dev/root 1052257 872601 179656 83% / ----------- 백업 방법 ----------------------- 아래에 /dev/rroot 라는 부분이 있습니다 . 위의 마운트 되어있는 부분을 보시면 /dev/root 라고 되어있죠.차이점은 r 이 하나더 붙습니다. 만일 /dev/dsk/c0b0t0d0s1 이란 부분을 받으시려고 한다면 /dev/rdsk/c0b0t0d0s1 이라고 하셔야 됩니다. 그이유는 rdsk 또는 rroot 처럼 r 을 사용한다는 뜻은 버퍼를 사용하지 않고 백업을 받는 다는 뜻인데 현재 /dev/root 혹은 /dev/dsk/c0b0t0d0s1 처럼 r 이 붙어 있지 않는 화일은 이미 사용중이기때문이죠 이방법은 반드시 vxfs 화일 시스템에서만 가능합니다. 화일시스템 타입을 확인하시려면 df -V 로 보시면 됩니다. # vxdump 0uf /dev/rmt/ctape2 /dev/rroot vxdump: Date of this level 0 dump: Tue Nov 7 14:54:52 2000 -- 중간 생략 ---- vxdump: level 0 dump on Tue Nov 7 14:54:52 2000 vxdump: Closing /dev/rmt/ctape2 vxdump: vxdump is done ---------- 백업 확인 방법 ---------------- # vxrestore tvf /dev/rmt/ctape2 Verify tape and initialize maps Tape block size is 63 Dump date: Tue Nov 7 14:54:52 2000 Dumped from: the epoch level 0 dump of / on /dev/rmt/ctape2 Extract directories from tape Initialize symbol table. dir 2 . dir 3 ./lost+found dir 4 ./etc --- 중간 생략 --- ----- 백업 복구 방법 ---------------- # vxrestore xvf /dev/rmt/ctape2 ----- 백업을 확인시 메뉴얼 하게 확인하고 복구하는 방법---- [/tmp]vxfsrestore ivf /dev/rmt/ctape2 Verify volume and initialize maps Media block size is 126 Dump date: 1999년 1월 16일 토요일 오후 03시 03분 30초 Dumped from: the epoch Level 0 dump of / on djsun:/dev/dsk/rroot Label: none Extract directories from tape Initialize symbol table. vxfsrestore > ls <-- ls 라는 명령으로 확인합니다. .: 147 #UNTITLED# 31 .sh_history 15113 kernel/ 2 *./ 60432 .tt/ 26 lib 2 *../ 22673 .wastebasket/ 3 lost+found/ 92 .Xauthority 144 a 45321 mnt/ 36 .ab_library 21 a.c 18891 net/ 7569 .cetables/ 146 a.out 3793 nsmail/ 30 .cshrc 37923 aaa/ 35 nsr 24 .desksetdefaults 42 backup 49160 oh/ 45327 .dt/ 33 bin 11328 opt/ 23 .dtprofile 37771 cdrom/ 37 os.bk 45324 .fm/ 15104 dev/ 45322 platform/ 34001 .hotjava/ 3786 devices/ 49097 proc/ 26449 .jws/ 22657 etc/ 52873 sbin/ 27 .login 3787 export/ 18 system/ 43 .netrc 41552 floppy/ 56649 tmp/ 37777 .netscape/ 56656 hak/ 41675 tmp_dir_X86YM_/ 29 .openwin-init 22667 home/ 3776 usr/ 39 .profile 33995 home1/ 7552 var/ 38 .raplayerrc 145 icheck.sh 30219 vol/ 28 .rhosts 11345 java/ 26443 xfn/ vxfsrestore > cd /etc % 디렉토리를 변경합니다 vxfsrestore > pwd % 현제 디렉토리를 확인합니다. /etc vxfsrestore > ls %현재 디렉토리 목록을 확인합니다. ./etc: 22657 ./ 22720 netmasks 2 *../ 22721 networks 22856 .group.lock 22797 nodename 22847 .login 22758 nscd.conf vxfsrestore > add passwd %passwd 파일을 restore 목록으로 등록시킴 Make node ./etc vxfsrestore > add shadow % shadow 파일을 restore 목록으로 등록시킴 vxfsrestore > ? % help 목록을 보여줌 Available commands are: ls [arg] - list directory cd arg - change directory pwd - print current directory add [arg] - add `arg' to list of files to be extracted delete [arg] - delete `arg' from list of files to be extracted extract - extract requested files setmodes - set modes of requested directories quit - immediately exit program what - list dump header information verbose - toggle verbose flag (useful with ``ls'') help or `?' - print this list If no `arg' is supplied, the current directory is used vxfsrestore > what % 백업 정보를 보여줌 Dump date: 1999년 1월 16일 토요일 오후 03시 03분 30초 Dumped from: the epoch Level 0 dump of / on djsun:/dev/dsk/rroot Label: none vxfsrestore > extract % restore 목록에 저장한 파일을 disk 로 내려 받 음.(복구) Extract requested files You have not read any volumes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: Specify next volume #: 1 extract file ./etc/passwd extract file ./etc/shadow Add links Set directory mode, owner, and times. set owner/mode for '.'? [yn] y vxfsrestore > exit exit: unknown command; type ? for help vxfsrestore > quit % 이렇게 하면 passwd 와 shadow 파일을 테이프에서 디스크로 복구 하게됩니다. sun#/tmp]ls -al 총 88316 drwxr-xr-x 6 root root 308 1월 16일 15:09 ./ drwxr-xr-x 38 root root 1536 1월 15일 18:03 ../ drwxrwxrwx 2 root other 104 1월 16일 10:59 .X11-pipe/ drwxrwxrwx 2 root other 104 1월 16일 10:59 .X11-unix/ drwxrwxrwx 2 root root 107 1월 16일 10:59 .pcmcia/ -rw------- 1 root tty 45187072 1월 16일 15:04 a.dump drwxrwxr-x 2 root sys 147 1월 16일 10:59 etc/ -rw-rw-r-- 1 root sys 5576 1월 16일 10:59 ps_data [djsun#/tmp]cd etc [djsun#/tmp/etc]ls -al 총 32 drwxrwxr-x 2 root sys 147 1월 16일 10:59 ./ drwxr-xr-x 6 root root 308 1월 16일 15:09 ../ -r--r--r-- 1 root other 859 12월 26일 11:59 passwd -r-------- 1 root sys 588 12월 30일 18:31 shadow 이렇게하면 매뉴얼 단위로 백업이 됩니다. 12장 프로 세스 관리 프로세스란 모든 실행 프로그램이 메모리 상에 존재 하는 것을 프로세스라 하며 그 프로 세서당 고규의 번호를 PID 라고 일컬으고 부모의 번호를 PPID 라고 한다. ps 명령 ps  현재 자신의 프로세스를 확인 PID CLS PRI TTY TIME COMD 1787 TS 70 pts001 0:00 ksh 3387 TS 59 pts001 0:00 ps ps –f  프로세스의 정보를 full 로 확인 UID PID PPID CLS PRI C STIME TTY TIME COMD root 1787 1785 TS 70 0 14시51분 pts001 0:00 -ksh root 3400 1787 TS 59 0 15시54분 pts001 0:00 ps -f ps -e  자신뿐만 아니라 전체사용자의 프로세스 확인 PID CLS PRI TTY TIME COMD 0 SYS 79 ? 0:10 sysproc 1 TS 70 ? 0:00 init -- 중간 생략 -- ps -u  어떤 사용자의 프로세스 확인 ps –fu lp UID PID PPID CLS PRI C STIME TTY TIME COMD lp 3445 3443 TS 80 0 15시56분 pts/2 0:00 -sh ps -t  어떤 단말에서 실행되고있는 프로세스 확인 ps -ft pts/2 UID PID PPID CLS PRI C STIME TTY TIME COMD lp 3445 3443 TS 80 0 15시56분 pts/2 0:00 -sh forground process란 사용자가 명령을 내리고 그명령이 실행 되는 상태 이 상태에서는 오직 하나의 프로그램만이 실행이 됩니다. background process 란 프로그램을 뒤어서 실행할경우 보통 & 가 뒤에 붙습니다. 이것을 이용하면 프로그램을 여러 개 한 단말기에서 실행할 수 있습니다. 예) find / -name core.[0-9]* -print & forground 프로그램을 background 에서 수행하게 해주는 방법 예) find / -name core.[0-9]* -print  명령을 실행합니다. 이상태에서는 key-in 안됨 ^Z  ctrl key 와 Z 키를 누릅니다. [1] + Stopped find / -name core –print  프로그램이 정지 됩니다. bg  background 로 프로그램을 돌린다. [1] find / -name core -print& jobs  현재 작업 정보를 보여준다. [1] + 수행중 find / -name core –print fg  background 로 동작하는 프로세스를 forground 로 동작 find / -name core -print damon 프로세스 메모리 상에 항상 동작하고 있다가 외부로부터 요청이 오면 동작하는 프로세스 주로 initd 프로그램이 동작하며 외부에서 telnet 시 in.telnetd 를 실행 시켜줘서 telnet 서비스를 실행해 줍니다. 프로세스를 종료 시키는 방법 현재 단말기에서 동작시키는 프로그램이라면 delete key 를 누르므로 인해서 정지가 되지만 자신이 구동시키지 않은 프로세서 또는 데몬 프로세서를 종료하는 방법은 kill 이란 방법으로 종료 합니다. 예) 우선 프로세서를 확인합니다. ps –ef |grep in.telnet root 1785 1575 TS 80 0 14시51분 ? 0:01 in.telnetd root 3443 1575 TS 80 0 15시56분 ? 0:00 in.telnetd kill -9 1785  프로세스 ID 1785 를 강제 종료 합니다. 단말기를 logoff 또는 단말기의 power 를 갑자기 종료시켜도 프로그램은 종료되지않게하고싶을 때 단말기가 없어지만 현재 단말기에서 실행하는 프로그램도 같이 종료 됩니다. 단말기를 logoff 하여도 프로그램을 계속 실행 시키고 싶으시면 nohup 을 사용하세요 형시] nohup 프로그램명 & 예) nohup find / -name core –print & 이프로그램을 정지 시키시려면 ps –ef|grep find 로 찾으셔서 kill -9 로 종료 하시던지 아니면 시스템을 강제 종료 하시면 되는데 kill 로 종료 하시는 것이 나을 겁니다. 특정한 시간에 프로그램을 동작하고 싶으실 때 cron 을 이용하시면 됩니다. /var/spool/cron/crontabs 아래의 파일을 보면 사용자 이름이 보이실 겁니다. 사용자 이름으로 되어있는 파일들이 각 사용자가 설정해 놓은 crontab 파일입니다. cat 을 사용하여 파일을 보면 아마 다음처럼 기록이 되어있을 겁니다. cat /var/spool/cron/crontabs 0 1 2 7 0-6 $TFADMIN /usr/lib/sa/sa1 이화일에는 특정한 형식이 정해져 있습니다. 맨왼쪽에 0 이란 자리의 뜻은 분을 뜻합니다. 단위는 0~59 까지를 설정할 수 있습니다. 두번쨰 1 이란 자리의 뜻은 시를 뜻합니다. 단위는 0-23 까지를 설정할 수 있습니다. 세번째 2 란 자리의 뜻은 일을 나타냅니다. 단위는 1- 31 까지를 설정할 수 있습니다. 네번째 7 란 자리의 뜻은 월을 나타냅니다. 단위는 1 – 12 까지를 설정할 수 있습니다. 다섯째 0-6 란 자리의 뜻은 요일을 나타내벼 0을 일요일로 해서 6을 토요일까지 0-6 까 까지 설정 할 수 있습니다. 여섯째 $TFADMIN /usr/lib/sa/sa1 은 실행 시킬 명령이면 반드시 full patch 를 정해줘야 합니다. 반드시 자리를 한칸씩 띄우면서 설정하며 * 는 모든 값을 가진다의 뜻이고 0,1,2 처럼 , 로 구분되는 것은 1일때도 2일때도 3일때도 라는 뜻이며 0 – 59으로 연결되면 0~59까지 실행된다는 뜻입니다. 위를 확인해보면 일요일부터 토요일안에 ,7월,2일,1시,0분에 프로그램 $TFADMIN /usr/lib/sa/sa1 을 실행 시키라는 명령입니다. crontab 수정 방법 우선 사용자로 로그인을 합니다. crontab -l 이란 명령을 사용하면 현재 사용자의 crontab 에 정의되어있는 부분을 보여줍니다. crontab -l > /tmp/hihi  crontab 의 내용을 hihi 라는 임시 파일로 저장합니다. vi /tmp/hihi  임시 파일을 수정합니다. crontab < /tmp/hihi  수정한 내용을 crontab 에 재적용합니다. 이렇게 수행하지 않으시고 /var/spool/cron/crontabs/ 아래의 파일을 직접 수정하셨으면 cron 이란 프로세서를 다시 구동 시키셔야 합니다. 13장 프린터 설치 프린터 설치 scoadmin  프린터 설치 관리자  프린터  지역 프린터 추가  이름을 설정하시고, 관련된 프린터의 모델을 설치하고연결유형에서 시리얼이냐,패러럴이냐 선택 확인 lpstat -t 명령으로 현재 프린터가 잘동작되는지 확인 lpstat -o 명령으로 현재 프린터의 spool 내용 확인 14 장 성능 체크 성능에 관련되어 중점적으로 보는 부분이 cpu 상태 , memory 상태 , disk io 상태 프로세스의 과부화 상태 등을 확인할 수 있습니다. rtpm 이란 명령을 사용하여 문자 그래픽으로 cpu 성능등 다수를 확인 할 수 있음 sar 란 명령을 사용하여 시스템 상태를 확인 형식] sar 옵션 초단위설정 보여질 횟수 설정 sar 1 2  1 초당 2번 cpu 상태 표시 UnixWare LGS330 5 7.1.0 i386 11/07/00 17:17:30 %usr %sys %wio %idle %intr 17:17:31 2 5 0 93 0 17:17:32 0 1 1 94 4 Average 1 3 0 94 2 위와 같이 표기되며 %idle 을 확인하여 10% 이하면 시스템에 과부하라고 판단 sar -P ALL 1 2  cpu 개별로 확인 sar -r 1 2  memory 의 현재 여유,swap 의 현재 여유 memory * 4096이 현재 여유있는 메모리 Kbyte 이며 전체 메모리의 10% 이내일경우 메모리 증설을 고려해야함 sar -d 1 2  disk 의 busy 상태 확인 %busy 상태가 50% 넘으면 해당되는 디스크에 과부하 프로세서의 cpu 점유도 확인 # ps -efo pcpu,comm,pid,args|pg %CPU COMMAND PID COMMAND 0.10 sysproc 0 sysproc 0.00 init 1 /sbin/init -- 중간 생략 --- 위의 % CPU 를 확인하여 50% 이상 되는 프로세스를 확인 프로세서의 memory 사용량 확인 # ps -efo vsz,pid,comm,args|pg VSZ PID COMMAND COMMAND 0 0 sysproc sysproc 184 1 init /sbin/init 1716 708 ifor_pmd /etc/ifor_pmd -- 중간 생략 -- 위의 VSZ 를 확인함 단위는 kbyte 임 sysdef 로 시스템의 환경변수 확인 sysdef * * i386 Kernel Configuration * * * Tunable Parameters * 256 number of buffer headers allocated at a time (NBUF) 15744 maximum kilobytes for buffer cache (BUFHWM) --- 중간 생략 ---- swap 상태 확인 # swap –l  swap 의 block (512kbyte) 확인시 path dev swaplo blocks free /dev/swap 7679,2 0 1060288 1060288 # swap –s  swap 의 사용량 확인 (단위는 kbyte) total: 0 allocated + 206712 reserved = 206712 blocks used, 1344368 blocks available 15장 시스템 보안 시스템의 보안상태는 4 가지가 있습니다. low , Traditionnal , Improved , High 와 같이 있으며 각각 사용자가 loging 시 몇번까지, 패스워드의 길이 , 파일생성시 기본적으로 정의되느 권한등을 정의 하며 현재 시스템에 설정되어있는 보안을 확인하기 위해서는 secdefs –v 명령으로 확인하실수 있습니다. low  사용자의 passwd 가 필요없으며 반드시 passwd 를 설정할 필요가 없습니다. 사용자를 삭제하였다 다시 등록될 때 전에 사용했었던 uid 를 사용할 수있습니다. 보안과 거리가 먼 상태를 말합니다. traditional  패스워드의 기간만료를 설정하지 않아도 되지만 설정하라고 권고만 합니다. 또한 모든 네트웍 서비스를 사용할 수 있습니다. 전에 사용하였던 사용자의 uid 를 다시 사용하 실 수 없습니다. Improved  로긴시 로긴횟수에 제한을 두고 패스워드 만료가 반드시 설정되며 일부 네트 웍 서비스에 제한을 둡니다. 전에 사용하였던 사용자의 uid는 사용할 수 없는 제한을 둡니다. high  상당히 높은 보안구성이며 패스워드의 길이 패스워드 변경기간 ,사용자의 로그인시 실패수 ,사용자의 로그인후 사용기간등이 엄격하게 통제가 되며 전에 사용하였던 사용자의 uid 는 절대 사용할 수 없는 등 보안에 까다롭게 제한을 둡니다. 보안에 관련된 사항은 /etc/default/login 과 /etc/security 디렉토리안에 설정이 됩니다. 파일 / 디렉토리의 사용자 및 그룹 권한을 확인 [형식] getacl 파일명 getacl /etc/shadow # 파일: /etc/shadow # 소유자:root # 그룹:sys 사용자::r-- 그룹::--- 클래스:--- 기타:---
8 디스크파티션 & VTOC
조인상
5962 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ http://www.systemadmin.pe.kr Disk Partition Fdisk 명령어 인텔 기반 컴퓨터들은 최대 4개 까지의 파티션을 한 디스크에 만들 수 있다. 각 파티션에 OS나 데이터를 위해 사용할 수 있다. 만일 4개 이상의 파티션을 생성하려 하면 에러 메시지가 아래와 같이 나타난다. 파티션을 나누는 명령어는 ‘fdisk’ 이다. #/:>fdisk /dev/rdsk/c0b0t2d0p0 Total disk size is 4149 cylinders (4149.0 MB) Cylinders Approx Partition Status Type Start End Length % MB ====== ======== ============ ===== ==== ====== === ====== 1 UNIX System 0 414 415 10 415.0 2 UNIX System 415 1244 830 20 830.0 3 UNIX System 1245 2489 1245 30 1245.0 4 UNIX System 2490 2904 415 10 415.0 SELECT ONE OF THE FOLLOWING: 0. Overwrite system master boot code 1. Create a partition 2. Change Active (Boot from) partition 3. Delete a partition 4. Exit (Update disk configuration and exit) 5. Cancel (Exit without updating disk configuration) Enter Selection: 1 1번을 선택하여 5번째 파티션을 만들려고 하면 아래와 같은 에러메시지로 더 이상 만들 수 없다고 경고하고 있다. The partition table is full! You must delete an old partition before creating a new one. 아래의 내용은 기존에 아무런 파티션이 없을 때 나타나는 형식이다. 기존에 이미 파티션된 정보가 있다면 위와 같은 형식으로 나타난다. #/:>fdisk /dev/rdsk/c0b0t2d0s0 The recommended default partitioning for your disk is: a 100% "UNIX System" partition. To select this, please type "y". To partition your disk differently, type "n" and the "fdisk" program will let you select other partitions. y 주의 fdisk 명령어는 현재 마운트되어 사용중에 있는 디스크의 파티션 정보도 변경이 가능하므로 사용할 때 반드시 적용하고자 하는 디스크가 맞는지를 재삼 확인 하여야 한다. 파티션 삭제 테스트 일단 마운트되어 사용중인 디스크 하나를 선택하고 fdisk로 파티션 정보를 지워보자. 리부팅이나 ‘umount’ 시키지 않은 상태에서는 사용하는데 지장은 없다. 그러나 리부팅이나 ‘umount’ 되었다가 다시 마운트 시키면 에러 메시지가 나타난다. #mountall UX:vxfs mount: ERROR: Cannot open /dev/dsk/c0b0t2d0s1: No such device UX:vxfs fsck: ERROR: Cannot open /dev/rdsk/c0b0t2d0s1: No such device UX:/sbin/mountall: INFO: /dev/dsk/c0b0t2d0s1 not mounted UX:vxfs mount: ERROR: Cannot open /dev/dsk/c0b0t2d0s2: No such device UX:vxfs fsck: ERROR: Cannot open /dev/rdsk/c0b0t2d0s2: No such device UX:/sbin/mountall: INFO: /dev/dsk/c0b0t2d0s2 not mounted UX:ufs mount: ERROR: /dev/dsk/c0b0t2d0s4 no such device or write-protected UX:ufs mount: ERROR: giving up on: /test4 UX:/sbin/mountall: ERROR: fsck failed for /dev/dsk/c0b0t2d0s4 UX:ufs mount: ERROR: /dev/dsk/c0b0t2d0s5 no such device or write-protected UX:ufs mount: ERROR: giving up on: /test5 ……………… fdisk가 지워진 디스크의 디바이스가 없다는 식으로 나타나지만 /dev/dsk 와 /dev/rdsk에서 보면 디바이스 파일은 여전이 존재하고 있다. 그리고 디스크의 VTOC 정보도 그대로 살아있다. 다시 fdisk로 파티션 정보를 복구하여 ‘mountall’ 하면 정상적으로 마운트된다. fdisk로 파티션 정보를 지우면 하드웨어 관련 정보 파일이 손상을 입어 콘솔에 에러를 뿌리게 된다. AMIRDMON[severe] : Adapter Enquiry failed for 1 adaptor /usr/tmp/hwrdmon open failed, errno 0x2 이 에러 메시지는 /usr/tmp 밑에 hwrdmon 파일이 없으면 콘솔에 계속 뿌려 준다. 이때는 시스템을 리부팅하면 hwrdmon 파일이 다시 만들어져 에러 메시지가 없어 질 것이다. #/usr/tmp:>ls -al c--------- 1 root root 108, 32 Oct 24 19:03 hwrdmon #/usr/tmp:>cp hwrdmon hwrdmon.old UX:cp: ERROR: Read error in hwrdmon: No such device VTOC 정보 VTOC는 Volume Table of Contents의 약자로, 새로 디스크를 만들 때 ‘diskadd’이나 ‘disksetup’ 명령어를 사용하는데 이때에 VTOC 정보가 만들어 진다. 만들어진 정보는 slice 7번에 기록되어 필요할 때에 호출되고 이용된다. 디스크가 설치된 후에 VTOC을 관리하는 명령어로는 2 가지가 주로 이용된다: prtvtoc, edvtoc. Prtvtoc 명령어 ‘prtvtoc’ 명령어는 하드 디스크의 VTOC 정보를 보여 준다. 해당 디스크의 구성 정보를 통하여 슬라이스 몇 개로 나누어져 있고, 어는 정도의 디스크 용량으로 나누어져 있는지를 알고자 할 때 사용하면 유용하다. 먼저 루트 디스크의 VTOC 정보를 표시하여 보자. #/:>prtvtoc /dev/rdsk/c0b0t0d0s0 slice 0: DISK permissions: VALID UNMOUNTABLE starting sector: 63 (cyl 0) length: 8385867 (522.00 cyls) slice 1: ROOT permissions: VALID starting sector: 578340 (cyl 36) length: 2875635 (179.00 cyls) slice 2: SWAP permissions: VALID UNMOUNTABLE starting sector: 96390 (cyl 6) length: 481950 (30.00 cyls) slice 4: HOME permissions: VALID starting sector: 3453975 (cyl 215) length: 4209030 (262.00 cyls) slice 7: BOOT permissions: VALID UNMOUNTABLE starting sector: 63 (cyl 0) length: 34 (0.00 cyls) slice 8: ALT SEC/TRK permissions: VALID UNMOUNTABLE starting sector: 97 (cyl 0) length: 15968 (0.99 cyls) slice 10: STAND permissions: VALID starting sector:16065 (cyl 1) length: 80325 (5.00 cyls) slice 11: VAR permissions: VALID starting sector: 7663005 (cyl 477) length: 626535 (39.00 cyls) slice 15: VOLPRIVATE permissions: VALID UNMOUNTABLE starting sector: 8289540 (cyl 516) length: 16065 (1.00 cyls) 이러한 VTOC 정보를 가지고 ‘edvtoc’ 명령어를 이용하면 다른 디스크의 VTOC 정보에 업어칠 수 있다. VTOC 정보를 먼저 파일로 받아내어 필요한 내용으로 편집을 할 수도 있다. 옵션 “-f”를 이용하여 파일로 받겠다는 의미로 받고자 하는 VTOC 내용을 담을 파일 이름을 알기 쉽게 임의의 이름으로 만들어 준다. vtocfile.c0b0t0d0s0이란 이름으로 만들어 보자. 아래의 명령어는/dev/rdsk/c0b0t0d0s0의 VTOC 내용을 vtocfile.c0b0t0d0s0 파일로 저장하는 명령어이다. #/:>prtvtoc -f vtocfile.c0b0t0d0s0 /dev/rdsk/c0b0t0d0s0 vtocfile.c0b0t0d0s0파일의 내용을 살펴보자. 변경을 해야 한다면 vi 편집기를 이용하면 된다. #/:>cat vtocfile.c0b0t0d0s0 #SLICE TAG FLAGS START SIZE 0 0x5 0x201 63 8385867 1 0x2 0x200 578340 2875635 2 0x3 0x201 96390 481950 3 0x0 0x0 0 0 4 0xb 0x200 3453975 4209030 5 0x0 0x0 0 0 6 0x0 0x0 0 0 7 0x1 0x201 63 34 8 0xd 0x201 97 15968 9 0x0 0x0 0 0 10 0x9 0x200 16065 80325 11 0xa 0x200 7663005 626535 12 0x0 0x0 0 0 13 0x0 0x0 0 0 14 0x0 0x0 0 0 15 0xf 0x201 8289540 16065 다음은 TAG에 대한 슬라이스 타입을 정의한 내용이다. #define V_BOOT 0x01 /* Boot slice */ #define V_ROOT 0x02 /* Root filesystem */ #define V_SWAP 0x03 /* Swap filesystem */ #define V_USR 0x04 /* Usr filesystem */ #define V_BACKUP 0x05 /* full disk */ #define V_ALTS 0x06 /* alternate sector space */ #define V_OTHER 0x07 /* non-unix space */ #define V_ALTTRK 0x08 /* alternate track space */ #define V_STAND 0x09 /* Stand slice */ #define V_VAR 0x0a /* Var slice */ #define V_HOME 0x0b /* Home slice */ #define V_DUMP 0x0c /* dump slice */ #define V_ALTSCTR 0x0d /* Alternate sector/track */ #define V_MANAGED1 0x0e /* Volume management public slice */ #define V_MANAGED2 0x0f /* Volume management private slice */ 다음은 FLAGS로 슬라이스와 관련된 permission flag들이다. 이들은 필요에 따라 조합이 된다. 가령 swap 파티션은 0x201인데, 이는 0x200과 0x01 플래그를 합친것과 같으므로 특성은 “Partition is valid to use, unmountable partition”이 된다. #define V_UNMNT 0x01 /* Unmountable partition */ #define V_RONLY 0x10 /* Read only */ #define V_VALID 0x200 /* Partition is valid to use */ 다음은 루트용이 아닌 일반 디스크에 관한 VTOC 정보이다. #/:>cat vtocfile1 #SLICE TAG FLAGS START SIZE 0 0x5 0x201 32 8497120 1 0x4 0x200 2048 1056768 2 0x4 0x200 1058816 1056768 3 0x4 0x200 2115584 1056768 4 0x4 0x200 3172352 1056768 5 0x4 0x200 4229120 1056768 6 0x4 0x200 5285888 1056768 7 0x1 0x201 32 34 8 0xd 0x201 66 1982 9 0x4 0x201 6342656 1056768 10 0x4 0x200 7399424 1097728 11 0x0 0x0 0 0 12 0x0 0x0 0 0 13 0x0 0x0 0 0 14 0x0 0x0 0 0 15 0x0 0x0 0 0 다음은 옵션 “-p”로 디스크의 물리적인 특성 값을 알 수 있다. “-p” 옵션을 사용하여PDINFO(Physical Disk Information)으로 알려진 정보를 얻어낼 수 있다. PDINFO 정보는 boot 슬라이스에 저장되어 있으며, 보통 부팅할 때이나 디스크가 초기화 될때 마다 sanity check으로 이용된다. #/:>prtvtoc -p /dev/rdsk/c0b0t0d0s0 Device /dev/rdsk/c0b0t0d0s0 device type: 4 (DPT_SCSI_HD) cylinders: 522 heads: 255 sectors/track: 63 bytes/sector: 512 number of partitions: 16 size of alts table: 2048 media stamp: "HIchQVFCpfxG" 위에서 “device type: 4 (DPT_SCSI_HD)”라고 되어 있는데, 이는 DPT(Disk Parameter Type)로 디스크 파라미터 종류를 나타낸다. DPT에는 여러가지가 있는데 다음과 같다. DPT_NOTDISK 0 Not a disk device DPT_WINI 1 Winchester( IDE/EIDE) DPT_FLOPPY 2 Floppy DPT_OTHER 3 Other type of disk DPT_SCSI_HD 4 SCSI disk DPT_SCSI_OD 5 SCSI optional 다음은 디스크에 결함이 있어 섹터 단위로 다른 섹터로 포인터를 이동시킨다. 그와 관련된 정보를 표시하는 옵션 “-a”를 이용한 명령어 이다. 아무 변경이 없다면 아래와 같이 표시되고 변경된 값이 있다면 무언가 표시될 것이다. #/:>prtvtoc -a /dev/rdsk/c0b0t0d0s0 ALTERNATE SECTOR/TRACK MAPPING TABLE: Bad Sector Start Alternate Sector Start Count 1012678 -> 1012678 1 15962 alternate sector(s) left for allocation. Edvtoc 명령어 Prtvtoc 명령어와 연계되어 사용하는 명령어로서, VTOC를 편집할 수 있는 명령어이다. 사용하는 형식은 다음과 같다. # edvtoc -f vtoc-file raw-device -f vtoc-file 업어칠 VTOC 정보 파일 raw-device /dev/rdsk/c0b0t1d0s0와 같이 마스터 슬라이스 번호까지 준다. 아래의 경우 /tmp/vtoc.t1d0s0란 VTOC 정보를 디스크 /dev/rdsk/c0b0t6d0s0 디바이스에 업어치라는 내용이다. # edvtoc –f /tmp/vtoc.t1d0s0 /dev/rdsk/c0b0t6d0s0 “-f” 옵션은 디스크 파티션 정보를 업어치지만, “-p” 옵션은 디스크의 물리적 정보 즉 실린더 수, 헤드 수, 섹터 수 같은 정보를 업어치는데 사용된다. # edvtoc -p raw-device Slices 모든 유닛스 파티션에는 반드시 슬라이스 개념을 사용하고 있다. 슬라이스에는 몇가지 종류가 있으며, 파일시스템으로 사용하기도 하고 특정 용도로 사용되기도 한다. 슬라이스를 나누는 방법에는 OS디스크쪽과 일반 데이터 디스크쪽으로 구분하여 설명되어야 한다. 슬라이스는 보통 slice 0에서 15까지를 사용한다. 파티션당 최대 슬라이스 수는 184개이다. 다음 “Device 디렉토리”편에 자세히 설명하여 놓았다. #/:>prtvtoc /dev/rdsk/c0b0t0d0s0 slice 0: DISK permissions: VALID UNMOUNTABLE starting sector: 63 (cyl 0) length: 8385867 (522.00 cyls) slice 1: ROOT permissions: VALID starting sector: 578340 (cyl 36) length: 2875635 (179.00 cyls) slice 2: SWAP permissions: VALID UNMOUNTABLE starting sector: 96390 (cyl 6) length: 481950 (30.00 cyls) slice 4: HOME permissions: VALID starting sector: 3453975 (cyl 215) length: 4209030 (262.00 cyls) slice 7: BOOT permissions: VALID UNMOUNTABLE starting sector: 63 (cyl 0) length: 34 (0.00 cyls) slice 8: ALT SEC/TRK permissions: VALID UNMOUNTABLE starting sector: 97 (cyl 0) length: 15968 (0.99 cyls) slice 10: STAND permissions: VALID starting sector:16065 (cyl 1) length: 80325 (5.00 cyls) slice 11: VAR permissions: VALID starting sector: 7663005 (cyl 477) length: 626535 (39.00 cyls) slice 15: VOLPRIVATE permissions: VALID UNMOUNTABLE starting sector: 8289540 (cyl 516) length: 16065 (1.00 cyls) 위에는 루트 디스크에 관한 정보이고 아래는 일반 디스크에 관한 VTOC 정보로 비교하여 보자. #/:>prtvtoc /dev/rdsk/c0b0t2d0s0 slice 0: DISK permissions: VALID UNMOUNTABLE starting s..:32 (cyl 0) length: 8497120 (4148.98 cyls) slice 1: USER permissions:VALID starting sector: 2048 (cyl 1) length: 1056768 (516.00 cyls) slice 2:USER permissions: VALID starting sector: 1058816 (cyl 517) length: 1056768 (516.00 cyls) slice 3: USER permissions: VALID starting sector: 2115584 (cyl 1033) length: 1056768 (516.00 cyls) slice 4: USER permissions: VALID starting sector: 3172352 (cyl 1549) length: 1056768 (516.00 cyls) slice 5: USER permissions: VALID starting sector: 4229120 (cyl 2065) length: 1056768 (516.00 cyls) slice 6: USER permissions: VALID starting sector: 5285888 (cyl 2581) length: 1056768 (516.00 cyls) slice 7: BOOT permissions:VALID UNMOUNTABLE starting sector: 32 (cyl 0) length: 34 (0.02 cyls) slice 8: ALT SEC/TRK permissions:VALID UNM..BLE starting sector:66 (cyl 0) length: 1982 (0.97 cyls) slice 9: USER permissions:VALID UNM..BLE starting sector:6342656 (cyl 3097) length: 1056768 (516.00 cyls) slice 10: USER permissions: VALID starting sector: 7399424 (cyl 3613) length: 1097728 (536.00 cyls) 위에 루트 디스크와 일반 디스크에 대한 파티션 정보를 열거하여 놓았다. length를 계산하는 약식방법은 다음과 같다. Length 단위는 블록이므로 MB 단위로 계산 하려면, 가령 8497120이라면 대략 (8497120/2)=4248560에서 끝에서 3자리인 560을 떼어낸 후 MB를 붙이면 4248MB 정도가 전체 파티션에 대한 디스크 크기가 된다. 이는 1 Block=512 Bytes를 근거로 계산한 것이다. 정식으로 계산하자면 8497120 blocks = 8497120 x 512 bytes = 8497120 x 512 / 1024 KB = (8497120 x 512 /1024) /1024 MB = 4148MB = 4148 MB/1024 = 4 GB라는 결과가 나온다. 공통정보: s0 디스크 전체에 대한 유닉스 파티션으로 length는 전체 디스크 크기이다. s7 boot 슬라이스가 있는 곳으로 OS의 boot loader가 있는 곳이다. 디스크의 Master Boot Record나 /stand 파티션과는 의미가 다르다. 혼돈해서는 안된다. 그리고 VTOC 정보, identification 정보인PDINFO가 있는 곳이다. s8 alternate sector 슬라이스로, 이 곳에는 remap된 sector들과 spare sector들에 관한 정보와 다른 remapping된 정보도 가지고 있다. root 디스크: s1 root 파일시스템 s2 swap 슬라이스 s3 /usr 파일시스템 s4 /home 파일시스템 s5 현재 사용 안함 s6 dump 슬라이스. 메모리에 덤프를 받는 대신 디스크의 이 영역에 덤프를 받은다. s9 현재 사용 안함. s10 커널이 상주 하는 곳으로 /stand용으로 사용한다. s11 /var 파일시스템 s12 /home2 파일시스템 s13 /tmp 파일시스템 s14 Volume management public 슬라이스. Veritas Volume Manager에 의해 사용됨. s15 Volume management private 슬라이스. Veritas Volume Manager에 의해 사용됨.
7 New Disk 추가
조인상
5413 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr New Disk 추가 UnixWare 7에서 새 디스크를 추가하고 인식시키는 일은 간단하나 기존의 데이터가 들어있는 디스크들도 있으므로 잘못하면 데이터를 날려먹는 일이 발생되므로 주의를 요하고 작업을 할 때 기존의 구성 정보를 정확히 숙지하고 작업에 임하여야 한다. 그렇게 되면 데이터가 그리 많지 않고 백업 장치가 좋아 시간이 많이 걸리지 않으면 작업과 관련된 모든 데이터를 백업 받아 두는 것이 원칙이다. OS에 따라 새 디스크가 사용중인 디스크 중간에 설치하게 될 때나 디스크의 장애로 인하여 시스템이 디스크를 인식하지 못할 때 시스템을 리부팅시키게 되면 파일시스템의 마운트 포인트가 뒤로 밀려나거나 앞당겨져 /etc/vfstab 파일과 다르게 마운트될 수 있기 때문이다. 마운트 포인트는 디바이스 이름과 디렉토리 이름이 연결된 구조이므로, 기존의 디바이스 이름 순서로 논리적으로 그리고 시스템이 디스크를 인식한 순서로 마운트 포인터가 연결된다. 이를 방지하기 위하여 작업을 하기전에 /etc/vfstab에서 시스템 디스크를 제외한 나머지 사용자 마운트 포인트를 #으로 막아 두면 리부팅을 시켜도 마운트가 되지 않으므로 수동으로 조정하기 편하다. 경우에 따라 파일시스템을 마운트 해제 안한 상태에서 시스템 전원을 내리더라도 파일시스템을 복구하는데 시간 낭비가 덜하고 사용자의 파일시스템이 깨지는 것도 방지할 수 있다. 또, 필요에 따라 사용자 파일 시스템마다 아래와 같이 마운트 포인터의 정보를 기록해 두면 나중에 마운트 포인트가 꼬이더라도 확인하는데 유용하다. [#] vi mountheader /dev/dev /c0b0t0d1s2 /informix 일반 SCSI 케이블로 연결할 때와 디스크 어레이 장비에 디스크를 추가하는 일은 경우가 약간 다르다. 물론 디스크 어레이에 새 디스크를 추가하는 일이 물리적인 디스크 추가 작업 측면에서 간편하다. 모든 엔지니어들이 그러하겠지만 완전히 새로 시스템 설치때 디스크를 구성하는 일은 마음이 편하나, 기존의 디스크 구성에서 새로 변경시키거나 추가하여 구성할 때는 일하기가 상당히 꺼려하는 부분이다. 그래서 되도록 이때는 사용자에게 Full Backup을 받으라고 권장한다. 그리고 디스크 어레이 장비 자체에 디스크를 관리하는 기능이 내장되어 있는 것이 대부분 이므로 디스크를 제공하는 각 벤더의 특성에 따른다. 이들 대부분을 RAID를 지원하는 디스크 어레이 장비이다. 그러나 JBOD(Just Bunch of Disks) 즉 일명 막디스크 어레이라 부르는 장비는 말 그대로 디스크 여러 개를 구슬에 꿰 듯이 연결만 시켜놓은 단순 기능의 디스크 어레이 장비는 특별한 관리 기능이 없다. 디스크를 설정하는데 사용되는 명령어로서, 디스크를 추가하는데 사용되는 ‘diskadd’ 명령어,디스크를 제거하라는 ‘diskrm’ 명령어등이 많이 사용된다. disksetup 명령어 먼저 설치하기 전에 현재의 디바이스 구성 정보를 확인하고 기록하여 두어야 한다, 작업에 참고를 하여야 하기 때문이다. #/:>sdiconfig -l 0:0,7,0: HBA : (adsl,1) Adaptec PCI SCSI 0,0,0: DISK : SEAGATE ST15150N 0023 그런 다음 디스크를 추가시킨후 시스템을 부팅하면 추가한 디스크에 해당하는 디바이스 파일 들이 /dev/dev와 /dev/rdsk 디렉토리 밑에 만들어 졌나도 확인하는 것이 좋다. 시스템 부팅후 다시 아래 명령을 입력하여 확인 하면 SCSI ID 2번으로 붙인 디스크가 정상적으로 인식하고 있음을 확인한 후에야 작업에 들어가야 한다. #/:>sdiconfig -l 0:0,7,0: HBA : (adsl,1) Adaptec PCI SCSI 0,0,0: DISK : SEAGATE ST15150N 0023 0,2,0: DISK : UNISYS 003557M2954S-5120657 disksetup 명령어를 이용하여 새로운 디스크를 추가하고자 할 때에는 먼저 ‘fdisk’로 디스크를 구성한 후에 실행하여야 한다, 안 그러면 다음과 같은 에러를 보게 된다. ‘disksetup’ 명령어를 이용하면 별도로 /에 파일시스템으로 사용할 디렉토리를 안 만들어 주어도 된다. # /usr/sbin/disksetup -I /dev/rdsk/c0b0t2d0s0 UX:disksetup: ERROR: No active UNIX System partition in partition table! # fdisk /dev/rdsk/c0b0t2d0s0 The recommended default partitioning for your disk is: a 100% "UNIX System" partition. To select this, please type "y". To partition your disk differently, type "n" and the "fdisk" program will let you select other partitions. y 다음에는 ‘disksetup’ 명령어를 이용하여 새 디스크를 추가시켜보는데, 다양한 방법으로 시도하여 각각의 상태에 관하여 알아보자. #/:>/usr/sbin/disksetup -I /dev/rdsk/c0b0t2d0s0 Surface analysis of your disk is recommended but not required. Do you wish to skip surface analysis? (y/n) y Disksetup 명령어를 실행하면 먼저 디스크 surface test를 수행하겠는가를 물어온다. 특별한 이유가 없으면 테스트를 하지 않는다고 y를 받아라. n를 받아 테스트를 할려면 디스크 크기에 따라 몇시간이 소요될 수도 있다. You will now be queried on the setup of your disk.After you have determined which slices will be created, you will be queried to designate the sizes of the various slices. How many slices/filesystems do you want created on the disk (1 - 13)? 8 먼저 디스크의 슬라이스만 몇 개로 나눌것인가에 대하여 물어오는데, 실재 작업을 할때에는 사용자가 어떤 목적으로 어느 정도의 크기로 마운트 포인트의 이름은 무엇으로, 슬라이스는 몇 개로 나눌것인가, 파일시스템의 종류는 어떤것으로 할것인가에 대하여 미리 확인을 하고 작업에 임하여야 한다. 일단 테스트 목적으로 8개로 나누어 보자. Please enter the absolute pathname (e.g., /home3) for slice/filesystem 1 (1 - 32 chars)? /test1 파일시스템 이름은 무엇으로 할 것인지를 물어오면 32자 이내로 절대 패스명인 /를 붙여 디렉토리 이름을 적어준다. UX:disksetup: ERROR: /test1 directory is already mounted on. 만약 마운트되어 이미 사용되고 있다면 실수로 사용중인 모든 데이터를 지워버릴수 있기때문에 경고 메시지로 이미 마운트되어 사용중이라는 내용을 볼수 있을 것이다. 마운트 포인트의 개념을 이해하려면 다음과 같다. 물리적인 디스크는 유닉스 시스템이 그냥은 사용 하지 못한다. 그래서 물리적인 디스크에 파일시스템을 만들어 사용하여야 하는데 이 파일시스템에 특정 이름을 부여하여 서로 다른 디스크의 파일시스템과 구별이 되게 하여야 한다. 그래서 구별되는 유일한 디렉토리를 루트 디렉토리인 /에 만든다. ‘mount’ 명령어를 이용하여 만든 디렉토리와 파일시스템을 연결시켜주어야 한다. 그래서 사용자는 해당 디렉토리만 찾아가면 특정 파일시스템과 고리로 연결되므로 사용할 수 있게 되는 것이다. 이 연결 고리만 끝으면 특정 파일시스템을 액세스하지 못한다. 이 고리가 연결된 상태에서 해당 디렉토리를 지우면 파일시스템의 데이터를 삭제할 수 있고, 고리를 끊은 상태에서 해당 디렉토리는 단순한 디렉토리 이름 뿐이므로 지워도 데이터는 삭제되지 않는다. 이 상태에서 다른 디렉토리 이름으로 마운트 포인트를 ‘mount’ 명령어로 변경할 수도 있는 것이다. Please enter the absolute pathname (e.g., /home3) for slice/filesystem 1 (1 - 32 chars)? /test1 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),type 'na' if no filesystem is needed, or press <ENTER> to use the default (vxfs): 파일시스템의 종류는 어떤 것으로 할 것인가를 물어온다. 일단 여기에서는 디폴트인 vxfs를 선택하도록 그냥 <Enter> 키만 눌렀다. 나중에 /etc/vfstab에서 확인하여 보면 이 파일시스템으로 만들어졌음을 알 수 있을 것이다. Specify the block size from the the following list (1024, 2048, 4096, 8192), or press <ENTER> to use the first one: 다음에는 만들 파일시스템의 블록 크기를 물어오는데, vxfs에서 디폴트 블록 크기는 1024가 된다. 이를 확인하는 명령어로 ‘fstyp –v /dev/dev /c0b0t2d0s1’을 하여보면 bsize=1024로 되어 있는데 해당 블록 크기를 나타낸다. Should /test1 be automatically mounted during a reboot? Type "no" to override auto-mount or press <ENTER> to enable the option: 다음에 부팅시에 자동으로 파일시스템 /test1을 마운트 되게 하겠는가에 대하여 물어온다. 디폴트 <Enter>키를 치면 부팅시 자동으로 마운트되게 하고 no으로 받으면 자동 부팅이 안되게 함으로 필요에 따라 부팅후에 마운트시켜 사용할 수 있다. Please enter the absolute pathname (e.g., /home3) for slice/filesystem 2 (1 - 32 chars)? /test2 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),type 'na' if no filesystem is needed, or press <ENTER> to use the default (vxfs): Specify the block size from the the following list (1024, 2048, 4096, 8192), or press <ENTER> to use the first one: 8192 Should /test2 be automatically mounted during a reboot? Type "no" to override auto-mount or press <ENTER> to enable the option: /test2는ufs 파일시스템에 블록 크기를 8192를 선택하였다. Please enter the absolute pathname (e.g., /home3) for slice/filesystem 3 (1 - 32 chars)? /test3 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),type 'na' if no filesystem is needed, or press <ENTER> to use the default (vxfs): Specify the block size from the the following list (1024, 2048, 4096, 8192), or press <ENTER> to use the first one: 4096 Should /test3 be automatically mounted during a reboot? Type "no" to override auto-mount or press <ENTER> to enable the option: no /test1과의 차이점은 자동 부팅을 안하게 no를 선택하였다. #/:>mount -F vxfs /dev/dsk/c0b0t2d0s3 /test3 Please enter the absolute pathname (e.g., /home3) for slice/filesystem 4 (1 - 32 chars)? /test4 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),type 'na' if no filesystem is needed, or press <ENTER> to use the default (vxfs): ufs Specify the block size from the the following list (4096, 8192), or press <ENTER> to use the first one: Should /test4 be automatically mounted during a reboot? Type "no" to override auto-mount or press <ENTER> to enable the option: 이번에는 파일시스템을 ufs로 만들었고, ufs의 블록 크기는 4096과 8192가 있는데 ufs의 디폴트 블록 크기는 4096이다. Please enter the absolute pathname (e.g., /home3) for slice/filesystem 5 (1 - 32 chars)? /test5 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),type 'na' if no filesystem is needed, or press <ENTER> to use the default (vxfs): ufs Specify the block size from the the following list (4096, 8192), or press <ENTER> to use the first one: 8192 Should /test5 be automatically mounted during a reboot? Type "no" to override auto-mount or press <ENTER> to enable the option: ufs 파일시스템에 블록 크기를 8192로 하였다. Please enter the absolute pathname (e.g., /home3) for slice/filesystem 6 (1 - 32 chars)? /test6 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs), type 'na' if no filesystem is needed, or press <ENTER> to use the default (vxfs): ufs Specify the block size from the the following list (4096, 8192), or press <ENTER> to use the first one: 4096 Should /test6 be automatically mounted during a reboot? Type "no" to override auto-mount or press <ENTER> to enable the option: no Please enter the absolute pathname (e.g., /home3) for slice/filesystem 7 (1 - 32 chars)? /test7 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),type 'na' if no filesystem is needed, or press <ENTER> to use the default (vxfs): na Should /test7 be automatically mounted during a reboot? Type "no" to override auto-mount or press <ENTER> to enable the option: /test7은 파일시스템으로 만들지 않고 na를 선택하여 raw 디바이스로 지정하였다. 이와 같이 파일시스템을 만들지 않고 사용하는 경우는 OS가 raw 디바이스를 액세스하는 방법은 없으므로 만일 문제가 발생하여도 OS에서 관리하지 못하는 맹점으로 인해 조치를 취할 수 없다. 주로 오라클, 인포믹스 같은 데이터베이스에서 특정 목적으로 사용할 경우에 만들어 주는 것이므로 데이터베이스에서 관리하는 방법 밖에 없다. DB에서 파일시스템을 액세스하는 속도보다 raw 디바이스를 직접 액세스하는 속도가 빨라 DB 튜닝으로 해결 안되는 속도 문제를 개선시켜주는 장점이 있는 반면 관리하기가 번거럽다는 맹점이 있다. Please enter the absolute pathname (e.g., /home3) for slice/filesystem 8 (1 - 32 chars)? /test8 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),type 'na' if no filesystem is needed, or press <ENTER> to use the default (vxfs): ufs Specify the block size from the the following list (4096, 8192), or press <ENTER> to use the first one: Should /test8 be automatically mounted during a reboot? Type "no" to override auto-mount or press <ENTER> to enable the option: no 여기까지가 파일시스템의 이름,블록 크기,자동 마운트에 관하여 설정하였다. 아래는 각 슬라이스에 대한 실린더 크기를 정의하는 부분이 되겠다. 슬라이스당 용량을 쉽게 계산할 수 있도록 아래에 보면 1 Cylinder당 대략 1MB라는 정보를 흘리고 있다. You will now specify the size in cylinders of each slice. (One megabyte of disk space is approximately 1 cylinders.) There are now 4148 cylinders available on your disk. The filesystem type you have chosen is limited to 1048576 cylinders. How many cylinders would you like for /test1 (0 - 4148)? Press <ENTER> for 0 cylinders: 516 There are now 3632 cylinders available on your disk. vxfs 파일시스템으로 정의된 /test1에 대하여, 최대 사용가능 실린더 수가 1048576이라고 제한을 두었는데 이는 UnixWare 7의 지원 가능 파일이나 파일시스템의 크기가 1 TB까지 라는것과 무관하지 않다. 실린더 수는 디스크 크기에 따라 다르며 여기에서 1 실린더가 약 1MB 정도라 추정되었다. 현재 이 디스크는 4148 실린더수를 지원하는데 4GB 디스크이다. 이를 근거로 MB로 환산하여 필요한 용량을 계산하면 된다. The filesystem type you have chosen is limited to 1048576 cylinders. How many cylinders would you like for /test2 (0 - 3632)? Press <ENTER> for 0 cylinders: 516 There are now 3116 cylinders available on your disk. 4148 실린더에서 516을 할당하고 나머지 3632개에서 /test2로 516 실린더를 할당하여 3116 실린더가 남았다. 이와 같은 방법으로 나머지도 작업을 하면 된다. The filesystem type you have chosen is limited to 1048576 cylinders. How many cylinders would you like for /test3 (0 - 3116)? Press <ENTER> for 0 cylinders: 516 There are now 2600 cylinders available on your disk. The filesystem type you have chosen is limited to 2048 cylinders. How many cylinders would you like for /test4 (0 - 2048)? Press <ENTER> for 0 cylinders: 516 There are now 2084 cylinders available on your disk. ufs 파일시스템인 /test4는 2048 실린더를 할당할 수 있다고 하였고 나머지도 이와 같이 작업을 해주면 된다. The filesystem type you have chosen is limited to 2048 cylinders. How many cylinders would you like for /test5 (0 - 2048)? Press <ENTER> for 0 cylinders: 516 There are now 1568 cylinders available on your disk. The filesystem type you have chosen is limited to 2048 cylinders. How many cylinders would you like for /test6 (0 - 1568)? Press <ENTER> for 0 cylinders: 516 There are now 1052 cylinders available on your disk. How many cylinders would you like for /test7 (0 - 1052)? Press <ENTER> for 0 cylinders: 516 There are now 536 cylinders available on your disk. /test7은 raw 디바이스로 지정하였던 것이다. The filesystem type you have chosen is limited to 2048 cylinders. How many cylinders would you like for /test8 (0 - 536)? Press <ENTER> for 0 cylinders: 536 You have specified the following disk configuration: A /test1 filesystem with 516 cylinders (516.0 MB) A /test2 filesystem with 516 cylinders (516.0 MB) A /test3 filesystem with 516 cylinders (516.0 MB) A /test4 filesystem with 516 cylinders (516.0 MB) A /test5 filesystem with 516 cylinders (516.0 MB) A /test6 filesystem with 516 cylinders (516.0 MB) A /test7 slice with 516 cylinders (516.0 MB) A /test8 filesystem with 536 cylinders (536.0 MB) 다른 것들은 다 파일시스템으로 용량이 명시되었으나 raw 디바이스로 지정된 /test7은 슬라이스로 표시되어 있음을 알 수 있다. Is this allocation acceptable to you (y/n)? y Filesystems will now be created on the needed slices Creating the /test1 filesystem on /dev/rdsk/c0b0t2d0s1 Allocated approximately 132064 inodes for this file system. Specify a new value or press <ENTER> to use the default: Creating the /test2 filesystem on /dev/rdsk/c0b0t2d0s2 Allocated approximately 16508 inodes for this file system. Specify a new value or press <ENTER> to use the default: Creating the /test3 filesystem on /dev/rdsk/c0b0t2d0s3 Allocated approximately 33016 inodes for this file system. Specify a new value or press <ENTER> to use the default: 40000 vxfs 파일시스템에서는 값을 주어도 변화가 거의 없음을 알 수 있다. Creating the /test4 filesystem on /dev/rdsk/c0b0t2d0s4 One inode is allocated for each 2048 bytes of file system space. Specify a value in units of bytes or press <ENTER> to use the default value: UX:ufs mkfs: WARNING: This file system is able to support more than 65,536 files.Some older applications (written for UNIX System V Release 3.2 or before) may not work correctly on such a file system, even if fewer than 65,536 files are actually present.If you wish to run such applications (without recompiling them), you should restrict the maximum number of files that may be created to fewer than 65,536. Your choices are: 1. Restrict this file system to fewer than 65,536 files. 2. Allow this file system to contain more than 65,536 files (not compatible with some older applications). Press '1' or '2' followed by 'ENTER': 1 1을 선택하면 기본 i-node수 65536개를 초과하지 않겠다는 의미이다. Creating the /test5 filesystem on /dev/rdsk/c0b0t2d0s5 One inode is allocated for each 2048 bytes of file system space. Specify a value in units of bytes or press <ENTER> to use the default value: UX:ufs mkfs: WARNING: This file system is able to support more than 65,536 files.Some older applications (written for UNIX System V Release 3.2 or before) may not work correctly on such a file system, even if fewer than 65,536 files are actually present.If you wish to run such applications (without recompiling them), you should restrict the maximum number of files that may be created to fewer than 65,536. Your choices are: 1. Restrict this file system to fewer than 65,536 files. 2. Allow this file system to contain more than 65,536 files (not compatible with some older applications). Press '1' or '2' followed by 'ENTER': 2 2를 선택하면 기본 i–node 수를 초과하겠다는 의미이다. 이런 경우는 드물지만 몇 백의 사용자들이 mail 파일, 전자결재용 파일, 개인 사용자 파일등을 한 서버에서 사용하면 한 파일시스템에 수 십만개의 파일을 담아야 할 경우가 있다. 그러면 한 파일당이나 디렉토리당 1개의 i-node를 차지하므로,더구나 사용자의 데이터에 따라 1k도 안되는 파일들이 많을때, 디스크의 용량은 남아도는데 더 이상 사용자의 파일을 만들지 못하는 수가 발생하게 된다. 이럴때 사용하면 유용하나 i-node 수를 지나치게 많이 만들면 시스템이 리부팅 될 때 fsck를 하고 부팅이 되는데 이를 수용할 한계를 벗어나 파일시스템이 깨어져 버려 모든 데이터가 복구하지 못할 정도로 손상을 입는 치명적인 결과를 초래하니 적절히 설정하는 것이 좋다. 적절하다는 것은 디폴트나 제공되는 한계치 이내의 값을 사용하라는 의미이다. Creating the /test6 filesystem on /dev/rdsk/c0b0t2d0s6 One inode is allocated for each 2048 bytes of file system space. Specify a value in units of bytes or press <ENTER> to use the default value: 1024 UX:ufs mkfs: WARNING: This file system is able to support more than 65,536 files.Some older applications (written for UNIX System V Release 3.2 or before) may not work correctly on such a file system, even if fewer than 65,536 files are actually present.If you wish to run such applications (without recompiling them), you should restrict the maximum number of files that may be created to fewer than 65,536. Your choices are: 1. Restrict this file system to fewer than 65,536 files. 2. Allow this file system to contain more than 65,536 files (not compatible with some older applications). Press '1' or '2' followed by 'ENTER': 1 Creating the /test8 filesystem on /dev/rdsk/c0b0t2d0sa One inode is allocated for each 2048 bytes of file system space. Specify a value in units of bytes or press <ENTER> to use the default value: 1024 UX:ufs mkfs: WARNING: This file system is able to support more than 65,536 files.Some older applications (written for UNIX System V Release 3.2 or before) may not work correctly on such a file system, even if fewer than 65,536 files are actually present.If you wish to run such applications (without recompiling them), you should restrict the maximum number of files that may be created to fewer than 65,536. Your choices are: 1. Restrict this file system to fewer than 65,536 files. 2. Allow this file system to contain more than 65,536 files (not compatible with some older applications). Press '1' or '2' followed by 'ENTER': 2 #/:> 이상과 같이 하면 무사히 새로운 디스크를 추가할 수 있다. 지금까지 설정한 결과에 대하여 검토하여 보겠다. 파일 블록크기 사용가능 사용가능 할당된 항목 시스템 (bsize) i-node 수 데이터 % / 데이터량(MB) Cylinder # Slice # 1 vxfs 1024 131792 93.53 / 516 516 1 2 vxfs 8192 16448 98.98 / 516 516 2 3 vxfs 4096 32944 98.22 / 516 516 3 4 ufs 4096 52224 90 / 504.82 516 4 5 ufs 8192 208896 90 / 484.1 516 5 6 ufs 4096 52224 90 / 504.82 516 6 7 raw - - 9 8 ufs 4096 434176 90 / 478.0 536 10 여기서 몇가지 사항들을 알아낼 수 있다. - vxfs 파일 시스템에서 블록 크기를 디폴트인 1024를 선택하였을 때 i-node 수가 제일 많음을 알 수 있다. 그리고 i-node 수는 임의로 만들어도 만든 수대로 만들어 지지 않고 디폴트 기준이 적용됨을 알았다. - vxfs가 ufs 파일시스템 보다 사용자 영역을 더 확보할 수 있다. - ufs에서는 i-node 수를 확장하는 방법을 선택하게 해 준다. 추가로 SCSI ID 1인 디스크를 일부러 빼낸 후 부팅을 시켜 보았으나 /etc/vfstab에 정의된 마운트 포인트는 밀리지 않고 정확히 자기 마운트 포인트를 찾아 갔다. 다음에 ‘diskadd’를 이용하여 디스크를 추가하는 방법에 관하여 알아보자. diskadd 명령어 디스크를 추가시키고자 할 때, 사전에 준비하고 확인하여야 할 사항들은 ‘disksetup’에 기슬된 사항들과 동일하다. 단지 적용하는 명령어가 다를 뿐이지 내부적인 구성은 같다. 즉 이 명령어도 내부적으로 disksetup 명령어를 이용하여 실행된다. #/:>sdiconfig -l 0:0,7,0: HBA : (adsl,1) Adaptec PCI SCSI 0,0,0: DISK : SEAGATE ST15150N 0023 0,2,0: DISK : UNISYS 003557M2954S-5120657 디스크를 추가한 후 부팅을 하면 다음과 같이 “ 0,1,0: DISK:FUJITSU M2954S-512 0177“ 디스크가 새로 추가 된 것으로 나타날 것이다. #/:>sdiconfig -l 0:0,7,0: HBA : (adsl,1) Adaptec PCI SCSI 0,0,0: DISK : SEAGATE ST15150N 0023 0,1,0: DISK : FUJITSU M2954S-512 0177 0,2,0: DISK : UNISYS 003557M2954S-5120657 지금부터 작업을 시작하여 보자. 만약 fdisk가 안되어 있으면 다음과 같이 설치 순서가 진행된다. #/:>diskadd c0b0t1d0 UX:diskadd: INFO: You have invoked the System V disk management (s5dm) diskadd utility. The purpose of this utility is to set up additional disk drives. This utility can destroy the existing data on the disk. Do you wish to continue? (Type y for yes or n for no followed by ENTER): y The recommended default partitioning for your disk is: a 100% "UNIX System" partition. To select this, please type "y". To partition your disk differently, type "n" and the "fdisk" program will let you select other partitions. y Surface analysis of your disk is recommended but not required. Do you wish to skip surface analysis? (y/n) 그리고 fdisk가 이미 실행되어 설정된 후라면 다음처럼 진행이 된다. #/:>diskadd c0b0t1d0 UX:diskadd: INFO: You have invoked the System V disk management (s5dm) diskadd utility. The purpose of this utility is to set up additional disk drives. This utility can destroy the existing data on the disk. Do you wish to continue? (Type y for yes or n for no followed by ENTER): y Total disk size is 4149 cylinders (4149.0 MB) Cylinders Approx Partition Status Type Start End Length % MB ====== ====== =========== ===== ==== ====== === ====== 1 Active UNIX System 0 4148 4149 100 4149.0 SELECT ONE OF THE FOLLOWING: 0. Overwrite system master boot code 1. Create a partition 2. Change Active (Boot from) partition 3. Delete a partition 4. Exit (Update disk configuration and exit) 5. Cancel (Exit without updating disk configuration) Enter Selection: 결과적으로 ‘disksetup’에서 한 방법과 같다고 보면된다. 일반적으로 ‘diskadd’ 명령어를 많이 이용한다. diskrm 명령어 UnixWare 7으로부터 디스크를 제거하려고 할 때 사용하는 명령어이다. 현재 마운트되어 있어도 실행이 되며, /etc/vfstab에 있는 마운트 포인트를 제거한다. #/:>diskrm c0b0t1d0 UX:diskrm: INFO: You have invoked the System V disk management (s5dm) diskrm utility. The purpose of this utility is to remove entries from the /etc/vfstab file. Do you wish to continue? (Type y for yes or n for no followed by ENTER): y UX:diskrm: INFO: Do you want to delete the following entry? /dev/dsk/c0b0t1d0s1 /dev/rdsk/c0b0t1d0s1 /Add1 vxfs 1 yes mincache=closesync SYS_RANGE_MAX (Type y for yes or n for no and press <ENTER>): y UX:diskrm: INFO: Do you want to delete the following entry? /dev/dsk/c0b0t1d0s2 /dev/rdsk/c0b0t1d0s2 /Add2 vxfs 1 yes mincache=closesync SYS_RANGE_MAX (Type y for yes or n for no and press <ENTER>): y UX:diskrm: INFO: Do you want to delete the following entry? /dev/dsk/c0b0t1d0s1 /dev/rdsk/c0b0t1d0s1 /Add1 vxfs 1 yes mincache=closesync SYS_RANGE_MAX (Type y for yes or n for no and press <ENTER>): y UX:diskrm: INFO: Do you want to delete the following entry? /dev/dsk/c0b0t1d0s2 /dev/rdsk/c0b0t1d0s2 /Add2 vxfs 1 yes mincache=closesync SYS_RANGE_MAX (Type y for yes or n for no and press <ENTER>): y UX:diskrm: INFO: saving /etc/vfstab to /etc/Ovfstab UX:diskrm: INFO: creating a new /etc/vfstab UX:diskrm: INFO: Diskrm for disk c0b0t1d0 DONE at Sun Oct 24 17:17:34 KST 1999 #/:> 결과적으로 ‘diskrm’ 명령어는 단지 /etc/vfstab 파일을 갱신하는데에 있지 실재 디스크의 데이터를 날려먹고 그러지는 않는다. 그리고 루트 디스크에는 이 명령어를 적용해도 할수 없다는 경고 메시지만 보여준다.
6 Startup, boot Unix Ware & shutdown
조인상
6818 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr 시스템 초기화란 시스템에 전원을 인가한 후 boot 프로그램을 통해 OS가 메모리로 로드되는 과정을 말한다. 시스템 초기화 과정을 시스템 관리자가 알아 두어야 할 이유는 장애가 발생한 경우 문제 해결의 실마리를 알아 내는데 도움이 되기 때문이다. bootstraping이라고도 알려진 boot 처리는 사용자가 시스템을 사용할 수 있도록 커널을 메모리에 로드하는 여러 단계들로 구성되어 있다. 인텔기반 시스템을 예로 들면, 시스템 BIOS는 일련의 POST(Power-on Self-Tests)라 부르는 작업을 수행한다. 우리가 부트 디스크라 부르는 하드 드라이브에서 시스템이 기동한다는 사실을 잘 알고 있다. 이때 시스템은 액티브 파티션으로 지정된 디스크에 있는 fdisk 테이블을 검사한다. 이 시점 까지는 OS와는 아직 무관한 단계이다. 즉 우리가 주로 사용하는 OS인 DOS, NT, UNIX가 아직 작동하지 않는 단계란 말이다. 액티브 파티션이 지정될 때 시스템은 partition boot 코드를 로드하게 된다. UnixWare의 기동 UnixWare가 부팅하는데 필요한 정보와 파일들을 boot 파일이라 부르는데, 주로 boot와 /stand에 위치하고 있다. 여기서 언급하는 boot란 boot 프로그램을 포함하고 있는 UnixWare 파티션에 있는 slice이지 파일시스템은 아니다. 주 기능은 커널 즉 unix 파일을 부트하게 만들고 위치를 지정해 주는 것이다. /stand는 bootable OS라 부르는 unix 파일이 있는 장소이고 부트가 진행되는 동안 사용되는 모든 프로그램과 bootable data 파일들이 있는 곳이다. 이를 확인 하는 방법은 디스크의 정보를 알 수 있는 명령어로 ‘prtvtoc’이 있다. [#]prtvtoc /dev/rdsk/c0b0t0d0s0 slice 0: DISK permissions: VALID UNMOUNTABLE starting sector: 63 (cyl 0) length: 7100667 (442.00) slice 1:ROOT permissions:VALID starting sector: 321299 (cyl 19) length: 6683040 (416.00) slice 2:SWAP permissions: VALID UNMOUNTABLE starting sector: 64259 (cyl 3) length: 257040 (16.00 c) slice 7: BOOT permissions: VALID UNMOUNTABLE starting sector: 63 (cyl 0) length: 34 (0.00 cyls) slice 8:ALT SEC/TRK permissions: VALID UNMOUNTABLE starting sector: 97 (cyl 0) length: 15968 (0.99 cyl) slice 10: STAND permissions: VALID starting sector: 16065 (cyl 1) length: 48194 (3.00 cyl) slice 15:VOLPRIVATE permissions: VALID UNMOUNTABLE starting sector: 7004339 (cyl 435) length: 16065 () slice 7로 명시된 부분이 boot slice 부분이고, 파티션 boot 코드가 로드가 된 후에 OS가 로드하기 시작한다. Boot 처리를 제어하는 커널과 파일들은 /stand 파일시스템에 상주하고 있다. /stand 파일시스템은 특정 디바이스 파일들도 없고 서브디렉토리도 없는 간단한 bfs 파일 시스템이다. 현재 설정되어 있는 파일 시스템 종류와 같은 정보를 알아 보는데는 /etc/vfstab 파일에 담겨져 있으므로 아래와 같이 확인하여 보면 된다. [#]vi /etc/vfstab /dev/root /dev/rroot / vxfs 1 no mincache=closesync SYS_RANGE_MAX /dev/stand /dev/rstand /stand bfs 1 no - SYS_RANGE_MAX /stand 디렉토리 이 디렉토리에는 boot 처리를 제어하기 위한 커널 파일들이 들어 있다. 아래에 해당 파일들의 리스트이다. 이중에 알아 두어어야 할 몇가지만 언급하겠다. [#] stand:>ls bfs.blm dcmp.blm license resmgr stage3.blm boot hd.blm logo.img resmgr.sav unix bootmsgs help.txt platform.blm smallfs.blm unix.old 확장명이 .blm인 파일들은 boot-loadable module들이다. 특히 stage3.blm은 UnixWare7 boot 프로그램 이다. slice 7에 있는 bootstrap에 stage3.blm이 있다. 이를 확인 해 볼려면 바이너리 코드를 보는 명령어인 ‘strings’ 명령어로 확인해 보면 된다. [#]strings /dev/rdsk/c0b0t0d0s7|more dcmp.blm stage3.blm b_driver strings란 명령어로 그 내용을 추적하여 보면 위의 스트링들이 존재함을 알 수 있다. root 디스크의 슬라이스7 번째에 boot-loadable 모듈에 위의 항목이 있음을 알 수 있다. 우리가 ‘fdisk’ 명령어로 파티션을 나누면 firmware 레벨에서 시스템을 initialize하기 위해(이 부분은 ROM BIOS의 역할) boot-loader가 동작하도록 active partition을 지정해 준다. 그러면 OS가 부팅하기 위해 해당 boot-loadable 모듈을 특정 슬라이스에 심어 놓는데 이 부분이 바로 UnixWare7에서는 slice 7에 해당되는 것이다. boot 절차 부트 프로그램은 stand-alone 프로그램들과 UnixWare Kernel을 로드하고 실행시킨다. Stand-alone 프로그램은 OS가 동작하기 전에 실행되며, 그래서 OS가 제공하는 서비스들과는 무관하다. UnixWare 시스템 설치 동안에는, boot 프로그램은 active 파티션의 로지컬 블록 0에서 시작하는 하드 디스크(일반적으로 root 디스크라고 부름)에 놓이게 된다. boot 절차는 시스템이 부팅된 매번 일어나며, 처음에 플라피 디스크를 검색하고 없으면 하드 디스크에 있는 내용을 수행한다. 플라피 디스크 부트 절차: 1. 파일 시스템의 0 섹터에 있는 부트 블록이 boot를 로드한다. 2. boot는 UnixWare kernel을 로드하고 실행한다. 하드 디스크 부트 절차: 1. 시스템 firmware는 하드 디스크의 절대 섹터(absolute sector) 0으로부터 master boot를 로드한다. 2. masterboot는 active 파티션으로부터 파티션 boot 프로그램을 로드한다. 3. boot의 나머지가 /stand로 부터 로드된다. /stand/boot 파일 처음 시스템이 부팅될 때, 다음 메시지가 나오는 순간이 있다. Starting UnixWare... 이 시점에서 부팅을 일시 중지시켜 시스템 작업을 할 수 있는데, 이때 BCP(Boot Command Processor)가 기동된다. BCP를 이용하여 파라미터를 추가 및 수정도 할 수 있다. 기본적인 boot 파일의 내용은 다음과 같다. [#]stand:>cat boot BLM=hd.blm files=resmgr,license rootfs=vxfs TZ_OFFSET=-32400 boot 파일 파라미터들은 “/stand/boot” 파일에 적용시켜도 되고 boot 프롬프트 상태에서 수동으로 입력시켜도 적용된다. 다음에는 시스템 관리에 유용한 몇 가지 파라미터들을 서술 하겠다. boot 프롬프트 상태로 전환되려면 시스템을 리부팅 시켜야 한다. 리부팅 초기에 메모리를 초기화하고, 프라세서를 초기화하고, SCSI 디스크를 초기 프로빙하는 메시지가 끝나자마자 공백화면에 커서가 나오면 이때 스페이스 키나 엔터 키를 몇 차례 누른다(실지로는 UnixWare7 logo가 보일 때 적용되지만 기회를 놓칠 수 있기 때문). 그러면 다음 메시지를 화면에서 볼 수 있다: Bootstrap Command Processor Ready for boot commands … [ ? for help] [BOOT] 옵션값을 실행시키려면 “go”, “boot”, ‘b” 중에 아무 것을 사용해도 된다. 부트 옵션을 변경하고자 할 때 값을 어떻게 적용시켜야 할지 잘 모를 때에는 ‘show -a’ 명령어를 이용하면 현재의 설정 값을 알 수 있으므로 값을 어떻게 적용할지를 쉽게 알 수 있다. [BOOT] show BOOTDEV ; 하고 엔터키를 치면 현재 설정 값을 알 수 있음. BOOTDEV=hd(0,2) 이때 “show param= 파라미터”를 입력하여 주면 파라미터를 추가할 수 있다. “show –a” 하면 모든 파라미터 및 메시지를 보여준다. Boot 파일 파라미터 /etc/boot 파일에 추가할 파라미터들을 알아보자. BOOTPROG=filename filename 칸에다가 부트하는 동안 로드될 프로그램을 입력한다. 현재 적용되어 사용되는 유닉스 커널은 “/stand/unix” 파일이나, 만약 새로운 커널에 문제가 발생되어 부팅이 안될 때 이전 커널로 부팅해야 한다. 이전 커널은 “/stand/unix.old”란 파일로 항상 존재한다. 커널이 수정될 때는 반드시 수정전의 현제 커널을 다른 이름으로 복사한 다음에 작업해야 한다. [#]cp /stand/unix /stand/unix.org ; 문제 발생시 이전 커널로 부팅해야 하므로 예) 시스템을 리부팅 하다가 boot 프람프트 상태로 빠진다. Bootstrap Command Processor Ready for boot commands ……[ ? for help] [BOOT] BOOTPROG=unix.org [BOOT] go INITSTATE=sysstate 부팅된 후의 시스템 run level 상태를 정의함. 이 파라미터는 /sbin/init 실행 파일로 전달이 되고 /etc/inittab 파일에 있는 initdefault 라인에 있는 시스템 run level을 오버라이드한다. 아래에는 run level이 3 으로 되어 있다 할지라 도 예에서 single mode로 해주면 오버라이드 된다는 의미이다. [#]cat /etc/inittab is:3:initdefault: ; 3이 run level이 됨 이 파라미터는 네트웍상의 문제나, 비디오 드라이버의 오류, 그래픽 화면 로그인 실패로 인해 부팅이 안될 때 Single user로 로그인 하여 문제를 해결하고자 할 때 유용한 옵션이다. 예) [BOOT] INITSTATE=S ; single-user로 부팅하고자 할 때 [BOOT] boot AUTOBOOT=YES|NO|num 이 파라미터는 boot가 커널을 어떻게 로드할 것인 가를 지정할 때 사용. 명시하지 않으면 디펄트 값이 적용되므로 디펄트는 5 초 대기하다 부팅을 개시한다. YES는 커널을 로드하자마자 boot가 시작된다. No는커널이 로드되자 마자 BCP를 입력하라는 의미. num은 커널이 로드된후 boot하기 위해 대기하는 시간. TIMEOUT=number 자동 부팅하기전에 대기할 초단위의 시간. BLM=filename[,filename ...] boot내로 로드될 Bootstrap Loadable Module들을 지정하는 파라미터. BLM 파일들은 filename이 디바이스를 명시하지 않으면 STARTDEV로 부터 로드 된다. ENABLE_4GB_MEM=(YES|NO) YES를 선택하면 4GB 이상의 메모리 감지를 가능하게 해줌. ROOTFS=fstype 커널로 빌드된 디폴트 root 파일 시스템 타입을 오버라이드 하게 허용하며, 정의되어 있지 않으면 vfstab에 정의된 타입을 사용한다. CONSOLE=device(minor[,param]) 디폴트 콘솔 디바이스를 오버라이드: CONSOLE=kd(0). COM1과 COM2등으로 콘솔을 리다이렉트(redirect) 시킬 수 있다. iasy는 시리얼 포트 디바이스를 지원하고, minor는 0 ~15까 지 지원한다. 예) CONSOLE=iasy(5,B9600) ; /dev/term/01h 디바이스의 minor #가 5이고 9600의 baud rate에서 hardware flow control 디바이스를 콘솔로 설정 DISABLE_CACHE=(YES|NO) YES 라면 내부 및 외부 캐쉬 사용을 억제한다. INITFILE=filename 부트할 때 init로 전달된 파일로, 디폴트는 /etc/inttab이다. 임의로 정의한 파일로 기동될 수 있게 하여준다. /stand/bootmsgs 파일 부트하는 동안의 모든 메시지가 이 파일에 저장된다. 그 내용은 다음과 같다: [#] /stand:> cat bootmsgs BOOTMSG1=Starting UnixWare... BOOTMSG2=Bootstrap Command Processor\ Ready for boot commands... [? for help]\ TITLE=UnixWare 7, based on UNIX System V Release 5 from SCO COPYRIGHT=Copyright (c) 1976-1998 The Santa Cruz Operation, Inc. and its suppliers.\ All Rights Reserved.\ \ RESTRICTED RIGHTS LEGEND:\ \ When licensed to a U.S., State, or Local Government, all Software produced\ by SCO is commercial computer software as defined in FAR 12.212, and has\ been developed exclusively at private expense. All technical data, or SCO\ commercial computer software/documentation is subject to the provisions of\ FAR 12.211 - "Technical Data", and FAR 12.212 - "Computer Software"\ respectively, or clauses providing SCO equivalent protections in DFARS or\ other agency specific regulations. Manufacturer: The Santa Cruz Operation,\ Inc., 400 Encinal Street, Santa Cruz, CA 95060. AUTOMSG=Automatic Boot Procedure REBOOTMSG=Press any key to reboot... STARTUPMSG=The system is coming up. Please wait. RMEM=bytes of memory were detected. UMEM=bytes of memory are in use. PMEM=bytes of memory are in the page pool. DMEM=bytes of memory are dedicated. /stand/resmgr 파일 /sbin/resmgr 실행 파일은 Resource Manager Database를 표시하여주고 갱신하는데 사용되는 명령어이다. 대부분의 사용자들은 DCU(Device Configuration Utility)를 사용하여 in-core Resource Manager database 와 상호작용 한다. resmgr 명령어는 주로shell script들과 debugging에 주로 사용된다. /stand/resmgr 파일은 바이너리 데이터 파일이며, 이전 복사본은 resmgr.sav에 저장된다. 이 파일은 부팅될 때 읽혀지며 시스템상에 구성된 디바이스 하드웨어와 소프트웨어의 상세 부분을 포함하고 있다. 간혹 디스크를 빼내고, 레이블링이 다시되고 이동되는 경우 원래의 디바이스 구성정보들이 resmgr 파일에 저장되어 있어서 디바이스가 교체되더라도 이전의 정보(일명 ghost name라 함) 를 가지고 있어 변경이 안되는 경우가 있다. 이럴 경우 콘솔에서 아래와 같이 재구성 작업을 해주어야 변경이 된다. # cd /stand # cp resmgr resmgr.sav # for i in ‘resmgr | grep vtoc | sed -e ‘s/.*//’ do resmgr -k $i -r done # vi /etc/device.tab (optional) removes duplicate disk entries # /etc/conf/bin/idconfupdate -f #init 6 작업시 참조하는 명령어로는 sdighost가 있다. Sdighost 명령어 Ghost name과 관련된 디바이스 노드들을 리스트하거나 제거하는데 사용된다. /stand/unix 파일 모든 유닉스들은 커널이라 부르는 파일이 존재하며, UnixWare 7에서도 /stand/unix라는 실행파일을 커널이라 부른다. 우리가 외관상 커널 파라미터라 부르는 파일들은 /etc/conf/cf.d 디렉토리 밑에 mtune, stune란 파일들로 정의되어 있다. mtune 파일은 마스터 튜닝 파일로 대부분의 커널 파라미터를 정의되어 있는 곳이며, stune은 mtune에 있는 파라미터의 값을 변경하고자 할 때 여기에 정의하여 사용한다. 이 파일들 이외에도 다른 곳에 정의된 파라미터 값들이 어우러져 컴파일 되면 /etc/conf/cf.d/unix란 실행 파일이 만들어 진다. 리부팅이 되면 새로운 커널이 적용되는데, 이때 /etc/conf/cf.d/unix가 /stand/unix로 복사가 되어 새로운 커널로 자리잡는다. 그러면 부팅할 때 기존에 있던 커널을 /stand/unix.old로 복사한다. 자세한 내용은 커널 및 튜닝 편에서 다루겠다. init과 inittab 일단 OS 초기 로드가 완료되면 즉 커널이 로드 됨에 따라, boot는 init이라 부르는 프로세스를 작동시킨다. init의 PID는 항상 1 이다. init 프로세스는 프로세스들을 기동(spawn) 시키는 역할을 담당하는데, 모든 다른 프로세스의 부모(parent)로 알려져 있으며 user 프로세스가 아닌 system 프로세스 즉 시스템 데몬을 기동 시키는 프로세스를 말한다. init은 process spawner이기 때문에 “/etc/inittab” 파일에 저장된 정보를 가지고 프로세스들을 생성시키는 역할을 하고 있다. “/etc/init” 실행 파일을 분석해 보면 “inittab”을 동작시킴을 알 수 있다. [#]:>strings /etc/init|more /etc/inittab 디펄트 inittab 파일은 “/etc/inittab” 이다. 물론 다른 이름으로 변경시키는 것도 가능하나 이렇게 하려면 “/stand/boot” 파일에 등록을 해 주어야 한다. 그 이유는 부트할 때에 디펄트 파일인 “/etc/inittab” 파일을 찾게 되어 있기 때문이다. 아래와 같이 임의의 파일에 “inittab”과 같은 내용의 파일을 만들어 주고 등록해 주면 된다. [#]vi /stand/boot INITFILE=/etc/inittab.file 작업하기 전에 “inittab” 파일을 복사해 두는 것이 좋다. 시스템과 관련된 파일을 수정 할 때에는 반드시 그 복사본을 만드는 습관이 중요하다. 시스템 복구에 중요한 관건이 되기 때문이다. 시스템 사용 중에 “inittab” 파일을 실수로 삭제하였을 때 “Cannot start /etc/inittab”란 에러 메시지가 콘솔에 계속 디스플레이 될 것이다. 이때 복사본도 없을 때에는 “/etc/conf/init.d/kernel” 파일이 같은 내용이나 그 역할을 대신해 주지 않으므로 복사해 와야 한다. 아니면 파일 내용중의 필요한 일부만 복사해 오면 된다. [#]cp /etc/conf/init.d/kernel /etc/inittab 항상 시스템과 관련된 파일을 복사를 한 후에는 반드시 owner, group, permission등을 원래의 것과 같은 특성으로 맞추어 주는 습관을 길러야 한다. 아래에 있는 “inittab” 파일의 디펄트 값으로 맞추어 주면 된다. [#]ls -al inittab -r--r--r-- 1 bin bin 2867 Jul 28 14:34 inittab [#]ls -al /etc/conf/init.d/kernel -rw-r--r-- 1 root sys 2656 Jul 28 14:15 /etc/conf/init.d/kernl 이제 inittab의 내용을 살펴보자. 대략 알아두면 유용한 몇 가지만 언급하기로 하자. inittab은 init에 의해 처리되는 프로세스들을 열거해 놓고 있다. 여기에 정의되어 있는 프로세스들은 주로 시스템 데몬들이며, 되도록 일반 사용자가 만든 프로세스를 여기에 입력해 놓지 말아야 한다. 사용자가 만든 프로세스를 입력시켜 놓으면 시스템에 장애를 일으킬 수 있기 때문이다. 가령 시스템이 부팅하지 않거나 부팅이 되더라도 콘솔에 에러 메시지를 계속 뿌려주기 때문이다. 하지만 가능하지 않는 것도 아니라는 것이다. 주로 데몬이다 보니까 우리가 “#ps –ef” 하였을 때 보이는 프로세스도 있고 없는 것도 존재한다. 그 이유는 여기에 사용된 데몬들은 필요에 따라 메모리에 로드 되었다가 자기 작업을 수행한 후 즉시 빠져나가기 때문이다. /etc/ inittab 파일 [#]cat /etc/inittab swp1::sysinit:/sbin/swap -a /dev/swap >/dev/sysmsg 2>&1 cr::sysinit:/sbin/ckroot >/dev/sysmsg 2>&1 swp2::sysinit:/sbin/swap -c >/dev/console 2>&1 bchk::sysinit:/sbin/bcheckrc </dev/console >/dev/console 2>&1 is:3:initdefault: r0:0:wait:/sbin/rc0 off >/dev/console 2>&1 </dev/console r1:1:wait:/sbin/rc1 >/dev/console 2>&1 </dev/console r2:23:wait:/sbin/rc2 >/dev/console 2>&1 </dev/console r3:3:wait:/sbin/rc3 >/dev/console 2>&1 </dev/console sd:0:wait:/sbin/uadmin 2 0 >/dev/console 2>&1 </dev/console fw:5:wait:/sbin/uadmin 2 2 >/dev/console 2>&1 </dev/console rb:6:wait:/sbin/uadmin 2 1 >/dev/console 2>&1 </dev/console sc:234:respawn:/usr/lib/saf/sac -t 300 d2:23:wait:/sbin/dinit >/dev/console 2>&1 </dev/console 구성은 콜론으로 구분되며 “Id: Run-level: Action: Process” 순이다. 각각의 한 라인을 엔츄리라 부르며, 한 엔츄리에 512 문자 까지 입력되며 다음 라인으로 넘어갈 때에는 백 슬래쉬( \ )를 사용하면 된다. 엔츄리 수에는 제한이 없다. 다음에는 엔츄리를 구성하는 요소들을 설명 하겠다. Id 최대 4 문자까지 기술되며 유일한 단순 식별자. 이름을 변경시켜도 시스템에 특별한 영향을 안 미치는 경우도 있고, 유일한 식별자라 하지만 같은 이름을 주어도 아무 이상이 없는 경우도 있었다.역할은 테이블에 있는 프로그램이 기동 되고 중지될 때 마다 /etc/wtmp로 엔츄리를 init이 기록하게 하는데, 무엇인지를 식별하는 이름으로 이용된다고 이해를 하면 된다. 확인 방법은 ‘#strings /etc/wtmp|more’를 이용하라. inittab 파일에 있는 여러 이름들이 들어 있음을 알 수 있을 것이다. Run-level init이 엔츄리를 실행하는 레벨을 언급하고 있으며, 명시된 레벨에서 이 프로세스가 실행된다는 의미이다. 여기에서 사용되는 run-level 범위는 0 ~6까지가 사용된다. 23이라면 run level 2에도 3에서도 구동 된다는 말이다. init이 run level을 변경하라는 요청을 받으면, 요청된 level을 갖고 있지 않는 프로세스들은 warning signal인 SIGTERM이 전송되며 kill signal인 SIGKILL에 의해 강제로 종료되기 전에 5초의 유예시간을 준다. Run-level이 명시되지 않으면 모든 run-level을 수용한다는 의미이다. Action init이 취하는 동작을 지시하는 키워드 sysinit init이 호출될 때만 해당 엔츄리들을 검색하여 동작을 시키고, 아닐 때에는 대기하고 있다. 그래서 이 프로그램은 시스템 초기화와 관련 있다. 그리고 콘솔을 액세스 하기 전에 실행하라는 의미도 있다. initdefault 디펄트 시스템 상태를 지정해줌. init이 호출될 때만 해당 엔츄리를 검색하여 동작을 시킨다. run-level이 명시되면 지정된 run- level로 부팅하라는 의미이다. 만일 run-level에 아무 것도 명시하지 않으면 시스템은 0123456으로 인식하여 리부팅을 계속 반복(init 6를 계속 반복하는 것과 같은 결과) 할 것이다. 그리고 아예 init이 “inittab”에 “initdefault” 엔츄리를 찾을 수 없다면 리부팅 할 때에 run-level을 무엇으로 할 것인가를 물어 본다. respawn 프로세스가 떠 있지 않으면 자동으로 시작하라는 의미이다. 그래서 respawn으로 언급되어 있는 엔츄리는 ‘#ps –ef” 했을 때 항상 존재 해야 한다. Inittab 파일을 계속 검색하고 있기에 이에 해당하는 프로세스가 없다면 무언가 문제가 있다고 보면 된다. wait 현제의 프로세스가 끝나야지만 다른 프로세스가 정상 작동하는 경우에 사용한다. 이 곳에 언급된 작업이 끝날 때까지 다음 엔츄리 에 있는 작업은 대기하고 있으라는 의미이다. once init이 엔츄리에 언급된 run-level을 만날 때, 프로세스를 시작하라. 그러나 프로세스가 종료할 때 까지 기다리지는 말라는 의미이다. 그리고 프로세스가 죽으면, 그 프로세스를 재 기동 시키지는 마라. init이 새로운 run-level로 변경된다 할지라도, 이전의 내용 그대로를 유지하고 프로그램은 재기동 시키지 말라는 의미이다. powerfail init이 power fail signal인 SIGPWR을 수신했을 때만 이 엔츄리와 관련된 프로세스를 실행하라. 그리고 프로세스가 종료될 때 까지 기다리지는 마라. powerwait init이 power fail signal인 SIGPWR을 수신했을 때만 이 엔츄리와 관련된 프로세스를 실행하라. 그리고 프로세스가 종료될 때 까지 대기하고 있으라는 의미. Run-level 결정 시스템이 부팅될 때 부팅될 run-level의 결정은 아래에 있는 파일의 엔츄리에서 해준다. [#] cat /etc/inittab is:2:initdefault: 시스템이 부팅할 때 run level을 자동으로 결정해주려면, 위의 예제를 보면 두번째 컬럼에 있는 숫자에 따라 결정이 된다. 그러나 커널을 컴파일할 경우 주의 해야 할 사항이 있다. “/etc/conf/init.d/kernel” 파일은 “/etc/inittab”과 같은 내용이기는 하나 단순한 복사본이라 할 수 없다. 커널을 리빌드(rebuild) 하고 변경된 커널값이 시스템에 적용하려면 리부팅을 해주어야 하는데, 이때 “/etc/conf/init.d/kernel”의 내용이 “/etc/inittab” 파일을 업어치기(overwrite) 때문이다. 그래서 “/etc/conf/init.d/kernel”에 run-level을 변경시켜 주어도 커널을 리빌드 안하고 리부팅만 하면 run-level에는 적용이 되지 않는다. 결과적으로 부팅할 때 자동으로 run-level을 바꾸고자 할 때에는 단지 “/etc/inittab”에 있는 파일에만 적용시켜 주면 된다. d2:23:wait:/sbin/dinit >/dev/console 2>&1 </dev/console 로그인 후에 multi-user 환경을 위하여 수행되는 명령어들을 동작시키는 역할을 한다. 멀티 유저 상태(주로 run-level 2와 3 )로 전환할 때 시스템 기동의 성능을 개선하는 것이 “/sbin/dinit” 실행 파일의 목적이다. Run-level 시스템은 8 종류의 시스템 상태에서 동작할 수 있다. 시스템 상태(system status)란 선택된 프로세스들 그룹만이 존재하도록 설정된 조건 하에서 시스템의 소프웨어적인 구성을 말한다. 이들 시스템 상태 각각에 대하여 init에 의해 기동된 프로세스들은 inittab 파일에 정의되어 있다. init은 이들 각 상태로 전환시켜 주는 명령어라 여겨도 무방하다. 가장 많이 사용되는 시스템 상태는 0, 2, 3, 6, S 이다. 이 명령어들은 일반 사용자 권한이 아니라 root 권한을 갖는 사용자만이 사용가능하다. 아래에 각각의 run-level 상태로 전환하는 방법과 의미에 관하여 알아보자. #init 0 시스템의 전원을 내릴수 있는 상태로 전환시키는 명령어이다. 시스템의 전원을 끄고 작업을 하여야 할 때 사용된다. 일반적으로 이 명령어를 사용하기 전에 우선 사용중인 DB나 사용자 프로그램을 끊고 프로세스의 상태를 확인하는 명령어인 ‘#ps –ef ’로 관련 프로세스들이 정상적으로 죽었는지를 반드시 확인 하여야 한다. 그러나 시스템 다운될 때 자동 다운될 수 있도록 스크립트를 만들어 놓았다면 굳이 확인할 필요는 없다. #init 1 시스템을 시스템 관리 상태로 전환시킨다. 특정 프로그램 패키지를 깔 때 사용하면 편리하다. 모든 파일 시스템은 그대로 마운트되며, 시스템의 기본적인 커널 프로세스들만이 동작한다. 모든 파일로의 액세스는 가능하나 일반 사용자 로그인은 안된다. 잘 사용안하는 시스템 상태이다. #init 2 시스템을 multiuser-mode로 전환시키며, multiuser 환경의 터미널 프라세스와 데몬 들이 기동된다. 대부분의 시스템 리소스들을 이용가능한 상태라 할 수 있다. /etc/vfatab에 있는 모든 것을 마운트 시킨 상태. 네트웍을 통한 리모트 리소스를 사용하지 않을 때, 일반적으로 가장 많이 이용되는 시스템 상태이다. 그리고 /etc/rc2.d 디렉토리 밑에 있는 스크립트들이 수행된다. #init 3 리모트 파일 공유 프로세스들과 데몬들이 시작된다. 주로 리모트의 리소스를 사용할 수 있게 하여 주며, 시스템 상태 2의 확장개념으로 네트웍의 nfs 관련 기능이 추가된 networking state로 알려져 있기도 하다. 멀티유저 환경으로 구축 할 때 시스템 환경에 맞게 DB나 NFS를 구동시킬수 있게 함. #init 4 run-level 3와 유사하며 일반적으로 사용하지 않는 시스템 상태. #init 5 OS가 멈추고 f/w(firmware) 모드로 빠짐. 되도록 사용하지 말 것. #init 6 시스템을 리부팅 시킬 때 가장 많이 사용되는 시스템 상태로, /etc/inittab 파일에 나타난 initdefault 항목에 적혀진 상태로 리부팅됨. 주로 변경된 시스템 내용을 새로 적용시키거나, 프로그램을 설치하였거나, 좀비 프로세스를 제거하기 하기 위해 등등의 다양한 목적으로 이용할 때 사용된다. 물론 이때에도 ‘init 0’ 할때 처럼 DB나 사용자 프로그램을 죽이고 하는 것이 원칙이다. #init q/ Q /etc/inittab에 정의된 것들을 현재 정의된 내용들로 새로 적용시킬 때 사용 한다. 특별히 변경된 내용없이 실행시키면 일반 사용자는 ‘#init q’를 했는지 인식하지 못한다. #init s/S singleuser-mode. 현제 마운트되어 있는 화일 시스템이 살아있는 상태에서, 단지 init에 의해 기동된 프라세스들만 죽인다. 만일 콘솔이 아닌 일반 터미널에서 이 명령어를 실행시켰다면, 일반 터미널이 /dev/syscon으로 링크되어 시스템 콘솔이 된다. 이 명령어에 의해 나타나는 시스템의 상태는 항상 같다고 볼 수 없다. 경우에 따라 마운트된 파일 시스템이나 프로세스들이 다르게 나타날 수도 있다는 말이다. 현재의 run-level을 알아보는 방법은 아래와 같으며, 맨 앞의 숫자 2가 현재의 run-level을 나타낸다: [#] who -r . run-level 2 Aug 30 15:18 2 0 S 이외에도 시스템 상태를 바꾸는 명령어로 shutdown이 있는데, 주로 run-level 2 상태에서 다른 시스템 상태로 전환시키는데 이용된다. init 명령어는 시스템을 죽이는데 별다른 메시지 없이 죽이기에 실수를 할 수도 있지만, shutdown 명령어는 관련 경고 메시지를 콘솔에 뿌려주기 때문에 자신이 무슨 일을 하고 있는지 상기 시켜주는 효과가 있다. 일반으로으로 시스템을 죽이라 할 때, 셧다운 시키라고 말한다. 이 상태가 바로 전원을 꺼도 되는 run-level 0 상태를 말한다. 기동 디렉토리 init이 inittab을 읽어서 그 내용을 수행할 때, 각각 inittab의 내용에 따라 /sbin 디렉토리 밑에 있는 rc와 dinit로 시작하는 스크립트들을 구동시킨다. 이들 파일은 또 /etc 디렉토리에 있는 파일들과 링크되어 있다. [#] sbin:>ls -al rc* -rwxr--r-- 2 root sys 3746 Apr 8 1998 rc0 -rwxr--r-- 1 root sys 2177 Mar 6 07:31 rc1 -rwxr--r-- 1 root sys 3243 Apr 8 1998 rc2 -rwxr--r-- 1 root sys 1571 Apr 8 1998 rc3 -rwxr--r-- 2 root sys 3746 Apr 8 1998 rc6 -rwxr--r-- 1 root sys 2186 Mar 6 07:31 dinit 이들 스크립트에 따라 rc0는 /etc/rc0.d 디렉토리, rc1는 /etc/rc1.d 디렉토리, rc2는 /etc/rc2.d 디렉토리, rc3는 /etc/rc3.d 디렉토리, dinit는 /etc/dinit.d 디렉토리와 관련되어 동작한다. 이들 디렉토리에 있는 파일들을 필요없다고 삭제하지 말고 대문자 S는 소문자 s로, 대문자 K는 소문자 k로 변경시켜 놓고 사용하여야 한다. 소문자로 시작하는 스크립트들은 실지로 실행은 안된다는 의미이다. 대문자 S는 스크립트를 starting 시킨다는 의미이고, 대문자 K는 stopping 시킨다는 의미이다. 반드시 대문자로 시작하는 S와 K로 시작하는 스크립트들만 이들 디렉토리에서 작용한다. 특정 run-level에서 스크립트가 기동되기를 원한다면, 해당 디렉토리에 스크립트를 삽입시켜야 한다. 그 스크립트는 /etc/init.d에 만들어져 있어야 하며, 해당 run-level에서 동작할 수 있도록 적절한 디렉토리와 링크되어 있어야 한다. 예를들어 보자: /etc/rc2.d/S01MOUNTFSYS 파일은 /etc/init.d/MOUNTFSYS 파일과 하드링크되어 있다. 이를 확인해 보는 방법은 다음과 같다. 하드링크라는 의미는 파일이 같은 i-node를 사용한다는 의미이므로, 3825란 i-node번호로 하드링크 되어있음을 알 수 있다. 3 번째 컬럼의 3의 의미는 아래와 같이 링크된 파일이 시스템에 3개 존재한다는 말이다. [#] ls -il /etc/init.d/MOUNTFSYS 3825 -r--r--r-- 3 root sys 873 Apr 8 1998 /etc/init.d/MOUNTFSYS [#] ls -il /etc/rc2.d/S01MOUNTFSYS 3825 -r--r--r-- 3 root sys 873 Apr 8 1998 /etc/rc2.d/S01MOUNTFSYS [#] ls -il /etc/rc1.d/S01MOUNTFSYS 3825 -r--r--r-- 3 root sys 873 Apr 8 1998 /etc/rc1.d/S01MOUNTFSYS /etc/rc1.d 디렉토리 다음은 run-level 1에서 동작하는 파일들이다. 대부분이 중지하는 스크립트들이 대부분이다. #/etc/rc1.d:>ls K00ANNOUNCE K30dmi K67snmp K68sendmail S01MOUNTFSYS S70eels K10dtlogin K40nfs K68Nnuc K69inet S02mse K19np K40ppp K68Pnw K80nis S10dstsync K20lp K44ldap K68Rnwip K85nd S42ls /etc/rc2.d 디렉토리 이 디렉토리에 있는 파일들은 run-level 2로 갈 때 수행되는 스크립트들을 기술해 놓은 곳이다. 먼저 디렉토리에 들어있는 스크립트들이 무엇이 있는지 살펴보자. [#] /etc/rc2.d:>ls K20nfs S15mkdtab S69inet S71ppp S90sysinfo2html S01MOUNTFSYS S15nd S70Nnwip S73snmp S93scohelphttp S02PRESERVE S15static_conf S70Pnw S75rpc S96isapnp S02audit S42ls S70Rnuc S80nis S98vesa S02mse S51domain S70eels S81sendmail S99dtlogin S05RMTMPFILES S53x25 S70pf S88ldap s74netbios S10dstsync S65loopback S70unixtsa S89dmi 사용자가 자신이 만든 스크립트를 어디에 어떻게 삽입하여야 할지를 알아야 한다. 스크립트는 소트된 순서로 수행이되기 때문에, 시스템 관련 스크립트들이 사용자가 만든 스크립트보다 먼저 수행되어야 한다. 대부분이 사용되는 번호는 S99로 시작하게 작성하면 된다. 만일 NFS나 VisionFS와 관련된 스크립트라면, rc3.d 디렉토리 밑에다 작성하여 놓아라. 또 사용자 스크립트를 사용하기 전에 반드시 테스트를 거친 후에 정식으로 사용하여야 한다. 만들어진 스크립트로 인하여 시스템이 부팅하다가 정지되거나 시스템을 사용하지 못하는 사례가 종종 발생하기 때문이다. 테스트는 명령어 모드에서 테스트하면 되고, 테스트에 장시간 소요된다면 그 작업을 백그라운드에서 동작하도록 하면 된다. 백그라운드 작업 방법은 명령어의 끝에 한 칸 띄우고 & 표시를 삽입시켜 주면 된다. 예를들어 passwd란 이름을 가진 파일을 백그라운드로 찾아라 할 때 사용한다. #find . –name passwd –print & /etc/dinit.d 디렉토리 /sbin/dinit이 실행되면 “/etc/dinit.d” 디렉토리에 있는 파일들을 동작시킨다. 이러한 기능은 OS에 따라 /etc/rc2.d 디렉토리에 넣어 사용하기도 한다. [#]ls /etc/dinit.d S23ttymap S70uucp S80cs S81np S69keymaster S75cron S80lp S85perf “/etc/dinit.d”에 있는 파일을 살펴보면 “S”나 “K”로 시작 함을 알 수 있다. S란 파일이 start 옵션으로 실행된다는 의미이고, K stop 옵션으로 실행된다는 의미이다. 반드시 대문자 여야 하고 S나 K 이외의 문자는 무시된다. 이들 파일들은 ASCII 지정 순서로 “/usr/bin/sh”에 의해 실행된다. 위에서 S80으로 시작하는 스크립트가 두개가 있는데 상관은 없다. 알파벳 순으로 찾으며 그 이름이 틀리면 스크립트들이 동작하는 데에는 아무 문제가 없다는 말이다. /etc/rc2.d 디렉토리 밑에 있는 스크립트들도 마찬가지로 같은 번호이어도 상관은 없다. 단지 사용자가 작성한 스크립트는 시스템에서 디폴트로 제공하는 스크립트들 보다는 뒤쪽 번호로만 작성하기만 하면 된다. 만약 디폴트 시스템 스크립트 중간에 위치한 임의의 번호로 스크립트를 작성한다면 시스템 기동에 문제가 발생 할 수도 있다. 스크립트가 알파벳 순서로 동작하게 되는데 사용자가 작성한 스크립트가 아직도 동작 안한 시스템 스크립트 중의 어느 기능을 요구할 때에는 시스템 부팅을 못하고 계속 루핑을 돌고 있을 수도 있기 때문이다. cs 명령어는 TLI connection-oriented 와 serial connection들 상에서 통신하는 모든 네트웍 서비스에 대한 접속을 설정하도록 CS(Connection Server)를 시작한다. Connection Server는 시스템이 멀티 유저 모드로 갈 때 자동으로 시작된다. CS는 클라이언트 어플리케이션들로부터 네트웍 서비스에 대한 연결 요청(connection request)을 받고, machine 과 service name들을 transport-dependent 어드레스들로 메핑(mapping) 시키고, 필요하다면 연결을 인증하고, 그리고 그 연결을 다시 어플리케이션들에게로 되돌려 준다. CS는 네트웍 연결을 설정하기 위해 주로 cu와 uucp 명령어에 의해 사용된다. 그 기능을 테스트하기 위해 다음을 예로 시험하여 보자. [#]/etc/dinit.d:>sh S80cs stop [#]/etc/dinit.d:>ps -ef|grep cs [#]/etc/dinit.d:>cu -l term/01m UX:cu: ERROR: connect failed: CONNECTION SERVER PROBLEM cs 프로세스를 일단 죽이고 모뎀 연결을 시도해 보면 접속이 실패함을 알 수 있다. CS에 문제가 있음을 보여주고 있다. cs 프로세스가 안 떠 있기 때문이다. 그러나 TCP/IP의 소켓(socket)으로 연결된 프로세스나 프로그램들은 사용할 수 있다. [#]/etc/dinit.d:>sh S80cs start [#]/etc/dinit.d:>ps -ef|grep cs root 10203 1 TS 80 0 13:40:09 ? 0:00 /usr/sbin/cs [#]/etc/dinit.d:>cu -l term/01m Connected cs 프로세스를 살리고 접속을 시도하니 정상 동작이 됨을 알 수 있다. cs는 고정된 PID를 사용하지 않고 죽었다 살 때마다 변경이 된다. /etc/rc3.d 디렉토리 멀티유저 시스템 환경에다 네트웍 파일 공유기능도 할 수 있는 스크립트를 제공하는 디렉토리이다. Run-level 3로 갈 때 수행되는 스크립트들이 있다. [#] /etc/rc3.d:>ls S22nfs S90Webtop S90visionfs 위의 경우는 S90*가 마지막이므로 사용자 스크립트는 S91로 시작하도록 작성하면 무난하다. System Shutdown 시스템을 죽이는 방법은 앞에서 거론한 바와 같이 여러가지 방법이 있다. 크게 두 가지 사용 방법이 있는데 한가지는 일반적으로 사용하는 명령어를 이용한 방법이고, 다른 한가지는 SCOadmin 메뉴에서 제공하는 “Shutdown Manager”가 있다. 어떤 방법이 더 편리한가는 개개인의 습관에 달려 있다. 시스템 셧다운 을 하고 난 후 정상적으로 셧다운이 되면 콘솔에 시스템의 전원을 꺼도 된다는 곳과 유사한 메시지가 뿌려질 것이다. 이때에 전원을 내려야 한다. 그렇지 않으면 무언가 시스템이 추가 조치를 요구한다는 의미이다. 가령 DB나 애플리케이션이 물고 있어서 셧다운 진행이 안되는 경우도 있으니까 말이다. Command 방식 시스템을 다운시키는 방법으로 init과 shutdown 명령어를 주로 사용한다. 기존에 시스템을 셧다운 하기 전에 ‘sync’ 명령어로 모든 시스템 버퍼에 있던 내용을 디스크로 저장하도록 사용하였다. 그러나 굳이 셧다운 전에 sync를 해줄 필요는 없다. 디스크들이 언마운트 될 때, 시스템이 셧다운 되기전에 디스크로 버퍼 캐쉬를 플러쉬(flush)하도록 sync가 수행되기 때문이다. 이외에도 /usr/ucb/halt, /usr/ucb/reboot , /sbin/uadmin 이란 명령어들도 있으나 잘 사용 하지 않는다. init 명령어 init 명령어중에서 셧다운 상태로 전환시키는 run-level 0가 시스템을 죽이는 명령어이다. #init 0 위와 같이 간단한 명령어로 시스템을 셧다운 시킬 수 있다. 이 명령어를 사용하면 특별한 메시지 없이 내부적으로 즉시 시스템을 죽이는 단계로 돌입한다. 전에 언급한 바와 같이 시스템을 셧다운 시키기 전에 반드시 DB(Oracle, Informix,Ingres,M 데이터베이스)나 사용자 프로그램은 다운시키고 하는 습관을 길러야 한다. 대부분 DB나 프로그램들이 안정적이고 복구가 된다고들 하지만 만에 하나 파일 시스템이나 DB가 깨질 경우가 발생하기 때문이다. shutdown 명령어 shutdown 명령어는 init에 비해 보단 유연성을 제공하지만 옵션이 많아 잘 사용하지 않는다. #shutdown –y –i<grace> -g<level> -y : 이 옵션이 없으면 시스템에서 “Do you want to continue”라고 확인하는 차원에서 물어본다. 이 옵션을 사용하면 물어보지 않고 수행된다. -i<grace> : grace에는 run-level에 해당하는 숫자를 넣어준다. -g<level> : level은 초단위로 몇초 후에 셧다운 시키라고 할 때 사용 된다. 다음에는 많이 사용되는 예제이다. #shutdown –y –i0 –g0 ; init 0 한 것과 같고, 즉시 시스템을 run-level 0로 셧다운 시킬때 사용한다. #shutdown –y –i6 –g0 ; init 6 한것과 같으며 즉시 run-level 6으로 리부팅하란 의미. #shutdown –y –i0 –g60 ; 60초 후에 셧다운 시키라는 의미.
5 테이프,시디,디스켓 디바이스Tape 디바이스
조인상
4923 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr 테이프,시디,디스켓 디바이스Tape 디바이스 UnixWare 7에서 지원하는 테이프 디바이스들로는 대부분의 Unix 계열 OS가 지원하는 대부분의 테이프 디바이스들을 지원한다. 인터널 즉 내장용으로 많이 사용되는 QIC, DAT와 익스터널 즉 외장용으로 많이 사용하는 8mm 테이프 디바이스(인터널도 있음)와 DLT 디바이스가 사용되고 있다. 그리고 이들을 여러 개로 묶어 보다 많은 데이터를 편리하게 저장할 수 있게한 테이프 라이브러리 장치들도 나와있다. 테이프 디바이스의 주 용도는 소프트웨어 설치와 데이터 백업에 있다. 백업에 관해서는 알아 두어야 할 중요한 사항이 있는데, 테이프로 백업 받은 데이터는 장기 보관용이 아니라 임시 보관용이라는 사실을 절대 잊어서는 안된다. 테이프는 온도와 습도에 약하기 때문에 보관 장소나 마그네틱 코팅을 어떻게 처리하였느냐에 따라 보간 기간이나 사용빈도가 틀려진다. 중요한 데이터는 두개 정도는 복사해 놓아야 하고 장기 보관하고자 할 때에는 3 ~6 개월에 1번씩 디스크로 로드하였다가 다시 테이프로 받아 두어야 한다. 데이터를 백업 받은 모든 테이프는 1년 이상 보관하지 말아야 한다. 1년 이상을 보관하고자 할때에는 백업 대장을 만들어 놓고, 보관 도중에 적어도 한번은 확인을 하여 다시 백업 받아두어야 보다 확실한 백업 관리가 이루어 진다. Tape Device 종류 QIC ( Quarter-Inch Cartridge) 테이프 디바이스 1/4 인치 테이프 디바이스는 150 MB, 525 MB, 1 GB등이 있으며, 최근에는 1 GB를 많이 사용하고 있다. CD-ROM이 애용되기 전 까지 시스템 OS나 각종 소프트웨어 패키지들을 깔 때 가장 많이 사용하던 디바이스이다. 데이터 백업용으로도 사용되나 최근에는 대용량의 디스크 장치를 따라 가지 못해 소량의 데이터 백업용으로만 사용되고 있다. DAT(Digital Audio Tape) 테이프 디바이스 4mm 테이프 디바이스로 알려져 있고 테이프의 크기는 다른 디바이스들의 테이프에 비해 작다. 백업 용량은 QIC테이프 디바이스에 비해 크며, 1 GB, 2GB, 4GB, 12GB 등을 지원하고 있다. 종류로는 DDS 1, DDS 2, DDS 3가 있으며, 테이프 디바이스가 어느 타입을 지원하느냐에 따라 저장용량이 틀려진다. 물론 DDS 3타입이 가장 많은 데이터 량을 저장할 수 있으며, 또 데이터가 압축되는 량에 따라 더 많은 량의 데이터를 저장할 수 있다. Tape Device 이름 시스템이 인식하고 있는 테이프 디바이스명은 /etc/device.tab 파일에 있다. device.tab 파일에서 테이프 쪽만 살펴 보면 다음과 같다: ctape1:/dev/rmt/c0b0t6l0:::: type="qtape" scsi="true" volume="cartridge" removable="true" pdimkdtab="true" bklib="SCSI" bufsize="65536" copy="/bin/dd if=CDEVICE1 of=CDEVICE2 bs=10240" desc="Tape Drive 1" norewind="/dev/rmt/c0b0t6l0n" erasecmd="/usr/lib/tape/tapecntl –e /dev/rmt/c0b0t6l0n" rewind="/usr/lib/tape/tapecntl -w /dev/rmt/c0b0t6l 0n" rewindcmd= "/usr/lib/tape/tapecntl -w /dev/rmt/c0b0t6l0n" retension="/usr/lib/tape/tapecntl -t /dev/rmt/c0b0t6l0n" display="true" inquiry="HP C1533A A708” 테이프 드라이버의 디바이스 노드는 /dev/rmt 디렉토리에 리스트되어 있다. #/dev/rmt:>ls -al crw-rw-rw- 2 root sys 111, 0 Aug 27 09:41 c0b0t6l0 crw-rw-rw- 2 root sys 111, 1 Aug 20 16:28 c0b0t6l0n crw-rw-rw- 2 root sys 111, 3 Aug 20 16:28 c0b0t6l0nr crw-rw-rw- 2 root sys 111, 2 Aug 20 16:28 c0b0t6l0r crw-rw-rw- 2 root sys 111, 4 Aug 20 16:28 c0b0t6l0u crw-rw-rw- 1 root sys 111, 0 Sep 20 15:22 c0s0 crw-rw-rw- 1 root sys 111, 1 Aug 20 16:28 c0s0n crw-rw-rw- 1 root sys 111, 3 Aug 20 16:28 c0s0nr crw-rw-rw- 1 root sys 111, 2 Aug 20 16:28 c0s0r crw-rw-rw- 2 root sys 111, 0 Aug 27 09:41 ctape1 crw-rw-rw- 2 root sys 111, 3 Aug 20 16:28 nrtape1 crw-rw-rw- 2 root sys 111, 1 Aug 20 16:28 ntape1 crw-rw-rw- 2 root sys 111, 2 Aug 20 16:28 rtape1 crw-rw-rw- 2 root sys 111, 4 Aug 20 16:28 utape1 대부분의 디바이스 노드는 major #와 minor #를 가지고 있어서 고유의 디바이스로 구분된다. 이 두 번호가 같으면 같은 디바이스이다. minor #만 틀리다면 사용 용도만 틀린 것일뿐 같은 디바이스인 경우이다. 위의 경우 major #는 111이고, minor #는 0에서 시작하고 있음을 알 수 있다. 테이프를 액세스하는데 사용된 디바이스 이름에 따라 테이프가 어떻게 취급되는 가를 알아보자. ctape# non-retension, rewinding device nrtape# retension, non-rewinding device ntape# non-retension, non-rewinding device rtape# retension, rewinding device utape# unload on close device 가령 테이프에 있는 패키지를 추가하고자 할 때 다음과 같이 한다. #pkgadd –d ctape1 tapecntl 명령어 다음 명령어는 테이프 디바이스를 제어하는데 유용하다. tapecntl 명령어는 서브디바이스인 /dev/rmt/ntape#로 로 전송되며, 디바이스 명이 명시되지 않을 때는 디폴트로 ntape1이 된다. 그리고 이 명령어의 형식은 다음과 같다. # tapecntl options device 아래에는 옵션을 이용한 예제들과 설명이다. #tapecntl –e /dev/rmt/c0s0 : 테이프의 내용 삭제함 #tapecntl –l /dev/rmt/c0s0 : 테이프를 BOT로 이동 #tapecntl –r /dev/rmt/c0s0 : 테이프 컨트롤러를 초기화하고 테이프를 BOT 까지 되돌리며, 테이프 디바이스를 reset #tapecntl –t /dev/rmt/c0s0 : 테이프를 retension 시킴 #tapecntl –u /dev/rmt/c0s0 : 테이프를 빼냄 #tapecntl –b /dev/rmt/c0s0 : 테이프 디바이스의 block length를 읽어 보여준다. #tapecntl –v /dev/rmt/c0s0 : 테이프 디바이스를 variable length block들을 읽고 쓸 수 있도록 설정. 단 디바이스가 variable length를 지원하여야 한다. 이 옵션을 적용하면 속도가 향상된다. #tapecntl –w /dev/rmt/c0s0 : 테이프를 BOT 마크까지 되돌림 CD-ROM 디바이스 CD-ROM 디바이스는 IDE와 SCSI 용 모두를 UnixWare 7에서 사용할 수 있다. 대분분 유닉스 머쉰에서는 IDE 타입 보다는SCSI 타입을 주로 사용한다. 설치 방법은 테이프 디바이스와 같으며 먼저 SCSI ID와 터미네이터 유무를 확인하여야 한다. 다른 SCSI ID와 충돌이 일어나면 시스템이 부팅이 안되거나 쫑난 디바이스중의 하나나 둘 다를 인식 안하고 부팅될 수가 있다 현재의 디바이스 구성 상태를 알아보는 명령어로 ‘sdiconfig’를 이용하면 알아볼 수 있다. 예를 들면, #/:>sdiconfig -l 0:0,7,0: HBA : (cpqsc,1) Compaq SCSI-2 0,0,0: DISK : COMPAQ DGHS09Y 01C0 0,1,0: DISK : COMPAQ WDE4360S 1.60 0,6,0: TAPE : HP C1533A A708 0,16,0: HBA : COMPAQ PROLIANT 3-5I JM14 1:0,7,0: HBA : (ide,1) Generic ESDI/IDE/ATA 0,0,0: CDROM : SONY CD-ROM CDU571-Q 1.1a ATAPI CD-ROM의 경우, slave CD-ROM 디바이스는 같은 컨트롤러에서 master 디바이스 없이는 지원 되지 않는다. CD-ROM Device 이름 디바이스 이름은 블록 디바이스로 /dev/cdrom/cdrom#이고, 캐릭터 디바이스로 /dev/rcdrom/cdrom# 이다. 아래에 보인 바와 같이 두개의 디바이스가 메이져와 마이너 번호가 같으므로 디바이스가 같다고 보아도 된다. 일반적으로 /dev/cdrom/cdrom1을 많이 사용한다. # ls -al /dev/cdrom brw-rw-rw- 2 root sys 110, 0 Aug 20 16:28 c1b0t0l0 brw-rw-rw- 2 root sys 110, 0 Aug 20 16:28 cdrom1 # ls -al /dev/rcdrom crw-rw-rw- 2 root sys 110, 0 Aug 20 16:28 c1b0t0l0 crw-rw-rw- 2 root sys 110, 0 Aug 20 16:28 cdrom1 CD-ROM Driver CD-ROM 드라이버는 UnixWare 7에서는 sc01 이다. IDE와 SCSI 타입의 CD-ROM 둘다를 지원 하며, IDE 디바이스 드라이버는 IDE ATA(Advanced Technology Attachment)와 ATAPI( ATA Packet Interface)를 지원한다. 그러나 최근에 나온 APAPI IDE CD-ROM들 중에 몇몇은 지원이 안될 수도 있다. SCO사의 웹 페이지에서 확인하여 보라. Mounting CD-ROM CD-ROM은 일기 전용이며, CD-ROM에 포함되어 있는 내용을 읽거나 설치하기 위해서는 먼저 마운트시켜야 한다. 보다 자세한 마운트 옵션들을 알아 보려면 ‘#man mount_cdfs’를 하면 된다. CD-ROM에 사용되는 파일시스템은 cdfs이다. 일기 전용으로 마운트하는 옵션으로는 “-r”과 “-o ro”를 사용한다. 예를 들어 /mnt로 마운트 시켜보자. /mnt 디렉토리는 보통 테스트 용으로 많이 사용되는 디렉토리로 테스트가 끝나면 반드시 언마운트 시켜놓는 것이 좋다. #mount –F cdfs –r /dev/cdrom/cdrom1 /mnt 위와같이 CD-ROM을 /mnt로 마운트 시켜 놓은 후 필요한 작업을 해 주면 된다. 가령 필요한 작업이 ‘pkgadd’ 명령어를 이용하여 설치하는 작업이라면 아래와 같이 하여 필요한 패키지들을 설치하면 된다. #pkgadd –d cdrom1 경우에 따라 ‘pkgadd’ 명령어를 사용하지 않고 마운트된 /mnt 디렉토리로 가서 설치와 관련된 스크립트를 실행하여야 되는 것들도 있다. Diskette device 디스켓을 액세스하는 방법은 먼저 디스켓의 용량과 작업하고자 하는 디바이스 파일이 무엇인지를 알아야 한다. Diskette device 이름 디스켓들을 /dev/dsk에 정의된 블럭 디바이스 이름들과 /dev/rdsk에 정의된 raw 디바이스 이름들로 되어 있다. 블록 디바이스를 이용하면 보다 빠른 액세스를 할 수 있는 반면, 로 디바이스는 보다 직접적인 액세스를 위하여 보다 유연성있게 하여 준다. 가령 플라피 디스켓을 포멧하는 명령어인 ‘format’은 로 디바이스를 사용한다. 플라피 드라이브의 용량에 따른 디바이스에 관하여 알아보자. Drive Specification Density 3h 3.5” high density : 1.44MB 5h 5.25” high density: 1.2MB Diskette format 하기 일반적으로 많이 사용하는 위의 두 종류를 포멧하여 보자. 포멧 정보도 표시되게 옵션 “-v”도 같이 사용하면 편리하다. # format –v /dev/rdsk/f03h # format –v /dev/rdsk/f05h 만약 디바이스 이름을 잘 모르겠으면 디바이스 이름을 리스트 해주는 명령어인 ‘devattr’를 이용 하면 편리하다. 물론 직접 /etc/device.tab 파일에서 검색하여 보아도 된다. # devattr -v diskette1|grep fmtcmd fmtcmd='/usr/sbin/format -v /dev/rdsk/f03ht' DOS diskette 마운트하기 도스 디스켓을 ‘mount’ 명령어를 이용하여 마운트 시킬 수 있다. DOS로 포멧된 디스켓을 /mnt 디렉토리로 마운트 하여 보자. # mount –F dosfs /dev/fd0 /mnt 이렇게 하면 어떤 다른 파일시스템을 마운트 시켜 사용하는 것과 같은 방법으로 사용할 수 있음을 알 수 있다.
4 Filesystem 만들기
조인상
5852 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr Filesystem 만들기 새 디스크를 붙일 때 disksetup 명령어를 사용하는데, 보통 이때에 파일시스템을 만들어 버린다. 그러나 기존에 사용하던 파일시스템을 변경하고자 할때에는 mkfs란 명령어를 사용하여 파일시스템 종류를 변경시킬 수 있다. 파일시스템을 새로 만들면 사용하고 있던 데이터 구조가 변경되는 관계로 모든 데이터가 사용할 수 없게 되므로 반드시 데이터를 백업 받아 두어야 한다. mkfs: vxfs 파일시스템 가장 일반적으로 vxfs 파일시스템을 만드는 형식은 다음과 같으며 다른 파라미터 값들은 안 주어도 디폴트로 적용된다. # mkfs [-F vxfs] [-o specific_options] special size -F vxfs 파일시스템을 vxfs 타입으로 한다는 의미이다. -o bsize= 블록 크기를 주는 곳으로 디폴트는 1024이다. 2048,4096,8192 값을 줄 수 있다. 이 값은 파일시스템상에서 파일들에 대한 블록 크기이다. 큰 값을 줄수록 I/O 속도는 조금 향상되나 디스크 낭비가 보다 크다. special 블록 디바이스에 대한 슬라이스 명을 준다. size size는 prtvtoc 명령어로 정보를 보았을 때 맨 우측에 나타난 각 슬라이스 에 대한 length 값을 주면 된다. [#] mkfs –F vxfs –o bsize=4096 /dev/dsk/c0b0t0d0s1 32768: 현재의 파일 시스템을 구성하는 데 사용된 명령어를 “-m” 옵션을 이용하면 알 수 있다. [#] mkfs –F vxfs –m /dev/dsk/c0b0t0d0s1 mkfs -F vxfs -o ninode=65536,bsize=1024,version=4,inosize=256,logsize=1024,nola4 mkfs: ufs 파일시스템 형식은 vxfs의 경우와 같으나 옵션 사용이 조금 다르다. [#] mkfs [-F ufs] [-o specific_options] special size -F ufs ufs 파일시스템으로 만들라는 의미이다. -o bsize= 블록 크기를 4096이나 8192가 사용되며 디폴트는 4096 이다. cgsize= 실린더 그룹당 디스크 실린더의 수로, 1에서 32 값이 사용된다. Cylinder group < 3/4 MB : 디폴트는 16 3/4 MB <Cylinder group < 1.5 MB : 디폴트는 12 Cylinder group > 1.5 MB : 디폴트는 8 cgsize 값을 적게 줄수록 inode 수가 증가한다. 수십 기가바이트의 파일시스템에서 지나치게 inode 수를 많이 만들면 fsck 명령어가 제어하는 한계가 있다. 부팅할 때 자동으로 파일시스템을 검사하는데 실패를 하게 되어 파일시스템에 깨어지므로 조심하여야 한다. 특별한 경우가 아니면 이 옵션은 사용하지 않는다. special 블록 디바이스에 대한 슬라이스 명을 준다. size size는 prtvtoc 명령어로 정보를 보았을 때 맨 우측에 나타난 각 슬라이스 에 대한 length 값을 주면 된다. 파일시스템 Troubleshooting File system full File system full이 발생하였을 때 find 명령어를 사용하여 필요한 파일을 찾아 조치할 수 있다. 일반 파일시스템이 차거나 루트 파일시스템이 꽉 차면 사용자나 시스템의 사용에 제한을 받는다. 시스템 관리자는 파일시스템이 꽉찬 원인을 찾아 파일을 지우거나 다른 곳으로 이동시켜야 한다. find 명령어를 이용하면 어느 정도 원인을 찾는데 도움이 된다. find 명령어 아래의 예제에서 처럼, /는 루트 파일시스템을 찾으라는 의미이고 .을 줄때에는 현재 작업 디렉토리 즉 현재의 파일시스템을 기준으로 찾으라는 의미이다. [#] find / -type f –size +40000 –xdev –print : 40000은 block 수이므로 20MB 이상의 파일을 찾으라 [#/] find path-list expression –print [#/] find / -type f –size +40000 –xdev –print : 40000은 block 수이므로 20MB 이상의 파일을 찾으라 -xdev 찾을 범위가 리모트가 아닌 현재 시스템 내에만 국한 시킬 때 -name pattern pattern과 일치하는 파일을 찾아라 -user username /etc/passwd에 인증된 사용자 이름으로 등록된 파일 -type (fdl) f : 일반 파일, d: 디렉토리, l: 심볼릭 링크 -mtime n n 일 전에 수정한 파일을 찾을 때; 1은 오늘, 2 는 어제 수정한 파일 -atime n n 일 전에 액세스한 파일을 찾을 때; 1은 오늘, 2 는 어제 액세스한 파일 -size +-n +n : n block보다 큰 파일, -n: n block 보다 작은 파일 파일의 종류에 따라 수정되거나 안될 수도 있는데 이를 확인하기 위해 file 이란 명령어를 사용한다. 표시된 내용 중에서 text라 표시되는 파일들만이 대부분 R/W 가능하다. [#/] file * : 현재 디렉토리 모두를 표시 특정 명령어를 실행하였는데 원인 모르게 에러가 날 때 그 원인을 찾고자 할 때 유용한 명령어로 truss를 사용한다. 이는 system call과 signal들을 대상으로 trace를 걸 때 사용한다. [#/] truss [option] command : 현재 디렉토리 모두를 표시 -p process_id “ps –ef” 할 때의 PID 번호를 말한다 -a 각 exec system call에 전달된 argument string들을 보이라 -e 각 exec system call에 전달된 environment string들을 보이라 -f fork된 process들을 trace 걸 때 -t 주어진 call만 trace 걸 때 -o filename 출력을 파일로 보관할 때 [#/] truss –fa –o /tmp/aa find . –print : find에 대한 truss를 걸때 [#/] truss find –f –o /tmp/aa : find에 대한 truss를 걸때 truss 명령어를 사용하여 어떤 에러 메시지가 출력되면, strings란 명령어를 이용하여 binary program내에 특정 텍스트 스트링을 찾는데 유용하다. [#/] strings [–a] [–o] [-number] filename #strings –a –10 /usr/bin/mouseadmin 문제 있는 process가 발견되면 kill 명령어로 해당 프로세스를 제거해야 한다. 그러나 zombie같은 process들은 kill로도 제거되지 않는 경우가 많다. 이런 경우는 rebooting 해야지만 제거된다. 일반적으로 zombie 같은 process는 어플리케이션에 bug가 있을 때 주로 생기며 “ps –ef”를 하였을 때 “defunt”로 표시되는 process를 말한다. #kill –9 pid kill 이외에도 특정 사용자나 file, file system을 제어하는데 fuser 명령어를 사용해야 할 때도 있다. 기타 Pipes 파이프(pipes)란 말 의미를 생각해 보면 어느 한쪽과 다른 한쪽을 연결시켜주는 역할을 한다. 유닉스에서는 명령들을 서로 연결시켜주는 역할을 한다. 파이프의 기호는 “|” 이다. 수행과정은 파이프의 왼쪽 출력을 받아 파이프 오른쪽의 입력으로 사용하여 처리한다. 사용법 작업 디렉토리에 있는 파일들을 리스트하라는 ls 명령어의 표준 출력을 받아 그 갯수를 알아보자. [#/]ls | wc -l 45 페이지 단위로 보여주는 more를 이용하면 리스트되는 내용을 쉽게 알아볼 수 있다. [#] ls –al|more 리스트한 내용을 프린터로 출력하는 방법이다. [#] ls –al| lp –d prt0 Filter 파이프는 일종의 필터의 한 종류로 기능을 한다. 연속적으로 진행되는 각각의 프로그램이 데이터를 갖고 어떤 연산을 처리한다고 하자. 이때 각 프로그램은 다음 프로그램으로 그 결과를 넘겨주기 전에 데이터를 필터시킨다. 연산들을 파이프처리하기 전에 데이터상에서 연산들을 수행하는 프로그램들을 종종 필터라 부른다. Redirection 보통 명령어들의 표준 입력은 키보드가 된다. 여기서 입력이 가해지기 때문이다. 그리고 표준 출력은 화면이 될 것이다. 이때 표준 출력을 다른 곳으로 지정할 수 있는데 이를 리다이렉트라 한다. 즉 출력 방향을 재설정해 준다는 의미이다. 그래서 리다이렉션이란 다른 파일로부터 입력을 받거나 혹 출력시키는 방향을 지시한다는 의미로 사용된다. 가령 ls란 명령을 내렸을 때 그 결과가 화면에 표시된다. 그러나 아래와 같이 특정 파일로 저장할 수도 있다. 그러면 명령어의 결과가 화면에 뿌려주는 것이 아니라 /tmp/test.ls란 파일로 저장이 된다. [#] ls –al > /tmp/test.ls 리다이렉션에는 몇가지 기호를 사용하는데, 리다이렉션 출력( >), 리다이렉션 입력(<), 파일에 추가(>>)가 이용된다. Redirection Output : > 다음은 ls –al 한 표준 출력을 tmp란 파일의 입력으로 받아들이라는 명령이다. tmp 파일의 내용을 cat 명령어로 보면 크기가 0 바이트임을 알 수 있는데, 이는 처음에 ls –al 했을때 tmp 파일에는 아직 그 결과가 저장되지 않았기 때문이다. 그냥 ls –al 하면 결과 값이 저장되었기 때문이 크기가 잡혀 있다. $ ls -al>tmp $ cat tmp …………. -rw-r--r-- 1 shchoi other 0 Dec 24 13:58 tmp $ ls –al …………. -rw-r--r-- 1 shchoi other 509 Dec 24 13:58 tmp 표준 출력을 받아들이는 > 의 오른 쪽에는 디바이스 드라이버 즉 프린터, 터미널, 테이프나 플라피 드라이버 일 수도 있다. 만약 lp1 이란 프린터를 사용하고 있다면 /etc/hosts란 파일 내용을 lp1 프린터로 출력시킬 수 있다. 물론 정상적으로 프린트하려면 ‘lp –d lp1 /etc/hosts’와 같은 방식을 사용하면 된다. [#] cat /etc/hosts > /dev/lp1 또 banner 명령어를 이용하여 상대 터미널에 장난을 걸 수도 있다. 상대방 터미널은 who란 명령을 내리면 어느것이라는 것을 짐작할 수 있고 그 터미널이 pts010 이라면 아래와 같이 하면 작업 중이던 pts010 사용자는 깜짝 놀랄 수도 있다. vi로 작업중에 화면에 메시지가 뿌려지더라도 <CTRL+ l>하면 정상복구 된다. [#] banner “Hey, what’s doing?” > /dev/pts010 Redirection Input : < hello란 파일에 보내고자 하는 내용이 있다고 할 때, root 사용자가 shchoi 사용자에게 mail 명령어로 메시지를 전달해 보자. mail 명령어는 hello 파일을 입력 받아 shchoi 사용자의 터미널로 메시지를 보내게 된다. [#] mail shchoi < hello Adding to file : >> File 특성 File Mode ‘ls –al’을 하였을 때 첫번째 항에는 10개의 문자(-rw-r--r--)가 있는데, 그 중에 맨 앞의 문자는 파일의 특성을 지칭한다. -rw-r--r-- 1 shchoi other 480 Apr 4 1998 .cshrc 파일의 특성은 다음 중의 하나로 정의될 것이다: d 파일이 디렉토리이다. l 파일이 symbolic link이다. b 파일이 block special file이다. c 파일이 character special file 이다. m 파일이 XENIX shared data (memory) file 이다. p 파일이 fifo (named pipe) special file이다. s 파일이 XENIX semaphore이다. - 파일이 regular file 이다 File Permission 파일 사용에 대한 액세스 권한에 관하여 정의한 부분이다. 3 문자씩이 1 셋트로 세 그룹으로 나누어 진다. rwxrwxrwx file permission의 속성들에 관하여 알아보자: r 읽을수 있는 파일 w 기록이 가능한 파일 x 실행이 가능한 파일 - 부여된 퍼미션이 없다. l 액세스하는데 강제 락킹(mandatory file and record locking)이 발생한다. 그래서 한번에 한 사용자 만이 파일을 액세스 할 수 있다. t 디렉토리에 있는 sticky bit를 설정한다. Sticky bit가 디렉토리에 설정되었을 때, 그 디렉토리에 있는 파일은 그 파일 소유자나 root 만이 삭제 할 수 있다. 세 그룹으로 구성되는데, 첫부분 3 문자는 사용자(user), 두번째 3 문자는 그룹(group), 마지막 세 문자는 다른 사용자(other)를 위한 부분이다. -rw-r--r-- 1 shchoi dba 480 Apr 4 1998 test 가령 파일이 위와 같다면, test란 파일에 대하여 사용자는 shchoi이며 그룹은 dba에 속해 있다. 퍼미션과 관련하여, 사용자 shchoi는 test란 파일에 대해 읽고 쓸수 있는 권한은 있으나 실행시킬 권한은 없다(rw-). 그룹 dba중 shchoi 사용자를 제외한 dba 그룹에 속한 사용자는 이 파일에 대해 읽을 수 있는 권한만 있고 다른 권한은 없다(r--). 마지막으로 다른 사용자들은 읽을 수 있는 권한만 있다(r--). 만약 권한이 없는 사용자가 파일을 수정하려면 “permission denied”란 메시지를 보게 될 것이다. Wildcard 사용 디렉토리나 파일 조작에 와일드 카드라는 특수한 문자를 이용하면 편리할 때가 있다. ? 단일 문자 * 임의의 문자 그룹 [ ] 하이픈(-)을 이용하여 문자들이나 범위를 표시 사용 예를 들어 보자. 현재 디렉토리에서 f로 시작하는 모든 파일을 리스트하라. [#] ls –al f* 현재 디렉토리에서 k로 끝나는 모든 파일을 리스트하라. [#] ls –al *k 현재 디렉토리에서 ? 갯수 만큼된 모든 파일을 리스트하라. [#] ls –al ??? 현재 디렉토리에서 file로 시작하고 끝이 1에서4로된 파일들을 리스트하라. [#] ls –al file[1-4] 현재 디렉토리에서 s나 t로 시작하고 file이란 이름으로된 모든 파일을 리스트하라. [#] ls –al [st]file File 압축 파일들을 압축하면 파일을 전송하거나 백업 받을 때 그 데이터 량이 줄어들어 시간이 절약되어 효율적인 관리와 운용이 된다. 관련된 명령어들로는 compress, uncompress, zcat등이 있다. compress 명령어 단순히 compress 명령어를 이용할 때에는 파일 한 개만 압축한다. uncompress도 압축을 풀지만 compress의 옵션 –d를 이용하면 압축을 풀 수도 있다. 해당 파일 이름에 대문자 Z를 가진 확장명 이름으로 생기며 원본 파일은 없어지고 압축된 파일 이름으로만 존재한다. 가령 menu란 파일을 압축한다고 하여보자. [#] ls –al menu -rw-r--r-- 1 shchoi other 1167 Dec 23 18:22 menu [#] compress menu [#] ls –al menu -rw-r--r-- 1 shchoi other 708 Dec 23 18:22 menu.Z 임의의 디렉토리 밑에 있는 파일들 전체를 압축하고 할 때에는 wildcard 문자 *를 이용하면 가능하나 임의의 디렉토리밑에 있는 또다른 디렉토리가 있다면 이 디렉토리들은 압축하지 못한다. 여기에 있는 파일들만 압축한다면 압축하는 의미가 없을 것이다. compress 명령어는 디렉토리를 압축하지 못하는 예를 들어보자. 그러면 아래와 같이 에러가 발생한다. [#] ls –al drwxr-xr-x 4 shchoi other 96 Dec 28 15:00 file1 [#]compress file1 UX:compress: INFO: file1: -- not a regular file: unchanged 한 디렉토리밑에 있는 모든 파일과 디렉토리들을 압축하려면 tar나 cpio 명령어를 이용하여 한 개의 파일로 만들어 버린후에 압축한다면 가능하다. 지금부터 하는 작업은 test1 디렉토리밑에 있는 파일들과 디렉토리들을 압축한다고 하여보자. $ test1> ls -al drwxr-xr-x 2 shchoi other 96 Dec 28 14:59 subfile1 drwxr-xr-x 2 shchoi other 96 Dec 28 15:00 subfile2 다음은 tar를 이용하여 통 파일로 만들어 보자. .tar나 .cpio 확장명은 안 붙여도 이상은 없으나 나중에 무슨 포멧으로 만들었는지를 알아보기 위해 사용한 포멧명을 붙여주는 것이 좋다. 다음 tar와 cpio 각각에 대해 통파일로 만들어 보았다. 통파일 이름은 임의의 특성있는 이름으로 주면 된다. 그리고 마지막에 통파일로 만든 후에 위에서 언급한 한 개의 파일을 압축하는 방식을 사용하면 된다. $ tar cvf tcomp.tar * a subfile1/ 0 tape blocks a subfile1/cake 1 tape block a subfile2/ 0 tape blocks a subfile2/hello 1 tape block $ ls -al drwxr-xr-x 2 shchoi other 96 Dec 28 14:59 subfile1 drwxr-xr-x 2 shchoi other 96 Dec 28 15:00 subfile2 -rw-r--r-- 1 shchoi other 20480 Dec 28 15:11 tcomp.tar $ compress tcomp.tar $ ls –al tcomp* -rw-r--r-- 1 shchoi other 1616 Dec 28 15:11 tcomp.Z $ find . -print|cpio -ocvB >tcomp.cpio . subfile1 subfile1/cake subfile2 subfile2/hello 10 blocks $ ls -al total 12 drwxr-xr-x 4 shchoi other 96 Dec 28 15:21 . drwxr-xr-x 3 shchoi other 1024 Dec 28 15:02 .. drwxr-xr-x 2 shchoi other 96 Dec 28 14:59 subfile1 drwxr-xr-x 2 shchoi other 96 Dec 28 15:00 subfile2 -rw-r--r-- 1 shchoi other 5120 Dec 28 15:21 tcomp.cpio $ compress tcomp.cpio $ ls –al tcomp* -rw-r--r-- 1 shchoi other 500 Dec 28 15:21 tcomp.cpio.Z 위의 결과를 비교해 보면 tar에 비해 cpio가 압축률이 더 좋음을 알 수 있다. 압축이 되면 파일 끝에 Z 확장명이 붙음을 알 수 있다. 압축을 푸는 방법은 다음과 같이 –d 옵션을 이용하고 압축된 파일 이름을 적어 주면 된다. 압축된 파일을 원하는 장소나 디렉토리로 이동시킨후 다음과 같은 방법으로 tar나 cpio 각각에 대해 압축을 풀어주면 된다. $compress –d tcomp.tar.Z $tar xvf tcomp.tar $ compress –d tcomp.cpio.Z $ cpio -icduvB < tcomp.cpio . subfile1 subfile1/cake subfile2 subfile2/hello 10 blocks uncompress 명령어 uncompress나 compress –d 명령어나 같은 결과를 얻는다. 사용하는 방법은 다음과 같다. $ compress –d tcomp.cpio.Z $ uncompress tcomp.cpio.Z zcat 명령어 이 명령어도 압축을 푸는데 사용한다. 아래와 같이 cpio로 압축되어 있는 파일을 풀어보자. $ ls –al tcomp* -rw-r--r-- 1 shchoi other 501 Dec 28 16:11 tcomp.cpio.Z $ zcat tcomp.cpio|cpio -icdvB . subfile1 Existing "subfile1/cake" same age or newer subfile2 Existing "subfile2/hello" same age or newer 10 blocks $ ls –al tcomp* -rw-r--r-- 1 shchoi other 1619 Dec 28 16:15 tcomp.tar.Z $ zcat tcomp.tar.Z|tar xvf - x subfile1/, 0 bytes, 0 tape blocks x subfile1/cake, 73 bytes, 1 tape block x subfile2/, 0 bytes, 0 tape blocks x subfile2/hello, 18 bytes, 1 tape block
3 파일시스템 운용
조인상
5458 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 출처 : http://www.systemadmin.pe.kr file system은 root file system과 mountable file system으로 구분 할 수 있는데, root file system은 file system mount table인vfstab 파일 (유닉스 계열에 따라 fstab 인 경우도 있음)에 보면 / 라 표시된 부분이다. 필요에 따라 root 사용자 권한으로 시스템 콘솔이나 터미널로 로그인하여 수정 할 수 있다. /etc/vfstab 파일 시스템이 부팅될 때 자동으로 검색하여 마운트하는데 참조하는 파일이 vfstab 파일이다. [#/] vi /etc/vfstab /dev/root /dev/rroot / vxfs 1 no mincache=closesync SYS_RANGE_MAX /dev/stand /dev/rstand /stand bfs 1 no - SYS_RANGE_MAX /proc - /proc proc - no - - /processorfs - /system/processor profs - yes - - /dev/fd - /dev/fd fdfs - no - - /dev/dsk/f0t /dev/rdsk/f0t /install s5 - no - - /dev/dsk/f1t /dev/rdsk/f1t /install s5 - no - - /dev/dsk/f0 /dev/rdsk/f0 /install s5 - no - - /dev/dsk/f1 /dev/rdsk/f1 / install s5 - no - - /tmp - /tmp memfs - yes swapmax=10485760, rootmode=1777 /var/tmp - /var/tmp memfs - yes swapmax=41943040,rootmode=1777 /dev/_tcp - /dev/_tcp specfs - yes dev=tcp - #/dev/dsk/f03ht /dev/rdsk/f03ht /mnt dosfs - yes rw - ###### User Area ######### /dev/dsk/c0b0t0d0s1 /dev/rdsk/c0b0t0d0s1 /u vxfs 1 yes mincache=closesync SYS_RANGE_MAX 내부 구성은 아래와 같은 순서로 되어 있다. special 파일시스템에 대한 logical device 명으로, 여기서 logical device는 block device를 지칭한다. 블록 디바이스는 대부분 /dev/dsk밑에 정의되어 있다. fsckdev 파일시스템에 대한 logical device 명으로, 여기서 logical device는 raw device를 지칭한다. 이 디바이스는 대부분 /dev/rdsk 밑에 정의되어 있다. mountp 해당 파일시스템의 디폴트 mount point로 부팅이 되면 이 이름으로 마운트 됨. fstype 사용될 해당 파일시스템의 종류 fsckpass 자동으로 파일시스템을 검사할 것인가를 결정하는데 사용될 pass number automount 시스템 부팅시에 자동으로 마운트 할 것인지 안 할지를 결정 yes 자동으로 마운트 no 자동으로 마운트 안함 mntopts 콤마로 구분되는 마운트 옵션들의 리스트 mandatory access control default file system ceiling level. 특정 security가 설치되지 않으면 사용되지 않는 필드임. vfstab 파일을 vi 편집기를 이용하여 임의로 엔츄리를 삽입시킬수 도 있다. 엔츄리의 맨 앞에 #으로 막아 놓으면 마운트 안된다는 의미이다. 시스템 사용 중에 #으로 막아 놓는다 할지라도 당장 적용되어 해당 파일시스템 사용이 중지 된다는 의미는 아니다. 이미 해당 파일시스템의 마운트 정보가 부팅될 때 로드되어 있기 때문이다. 사용 중에 막고자 할 때에는 ‘umount’ 명령을 이용하여야 한다. 위에 있는 vfstab에서 사용자 파일시스템인 /u를 즉시 마운트 안되게 하려면 아래와 같이 해주면 된다. 그리고 ‘mount’란 명령을 이용하여 마운트 해제가 되었나 확인하여 보면 된다. ‘mount’ 명령은 현재 마운트 되어있는 파일시스템을 보여 준다. [#] umount /u [#] mount /etc/mnttab 파일 또 다른 file system table로는 mnttab 파일이 있다. 이 파일은 현재 마운트 되어 있는 파일 시스템의 정보를 보여준다. mount 명령어에 의해 마운트된 디바이스들에 관한 정보를 가지고 있다. [#/] cat /etc/mnttab /dev/root / vxfs rw,suid 933221004 /dev/stand /stand bfs rw 933221005 /proc /proc proc rw 933221024 /dev/fd /dev/fd fdfs rw 933221024 /tmp /tmp memfs rw 933221066 /processorfs /system/processor processorfs rw 933223115 /var/tmp /var/tmp memfs rw 933223115 /dev/_tcp /dev/_tcp specfs rw 933223115 /dev/dsk/c0b0t1d0s1 /u vxfs rw,log,suid,mincache=closesync,noquota 933235359 mnttab 파일은 시스템 관리자에 의해 수정되어지는 파일이 아니라 mount나 umount 명령어에 의해 파일시스템이 마운트되거나 마운트 해제될 때마다 시스템에 의해 자동으로 갱신(update)된다. Filesystem 조작 시스템을 사용하다 보면 파일시스템을 변경하거나 새로 만들거나 하는 경우가 종종 있다. 파일시스템을 관리하는 명령어로는 mount, umount, mountall, umountall이 있다. 이외에도 파일시스템을 검사하고 복구해주는 fsck, 파일 시스템을 만들어 주는 mkfs, 구성되어 있는 파일시스템의 정보를 보는 fstyp등이 주로 사용된다. 보다 하단에 존재하는 파티션 정보를 보는 prtvtoc이란 명령어도 자주 사용된다. mount 명령어 단순히 mount만 입력하였을 때에는 현재 사용되고 있는 시스템의 마운트 되어 있는 정보를 보여준다. 옵션도 같이 이용할 때에는 옵션에 따라 각각을 필요한 곳으로 마운트 시켜 사용할 수도 있다. [#/] mount / on /dev/root read/write/setuid on 금요일 7월 2 09:59:07 1999 /stand on /dev/stand read/write on 금요일 7월 2 09:59:08 1999 /proc on /proc read/write on 금요일 7월 2 09:59:30 1999 /dev/fd on /dev/fd read/write on 금요일 7월 2 09:59:30 1999 /tmp on /tmp read/write on Thu Jul 29 13:04:26 1999 /system/processor on /processorfs read/write on 금요일 7월 2 09:59:34 1999 /var/tmp on /var/tmp read/write on Thu Jul 29 13:38:35 1999 /dev/_tcp on /dev/_tcp read/write on 금요일 7월 2 09:59:34 1999 /u on /dev/dsk/c0b0t1d0s1 read/write/log/setuid/mincache=closesync/noquota on T9 block special device mount point mount options mount time 옵션을 이용하는 경우에 관하여 알아보자. [#] mount [-F FSType] special mount_point -F FSType FSType는 지정된 파일시스템 이름을 주면 된다. 디스크의 경우는 보통 ufs 나 vxfs를 사용하며, CD-ROM의 경우 cdfs를 사용한다. special 마운트 될 블록 디바이스 이름. mount_point 마운트할 디렉토리 이름 mount 명령어를 활용하는 방법은 크게 두가지 경우로 구분할 수 있다. 첫 번째는 이미 부팅된 후에 ‘umount’ 명령어로 해당 파일시스템을 마운트 해제시켰을 때, 다시 마운트 하는 경우와, 또다른 경우는 부팅 할 때 마운트가 아예 안되어 부팅한 파일시스템이나, 시스템 사용 중에 파일시스템을 만든 경우가 있다. 첫번째 경우에 관하여 알아보자. 이미 vfstab에 마운트된 정보가 있으므로 단순히 아래와 같이 하여 주면 된다. 파일시스템 /u를 다시 마운트 한다고 하여보자. [#] mount /u 두번째 경우는, 부팅되기 전에 #막혀 있을 수도 있으므로 해당 파일시스템에 관한 정보를 vfstab에서 미리 알 수 있다. 그리고 특정 디바이스를 특정 이름으로 마운트 시키고자 할 때 아래와 같이 사용하면 된다. /u 가 vxfs 타입의 파일시스템이라고 하자. [#] mount –F vxfs /dev/dsk/c0b0t1d0s1 /u [#] mount –F ufs /dev/dsk/c0b0t2d0s3 /user3 umount 명령어 마운트 되어 있는 파일시스템을 해제시킬 때 사용하는 명령어로 umountall과 달리 하나씩 해제 시킬 때 사용한다. [#]umount /u mountall 명령어 mountall 명령어는 /etc/vfstab 파일에 등록되어 있는 모든 파일시스템을 마운트 시킨다. 만일 파일시스템 테이블인 vfstab 파일에 없다면, /etc/dfs/dfstab 파일에서 찾아 마운트 시킨다. 보통 파일시스템을 마운트 하기 전에 마운트 하려는 파일시스템이 사용하기에 적절한지를 확인하기 위하여 sanity check이 fsck 명령어를 이용하여 행해진다. 만일 파일시스템에 이상이 있다면 fsck를 이용하여 파일시스템을 복구하고 마운트 시키나, 심각한 장애가 있거나 마운트 안되는 다른 원인이 남아 있다면 마운트가 되지 않는다. 이 명령어를 사용하는 사용자는 root 사용자 권한을 가진자 이어야 한다. [#] mountall umountall 명령어 umountall 명령어는 마운트되어 있는 모든 파일시스템을 해제시키는데 그 중에 root, /proc, /stand, 그리고 /dev/fd는 제외된다. 그 이유는 기본적으로 시스템이 동작될 수 있는 최소 필요 파일시스템들이기 때문이다. [#] umountall fuser 명령어 이 명령어를 사용할 때 주의를 하여야 한다. 사용중이라도 강제로 끊어버리기 때문에 꼭 필요한 경우가 아니면 사용하지 말아야 한다. 파일이나 파일시스템을 사용하는 프로세스들을 식별하는데 사용한다. 먼저 /home을 사용하는 모든 사용자를 제거하려면 다음과 같이 하면 된다. 가령choi 사용자는 28825 pid로 login되었다가 제거됨을 ‘ps –ef’로 확인할 수 있다. [#/] fuser -ku /home /home/admin: /home/choi: 28825c(choi) /home/ftp: /home/jhpark: /home/jjlee: 경우에 따라 전체 패스를 넣어주어야 한다(/home 대신 /home/choi 같이). d1s1 디바이스에 관련된 모든 process들이 종료된다. [#/] fuser -ku /dev/dsk/c0b0t0d1s1 임의의 사용자가 로그인한 pid를 확인할 수도 있는데, 다음은 choi 사용자가 login한 pid를 확인한 결과를 예로 들었다. [#/] fuser -u /home/choi : /home/choi: 28863c(choi) 다음과 같이 하면 /u를 사용중인 모든 사용자에 관하여 알 수 있다. [#/] fuser -cu /u /u: 10368cto(oracle) 10370cto(oracle) 10372cto(oracle) 10374cto(oracle) 10376cto(oracle) 10378cto(oracle) 16397c(root) mount 해제가 안될 때 별 문제가 없다면 마운트가 해제되었다는 메시지를 볼 수 있을 것이고 누군가가 해당 파일시스템을 사용중이라면 다음과 같은 메시지가 나타난다. [#/]umount /u UX:umount: ERROR: /u busy 이럴 경우 어떤 사용자가 그 파일시스템을 사용하고 있는지를 알아보아야 한다. 표시되어 있는 사용자들이 현재 그 디렉토리로 들어가 있거나 오라클 같은 DB에서 사용하고 있다고 아래의 예제에서 나타나 있다. 이럴 경우 오라클을 다운시키고 사용중인 사용자에게 빠져 나오라고 하면 된다. 아니면 fuser 명령어를 이용하여 사용중인 파일시스템에 접속하여 있는 모든 사용자를 강제로 제거하여도 된다. 필요하다면 ‘kill’명령어로 아래에 나타난 프로세스를 하나씩 죽여 나가도 된다. [#/] fuser -cu /u /u: 10368cto(oracle) 10370cto(oracle) 10372cto(oracle) 10374cto(oracle) 10376cto(oracle) 10378cto(oracle) 16397c(root) prtvtoc 명령어 주로 VTOC(volume table of Contents)과 관련된 정보를 보여주는 기능을 한다. 그 기능을 하나씩 살펴보자. 먼저 디스크 용량을 계산하여 보자. [#/] prtvtoc -p /dev/rdsk/c0b0t0d0s0 Device /dev/rdsk/c0b0t0d0s0 device type: 4 (DPT_SCSI_HD) cylinders: 1106 heads: 255 sectors/track: 63 bytes/sector: 512 number of partitions: 16 size of alts table: 2048 media stamp: "FgLEtNKxPmts 다음과 같이 하면 디스크 용량을 계산할 수 있다: Cyl # x Hd # x S/T # x B/S # : 1106 x 255 x 63 x 512 = 9,097,159,680 Bytes = 8.675 GB 디스크의 bad sector를 확인하고자 할 때 다음과 같이 하면 된다. [#/] prtvtoc -a /dev/rdsk/c0b0t0d0s0 : Bad sector 확인시 ALTERNATE SECTOR/TRACK MAPPING TABLE: Bad Sector Start Alternate Sector Start Count … …. … 15962 alternate sector(s) left for allocation. 디스크에 bad sector가 있다면 위에 관련된 값이 표시될 것이다. fstyp 명령어 현재 설치되어 있는 디바이스중에서 파일시스템으로 만들어져 있는 슬라이스의 파일시스템 종류를 알고 싶을 때 사용하는 명령어가 fstyp 이다. 다음과 같이 사용하면 된다. 보다 자세한 정보를 알고 싶을때에는 “-v” 옵션을 같이 사용하면 된다. [#/]fstyp /dev/rdsk/c0b0t1d0s1 vxfs 보다 자세한 정보를 알고 싶을때에는 “-v” 옵션을 같이 사용하면 된다. [#/] fstyp -v /dev/dsk/c0b0t0d0s1 vxfs magic a501fcf5 version 4 ctime Fri Jan 8 19:46:38 1999 logstart 0 logend 0 bsize 1024 size 3333487 dsize 3333487 ninode 0 nau 0 defiextsize 0 ilbsize 0 immedlen 96 ndaddr 10 aufirst 0 emap 0 imap 0 iextop 0 istart 0 bstart 0 femap 0 fimap 0 fiextop 0 fistart 0 fbstart 0 nindir 2048 aulen 32768 auimlen 0 auemlen 8 auilen 0 aupad 0 aublocks 32768 maxtier 15 inopb 4 inopau 0 ndiripau 0 iaddrlen 8 bshift 10 inoshift 2 bmask fffffc00 boffmask 3ff checksum dc0d4c7d oltext1 26 oltext2 2050 oltsize 1 checksum2 924 free 2107290 ifree 2400 efree 980 889 897 458 418 297 189 124 70 55 38 35 21 9 4 11 fsck 명령어 파일시스템이 손상을 입었을 때, 사용자는 해당 파일시스템을 사용하지 못한다. 이러한 경우 먼저 시도할 일은 fsck 명령어를 이용하여 손상받은 파일시스템을 검사하고 복구하여 주는 일이다. 그러나 복구 안될 때도 있으므로 수시로 백업을 받아 두어야 한다. 평소에 어떤 파일시스템을 사용하고 있는지를 알고 있어야 한다. 아래에서 fstyp 대신 해당 파일시스템 타입(주로 vxfs나 ufs)을 적어주면 되고, 파일시스템 검사를 할 때 물어보는 질문에 응답을 yes로 받을지 no로 받을 지를 정해 준다. 보통 y를 받는다. [#] fsck –F fstyp –y /dev/dsk/c0b0t0d1s1 : 응답을 yes로 받으라 [#] fsck –F fstyp –n /dev/dsk/c0b0t0d1s1 : 응답을 no로 받으라 아래에서 fstyp 대신 해당 파일시스템 타입(주로 vxfs나 ufs)을 적어주면 되고, 파일시스템 검사를 [#] fsck –F vxfs –y –o full /dev/dsk/c0b0t0d1s1 : 전체 파일시스템 검사 ulimit 명령어 이 명령어는 시스템의 자원을 설정하고 그 값을 알아보는데 사용된다. 명령어로 직접 값을 수정하면 시스템이 부팅되기 전까지 효력을 발휘한다. 영구적인 값 설정은 커널에서 대부분이 담당한다. 옵션–a는 모든 자원 정보를 보이라는 의미이다. [#] ulimit –a [#]cat /etc/conf/cf.d/stune time(seconds) unlimited HDATLIM 0x7fffffff file(blocks) unlimited SDATLIM 0x7fffffff data(kbytes) unlimited HVMMLIM 0x7fffffff stack(kbytes) 16384 SVMMLIM 0x7fffffff memory(kbytes) unlimited HFSZLIM 0x7fffffff coredump(blocks) 32768 SFSZLIM 0x7fffffff nofiles(descriptors) 1024 HFNOLIM 1024 vmemory(kbytes) unlimited SFNOLIM 1024 file(blocks)에서 unlimited는 커널의 FSZLIM 값이 0x7fffffff로 무한대란 의미로 설정되어 있기 때문이다. data는 DATLIM과 관련이 있고, vmemory는 VMMLIM과 연관이 있고, nofiles는 FNOLIM과 관련이 있다.
2 서버시간 자동동기화
조인상
5318 2010-05-11
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ UNIXWARE에서 서버시간 자동동기화 하는 방법 /etc/hosts 파일에 시간서버 아이피를 등록한다. 203.248.240.103 timeserver crontab 에 시간 동기화를 주기적으로 하도록 등록해준다. # crontab -e # 1시간단위로 시간을 업데이트 0 * * * * * /usr/bin/rdate timeserver
1 [unixware] OS 이중화
조인상
10902 2010-05-09
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ LOCAL DISK에 OS를 이중화 시키는 방법 @18GB를 model로 했습니다. disk0 와 disk1 의 디스크가 다음과 같이 구성되어있을때 OS이중화 시키는 방법입니다. 먼저 사용하고 있는 OS 의 root passwd를 없애는 것을 원칙으로 하겠습니다. 이유는 현재 사용하고 있는 OS가 손상될 경우 DISK를 교체해야 하는데 바꾼DISK에서 root passwd를 잊어버리기 쉽기때문에……..passwd관리가 잘 안됨 작업전 두번째 disk를 사용하는지 먼저 확인합니다. Df –k로 On line중에 작업을 합니다. 작업전 Local disk를 확인하세요. #/etc/scsi/pdiconfig –l 또는 prtconf disk0 /dev/dsk/c0b0t0d0s0 (실제 O/S) disk1 /dev/dsk/c0b0t1d0s0 1. #passwd –d root -root passwd 를 삭제합니다. 2. #df –k로 home f/s의 free space를 확인합니다. -약 800mb 3. #cd /home 4. #disksetup -I -B -b /etc/boot /dev/rdsk/c0b0t1d0s0 디스크에 대한 불량섹터 검사를 권하기는 하지만, 꼭 필요한 것은 아닙니다. 불량섹터 검사를 생략하시겠습니까? (y/n) y 이제 디스크의 설정에 대한 질문입니다.어떤 슬라이스를 생성할 것인가를 결정한 후, 다양한 slice들의 크기를 지정해야 합니다. 루트 파일 시스템은 꼭 필요하며, 곧 생성됩니다. 이 슬라이스(ufs,s5,sfs)의 파일 시스템 종류를 입력하십시오, 또는 를 눌러 기본값(vxfs)을(를) 사용하십시오: vxfs 다음 목록(1024, 2048, 4096, 8192)에서 블럭의 크기를 지정하거나, 를 눌러 첫번째 항목을 사용하십시오:1024 루트 파일 시스템과 사용자 파일 시스템을 따로 만드시겠습니까 (y/n)? n 사용자의 디스크에 crash/dump 영역을 할당하시겠습니까 (y/n)? n home 파일 시스템을 만드시겠습니까 (y/n)? y 이 슬라이스(ufs,s5,sfs)의 파일 시스템 종류를 입력하십시오, 또는 를 눌러 기본값(vxfs)을(를) 사용하십시오: vxfs 다음 목록(1024, 2048, 4096, 8192)에서 블럭의 크기를 지정하거나, 를 눌러 첫번째 항목을 사용하십시오: 4096 var 파일 시스템을 만드시겠습니까 (y/n)? n home2 파일 시스템을 만드시겠습니까 (y/n)? n 볼륨 관리 공유 영역을 생성하겠습니까 (y/n)? n 볼륨 관리 개별 영역을 생성하겠습니까 (y/n)?y 이제 사용자는 각 슬라이스의 크기를 실린더 단위로 지정하게 됩니다. (하나의 실린더는 약 8 MB의 디스크 크기입니다.) 디스크에 이용가능한 2211 실린더가 있습니다. 주의:sun, scsicard에서 format하면 SIZE차이가 있습니다. 선택한 파일 시스템 타입은 16 실린더로 제한됩니다. 얼마만큼의 실린더를 /stand에 할당하시겠습니까 (0 - 16)? 0 실린더로 하려면 를 누르십시오:16 디스크에 이용가능한 2195 실린더가 있습니다. 얼마만큼의 실린더를 /dev/swap에 할당하시겠습니까 (0 - 2195)? 0 실린더로 하려면 를 누르십시오:254 디스크에 이용가능한 1941 실린더가 있습니다. 선택한 파일 시스템 타입은 133674 실린더로 제한됩니다. 얼마만큼의 실린더를 /에 할당하시겠습니까 (0 - 1941)? 0 실린더로 하려면 를 누르십시오:641 디스크에 이용가능한 1610 실린더가 있습니다. 선택한 파일 시스템 타입은 133674 실린더로 제한됩니다. 얼마만큼의 실린더를 /home에 할당하시겠습니까 (0 - 1610)? -나머지 공간이 나옵니다 0 실린더로 하려면 를 누르십시오:1608 디스크에 이용가능한 2 실린더가 있습니다. 선택한 파일 시스템 타입은 133674 실린더로 제한됩니다. 얼마만큼의 실린더를 priv에 할당하시겠습니까 (0 - 2)? -나머지 공간이 나옵니다 0 실린더로 하려면 를 누르십시오:2 사용자는 다음과 같이 디스크 구성상태를 지정하였습니다: / 파일 시스템, 331 실린더 (2596.4 MB) /dev/swap 슬라이스, 254 실린더 (1992.4 MB) /home 파일 시스템, 1610 실린더 (12629.2 MB) /stand 파일 시스템, 16 실린더 (125.5 MB) /priv 파일 시스템, 2 실린더 (16 MB) 이 할당상태에 만족하십니까 (y/n)? y 파일 시스템은 필요로 하는 슬라이스에 생성될 것입니다 / 파일시스템을 /dev/rdsk/c0b0t1d0s1에 생성하는 중입니다 이 파일 시스템에 약 664657 개의 inode가 할당되었습니다. 새로운 값을 지정하거나, 를 눌러 기본값을 사용하십시오: /home 파일시스템을 /dev/rdsk/c0b0t1d0s4에 생성하는 중입니다 이 파일 시스템에 약 808262 개의 inode가 할당되었습니다. 새로운 값을 지정하거나, 를 눌러 기본값을 사용하십시오: /stand 파일시스템을 /dev/rdsk/c0b0t1d0sa에 생성하는 중입니다 #df –k로 확인하세요 기존 F/s + /mnt /mnt/stand /mnt/home이 추가로 나타납니다. #cd /mnt #vxdump 0uf - /dev/rdsk/c0b0t0d0s1 | /sbin/vxrestore rf - . & #cd /home #find . –print |cpio –pdv /mnt/home #cd /stand #find . –print |cpio –pdv /mnt/stand #df –k로 space를 확인합니다. #cd / # umount /mnt/home # umount /mnt/stand # umount /mnt #passwd root 기존 passwd를 넣어주세요. 작업확인 *irais, oracle등 사용하고 있는 AP.Middle ware를 down후 시스템 halt. *disk 교체후 boot 여부확인합니다. *교체 DISK로 boot후 다음 작업을 꼭 수행하세요. #cd /etc/security/tools #./priv_upd #./setpriv