1.솔라리스 개요
유닉스 역사
AT&T Bell Lab. (1969 ~ 1970 ) BSD ( 1977 ) 4.2 BSD ( 1984 ) 4.3 BSD ( 1985 ) 4.4 BSD ( 1993 ) Version 7 ( 1979 ) System III ( 1982 ) System V R2 ( 1984 ) System V R3 ( 1986 ) System V R4 ( 1993 ) OSF/1 ( 1992 ) XENIX ( 1979 ~ ) Version 6 ( 1977 )
유닉스 계보
BSD System V R3 System V R4 OSF/1 POSIX SunOS Linux DBC OSF/1 AIX HP-UX 10 Solaris IRIX SCO UNIX
다양한 유닉스 버젼들
UNIX System V R4.0 |
유닉스의 표준이 되는 버전으로 벨 연구소에서 개발된 유닉스 시스템의 정식 이름이다. |
SCO UNIX |
Santa Cruz Operation사의 SCO Open Desktop 과 SCO Open Server Release 3의 이름이며 이 운영체제는 UNIX SVR3.2.5의 구현이다. |
SunOS |
Sun사의 가장 잘 알려진 BSD 중심의 운영체제 |
Solaris |
Sun의 SVR4 구현이다. |
HP-UX |
UNIX의 휴렛-팩커드 버전은 OSF/1의 많은 특성들을 도입한 SVR4의 변형이다. HP-UX 9 버전은 몇가지 확장성을 가진 SVR3 와 비슷하고 HP-UX 10은 SVR4 운영체제이다. |
Digital UNIX |
OSF/1의 DEC 버전은 실질적인 면에서는 System V와 가깝지만 관리적인 측면에서 보면 일반적인 BSD시스템과 비슷하다. Digital UNIX는 거의 같은 표준을 따르고 있지만 아주 다른 관리를 필요로 하는 시스템이다. |
AIX |
IBM의 System V 운영체제로 SVR4, BSD, OSF/1의 특징들을 고루 가지고 있다. |
Linux |
인텔 프로세서를 위한 Free UNIX 방식의 운영체제이다. Linus Torvalds가 만들었으며 이름의 의미는 Linus의 UNIX라는 뜻이다. Linux는 BSD 방식이다. 기술적으로 Linux라는 이름은 기본적인 core(커널과 일부드라이버 등)를 말하지만 일반적으로 Linux 보급판을 구성하고 있는 다양한 소스로부터 전체적인 프리웨어를 말한다. |
유닉스 계열
BSD(Berkeley Software Distribution) 계열 유닉스
캘리포니아 버클리 대학에서 무료로 배포하기 시작한 유닉스 버전
1993년 4.4 BSD가 발표됨
시스템Ⅴ(SYSV: System Five) 계열 유닉스
AT&T에서 발전시킨 유닉스 버젼들을 통칭하여 시스템 V라 함
시스템 V의 후속 버젼들은 ‘시스템 V 릴리즈 4’이므로 간단히 SVR4로 표시
솔라리스(Solaris)
썬 마이크로 시스템즈 사의 워크스테이션에 설치되어 대학 및 연구소를 중심으로 널리 사용되는 상용 유닉스 운영체제의 일종
초기 버젼인 SunOS 4.x나 솔라리스 1.x 버전은 BSD 유닉스 계열의 버젼
솔라리스 2.x 버전부터는 SYS V 유닉스 계열의 버젼
솔라리스는 BSD 계열과 system V 계열 둘의 영향을 모두 받은 독특한 운영체제
프리BSD(FreeBSD)
버클리대학의 CSRG가 선보인 4.4BSD-Lite2에 기반한 유닉스 운영체제
BSD 유닉스 계열의 PC용 유닉스 운영체제 (인텔 x86 계열)
리눅스(Linux)
1991년 핀란드 헬싱키 대학의 학부생 리누스 토발즈에 의해 개발됨
현재 GNU의 시스템 유틸리티와 인터넷을 통한 많은 공개 소프트웨어와 결합되어 PC용 유닉스 운영체제로 각광 받음
유닉스 시스템 특징
1) 소프트웨어를 도구로 사용하는 개념을 도입
유닉스 시스템은 컴퓨팅에 새로운 개념을 도입했다. 간단한 몇몇 기능을 결합하여 하나의 큰 작업을 처리 하는 것이다. 이러한 사고는 개발 영역에 까지 확대되어 많은 서브루틴 라이브러리들이 작성되었으며 이로 인해 새로운 실행 프로그램의 작성이 수월해졌다. 이와 같은 소프트웨어 재사용이라는 기본 개념으로 인해 유닉스 시스템은 높은 생산성을 제공한다.
2) 이 기종간의 호환성 극대화
마이크로 컴퓨터와 메인 프레임 그리고 과거의 기계와 새로운 기계, 특히 서로 다른 유닉스 버젼 간에도 응용 프로그램의 호환성이 뛰어나다. 이는 유닉스 시스템이 사용자가 기계 구조와 독립적으로 프로그램을 작성할 수 있는 환경을 제공하므로 최소의 수정으로 여러 다른 시스템에 프로그램을 이식할 수 있도록 한다.
3) 복수 사용자와 복수 태스킹 지원
유닉스는 시 분할 방식의 복수 태스킹 환경을 제공하기 때문에 동시에 여러개의 작업을 수월하게 처리할 수 있다. 동시에 여러 사용자를 지원하도록 고안된 다중사용자 시스템이다. 각각의 사용자는 다른 사용자의 활동으로부터 보호 받고 보
안을 유지하면서 컴퓨터 시스템에 저장된 정보와 처리 능력을 여러 사용자가 효율적으로 공유한다. 사용자가 늘어도 추가 비용 부담이 적고 다중 사용자가 공유 데이타에 대해 작업할 수 있도록 한다.
4) 계층적 화일 시스템
계층적 화일 시스템은 정보의 고유 구조를 반영하도록 그룹화하는데 최대의 유연성을 제공한다. 사용자는 데이타를 사용자별로 그룹화할 수도 있고 여러 사용자의 데이타를 협력 조직별로 모아서 그룹화할 수도 있다. 결과적으로 저장된 데이타의 위치를 쉽게 찾고 관리할 수 있다.
5) UNIX 쉘
사용자와 유닉스간의 접촉은 강력한 명령어 해석기인 쉘에 의해 이루어진다. 쉘은 응용 프로그램의 입력과 출력 방향 변경, 하나의 명령으로 한꺼번에 여러개의 화일을 조작하는 능력 등 수많은 편리한 기능을 제공한다. 또한 쉘은 프로그래밍 언어 기능을 내장하고 있어 미리 정의된 명령어들의 모임을 실행 시킬 수도 있다.
6) UNIX 유틸리티
유닉스는 데이타의 정렬, 텍스트 처리, 정보검색등 300여개의 유틸리티 프로그램을 포함하고 있다. 이런 유틸리티들은 새로운 프로그램을 작성하지 않고 많은 작업을 완료할 수 있는 강력한 도구들이다.
7) 완숙성
유닉스는 30년이 넘게 사용되면서 오랜 시간 동안 확실히 테스트된 운영체제이다. 소프트웨어는 오래될수록 상대적으로 버그가 적어지므로 운영체제의 작동에 높은 신뢰성을 제공한다. 기술적인 장점 이외에도 유닉스의 성공은 많은 유닉스 사용자들이 동호회나 신문, 잡지, 전시회를 통해 기술 교환, 요구 사항 등을 모아 개선 발전시켜 나가고 있다.
8) 강력한 통신 기능
유닉스 시스템의 최신 버젼들은 통신의 기능이 강화되고 있다. 시스템에 내장된 다양한 통신 도구나 저급 장치
유닉스 시스템 구조
커널 (Kernel)
- 도스의 IO.SYS나 MSDOS.SYS와 유사한 역할 담당
- 시스템 프로그램과 시스템 하드웨어 사이의 제어 기능
- 디바이스, 메모리, 프로세스, 데몬 관리
- 모든 command 스케쥴링하고 수행
쉘 (Shell)
- 도스의 command.com과 유사한 역할
- 쉘은 사용자가 입력한 명령어를 해석하여 커널이 이해할 수 있는 명령어로
번역
유틸리티 및 응용 프로그램
- 제공되는 유틸리티 및 운영체제에 특정 기능을 부여하는 응용 프로그램
솔라리스란?
솔라리스( Solaris ) 구분
- 솔라리스 1.x = SunOS 4.1.x + Openwindows 3.0 = BSD계열
- 솔라리스 2.x = SunOS 5.1.x + Openwindows 3.x = SVR4계열
% uname -a
운영체제 이름, 호스트 이름, 릴리즈, 버전, 하드웨어명, 프로세서 형태를 표시
Sunos atmos50 5.4 generic sun4m sparc
Solaris 7 구성요소
- SunOS 5.7 operating system
- ONC+ : 네트웍을 가능하게 하는 프로토콜
- CDE: 공통의 GUI 환경
- NFS,
솔라리스 8의 특징
- 64개의 CPU, 4노드 클러스터를 지원하는 뛰어난 확장성
- 파일의 Drag and Drop
- 파일의 속성이나 소유자 변경 또한 마우스 오른쪽 버튼 클릭으로 가능
- 8G 이상의 고용량 하드디스크도 실린더 수와 관계없이 곧바로 사용가능
- 완벽한 한글 지원
- 기본적으로 설치되는 다양한 프로그램들
아파치 1.3.9 웹 서버, Perl, Samba, ftp, telnet, JDK 1.2.1
- http://www.sun.co.kr/products/software/os_platforms/solaris/solaris.html
솔라리스 구입
- 총 9장의 CD로 구성됨
- http://www.sun.com/software/solaris/binaries/solaris.html (인터넷 주문)
솔라리스 인텔 플랫폼 개요
History
1998년 11월 Sun Microsystems에서 X86계열의 인텔 CPU 사용자도 사용할 수 있는 Solaris 7이 발표됨
99년 9월 솔라리스 8 베타판이 제한된 테스터들에게 공개
2000년 3월 솔라리스 8 정식제품이 발표됨
인텔 플랫폼과 스팍 플랫폼의 차이점
스팍 플랫폼은 32 비트 또는 64비트 커널 운영체제이나 인텔 플랫폼은 32비트 커널 운영체제이다.
스팍 플랫폼에서 돌아가는 소프트웨어 및 유틸리티가 훨씬 다양하다.
solutions.sun.com에 가면 솔라리스 용 프로그램 다운로드 가능하다.
Solaris 8의 경우 Sun Microsystems와 lxrun 개발팀의 협력하에 lxrun이라는 유틸리티가 개발됨으로써 인텔 플랫폼 솔라리스 사용자들은 솔라리스에서 리눅스 프로그램을 곧바로 실행 가능
인텔 플랫폼 최소 설치 사양
intel Architecture (32-bit) 플랫폼
Disk 공간: 2.4 Gbyte
메모리: 64 Mbytes
지원 가능한 하드웨어 목록
http://soldc.sun.com/support/drivers/hcl/8/600/BOOK.htm
2.유닉스 부팅 개요
boot 과정 (일반적인 유닉스의 부팅 과정)
¶kernel의 loading과 initailization
·Device detection과 configuration
¸System process 생성
¹Operator intervention(single-user boot에서만 가능함)
ºSystem 시작 스크립트 수행
»Multi-user operation
X86 계열의 부팅과정
¶전원이 들어오면 일단 BIOS가 시스템 하드웨어에 문제가 없는지 테스트한다.
·첫번째 하드 디스크의 MBR (Master Boot Record)의 프로그램이 파티션 테이블을 검사하여 활성화(Active)된 파티션의 부트 섹터를 읽어 그 코드를 실행한다. 해당 코드는 커널을 메모리로 읽어 들이는 역할을 한다.
¸커널은 자료구조를 초기화하고 필요한 커널 모듈을 읽어 들인다.
¹Root file system을 mount한다.
ºinit 프로그램을 수행한다.
(init 프로그램이 다양한 스크립트를 수행하여 multi-user mode로 전환하게 된다.)
초기 프로세스의 생성
커널이 메모리에 올라오고 초기화 작업이 끝나는 시점에서 사용자 메모리 영역에 몇 개의 자발적 프로세스를 만든다.
System V 계열에서는 shed: process 0, init:process 1 등의 이름을 가지고 있다. 몇몇 초기 프로세스의 생성이 끝나면, 부팅에 관한 커널의 임무는 여기서 끝나고 나머지 부팅 과정은 init process가 주도한다.
시작 스크립트
init는 각종 스크립트를 수행하여 시스템 운영 환경을 구축한다. 스크립트의 수행구조는 BSD 계열과 System V 계열이 약간 차이가 있다.
BSD 계열은 /etc 하위에 rc로 시작하는 파일들이 수행하는 스크립트이며, system V 계열은 /etc/init.d 하위에 시작 스크립트들이 존재하고 이중 필요한 것들이 /etc/rc0.d, /etc/rc1.d 등의 디렉토리에 링크되어 사용된다. 어떤 시스템이든 시작 스크립트는 대략 다음과 같은 일들을 한다.
-컴퓨터의 이름 setting
-time zone setting
-시스템의 디스크들을 mount
-network interface를 configuration
-각종 데몬과 network service를 시작
OpenBoot PROM Instruction
Boot PROM Configuration Information Binary machine instructions EEPROM Time of day Ethernet address hostid power-on self-test diagonostics (POST) Generic device drivers User interface Default parameters IU SPARC CPU chip NVRAM
- Boot PROM
kernel이 load 되기 전에 시스템을 Control 하는 프로그램으로 Programmable Read-Only Memory 이다.
각 시스템은 monitor PROM chip을 가지고 있고 PROM은 시스템이 부팅되기 이전에 사용되며 self-test 절차로 시스템과 하드웨어의 무결성 여부를 진단한다.
- Power-on self-tests(POST) : 간단한 하드웨어 자가진단
- Generic device drivers: 드라이버와 주변기기 간의 동기화
- User interface
- Default parameters: OK 프롬프트에서 사용되는 파라미터의 디폴트 값
- EEPROM: Boot PROM 디폴트 값의 변경 값
- Time of day: 시간 동기화
- Ethernet
- addresshostid:시스템 식별 ID
Basic OpenBoot PROM Commands
ok banner: 모델, 메모리 용량, hostid, 시스템의 PROM 버전 번호 등에 관한 정보 확인
ok printenv: NVRAM 파라미터의 디폴트 값과 현재 셋팅 값 확인
ok setenv: PROM 파라미터 값 변경
ok set-defaults: 모든 파라미터 값 디폴트로 설정
ok probe-scsi: SCSI controller에 연결된 디바이스 확인
ok probe-scsi-all: multi-system board 사용 시 SCSI controller에 연결된 디바이스 확인
ok probe-ide: ide controller에 연결된 디바이스 확인
ok devalias: device의 alias name 확인
ok show-devs:루트 레벨에서부터의 모든 디바이스의 path 확인
ok nvalias mydisk /pci@1f,0/pci@1,1/ide@3/disk@0,0
디바이스 알리어스 명을 mydisk로 지정
ok nvunalias mydisk: 설정된 디바이스의 알리어스 명 해제
EEPEOM Commands
•/usr/sbin/eeprom 명령어는 Solaris operation system이 running하는 동안 NVRAM의 변수들을 확인하고 변경할 수 있는 명령어이다.
•List all of the EEPROM parameters
# eeprom
•List a single EEPROM patameters
#eeprom bootpath
•Change the default boot device
#eeprom auto-boot?=false
#eeprom auto-boot?=true
3.시스템 부팅 단계
시스템 부팅 단계
Boot PROM phase
PROM runs self-test diagnostics Ok printenv boot-device Ok boot reads disk label (sector 0) Reads boot block (sectors 1-15) PROM loads boot blocks (bootblk) program Boot PROM phase
-Boot PROM 프로그램은 시스템의 하드웨어와 메모리 체크
-System identification banner를 출력
-Sector 0에 있는 디스크 라벨을 읽어 default boot device를 체크
-시스템의 boot block program(bootblk:sectors 1-15에 위치)을 read
-PROM은 boot block program(bootblk)을 메모리로 load
Boot program phase
The boot block program loads the boot(ufsboot) program The boot(ufsboot) program loads the 32-or 64-bit kernel Boot program phase
32 bit 시스템의 kernel
platform-specific kernel: /platform/`uname -m`/kernel/unix
generic kernel: /kernel/genunix
64 bit 시스템의 kernel
platform-specific kernel: /platform/`uname -m`/kernel/sparcv9/unix
generic kernel:/platform/`uname -m`/kernel/sparcv9/genunix
Kernel initailization phase
Load kernel modules Read /etc/system file The kernel initializes itself and starts the init process Kernel initialization phase The /sbin/init phase The init process starts the run control scripts
Kernel Module directories
- /kernel
- /usr/kernel
- /platform/`uname -m`/kernel
The kernel Subdirectories
- drv: Device drivers and pseudo drivers
- exec: 실행파일 수행 시 필요한 모듈
- fs: File-system module(ufs, nfs, and proc)
- misc: 가상 메모리 수행과 프로세스 간 통신을 위해 필요한 여러 모듈들
- sched: Scheduling classes and corresponding dispatch table modules
- strmod: 사용자와 디바이스 드라이버들 사이의 연결 스트림 모듈
- sys: 시스템 콜
/etc/system file
:Kernel configuration process의 변경을 위해 /etc/system 파일의 편집 필요
- moddir:부팅 시 로딩되는 커널 모듈의 패스 설정(커널 패스)
- rootdev: root device 설정
- exclude: 시스템 부팅 시 메모리에 로드시키지 않을 커널 모듈들
- forceload: 시스템 부팅 시 항상 메모리에 로드시켜야 할 커널 모듈들
- set: set variable=value와 같은 꼴로 커널 파라미터의 기본 설정 값의 변경 가능
-커널 파라미터에 대한 자세한 정보 확인: http://docs.sun.com
/sbin/init phase
- 커널은 유저 프로세스를 생성하고 /sbin/init 프로그램을 시작시킴
- /sbin/init 프로그램
/etc/inittab 정보를 사용하여 프로세스 생성
디폴트 런 레벨로 시스템 부팅
/etc/inittab의 내용을 토대로 런 레벨 전환
4.The /etc/inittab file
/etc/inittab file
System default run level 정의
Process start, monitor, restart
run level 전환
/etc/inittab File format
id:rstate:action:process 예) s3:3:wait:/sbin/rc3 >/dev/console 2<> /dev/console < /dev/console
-id(s3): 각각의 항목을 구별하기 위한 식별자
-rstate(3): 수행될 런 레벨 명시
-action(wait): 프로세스가 어떤 action을 취해야 하는지를 init 프로세스에게 전달하기 위한 키워드 명시
-initdefault: default run level (default 3)
-respawn: 프로세스가 종료되면 즉시 다시 시작됨
-powerfail: 시스템 파워쪽 문제가 발생하면 다음 프로세스 수행됨
-sysinit: 다른 프로세스의 수행 이전에 가장 먼저 수행되는 프로세스
-wait: 현재 수행중인 프로세스가 실행을 완료할 때까지 기다린 후 다음 번 프로세스를 수행함
-process(/sbin/rc3): 실제 프로세스 수행 위한 명령어 명시
*Inittab 파일의 각각의 항목들은 각 런 레벨에서 생성되어야 할 프로세스
들과 수행될 action들의 내용을 init 프로세스에게 전달한다.
/etc/inittab 파일의 내용
- 시스템의 기본 런 레벨
- 시스템이 새로운 런 레벨로 바뀌었을 때 취해져야 할 action
- 특정 프로세스가 죽었을 때 시작될 프로세스, 모니터 될 프로세스 다시 시작되어야 할 프로세스를 정의함
프로세스의 역할
- autopush: read한 커널 모듈을 메모리에 올려 주는 역할
- soconfig: 소켓 프로그램 관리
- sac: 시리얼 포트쪽(로그인 서비스)으로 오는 요청을 관리해 주는 역할
- ttymon: 터미널 쪽으로 들어오는 요청을 처리하는 역할
/etc/inittab file 내용
ap::sysinit:/sbin/autopush -f /etc/iu.ap
ap::sysinit:/sbin/soconfig -f /etc/sock2path
fs::sysinit:/sbin/rcS sysinit >/dev/msglog 2<>/dev/msglog </dev/console
is:3:initdefault:
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog
sS:s:wait:/sbin/rcS >/dev/msglog 2<>/dev/msglog </dev/console
s0:0:wait:/sbin/rc0 >/dev/msglog 2<>/dev/msglog </dev/console
s1:1:respawn:/sbin/rc1 >/dev/msglog 2<>/dev/msglog </dev/console
s2:23:wait:/sbin/rc2 >/dev/msglog 2<>/dev/msglog </dev/console
s3:3:wait:/sbin/rc3 >/dev/msglog 2<>/dev/msglog </dev/console
s5:5:wait:/sbin/rc5 >/dev/msglog 2<>/dev/msglog </dev/console
s6:6:wait:/sbin/rc6 >/dev/msglog 2<>/dev/msglog </dev/console
fw:0:wait:/sbin/uadmin 2 0 >/dev/msglog 2<>/dev/msglog </dev/console
of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog </dev/console
of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog </dev/console
rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog </dev/console
rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog </dev/console
sc:234:respawn:/usr/lib/saf/sac -t 300
co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: " -T sun -d
/dev/console -l console -m idterm,ttcompat
The init Process and the /etc/inittab File
init process /etc/inittab Set initdefault to level 3 Run entries with sysinit in action field Run entries with 3 in rstate field sbin/autopushh /sbin/soconf /sbin/rcS /sbin/rc2 /sbin/rc3 /usr/lib/saf/sac /usr/lib/saf/ttymon system startup stsstartup
init 프로세스는 inittab 파일을 읽는다.
init 프로세스는 initdefault entry에 의거하여 디폴트 런 레벨로 부팅하도록 한다.
init 프로세스는 sysinit field를 포함하고 있는 명령어나 스크립트를 수행한다.
init 프로세스는 rstate가 3인 모든 entry에 해당되는 스크립트를 수행한다.
(/sbin/rc2, sbin/rc3, /usr/lib/saf/sac, and /usr/lib/saf/ttymon)
/sbin Directory
sbin rcS rc0 rc1 rc2 rc3 rc5 rc6
init 프로세는 각각의 런레벨마다 수행되어야 할 rc 스크립트를 찾아 수행하고 이 rc 스크립트는 /sbin 디렉토리에 위치한다.
/etc/rc#과 /sbin/rc#은 symbolically link되어 있다.
#cd /etc
#ls -l rcS
/etc/re#.d directory
/etc rcS.d rc0.d rc1.d rc2.d rc3.d K* S* README K* K* S* S* README K* S*
파일들은 K와 S로 시작한다. 먼저 K*가 실행된 후 S*가 실행된다.
K*는 kill process file이고 S*는 start process file 이다.
만약 어떤 script를 첨가하고 싶은 경우 /etc/init.d 디렉토리에 해당 script를
첨가하면 된다.
/etc/init.d directory
/etc ANNOUNCE MOUNTFS nfs.client lp standardmounts volmgt init.d
/etc/init.d 디렉토리에 있는 actual run control files 들은 런레벨의 변경없이 프로세스들을 시작, 종료 가능
# /etc/init.d/lp stop
# /etc/init.d/lp start
/etc/init.d 디렉토리에는 모든 런 레벨에서 수행되어야 할 rc 스크립트가 전부
들어 있다.
5.System Run Level
RUN LEVELS
Run level |
Function |
0 |
PROM monitor level |
1 |
Single user mode |
2 |
Multi-user level(with no resources shared) |
3 |
Multi-user level(with resources shared) |
4 |
Not currently used |
5 |
Halt(and turn off Sun-4m and Sun-4u architecture) |
6 |
Reboot to default run level 3 |
S |
Single-user mode |
Changing System States
init command
#init [012356]
shutdown command
#shutdown [-y] [-g seconds] [-i init-state] [message]
other commands
-#halt: init 0
-#poweroff: init 5
-#reboot: init 6
Halt |
Init 0 |
Shutdown –i0 |
Reboot |
Init 6 |
Shutdown –i6 |
Poweroff |
Init 5 |
Shutdown –i5 |
Boot Process 중의 Trobelshooting
Stop-a sequence
Recovery를 위한 더 이상의 방법이 없다고 고려되면 Stop-a 키를 사용한다.
Sync
Ok 프롬프트 상태에서 sync 명령어를 통해 disk를 synchronize 시킨다.
Go
Go 명령어는 잠시 중단시켰던 오퍼레이션을 다시 작동시킨다.
Stop-A를 누르기 전 상태로 돌아갈 수 있다.
6.초기화 파일
초기화 파일 설정
쉘의 공통된 기능
쉘은 사용자와 시스템 사이의 명령어 해석 인터페이스를 제공하는 것이 목적이며 어떤 쉘을 사용하는지는 상관없으며 각 쉘마다의 특성에 따라, 자신이 작업하고자 하는 환경에 맞는 것을 선택하면 된다.
쉘의 가장 큰 기능이라면 사용자의 명령어를 해석하여 커널에 전달하는 것과 사용자가 시스템에 로그인을 하거나 다른 쉘로 이동 시에 작업환경을 정의하는 역할을 한다.
Initailization Files
Shell |
System(Read First) |
User(Read Second/Third) |
Template (/etc/skel) |
Bourne |
/etc/profile |
$HOME/.profile |
local.profile |
Korn |
/etc/profile |
$HOME/.profile then $HOME/.kshrc |
local.profile |
C |
/etc/.login |
$HOME/.cshrc then $HOME/.login |
local.cshrc local.login |
System Wide 초기화 파일
- login name을 위한 LOGNAME 같은 환경변수를 export한다.
- 기본 명령어를 위한 PATH 변수를 export한다.
- 기본 terminal type을 위한 TERM 변수를 셋업 한다.
- /etc/motd 파일이 포함하고 있는 내용을 화면에 보여준다.
- 기본 permissions을 셋업 한다.
- login시 mail message를 check한다.
User specific 초기화 파일(.profile, .kshrc, .cshrc 등등)
- 기본 prompt를 설정한다. ex)PS1='$PWD> '
- 기본 프린터를 설정한다.
- 기본 permission을 설정한다.
- Korn shell과 C shell을 위한 history를 설정한다.
- vi와 다른 tool에 의해 사용 되어진 terminal type을 설정한다.
- 새로운 mail message를 check 한다.
- redirection을 실행할 때 파일의 overwriting을 방지하는 noclobber 설정:
set -o noclobber
- 사용자가 자주 사용하는 명령어들의 경로를 설정한다.
- custom commands를 설정한다.
command line에서 변경내용 적용시키기
- Bourne and Korn shells
# . ./.profile
#. ./.profile
- C 쉘
# source ~/.login
# source ~/.cshrc
7.환경변수
환경변수
local 변수: 지금 현재 shell에서만 적용
global 변수: 모든 shell 환경에서 다 적용됨
Bourne shell & korn shell |
C shell |
Local 변수 선언: 변수명=값 Global 변수 선언: export |
Local 변수 선언: set, @ Global 변수 선언: setenv |
예제 |
예제 |
미리 정의된 환경변수
1.PATH: 명령어의 검색 경로 지정
C 쉘의 경우는 PATH 환경 변수는 쉘 변수인 path 값을 설정하는데 이용됨
즉 setenv PATH 명령을 실행할 때마다 C 쉘은 path 변수를 그에 맞게 수정
setenv PATH /bin:/usr/bin:/usr/local::$HOME/bin
2.EDITOR: 즐겨 이용하는 편집기의 이름
일부 프로그램은 EDITOR 변수(ed 등의 라인 편집기)와 VISUAL 변수(vi 등의 화면 편집기)를 구별함
Korn 쉘은 VISUAL과 EDITOR의 순서로 검사함
3.PRINTER: lpr 명령에서 사용될 기본 프린터의 이름
4.PWD: 현재 디렉토리의 절대 경로명
5.HOME: 홈 디렉토리의 절대 경로명
6.SHELL: 로그인 쉘의 절대 경로명
7.USER 또는 LOGNAME: 사용자의 이름, 로그인 하면 자동으로 설정되고 바뀌지 않음
8.TERM: 터미널 종류 이름
9.ENV: korn 쉘에서만 이용되는 변수로 새로운 korn 쉘이 시작될 때 마다
실행되어야 하는 초기화 파일의 이름을 담고 있음
10.EXINIT: vi 편집기의 설정 옵션들
11.PS1: 본쉘의 기본 프롬프트를 갖고 있다.
C 쉘은 프롬프트를 환경 변수에 담아 두지 않고 prompt라는 쉘 변수를 이용
하는데 이는 새로운 쉘이 시작될 때 마다 .cshrc 파일을 읽어 필요한 설정을
하기 때문이다.
12.PS2: 본 쉘의 보조 프롬프트를 갖고 있다.
13.MANPATH: 매뉴얼 페이지를 찾기 위한 순서
14.TZ: 표준 시간대
15.DISPLAY: X 윈도우 시스템을 이용하여 X 애플리케이션 입력과 출력으로
이용될 디스플레이 서버(키보드와 화면 처리 프로그램)를 지정
모든 환경 변수의 목록 출력
#printenv
#env
모든 쉘 변수 목록 출력
#set
DISPLAY 환경변수
원격호스트의 DISPLAY 변수를 로컬호스트에 전달하는 방법
원격 컴퓨터에 dark.matt.er에 telnet접속이 되어있고, 원격 컴퓨터가 csh을 실행중
dark% setenv DISPLAY light.uni.verse:0
dark% xfig &
원격이ksh 실행중
dark$ DISPLAY = light.uni.verse: 0
dark$ export DISPLAY
dark$ xfig &
설정예
두 대의 컴퓨터를 사용할 경우 xhost와 --display 옵션으로 X윈도우 어플리케이션을 각기 다른 컴퓨터의 화면에 띄울 수 있습니다.
컴퓨터 A와 B가 있다고 가정하고 각기 168.126.63.1과 168.126.63.2의 IP를 사용한다고 하면 컴퓨터 B(168.126.63.2)의 터미널에서 #xhost +168.126.63.1로 서버를 열어줍니다.
컴퓨터A(168.126.63.1)에서
#hanterm -display 168.126.63.
을 실행하면 컴퓨터B의 화면에 한텀창이 뜨게 됩니다.
만약 컴퓨터A에는 없고 컴퓨터B에만 있는 프로그램이 있다면 telnet으로 접속하여 컴퓨터B에서 프로그램을 실행하고 컴퓨터A의 X윈도우에 화면을 띄울 수 있습니다.
C 쉘
C 쉘
C 쉘은 bourne 쉘보다 기능면에서 많은 부분 진보된 쉘로 C 쉘에서 지원하는 기능에는 aliases, command history, job control 등이 있다.
C 쉘에서는 초기화 파일로 .login, .cshrc, .logout이 있다. 이들은 각각 서로 다른 기능을 갖고 있다. 사용자가 로그인 할 때 제일 먼저 .logout 파일을 읽고, 각각의 쉘이 실행될 때마다 .cshrc 파일을 읽는다. 그리고 마지막으로 로그아웃을 실행할 때 .logout 파일을 읽게 된다. 일반적으로 환경변수는 .logout 파일에 설정하고, 쉘 변수들은 .cshrc에 설정한다.
C 쉘의 특징
Alias
alias란 사전적 뜻으로 별명 혹은 축약어라는 의미를 지니고 있고 긴 명령을 alias 명령을 이용하여 쉽게 사용하도록 편의를 제공해 준다.
alias alias_name command
명령 히스토리
명령 히스토리란 최근에 사용한 명령을 명령 히스토리 목록에 저장하여 사용자의 명령 사용에 편리성을 제공해 주는 기능이다.
히스토리 크기 바꾸기
set history=30
다음 로그인 시 이전 명령 히스토리 사용
set savehistory=20
C 쉘의 쉘 변수들
변수명 |
내용 |
argv |
Argument variable |
cwd |
Working 디렉토리의 내용 |
history |
History 리스트의 크기 |
cdpath |
디렉토리들의 목록을 저장 |
prompt |
Bourne 쉘의 PS1과 동일 |
savelist |
로그아웃시 저장하는 history 정보 |
shell |
Shell의 pathname |
$$ |
현재 쉘의 PID number |
mail |
E-mail이 온 경우 쉘이 알려줌 |
noglob |
와일드카드 확장을 금지시킴 |
notify |
백그라운드 작업 중지 시 알려줌 |
ignoreeof |
쉘은 ctrl-d에 반응하지 않음 |
noclobber |
리다이렉션시 파일의 overwriting 방지 |
초기화 파일 설정 예제
The Bourne Shell
$cat .profile
TERM=vt100
PATH=/usr/ucb:/usr/bin:/usr/sbin:
PS1=“`hostname`>”
PS2=“>”
CDPATH=:$HOME
export TERM PATH PS1 CDPATH
The C shell
% cat .cshrc
set noclobber
set ignoreeof
set hostory=100
set prompt=“`hostname`%”
set PATH=(/usr/bin /usr/ucb /usr/sbin ~/bin .)
alias h history
alias ll ls -l
%cat .logout
echo remember to turn on call
echo forwarding before you go home.
Sleep 10
The korn shell
/export/home/mhkang> cat .kshrc
PS1='$PWD> '
set -o noclobber
set -o vi
stty erase ^H
alias dir='ls -al'
alias c=clear
/export/home/mhkang> cat .profile ?
PATH=$PATH:/usr/local/bin
ENV=$HOME/.kshrc
export ENV
shell 기능
기능 |
bourne |
C |
Korn |
Aliases |
No |
Yes |
Yes |
Command-line editing |
No |
Yes |
Yes |
History List |
No |
Yes |
Yes |
Ignore Control-d ( ignoreeof) |
No |
Yes |
Yes |
Separate initialization file from .profile |
No |
Yes |
Yes |
Job control (ability to move job to and from the background and foreground for processing; ability to suspend a job) |
No |
Yes |
Yes |
Logout file |
No |
Yes |
No |
Protect files from overwriting (noclobber) |
No |
Yes |
Yes |
8.디스크 관리
디스크 관리
Disk Slices
디스크는 슬라이스라고도 부르는 8개의 파티션으로 나누어진다.
Slice 0는 root 파일을 포함하는 boot 디스크
Slice 2는 전체 디스크
Swap은 어떤 slice라도 무관
System Board host adapter host adapter C0 SCSI controller SCSI controller SCSI controller t0 t1 t6 /dev/dsk/c0t0d0s0 /dev/dsk/c0t0d0s1 /dev/dsk/c0t1d0s5 /dev/dsk/c0t1d0s6 /dev/dsk/c0t6d0s0 /dev/dsk/c0t6d0s6 d0 d0 d0
디스크 이름
Logical Device Names
-시스템 관리자가 참조하는 용도로 사용되는 이름으로 “c0t0d0s7” 처럼 영문과 숫자의 조합으로 표시
-logical name은 /dev/dsk (block device names)와 /dev/rdsk(raw device names) 디렉토리에 존재하며 실제로는 /devices 디렉토리의 복잡한 디바이스 이름과 링크됨
c0: controller number 0번
t0: target number 0번, IDE에는 존재하지 않으며 SCSI의 경우는 id 번호가 됨
d0: disk number 0번
s7: slice number 7번
- Logical device name 확인
# ls /dev/dsk
Physical Device Names
- devices 디렉토리 밑에 위치함
- 형식: driver-name@unit-address:device arguments
예: /sbus@if,0/esp@0,4000/sd@3,0:a
if,0의 메인 시스템 버스 주소를 가지고 sbus에 연결됨
esp 장치(scsi bus)에 0번 슬롯, 4000번 옵셋에 부착되어 있으며
SCSI target 번호가 3, 디스크 번호가 0, 슬라이스 번호가 0
확인: # ls -l /dev/dsk/c0t0d0s0
Instance Names
- physical device name의 디바이스 이름 축약형
s=SCSI, d=disk, n=logical disk number
예: sd0 first SCSI disk drive
디스크 관련 명령어
dmesg command
시스템에 연결된 디바이스 확인
instance name과 physical name 확인
/etc/path_to_inst file
instance name과 physical name의 list
format command
logical and physical device name을 display
prtconf command
시스템 메모리와 주변장치의 configuration 정보를 display
시스템에 장착되어 있지 않은 장치에 대한 것도 확인가능
#prtconf|grep -v not : 사용하고 있지 않은 장치 확인
파일시스템의 이용상황 체크
df [옵션] --- 각 슬라이스의 빈 용량 조사
-k : 킬로바이트 단위로 총량, 사용량, 빈용량 표시
-t : 블록수, 파일수의 현재 빈 용량과 총량을 표시
du [옵션] ---- 디렉토리에서 사용하고 있는 파일의 크기
-a : 디렉토리 뿐 아니라 파일 크기를 표시
-s : 총합계 크기만을 표시
quot [옵션] [파일 시스템 명] --- 슬라이스 마다 각 사용자의 사용량
-f : 사용량과 각 사용자의 파일수도 표시
-a : 마운트 되어 있는 모든 파일 시스템에 대해 표시
Reconfiguring Device
Reconfiguring Device
디스크의 이동이나 교체 등의 작업시 디스크 설치 후 부팅을 진행하면 시스템은
이를 인식하지 못한다. 이럴경우 reconfigure 작업이 진행되어야 한다.
부팅 시 옵션을 입력
x86 버전의 경우 부팅 후 (b)oot (i)nterprete를 고르는 부분이 있는데 여기서
“b -r”을 입력
부팅 후 쉘 상태에서의 명령어
# reboot -- -r
reconfigure 파일 생성 후 reboot
reconfigure 파일을 만든 후 reboot 하게 되면 부팅 후 init에서 불러 들이는 rc.sysinit
파일에서는 root 디렉토리에 reconfigure 라는 파일의 존재를 파악하여 시스템의
변경 부분에 대해 kernel을 rebuild한다.
# touch /reconfigure
# reboot
OS레벨에서 디바이스 인식시키기(reboot 과정 없이 가능)
# drvconfig: /devices 쪽을 다시 한 번 생성해 줌
# disks: 디스크 디바이스 인식
# tapes: 테이프 디바이스 인식
Format
format 사용한 partitioning
1.대상 디스크 고르기
iacademy[/]155#format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0d0
/pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0
1. c0d1
/pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0
2. 메뉴 중 fdisk 통해 솔라리스 파일 시스템 생성
3. Create a partition에서 100% solaris 파티션을 설정
4. partition 명령어 사용하여 파티션 나누기
5. print 명령을 통해 현재 디스크의 슬라이스 상태 확인
6.모든 파티션 나누는 작업이 완료되면 label 을 사용하여 수정된 정보를 디스크
(VTOC)에 저장함
7.newfs command로 file system의 변경사항을 적용시킴
#newfs /dev/rdsk/c1d0s0
8.prtvtoc 명령어로 VTOC 정보 디스플레이
#prtvtoc /dev/rdsk/c1d0s0
새 디스크 추가
1./reconfigure 파일 생성
# touch /reconfigure
#init 5
2. 디스크 장착하기
3. 하드웨어 레벨에서 인식 확인
ok probe-scsi
ok probe-ide
4. #format (파티션 나누기)
5. newfs 명령어 통해 각 슬라이스 별로 파일 시스템 재구성
#newfs /dev/dsk/c1d0s0
6. #mount /dev/dsk/c1d0s0 /p1
9.유닉스의 파일 시스템
유닉스의 파일 시스템
UNIX의 File System
- UNIX 시스템은 여러 개의 물리적 디스크를 가질 수 있고 이러한 디스크들은
하나 이상의 file system을 가지게 된다.
- 커널은 각각의 file system을 다루며 각각의 file system마다
device number(EX:/dev/dsk/c0t3d0s0)를 부여하여 이를 논리적 device로 다루게 된다.
- File System은 데이타를 file단위로 저장하며 UNIX의 file system은 tree 구조를
이루고 있다.
- 하나의 file system은 boot block, super block, inode list, data block으로 구성된다.
파일시스템의 타입
•디스크 기반의 파일 시스템 타입
1.ufs 기본 disk 파일시스템
- The Disk Label(VTOC): 파티션 table 정보
VTOC(Volume Table of Contents)란 disk의 정보를 가지고 있는 label의 확장된 개념
- VTOC의 구성
Volume Name은 disk 구별 시 사용하며 8자 이하로 만들 수 있으며 disk를 구분
하는 예를 들면 “intdisk” “extdisk” 등
partition tags(unassigned, boot, root, swap, usr, backup, stand, var, home)는 partition을
구별할 때 사용함
Partition flags(w,r,m,u)는 해당 partition에 대해 read/write 그리고 mount 가능한지의
여부에 사용함
-The bootblock (1-15 sector)
파일시스템 loader
-The superblock
디스크 전반적인 정보들, 파일시스템의 모든 정보
-Backup superblocks
2. hsfs CD-ROM파일시스템(High sierra파일시스템)
3. pcfs DOS디스켓 data의 read/write를 지원하는 file system
•Network-based file system (NFS) type
분산파일시스템은 network에 접속된 다른 시스템의 access를 지원
•RAM-based file system
디스크 영역을 메모리처럼 사용하고자 하는 것으로 patch 작업시 자주 사용하며
일시적 또는 빠르게 처리해야 할 경우 사용함
전원 off 되면 데이터가 전부 없어짐
10.FSCK
FSCK
•fsck를 사용한 파일시스템 복구
# newfs –N /dev/rdsk/c0t3d0s5
/dev/rdsk/c0t3d0s5: 615600 sectors in 405 cylinders of 19 tracks, 80 sectors
300.6MB in 26 cyl groups (16 c/g, 11.88MB/g, 5696 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 24432, 48832, 73232, 97632, 122032, 146432, 170832, 195232, 219632,
244032, 268432, 292832, 317232, 341632, 366032, 390432, 414832, 439232,
463632, 488032, 512432, 536832, 561232, 585632, 610032,
# fsck –o b=32 /dev/rdsk/c0t3d0s5
11.파일시스템 관리(파일시스템의 full시)
파일시스템 체크
/ 화일시스템에 사용자가 임으로 만들어 준 디렉토리가 있으면 정리
/dev 디렉토리 밑에 일반화일이 있는지 조사
#find /dev -type f -exec ls -l {} \;
일반화일이 있으면 제거
시스템에 있는 core 파일을 제거
#find / -name core -print (core 파일 찾기)
#find / -name core -exec rm {}\; -print
/var가 root 화일시스템에 있을 경우, /var 디렉토리 밑을 조사
#du -sk /var/* |sort -nr
이 명령어를 실행하면 /var 밑에 있는 디렉토리 별로 그 서브 디렉토리까지
포함하여 KB 단위의 크기를 출력하고 그 중 사이즈가 큰 디렉토리에 대하여
조사함
주로 문제가 될 만한 디렉토리는 다음과 같다.
/var/adm
/var/mail
/var/log
/var/preserve
/var/spool
/var/adm
- /var/adm 디렉토리에는 시스템 운용 중에 발생하는 메시지나 기타
정보들이 누적 보관된다. 이 디렉토리에 큰 파일이 있으면 정리한다.
- messages.0, messages.1,….과 같은 파일은 지워도 무방하다. 파일의 크기가
너무 크면 #cp /dev/null messages 명령어를 사용하여 파일 크기를 0으로 만듬
- wtmp 또는 wtmpx 파일의 크기가 너무 크면 다음과 같은 명령어로 크기를
0으로 만든다. 이 파일은 접속한 사용자에 대한 정보를 가지고 있다.
#cp /dev/null wtmp
#cp /dev/null wtmpx
/var/mail
이 디렉토리는 메일 데이터가 보관되는 곳으로 이 디렉토리에 사이즈가 큰
파일이 있으면, 해당 사용자에게 그 메일을 정리하도록 한다.
/ 파일 시스템에 있는 1MB 이상되는 파일을 조사하여, 파일 크기순으로 sor하여 그 내용을 조사한다.
#find / -mount -size +1024k -ls > /tmp/find.list
#find -nr +6 /tmp/find.list > /tmp/find.list.s
find.list.s 파일에서 비정상적인 큰 파일이 있는지 조사한다.
12.Mount
File system의 마운트
root ( / ) usr opt etc var export dev kernel rmt default adm home openwin bin dt ssa2 ssa3 ssa1 The root (/) file system The /usr file system The /export/home file system /dev/dsk/c0t3d0s6 /dev/dsk/c0t3d0s7 /dev/dsk/c0t3d0s0 mount mount
파일시스템의 마운트와 언마운트
마운팅
- 분산된 파일 시스템을 하나의 디렉토리에 모으는 과정
- mounting과 unmounting은 시스템 startup, shutdown 시 자동으로 실행됨
- backup, fsck, repartition 등을 할 때 사용함
새로운 파일 시스템의 마운팅
#mkdir /database
#mount /dev/dsk/c0t0d0s0 /database
언마운팅
device special file system name이용하는 방법
# umount /dev/dsk/c0t0d0s0
/etc/vfstab file에 지정된 monut-point 이용하는 방법
# umount /database
Local File System의 Mounting
- startup시(/etc/vfstab file의 mount at boot field 참조)
- run level 2일 때 mountsys script에 의해 mount 됨
/etc/vfstab file
/etc/vfstab 파일의 각 필드
- device to mount:local ufs file system의 logical(block)device name
- device to fsck
local ufs file system의 raw special device name
fsck 유틸리티에 의해 사용됨
- mount point:local file resource의 default mount point
- FS type:local file resource에 대해서는 항상 "ufs”
- fsck pass:파일시스템 체크를 자동으로 수행할 것인지의 여부 결정
- mount at boot
field의 값이 양수이면 check, 음수면 pass
root(/), /usr, and /var 파일시스템은 /etc/rcS.d/S30rootusr.sh 스크립트 수행 시 이미
마운트가 됨
mount option :comma로 구분되는 mount option list
- option
- rw:ro
- bg:fg->mount 수행 실패 시 retry 시 bg/fg 결정, bg로 설정되어 있어야 server
- 문제에 의해 마운트 문제 발생시에도 부팅이 이루어짐, 디폴트는 fg
- soft:hard-> hard로 설정하면 마운트 될 때까지 재시도 함, 디폴트는 hard
- intr:nointr->디폴트는 intr
- suid|nosuid->setuid 설정 여부, 디폴트는 suid
- timeo=n
- retry=n
- retrans=n: 연결 도중 연결이 끊겼을 때 재 연결시도 횟수
다른 파일시스템의 마운팅
마운트 포인트 생성
#mkdir /pcfs
파일시스템 타입 명시
#mount -F pcfs /dev/diskette /pcfs
#mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom
vold
- cdrom과 플로피 디스크 자동 마운트는 vold가 해줌
# /etc/init.d/volmgt stop
# /etc/init.d/volmgt start
- #eject 명령어는 umount 수행하고 미디어 제거함
파일시스템의 결정
- /etc/vfstab 파일에 엔트리 추가
- /etc/default/fs에 로컬 파일 시스템의 파일시스템 타입 명시
- /etc/dfs/fstypes에 분산된 파일 시스템의 파일시스템 타입 명시
13.NFS(Network File System)
NFS의 장점
Centralized Files:데이터를 중앙 집중화하여 관리의 편리함 도모
Common software:소프트웨어의 공유가 가능
Files appear to be local
: 로컬에 있는 데이터처럼 편리하게 사용 가능
Easy to use
NFS File Server
자동마운트 설정(The /etc/dfs/dfstab file)
- run level 3에 들어갈 때 read 됨
- root가 shareall 명령어 수행 시 read 됨
- /etc/init.d/nfs.server 스크립트 수행 시 read 됨
수동 마운트 설정 (share 명령어)
share [-F FSType] [-o option] [-d description] pathname
- option
F FSType: 파일시스템 타입을 명시하며 /etc/dfs/fstypes 파일을 참조
ro: read only, rw: default, root=client의 hostname
ro=access-list, rw=access-list (@network, .domain)
anon=n: anonymous 사용자 접근 제한
- pathname
절대경로로 줄 것
디렉토리만 공유 가능
unshare command
리모트 시스템에 의해 공유된 자원을 공유하지 않음
unshare [-F nfs] pathname
shareall and unshareall commands
현재 공유된 목록을 모두 공유하거나 공유하지 않음
shareall [-F nfs] unshareall [-F nfs]
NFS File Server 설정
- /etc/dfs/dfstab 파일 편집
- server 데몬을 start 시킴
/etc/init.d/nfs.server start
- 공유된 목록 확인(서버에서 공유하고 있는 공유 리스트 확인)
#dfshares #dfshares edu001 (edu001이 공유하고 있는 공유 리스트 확인)
dfmounts command
서버에서 client 쪽의 마운트 된 정보 확인
NFS Client
Manual mouting(수동 마운트)
NFS 서버의 공유 내용들을 클라이언트에서 사용하려면 서버에서 공유된
자원을 마운트 해야 함
mount [ -F nfs ] [ -o options ] server:pathname mount_point
Automatic mounting (자동 마운트)
/etc/vfstab 파일에 아래와 같이 기술하면 자동으로 마운트 되어 재부팅
시에도 마운팅 정보를 유지하게 됨
# vi /etc/vfstab
edu001:/usr/share/man - /usr/share/man nfs - yes –
;run level 2로 들어갈 때 마다 참조
umount command
#umount /usr/share/man ;mount 해제
mountall, umountall commands
- mountall -r :모든 로컬 파일시스템에 대한 마운트
- umountall -r: 모든 로컬 파일시스템에 대한 언 마운트
- -r 옵션: 파일시스템 타입이 ufs 이고 mount at boot 필드가 yes 인 것만 마운트 함
NFS Client Setup
- 서버에서 공유해 주고 있는 목록 확인
# dfshares teacher
- 서버의 공유 자원을 마운트 포인트를 사용하여 공유
# mount teacher:/usr/share/man /usr/share/man
- /etc/vfstab 파일을 편집하여 자동 마운트를 설정한다. (optional)
- 더 이상 서버의 자원을 공유할 필요가 없다면 언 마운트 시킴
#umount /usr/share/man
14.CacheFS 파일시스템
CacheFS 파일시스템
CacheFS의 기능
CacheFS file system을 사용하게 되면 NFS나 CD-ROM 드라이브 사용 시 한 번 읽은 데이터
로컬 하드 디스크에 캐싱 하므로 시스템의 성능향상을 도모할 수 있다.
CacheFS 파일시스템 관련 명령어
Cache file system을 생성한다.
#cfsadmin -c /export/home_cache
마운트 포인트가 없으면 생성한다.
#mkdir /export/home
리모트 파일 시스템과 CacheFS 파일 시스템을 마운트한다.
# mount -F cachefs -o backfstype=nfs, cachedir=/export/home_cache,
cache_id=export_home_0823 edu001:/export/home /export/home
mount 명령어를 사용하여 제대로 마운트 되었는지 확인한다.
#mount
Cache 디렉토리 만들기
# cfsadmin -c /cache/doc
※주의할 사항은 /cache 디렉토리는 반드시 생성되어 있어야 하며, root로 로그인해서 들어가야 한다.
Mount하기
#mount -F cachefs -o backfstype=fstype,cachedir=cache-directory, [options] back-filesystem mount-point
#mount -F cachefs -o backfstype=nfs,cachedir=/cache/doc A:/export/home /export/home
※ backfstype은 서버의 파일시스템 종류
-o뒤에 있는 옵션들(여기에서는 backfstype과 cachedir)사이에는 ","로 구분하고
공백이 있으면 안 된다.
CacheFS의 통계치 보기
#cachefsstat mount-point
#cachefsstat /export/home
/export/home
cache hit rate: 50% (2 hits, 2 misses)
consistency checks: 8 (8 pass, 0 fail)
modifies: 0
garbage collection: 0
CacheFS Consistency 체크
#cfsadmin -s
CacheFS Logging
-cachefswssize를 사용하여 현재 cache에 저장된 데이터의 사이즈를 알기 해
서는 먼저 cachefslog를 사용하여 logging을 하여야 한다.
#cachefslog -f /var/cachelogs/home_cache.log /export/home
-로그파일 확인하기
#cachefslog /export/home
-cache 사이즈 체크
#cachefswssize /var/cachelogs/home_cache.log
CacheFS file system 제거하기
# cfsadmin -d cache 디렉토리 경로
# cfsadmin -d all /cache/doc
15.Automount
Automount
Automount?
소프트웨어로 사용자가 서버에서 share된 디렉토리 안으로 이동할 때 자동으로 마운트되고 일정기간(약 5분 정도) 사용하지 않으면 그 디렉토리를 언 마운트 시켜 주는 시스템 서비스
Automount의 특징
-필요에 의해서 file system이 마운트 됨
-File system은 보다 효과적으로 자동 마운트 됨
-File system은 자동으로 unmount 됨
-File system은 쓰는 동안에는 마운드 되어 있고, 5분 동안 사용하지 않으면
자동으로 unmount 됨
Automount Benefit
- mount, umount 명령어를 내릴 필요가 없다.
-필요할 때만 mount 하기 때문에 network을 효율적으로 쓸 수 있다.
-automount directory를 아는 사람만 쓰므로 주요 정보를 감출 수 있다.
-NFS server 쪽에는 아무런 영향도 미치지 못한다.
HOW Automounting works?
Autofs file system
autofs file system의 정의는 client의 /etc 디렉토리 안의 automount map에 정의됨
automount program
시스템 startup 시 call 되고 autofs 마운트를 생성하기 위해 auto_master 파일을 read 함
automountd 데몬
시스템 booting 시나 요청이 있을 때 데몬은 start 됨
#/etc/init.d/autofs start
Automount 의 configuration 파일 (map file)
mount point의 경로가 절대경로이면 direct map 이고 상대경로이면 indirect map
- master map - /etc/auto_master
- - direct map - /etc/auto_direct
- - Indirect map - /etc/auto_home
Automount 명령어
- direct map을 생성하거나 master map을 변환할 때, automount 명령어를 실행함으로써 효과를 볼 수 있다.
- Command Format
- automount [-t duration] [-v]
- Options
-t duration, 초단위로 시간을 설정, 사용 하지 않는 시간, defualt 5분
-v verbose mode
Master Maps
- autofs directory와 automount maps 정의
- autofs가 체크해야 할 모든 map을 정의
/net -hosts -nosuid, nobrowse
/- auto_direct
/home auto_home -nobrowse
/xfn -xfn
mount DB(map)파일 옵션
point
/net -hosts : 예) # cd /net/edu001 --> /net 아래에 있는 edu001을 access 하면
-hosts (/etc/hosts or 기타 name service를 참고해서 edu001에서 share하고 있는 내용들을 자동으로 mount 해 줌)
/home auto_home: 예) 사용자 로그인 -- > /home 아래에 있는 user01을 access 하면 /etc/auto_home을 참고해서 자동으로 mount 해 줌
Direct Maps
#cat /etc/auto_direct
+auto_home
/apps/frame -ro,soft mars:/export/framemaker,v4.0
/opt/local -ro,soft jupiter:/export/unbundled
/usr/share/man -ro,soft sun,moon,stars:/usr/share/man
+auto_home은 NIS, NIS+ 참조함을 의미
Direct map에서는 Mount point는 절대경로로 지정함
Indirect Maps
#cat /etc/auto_home
stevenu starbug:/export/home/stevenu
johnnyd comet:/export/home/johnnyd
wkd mars:/export/home/wkd
* mars:/export/home/&
Example
# pkginfo SUNWman
# pkgrm SUNWman
# man ls
# edit /etc/auto_master
#+auto_master
(/etc/auto_master에 다음 라인을 추가)
/- /etc/auto_direct
(/etc/auto_direct에 다음 라인을 추가)
/usr/share/man -ro server:/usr/share/man
# automount -v
# man ls -> 확인
16.백업과 복구
백업과 복구
백업의 타입
-full dump : 모든 파일시스템의 내용을 백업
-incremental dump : 첫번째만 full dump하고 다음 번 부터 변경된 파일만 백업 받음
백업 명령어
ufsdump options [argument] files_to_dump:
optin
0-9: 0은 full dump, 1-9는 incremental dump
u: 덤프시 발생하는 정보를 /etc/dumpdates에 로그 남김
f: 백업 받을 디바이스 지정
# ufsdump 0uf /dev/rmt/0 /export/home
restore 명령어
ufsdump 명령어에 의해 생성된 백업내용을 복구하는 용도로 사용됨
# ufsrestore tvf /dev/rmt/0 : 백업 리스트 확인만 함
# ufsrestore rvf /p2/backup
※주의해야 할 것은 복구를 하고자 하는 디렉토리에 들어가서 진행하여야 함
ufsrestore options [arguments] [filename]
option
l:대화형 restore를 수행
r:백업 받은 전체에 대한 restore 진행
t:백업 받은 내용 출력
x:명령어 라인에 명명된 파일만 추출
f dump_file:restore를 진행할 dump_file 명시
v: restore될 것들의 full path를 모두 출력함
tar
# tar cvf test.tar
현재 디렉토리의 모든 파일을 test.tar라는 파일로 묶는다.
# tar xvf test.tar
test.tar라는 tar 파일을 현재 디렉토리에 풀어 낸다.
17.The Package Command
Package 관련 명령어
pkginfo 명령어는 software package information을 display 함
command format
pkginfo [-d [device | pathname] ] [ -l ] pkg_name
Option
-d device: 패키지의 path 정보
-l: 패키지에 대한 자세한 정보 출력
- pkg_name: 패키지의 이름
예제
#pkginfo -d /cdrom/cdrom0/s0/Solaris_2.7/Product | more
#pkginfo -d /cdrom/cdrom0/s0/Solaris_2.7/Product -l SUNWaudio
- 패키지 인스톨 개수 체크
#pkginfo | wc -l
pkgrm 명령어는 software package를 지우기 위해 사용한다.
- pkgrm package_name
#pkgrm SUNWaudio
pkgadd 명령어는 software package를 추가하기 위해 사용한다.
pkgadd [-d [device | pathname ] ] pkg_name
#pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product SUNWaudio
pkgchk 명령어는 package path name이 system log file에 기술한 것과 일치하는지 확인하기 위해 사용한다.
- pkgchk [ -p path1 [ path2 …] ]
#pkgchk SUNWaudio
#pkgchk -p /etc/group
SUN의 freeware 패키지 웹 사이트
Spooling Packages
/var/spool/pkg 디렉토리로 패키지 스풀링
#pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product -s spool SUNWaudio
명시한 디렉토리 위치에 패키지 스풀링
#pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product -s /export/pkgs SUNWaudio
스풀링 한 패키지 지우기
#pkgrm -s /export/pkgs SUNWaudio
18.Maintaining Patches
Patch의 정의
패치는 소프트웨어의 수행에 문제를 일으키는 파일들과디렉토리들을 replace하거나update 하여 버그를잡고 해당 소프트웨어의 기능을 강화하기 위한 파일 또는
디렉토리를 의미함
Patch numbering
패치는 각각 자신의 패치 번호와 같은 이름으로 디렉토리에 패키지화 되어 있다.
Patches 와 Patch Reports 제공
http://sunsolve.sun.com
http://access1.sun.com/patch.y2k
ftp sunsolve.sun.com
Patch Storage (현재 시스템에 인스톨 된 패치의 historical 정보 )
#ls /var/sadm/patch
Patch installation
#patchadd 106793-01
Checking Current Patch Status
# patchadd -p (solaris 2.6 이상)
# showrev -p
Patch Removal
#patchrm 106793-01
Extracting Patch Files for Installation
압축해제와 tar 풀기를 single command line에서 수행하여 디스크 스페이스
절약 가능
#zcat 105050-01.tar.Z| tar xvf -
#gzcat 102340-02.tar.gz | tar xvf -
19.System Security
/etc/passwd Database
loginID:x:UID:GID:comment:home directory:login shell
- /etc/passwd record format
login: 숫자, period, _, -, 등을 포함한 8글자까지 가능하며 첫 글자는 알파벳
문자여야하며 적어도 소문자를 하나는 포함하여야 함
x: 사용자의 암호화된 패스워드의 placeholder
home directory: 사용자의 홈 디렉토리 path name
login shell: 사용자의 디폴트 로그인 쉘(/bin/sh, /bin/csh, /bin/ksh)
/etc/shadow Database
loginID:password:lastchg:min:max:warn:inactive:expire:
/etc/shadow record format
password: *LP*-inaccessible account, NP-no possible password
lastchg:
min: 최소 패스워드 사용할 수 있는 사용기간
max: 최대 패스워드 사용할 수 있는 사용기간
warn: 패스워드 만료 전 경고 메세지로 알려줌
inactive: 일정기간 로그인 사실이 없으면 사용자의 account를 lock 건다.
/etc/group Database
groupname:password:GID:userlist
/etc/group record format
groupname: 8글자까지 가능
password: /usr/bin/newgrp 명령어로 그룹 패스워드 지정 가능
userlist: secondary group membership
The sysadmin Group
GID=14이고 admintool utility 사용 가능
id command
(effective) user ID, user name, group ID, group name
#id -a: 내가 포함된 모든 그룹의 리스트 확인
who am i command
실제 로그인한 사용자의 ID
whoami command
effective user ID
su command
다른 사용자로 변경할 때 사용
-(dash) 옵션을 사용하면 그 사용자의 로그인 환경까지도 모두 적용됨
chown command
파일이나 디렉토리에 대한 소유권 변경
#chown user_name filename
# chown -R user_name directory name (디렉토리 소유권 변경)
# chown -R lister:staff mydocs (소유자와 소유그룸을 동시에 변경
chgrp command
파일이나 디렉토리에 대한 그룹 소유권 변경
#chgrp groupname filename
#chgrp GID filename
groups command
현재 로그인한 사용자가 속한 그룹의 리스트 확인
/etc/default directory
passwd file
MAXWEEKS variable: 지정한 패스워드 최대 사용가능 기간(주단위)
MINWEEKS variable:지정한 패스워드를 최소 사용해야 하는 기간(주단위)
PASSLENGTH variable:패스워드 길이 최소 6에서 최대 8까지 지정 가능
login file
ULIMIT 로그인시 file size 제한
CONSOLE
#CONSOLE=/dev/console: 루트 사용자는 어디서든지 로그인 가능
CONSOLE=/dev/console: 콘솔창을 통해서만 root는 로그인 가능
CONSOLE=: 루트 사용자로는 로그인하지 못함. su 명령어를 통해서만 루트
사용자 권한 획득 가능
PASSREQ: PASSREQ=YES: 패스워드 없는 사용자는 로그인 불가능
PATH: PATH=/usr/bin: 환경변수에 PATH 변수가 셋팅되어 있지 않을 경우 따르는path
TIMEOUT: TIMEOUT=300: 로그인하여 아무런 작업도 하지 않았을 때의 timeout 값
UMASK: UMASK=022: 처음 파일이나 디렉토리 생성시의 권한 설정
SYSLOG: SYSLOG=YES: 시스템에서 발생하는 모든 내용을 log 남김
su file
SULOG=/var/adm/sulog: su 명령 수행에 대한 로그 기록 파일 지정
#CONSOLE=/dev/console: 모든 su 명령어 수행에 대한 로그가 콘솔에 logging 됨
CONSOLE=/dev/console: 수퍼 유저가 되기 위한 su 명령어 수행이 성공했을 때는
콘솔과 로그 파일에 전부 로그 메시지를 남기고 실패했을 경우 로그파일에만
로그 메시지를 남긴다.
SUPATH: root의 shell path
20.Monitoring System Access
관련 명령어
who command
- 현재 시스템에 로그인 되어 있는 사용자를 확인
- /var/adm/utmp, /var/adm/utmpx에 로그 남음
# who
console: screen device
pts: 가상 단말기 창
term: 시리얼 포트에 물리적으로 연결된 디바이스
# who -r:런레벨 확인
finger command
- 현재 로컬이나 리모트에서 로그인 되어 있는 사용자의 자세한 정보 확인
- /var/adm/wtmp, /var/adm/wtmpx에 로그 남음
- user name, /etc/passwd 파일의 commnet 필드의 내용, 터미널 이름, idle time,
login time, host name
# finger mhkang
last command
사용자에 대한 로그인 로그아웃 정보 확인
#last mhkang
고급 파일 퍼미션
umask
- umask는 파일과 디렉토리에 대한 디폴트 퍼미션 결정
- 파일:666 디렉토리:777
- 현재 쉘에서 umask 값 변경: # umask 027
- 완전 바꾸기: # vi .profile에서 umask 027
setfacl
- 좀 더 세부적으로 파일 퍼미션에 대한 권한을 설정함(ACLs)
setfacl options acl_entry filename1 [filename2…]
option
-m: 권한 추가
-s: 권한 대치
-d: 권한 삭제
-
#setfacl -m user:ssa20:6 ch3.doc
-#setfacl -s user::rw-, group::r--,other:---,mask:rw-,user:ssa20:rw- ch3.txt
- # ls - l ch3.doc: + 표시가 보임
getfacl
- file에 설정되어 있는 ACL을 확인하기 위해 사용함
- effective permission은 원래 설정되어 있는 default mask값에 따라 결정됨
#getfacl ch3.txt
setuid
- 모든 사용자가 프로그램의 소유자처럼 프로그램 수행 가능
- 파일, 디렉토리에 설정 가능
- setuid와 setgid가 설정되어 있다면 execute fild는 알파벳 s로 표시됨
# ls -l /bin/passwd /etc/shadow
224 -r-sr-sr-x 3 root sys 99640
2 -r-------- 1 root sys 447 10월 20일
- 실행권한은 off되어 있고 setuid, setgid만 걸려 있으면 대문자 S를 사용하여
오류임을 표시
- setgid를 디렉토리에 걸면 하부 디렉토리와 파일은 부모 디렉토리의
그룹으로 동일하게 상속됨
setgid
- 모든 사용자가 그 프로그램의 그룹에 속한 것처럼 프로그램 수행 가능
- 디렉토리에만 설정 가능
sticky bit
- 모든 퍼미션이 777 이더라도 그 파일을 생성한 소유자나 수퍼유저가 아니면 해당 파일의 수정, 삭제가 불가능하도록 함
- 설정이 되어 있는 디렉토리 내의 파일이나 디렉토리는 다음의 조건에 한해서만 수정과 삭제가 가능
파일의 소유자
디렉토리의 소유자
수퍼유저
설정방법
- 숫자로 표현
4=setuid, 2=setgid, 1=sticky bit
# chmod 4755 setuid_program
- 문자로 표현
# chmod g+s some_directory
# chmod 1777 project
# chmod a=rwxt stickybit_program
# chmod a=rwxt project
※executable fild는 off 되어 있고 sticky fild가 셋팅되어 있으면 대문자 T로 에러 표시
# ls -ld /var/tmp2 drwxrwxrwt+ 2 sys sys 1024 12월 22일
21.Process Control
ps command
:현재 시스템에서 running 하고 있는 프로세스의 리스트 확인
PPID: parent process ID
C: processor utilization for scheduling
TTY: 해당 프로세스가 수행중인 터미널의 이름으로 ?마크는 데몬 프로세스를
나타냄
TIME: 해당 프로세스의 idle time
CMD: 프로세스의 이름과 경로
-옵션:
e:every process
f: full list 정보
kill command:
:명시된 프로세스에 시스널(신호)를 보내기 위해 사용
kill [-signal] PID(s)
시스널 번호를 명시하지 않으면 기본 시그널은 15번이고 이는 프로세스의 종료를 의미함
9: 프로세스의 강제 종료
시스널 번호 확인: man -s 5 signal
pgrep command
ps+grep
pkill command
ps+kill
at command
:지정된 시간에 특정 명령어나 스크립트를 한 번 수행함
- at [-m] [-r job번호] time [date]
m: 작업 종료 시 메일 보내 줌
r: 걸어 놓은 작업 해지
time: 수행시간 지정
date: 수행날짜 지정
- 예약작업 보기: # atq
- 작업취소하기 : # at -r job 번호:
- /etc/cron.d/at.deny: at 명령어 사용할 수 없도록 하고자 하는 사용자 등록
# at
at>/usr/bin/banner test > /dev/console
at> ^D
#arq (예약작업확인)
#at -r job 번호 (작업취소)
crontab command
-지정된 시간에 cron 데몬은 /var/spool/cron/crontabs 디렉토리에 있는 crontab
파일을 읽어 특정 명령을 규칙적으로 수행함
-리스트 보기:
# crontab -l
The root crontab File
/etc/cron.d/logchecker
cron의 로그 파일인 /var/cron/log 파일이 max size를 넘으면 /var/cron/olog 파일로 copy
/usr/lib/newsyslog
syslogd 데몬에 의해 생성된 /var/adm 밑의 log 파일을 지움
crontab access
/etc/cron.d/cron.allow: crontab 사용 가능한 사용자 등록
/etc/cron.d/cron.deny: crontab 사용 불가능한 사용자 등록
두 개 파일이 모두 존재하지 않으면 수퍼유저만이 crontab 수행가능
-crontab editing
#crontab -e
*분 시 일 월 요일 명령어(절대패스로 지정할 것)
0 12 1 1 * /new/lib/newsyslog
corntab
분: 0-59
시:0-23
일:1-31
월:1-12
요일:0-6
0 0 * * *:언제나
0 12 1 1 *: 1월 1일
22.Solaris syslog and Auditing Utilities
Syslog 데몬의 역할
시스템 로그에 메시지를 write 함
사용자들에게 메시지를 forward 함
시스템 콘솔에 메시지를 write 함
다른 호스트에 메시지를 forward 함:logfile을 다른 host에 보내어 해킹에 대한 보안 강화함
Confuguration file (/etc/syslog.conf)
Selector: 메시지를 만들어 낼 수 있는 프로세스의 카테고리인 facility와
Level: 메시지의 심각성에 대한 단계를 나타내는 level로 구성됨
Action: 메시지가 보내질 곳을 결정
*.err /var/adm/messages
facility.level action
every process에서 에러가 발생하면 /var/adm/messages에 로그파일로 남겨라.
/etc/syslog.conf 파일
/etc/syslog.conf 파일에서는 탭만이 여백으로 인정됨
facility: 메시지를 만들어 낼 수 있는 프로세스 카테고리
user, kern, mail, daemon, auth, lpr, news, uucp, cron, local0-7, mark, *
facility
- user: 사용자 프로세스에 의해 생성되는 메시지
- kern: 커널에 의해 생성되는 메시지
- mail: 메일과 관련된 메시지
- daemon: 시스템 데몬에 의해 생성되는 메시지
- auth: login, su, getty와 같이 authorization 관련 메시지
- lpr: The line printer spooling system
- news: 유즈넷
- uucp: The UNIX to UNIX copy system
- cron: crontab, at, cron 등을 포함하는 cron과 at facility
- local0-7: 로컬 사용을 위해 예약된 필드
- mark: syslogd에 의해 생성된 timestamp 메시지
- *: mark facility를 제외한 모든 facility
Level
- emerg: panic condition으로 모든 사용자에게 메세지를 broadcast함
- alert: 문제상황을 즉시 고칠수 있는 상태
- crit:하드 디바이스 에러와 같은 critical conditions에 대한 warning
- err: 그밖의 다른 에러들
- warning: 경고메세지
- info: 정보성메세지
- debug: 프로그램을 디버깅 할 때 사용되는 메세지
- notice: 에러 상태는 아니고 특별한 핸들링을 요구하는 상황
Action Filed
- /filename: 로그가 남겨질 절대 경로
-@host: 로그가 남겨질 호스트 이름
-usesr1, user2: 로그를 보낼 사용자 이름
-*: 로그인 되어 있는 모든 사용자에게 로그를 남김
명령어 라인을 통한 syslogd 의 시작과 종료
#/etc/init.d/syslog start|stop
23.Network Configuration
네크워크 설정 관련 configuration 파일
기본 설정 파일
- /etc/hosts
- - /etc/hostname
- - /etc/nodename
- - /etc/resolv.conf
- - /etc/nsswitch.conf
- - /etc/defaultrouter
- - /etc/defaultdomain
- - /etc/netmasks --> /etc/inet/netmasks
/etc/hosts
- 시스템의 loopback address와 IP address, hostname 등록
- 다른 host의 IP address 등록
- IP-address hostname [nickname] [#comment]
/etc/hostname.[le0, hme0..]
- port의 타입을 결정하고 hostname을 기록
- mac address와 IP address를 매핑시킴
Primary ethernet port(10 Mbps) -> hostname.le0
Secondary ethernet port(10 Mbps) -> hostname.le1
fast ehternet port(100 Mbps) -> hostname.hme0
- /etc/hostname.le0
edu001
/etc/nodename
- 시스템의 hostname 등록
/etc/resolv.conf
- DNS clinet setup
- 소속된 domain과 요청할 name server를 기록
domain name kr.psi.net
nameserver 203.255.112.34
/etc/nsswitch.conf
- Name service switch configuration file
- 각종 database file의 형태를 정의
- files, dns, NIS, NIS+
- DNS client setup
/etc/defaultrouter
- 시스템의 기본 라우터 정의
- 라우터가 정의되지 않으면 외부망과 연결 불가능
/etc/defaultrouter
203.235.127.254
/etc/defaultdomain
- 시스템의 기본 domain name 기록
/etc/defaultdomain
kr.psi.net
/etc/netmasks
- 시스템의 subnet mask 정의
- network address 와 netmask로 구성
203.235.127.0 255.255.255.0
IP주소 설정
ifconfig le0 203.235.127.1 netmask 255.255.255.0 up
IP address 제거
ifconfig le0 0.0.0.0 down
라우터 주소 설정(/etc/defaultrouter 파일의 내용 변경)
route add default 203.235.127.254 1
/etc 밑의 설정파일 수정
- /etc/resolv.conf
- - /etc/hosts
- - /etc/defaultdomain
- - /etc/nsswitch.conf
네트워크 관련 명령어
ifconfig
ifconfig 명령은 네트워크 인터페이스를 설정된 값을 확인하거나 네트워크 인터페이스에 address를 할당할 때 사용됨
iprb0: 인터페이스 이름
up: 인터페이스를 통해 패킷의 송수신 가능
running: 인터페이스가 커널에 의해 인식됨
mtu: 최대 전송 단위
notailers: 패킷 끝에 다음 패킷에 대한 헤더 정보를 넣지 않음
broadcast: 인터페이스가 브로드캐스트 주소 지원 가능
netstat
현재 네트워크 인터페이스의 상태를 확인하기 위해 사용함
-r: 라우팅 테이블 정보를 보여줌
-n: 결과를 숫자 형태로 보여줌
-a: connetion된 모든 호스트를 보여줌
충돌율: Coll/Oerrors*100
traceroute
원하는 host에 도달하기까지 시간과 거쳐간 host 즉 path 정보를 보여줌
snoop 명령어
네트워크 패킷을 capture하고 그 내용을 출력함
#snoop broadcast
-option
-v:TCP/IP 모든 계층의 header와 Application 계층의 데이터에 대한 정보를
아주 자세하게 보여줌
-o: snoop명령어의 output을 파일로 저장함
#snoop -o /tmp/snooper -V arp
-i: 파일에 저장한 내용 보기
#snoop -i /tmp/snooper
라우팅
정적라우팅
- route 명령으로 수작업함
- /etc/defaultrouter 파일을 생성하고 default router의 IP 기술
#cat /etc/defaultrouter
203.235.127.254
라우팅 테이블 확인
- netstat -r 명령으로 확인
- 라우팅 테이블의 flag
U: ethernet interface up
H: destination이 network이 아니고 호스트임을 나타냄
G: delivery host
24.DNS
DNS
DNS의 이해
Domain Name System이란 이름과 IP 주소를 매핑하여 주는 분산 네이밍 시스템
일반적으로 웹브라우저에 URL(hostname)을 입력하게 되고, 그 이후 해당 웹서버로 접속하게 된다.
하지만, 실제 packet에 적게 되는 것은 IP address이며, 이로 인해 routing이 가능해 진다.
Hostname를 IP address로 변환해 주는데, 이것에 대한 service를 DNS가 담당한다.
IP address가 Network number + Host number로 구성되어 있다면, FQDN = Hostname + Domain Name으로 구성된다.
DNS service는 Directory service의 한 종류로 DNS server는 자신이 담당하는 영역(domain)에 대해서만 응답 및 책임을 진다.
현재 BIND는 version 9.1.0 까지 release되었으며,http://www.isc.org에서 관리되고
있다.
Nameserver로서 동작하려면, BIND 소프트웨어어 설치와 설정 및 NIC(Network Information Center)에 등록을 하여야 한다.
com, net, org domain을 대행하는 http://www.networksolutions.net및 kr domain을 관장하는
http://www.krnic.net이 있다.
DNS-A Brief History
¶Early Internet naming problems
·Name uniqueness
¸Hosts.txt file maintenance
¹Server/network load
디렉토리 구조와 유사함을 알 수 있는데, Root domain(도트로 표시되는)은
Top level 도메인에 관한 정보를, Top level 도메인은 그 하위 도메인에 관한 정보를
유지/관리하는 구조를 취한다.
이러한 정보의 계층구조로 인하여 정보는 각 도메인의 네임서버(NS:Name Server)로
분산, 관리된다.
DomainName Name Resolving
1.Client상의 응용이 WWW.YAHOO.COM 에 접속하기 위해 자신의
Local Name Server(TCP/IP 설정시 명시한)에 질의한다.
2.Local NS는 먼저 자신의 캐쉬에 자료가 있는지 확인한 후 발견되지 않을시
Root NS(Root NS의 목록은 갖고있다)에 질의를 던진다.
그러나 Root NS도 WWW.YAHOO.COM 의 자료를 갖고 있지 않으므로,
COM 도메인을 관리하는 NS를 참고하라는 답변을 보내준다.
3.Local NS는 다시 COM NS에 질의를 던지고, COM NS는 다시 YAHOO.COM의
NS를 일러준다.
(루트(도트)와 COM 도메인은 Root NS에서 같이 관리되기 때문에 실제로
본 과정은 일어나지 않고 (2)번에서 바로 YAHOO.COM NS를
참고하라는 답변이 나온다.)
4.Local NS는 YAHOO.COM NS에 질의한다. YAHOO.COM NS는 서브도메인에
대한 자료를 관리하는 실제 NS 이므로, WWW.YAHOO.COM 에 대한 IP 204.71.200.74를
답변(authoritative answer) 한다. (실제 WWW.YAHOO.COM 에 대한 IP를 resolving 하면
매번 다른 IP 주소가 넘어오는 것을 볼 수 있는데, 이는 사이트가 다수의
미러링 서버로 운영되고, 부하 공유를 위해 해당 도메인에
다수의 IP를 매핑하였기 때문이다. (참고: 미러링 서버간의 부하 공유)
5.마지막으로, Local NS는 Client에게 결과를 전송한다.
DNS Name Resolving(Solaris)
Client /etc/inet/hosts file database Local nameserver Yahoo. Com. nameserver root nameserver Cache /etc/nsswitch.conf file hosts:files nisplus dns 1 2 3 4 7 8 9 10 11 12 6 /etc/resolve.conf 5 13
(resolver)
com
nameserver
1./etc/nsswitch 파일에서 name resolution의 순서를 확인한다.
2./etc/inet/hosts 파일로 name resolution 한다.
3.NIS+ hosts database로 name resolution 한다.
4./etc/resolv.conf 파일에서 name resolution을 제공할 도메인과 네임서버의 IP 주소를
확인한다.
5.local DNS server에게 서비스 받고자 하는 domain name (예:ftp.internic.net) 을 query
한다.
6.local DNS server는 자신의 캐쉬 정보를 통해 서비스 할 수 있는지 확인한다.
7.local DNS server는 root server에게 internic.net 도메인에 대한 정보를 가진 DNS 서
가 누구인지 query한다.
8.root server는 결과를 리턴한다.
9.local DNS server는 7의 query를 통해 알게된 정보 즉 net 도메인을 관리하는 네임서
에게 internic 도메인을 관리하는 네임서버가 누구인지 query 한다.
10.결과를 리턴한다.
11.Internic.net 네임서버에게 ftp.internic.net 도메인에 대한 IP를 query한다.
12.결과를 리턴한다.
13.client에게 client가 query한 ftp.internic.net 도메인에 대한 IP를 리턴한다.
네임서버의 유형
Primary server
해당 도메인을 관리하는 주 네임서버이다.
Secondary server
특정 도메인에 대한 back-up copy를 유지하는 서버이다. Secondary는 Primary가 비 정상 운행될 때와 부하를 분산시키기 위해 운용하며, 다수가 존재할 수 있다.
Secondary는 원칙적으론 외부 네트웍에 위치시켜 정전 등의 사태로 Primary가 다운되었을 때를 대비한다. 따라서, 도메인을 운영하기 위해서는 최소 2대(Primary * 1, Secondary * n) 이상의 네임서버가 요구된다.
Cache only server
도메인에 대한 데이터를 관리하지는 않고, resolving만을 처리해 준다. 만약, 본사와 지사가 있고 이 회사의 Primary, Secondary Name server가 모두 본사에 위치한다고 할 때, 지사에 위치한 네트워크 유저들은 Local DNS server가 없게 된다. 이럴 경우 도메인 resolving이 요구될 때마다 다른 네트워크(본사)로 접속을 시도하게 되므로 약간의 딜레이가 생기게 되며, 본사 네트워크가 단절 되었을 시 지사도 실질적으로 인터넷 사용이 불가능한 단점이 있다. 이럴 때 지사에 Cache only server를 운용하면 효과적으로 문제를 해결할 수 있다.
Resolv.conf file & nsswitch.conf
/etc/resolv.conf
- resolving 시 query를 던질 네임 서버를 지정한다.
- nameserver의 등록은 3개까지 가능하다.
- 먼저 “domain” 부분을 등록한다. (호스트명 뒤에 붙을 도메인 명)
- 다음으로 nameserver를 등록한다.
domain kr.psi.net
search kr.psi.net
nameserver 127.0.0.1
nameserver 203.255.112.34
nameserver 203.255.112.4
/etc/nsswitch.conf
- hosts 에 대한 resolving 시 참조하게 되는 파일들의 순서를 설정한다.
……
hosts: files dns
…...
/etc/named.conf
현재 가장 많이 사용되고 있는 BIND version은 크게 version 4와 8이다.
4와 8의 차이점은 거의 없다고 말할 수 있으나, named가 구동 되면서 최초로 읽게 되는 top level configuration file이 다르다.
4의 경우 /etc/named.boot를 8의 경우 /etc/named.conf를 읽어 들이게 되며 두 가지 file은 format만 틀릴 뿐 그 구성 요소는 동일하다.
/etc/named.conf 의 역할
- named가 어떠한 service를 할 것인가에 대한 정의
- 해당 service별 참조해야 할 file들이 어디에 위치하고 있는가에 대한 정의
- 해당 service별 특징 및 참조 file에 대한 정의
named의 경우 standalone type(부팅 시에 startup 되는 데몬 서비스) service이므로 설정 파일 변경 시 항상 재구동 하여야 함
named는 syntax error이든 logical error이든 상관하지 않고, 구동 되므로 service시작 시 log 파일을 참조하여 syntax error를 점검하여야 하며 resolver를 통하여 logical error를 수정해 나간다.
/etc/named.conf file
options {
directory “/var/named”;
};
zone “com” in {
type master;
file “com.zone”;
};
zone “127.235.203.in-addr.arpa” in {
type master;
file “com.rev”;
};
zone “0.0.127.in-addr.arpa” {
type master;
file com.loop;
};
zone “.” {
type hint;
file com.cache;
};
Directory 문장
-DNS 데이터 화일들이 위치하고 있는 곳을 지정한다.
-대부분 시스템의 기본 경로는 /var/named 이다.
Cache 파일
-root 네임서버의 위치를 알려 주는 파일이다. 타 도메인 정보를 루트네임서버로부터 알아내는데 참조한다. 대부분 네임서버에서 같은 파일을 가지고 있다.
-다른 도메인에 대한 질의를 처리하기 위해서는 root 네임서버의 위치를 알기 위해 필요한 파일이다.
named.conf 파일 해석
- com 도메인을 primary 서버로 설정하고 설정내용은 /var/named 디렉토리의 com.zone 파일을 참조한다.(domain-info)
-다음은 리버스 도메인에 관한 부분이며 IP로부터 도메인 이름을 찾을 때 사용된다.127.235.203.in-addr.arpa 도메인을 master로 설정하고 com.rev 파일에 reverse 설정에 관한 내용이 있다. (inverse-domain-info)
-0.0.127.in-addr.arpa 에 대한 1차 네임 서버임을 등록하는 부분으로 관련된 파일이 com.loop라는 것을 명시하고 있다.(loopback-domain-info)
Forward에 대한 정의 (primary의 경우)
zone “com” {
type master;
file com.zone;
};
Forward에 대한 정의 (Secondary의 경우)
zone “com” {
file com-slave.zone;
master { 203.235.127.30; };
};
Reverse에 대한 정의
zone “127.235.203.in-addr.arpa” {
type master;
file com.rev; };
/var/named
/var/named/com.zone
@ IN SOA edu030.com. root.edu030.com. (
990417 ; Serial
21600 ; Refresh (6h)
900 ; Retry (15min)
604800 ; Expire (7d)
43200 ) ; Minimun TTL (12h)
IN NS edu030.com.
IN MX mail.com.
edu030 IN A 203.235.127.30
mail IN A 203.235.127.30
corp1.com. IN NS edu001.corp1.com.
corp2.com. IN NS edu003.corp2.com.
edu001.corp1.com. IN A 203.235.127.1
edu003.crop2.com. IN A 203.235.127.3
www IN CNAME edu030
DNS Database 파일 포맷
기본형식
[name] [ttl] class type data
@의 의미
만약 해당 파일내에 $ORIGIN의 값이 셋팅되어 있다면 이 값으로 대치되고 그렇지 않다면 named.conf 파일에 정의되어 있는 해당 파일에 대한 도메인 명으로 대치된다.
SOA: start of Authority의 약자로 해당 도메인에 대한 실제적인 응답을 할 수 있는 권한을
가질 수 있는 호스트 이름 명시
Serial: 데이터의 변경 등이 있을 때마다 값을 하나씩 증가 시켜 주어야 한다. Secondary Server에서 refresh 할 때, 이 값이 증가되어 있을 때만 변경이 있는 것으로 판단되어 zone file을 새로 가져온다.
Fresh: Secondary Server가 Primary server로 데이터가 변경되었는지 확인하는 시간 간격(초)
Retry: secondary server가 primary server로 접속을 재시도 하는 간격(초)
Expire: secondary server가 Primary server에서 데이터를 못 가져올 때 기존 자료를 사용할 수 있는 시간(초)
Minimum: Resource Record를 위한 ttl(유효한 기간)의 값을 나타낸다.
NS: Name Server의 약자로 도메인 네임서버를 확인한다.
A: Address로 도메인 이름을 주소로 메핑하는 것을 의미
MX: Mail Exchange로 주어진 도메인 이름에서 메일을 전달할 곳을 확인한다.
PTR: IP 주소에 대해 도메인 명을 매핑시켜 주며 Reverse Zone File에서 사용한다.
CNAME: 도메인에 대한 또 다른 이름이 가능하도록 한다.
/var/named/com.rev
@ IN SOA edu030.com. root.edu030.com. (
990417 ; Serial
21600 ; Refresh (6h)
900 ; Retry (15min)
604800 ; Expire (7d)
43200 ) ; Minimun TTL (12h)
IN NS edu030.com.
30 IN PTR edu030.com.
/var/named/com.cache
@ IN NS edu030.com.
edu030.com. IN A 203.235.127.30
/var/named/com.loop
@ IN SOA edu030.com. root.edu030.com. (
990417 ; Serial
21600 ; Refresh (6h)
900 ; Retry (15min)
604800 ; Expire (7d)
43200 ) ; Minimun TTL (12h)
IN NS edu030.com.
1 IN PTR localhost.
/var/log/messages
name server의 경우 syntax error는 /var/adm/messages에 저장된다.
in.named를 start시키기 전에 messages file에 대해 monitoring을 준비한다.
# tail –f /var/adm/messages
이제 in.named start 를 통해 name server를 구동하고, messages file에 error를 점검한다.만약 syntax error가 발생하였다면, 어느 파일의 몇번째 라인(named.conf:16)이란 형태로 log에 나타날 것이다.
해당 file을 수정한 후 named를 재 구동한다.
Syntax error가 발견되지 않는다면 nslookup(resolver)을 통해 정상적으로 구동 중인지 여부를 점검한다.
'OS > SOLARIS' 카테고리의 다른 글
[펌] Solaris 100M-FD 설정 (0) | 2005.06.13 |
---|---|
[펌] [Solaris] NDD를 이용한 IP,TCP,ARP 튜닝하기와 ARP,TCP개념 (0) | 2005.06.13 |
[펌] autofs 설정하는 방법 (0) | 2005.04.02 |
[펌] jumpstart 입니다. 참고 하세요 (0) | 2005.03.18 |
[펌] Solaris ufsdump를 이용한 boot disk backup (0) | 2005.02.18 |