2009년 6월 19일 금요일

솔라리스 명령어

Solaris 부팅 순서

1. PROM이 POST를 실행
2. boot device 결정
3. 부트프로그램인 bootblk를 load
4. bootblk는 2번째 부트프로그램인 ufsboot를 load
5. ufsboot는 kernel을 load (32bit or 64bit)
6. kernel은 자신을 초기화하고 module을 load
7. configuration 파일인 /etc/system을 읽음
8. kernel이 /sbin/init을 실행

boot PROM 단계 : 1,2,3
boot program 단계 : 4,5
kernel 초기화 단계 : 6,7
init 단계 : 8

5) ufsboot -> 32bit or 64bit kernel을 load한다.
32bit kernel directory : /platform/`uname-m`/kernel
64bit kernel directory : /platform/`uname-m`/kernel/sparcv9

- 시스템이 32/64bit kernel로 운영중인지 확인 방법
# isainfo -kv

- solaris7에서 64bit kernel로 지정
# vi /platform/sun4u/boot.conf
ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true
# reboot

- 32bit->64bit
ok> setenv boot-file kernel/sparcv9/unix

- 64bit->32bit
ok> setenv boot-file kernel/unix
or
# eeprom boot-file=kernel/unix
# reboot

- null값에 의해 자동으로 32,64bit로
# eeprom boot-file=
# reboot

6) /kernel 디렉토리
기본값으로 load하는 kernel module은 /kernel, /usr/kernel, /platform/`uname -m`/kernel   or /platform/`uname -i`/kernel에서 찾는다.

- /kernel내의 모듈 유형
drv : device driver와 pseudo device driver
exec : 여러 실행 가능한 파일들ㅇ르 이용하는 모듈.
fs : ufs, nfs, proc 등의 파일 시스템 모듈.
misc : 가상기억연산과 프로세스간의 통신을 위해 필요한 여러 모듈.
sched : scheduling classes와 상응한 dispatch tables 모듈.
strmod : STREAMS 모듈.
sys : 로드 할 수 있는 시스템 호출.

/usr/kernel 디렉토리
kernel 모듈을 저장하고 있는 디렉토리
/kernel을 먼저 읽은 후 /usr/kernel을 찾는다.

7) /etc/system
부팅할 때 커널에 의해 로드되는 모듈들과 파미터를 정의하는 파일.
/etc/system 파일 내부에서 사용되는 변수
- moddir : 커널 모듈의 경로를 변경하여 지정하고자 할 경우 커널 모듈의 변경경로지정.
- root device and root filesystem configuration
  root devicedhk root 파일 시스템 정의
- exclude : 배제하는 모듈명 지정.
- forceload : 부팅시 무조건 메모리로 올릴 모듈명 지정.
- set : 시스템의 파라미터를 변경할 때 사용.

8) 커널이 /sbin/init 실행
커널이 /sbin/init 실행 ->
/sbin/init은 /etc/inittab 파일에 등록된 정보를 참고로 하여 rc script or 실행 가능한 다른 스크립트들을 차례로 실행. ->
init 수행 후 login 프롬프트 보여줌.

- /etc/inittab 파일
시스템 부팅시 init이나 shutdown 명령어에 의해 run level을 변경하고자 할 때 init 데몬은   /etc/inittab 파일로부터 정보를 얻어 프로세스 실행.

- /sbin/init(/etc/init와 링크) 프로세스의 /etc/inittab 파일 참조 부팅 순서
init process는 inittab 파일 load.
init process는 default run level3으로 정의된 initdefault entry load.
init process는 /sbin/autopush와 같은 action entry에서 sysinit을 가진 entry의 명령이나   스크립트 수행.
init process는 rstate entry에서 3을 가진 entry에 대한 스크립트들(/sbin/rc2, /sbin/rc3,    /usr/lib/saf/sac, /usr/lib/saf/ttymon 등)을 수행. sac와 ttymon은 console과 tty device의   로그인 서비스 제공.


- /etc/inittab 파일의 4개 필드
  id : rstate : action : process
  id : 최대 4자 가능. entry정의.
rstate : entry가 수행 될 run level 지정.
        공란 지정시 run level에 관계없이 언제나 수행.
action : initdefault : 기본 run level 정의 (default 3)
        respawn : 프로세스가 종료되면 다시 시작하여 해당프로세스가 존재하지 않을시에 inittab파일을 load해서 process 시작.
        wait : 자신에 의해 수행될 명령이 종료될때까지 그 다음 entry를 수행하지 말고 대기하도록 함.
        sysinit : 콘솔에 접근하려고 시도하기전에 process 실행.
                 run level에 상관없이 실행.
        respawn : 항상 process 실행.
        powerfail : init이 power fail signal을 받을때만 실행.
process : 실제로 수행 될 응용프로그램 or shell 스크립트 정의.

init0 = halt
init5 = poweroff
init6 = reboot

- run control 스크립트
process를 start하고 stop 시키는 run level과 밀접한 관계가 있는 rc 제공.
/sbin 디렉토리에 존재. rc0,rc5,rc6은 하드링크 되어 있음.
/etc 디렉토리의 rc script와 심볼릭 링크.

/etc/rc#는 /etc/rc#.d 아래에 해당하는 파일 존재.

/etc/init.d는 start or kill 시키는 실질적인 run control 파일 존재.
/etc/rc#.d 디렉토리와 하드링크 되어 있음.

스크립트 실행 순서
# init 2 -> /etc/inittab -> /sbin/rc2 -> /etc/rc2.d/S* or K*
                                        /etc/init.d와 하드링크

- run control 파일 추가하기
# more /etc/init.d/sample
  echo hello solaris
# cd /etc/rc3.d
# ln /etc/init.d/sample S22sample
# /sbin/rc3




Boot PROM
Stop : 부팅시 Stop키가 눌려져 있으면 POST 과정을 검사 안함.
Stop+d : default로 cpu,mem검사를 하지만 Stop+d는 집중적으로 전체 device 검사.
Stop+n : 모든 상태 초기화. boot prom의 변수를 잘못 설정하여 시스템이 비정상적으로 동작할 때 Stop+n키를 누른 상태에서 재부팅하면 모든 변수를 기본값으로 바꾸어 처음 시스템을 사용할때와 동일하게 동작한다.
Command
Description
banner
displays the power-on banner
boot
boots the system
help
lists te main help categories
printenv
displays all parameters' current and default values
setenv
sets the specified NVRAM parameter to some value
reset-all
resets the entire system; similar to a power cycle
set-defaults
resets all parameter values to the factory defaults
sifting text
displays the FORTH commands containing text
.registers
displays the contents of the registers
probe-scsi
identifies the devices on the internal Small Computer System Interface(SCSI)
probe-scsi-all
identifies the devices on all SCSI buses
probe-ide
identifies the devices on the internal intergrated device electronics (IDE) bus
probe-fcal-all
identifies devices on all Fibre Channel loops
show-devs
displays the entire device tree
devalias
identifies the current boot device alias for the system
nvalias
creates a new device alias name
nvunalias
removes a device alias name
showdisks
displays and allows a selection of device paths for the disks to be used for nvalias
sync
manually attempts to flush memory and synchronize file systems
커널자료덤프-> /var/crash/host명/덤프파일
test
runs self-tests on specified devices

- 장비의 기본 옵션 보기
ok> banner

- Boot PROM의 버전과 출시일 보기
ok> .version

- Devices 연결 상태 보기
ok> probe-scsi
ok> probe-scsi-all
ok> probe-ide
ok> probe-fcal

- Alias 내용 보기
ok> devalias (physical name이 특정 이름으로 alias 되어 있는 리스트)

- 환경 설정 내용보기
ok> printenv (부트파라미터의 기본값 display)

- 환경 설정
ok> setenv <parameter_name> <value>
    (prom 변수값의 변경, 부팅디스크의 변경, 자동 부팅 여부 등)
ok> reset (setenv에 의해 변경된 값 저장 후 재부팅)

- Default값으로 변경하기
ok> set-default (지정한 파라미터값을 처음 정의되었던 기본값으로 변경)
ok> set-default parameter-name
ok> set-defaults (모든 환경값을 기본값으로 변경)

- Boot
ok> boot -s
ok> boot -v (부팅시 더 자세한 device 정보를 보여줌)
ok> boot -a (사용자 입력을 기다리는 interactive mode로 부팅)
     Enter filename : kernel/unix (32bit only) - 일시적(재부팅하면 예전값 복원)
                     kernel/sparcv9/unix (32,64bit) -일시적
     Name of system file : /etc/system or /dev/null
ok> boot -r (새로 추가된 device들의 device 파일을 새로 만듬)

- 도움말 보기
ok> help boot
ok> help nvramrc
ok> help diag
ok> help misc

- 자동 부팅 설정/해제
ok> printenv auto-boot?
auto-boot? = true
ok> setenv auto-boot? false
auto-boot? = false
ok> reset-all
Resetting ...

- 펌웨어 password 설정 / 해제
ok> setenv security-mode full  (설정)
ok> setenv security-password passwd명
ok> reset
ok> setenv security-mode none  (해제)

- 랜포트가 여러개 일때 1개의 mac address만 사용
ok> setenv local-mac-address? false
ok> setenv local-mac-address? true
ok> reset

- 명령어 리스트 보기
ok> sifting
ok> sifting probe

- 네트워크 검사
ok> watch-net  (네트워크카드의 정상 동작 상태 확인)

- physical path 보기
ok> show-disks
ok> show-nets
ok> show-devs



- mirror disk가 1개 따로 있어서 백업을 받아둔 상태에 원본 disk가 fail시 교체
ok> show-disks
  disk를 선택한다.
ok> nvalias mydisk [ctrl+y]@target_numner
ok> devalias
ok> setenv boot-device mydisk
ok> reset

ok> nvunalias mydisk  (alias 삭제)
ok> setenv boot-device disk
ok> reset-all

- eeprom 명령어
# eeprom
# eeprom boot-device
boot-device=disk
# eeprom boot-device=disk2
# eeprom auto-boot?=true (sh,ksh)
# eeprom 'auto-boot?=true' (csh)

- Slice(partition number)
  slice0 : /
  slice1 : swap
  slice2 : 전체 disk
  slice5 : /opt
  slice6 : /usr
  slice7 : /export/home




Managing Initialization Files

- Intialization Files for the Primary Shells
Shells
System-Wide
Initialization Files
Primary Initialization
Files Read at Login
User Initialization Files Read When a New Shell is Started
Shell Path Name
Bourne
/etc/profile
$HOME/.profile
 
/sbin/sh
Korn
/etc/profile
$HOME/.profile
$HOME/.kshrc
$HOME/.kshrc
/bin/ksh
C
/etc/.login
$HOME/.cshrc
$HOME/.login
$HOME/.cshrc
/bin/csh

- Default User Initialization Files
Shell
Initialization File Templates
User Initialization Files
Bourne
/etc/skel/local.profile
$HOME/.profile
Korn
/etc/skel/local.profile
$HOME/.profile
C
/etc/skel/local.cshrc
/etc/skel/local.login
$HOME/.cshrc
$HOME/.login

- Login Variable
변수명
Set By
Description
LOGNAME
Login
Defines the user's login name.
HOME
Login
Sets the path to the user's home directory. It is the default
argument for the cd command.
SHELL
Login
Sets the path to the default shell.
PATH
Login
Sets the default that the shell searches to find commands.
MAIL
Login
Sets the path to the users's mailbox.
TERM
Login
Defines the terminal.
LPDEST
Not set by default
Sets the user's default printer.
PWD
Shell
Defines the current working directory.
PS1
Shell
Defines the shell prompt for the Bourne or Kornn shell.
prompt
Shell
Defines the shell prompt for the C shell.





Managing User Accounts
1) 파일 관리
/etc/passwd
/etc/shadow
/etc/group

- /etc/passwd 파일
Field in the /etc/passwd File
loginID:x:UID:GID:comment:home_directory:login_shell
Field
Description
loginID
user's login name
x
user's encrypted password, /etc/shadow에 보존.
UID
100~60000 : 사용 가능.
0~99 : system accounts.
60001 : nobody
60002 : noaccess
GID
100~60000 : 사용 가능.
0~99 : system accounts.
comment
user's full name
home_directory
user's home directory
login_shell
user's login shell. ( /sbin/sh or /bin/ksh or /bin/csh )

Default System Account Entries
User Name
UID
Description
root
0
root account (access to the entire system)
daemon
1
routine(독립적으로 명령을 수행할 수 있는 명령어 집단) system tasks.
bin
2
running system binary files
sys
3
system logging or updating files in temporary directories
adm
4
system logging
lp
71
line printer
uucp
5
UNIX-to-UNIX Copy Protocol 기능.
nuucp
6
remote systems to log in to the host and start file transfers.
smmsp
25
sendmail message submission
listen
37
network listener
nobody
60001
인증되지 않는 root 사용자가 요청시 NFS에 의해 할당 받는다.
software processes that do not need any special permissions.
noaccess
60002
a user or a process that access to a system through some application instead of through a system login procedure.
nobody4
65534
SunOSTM 4.0 or 4.1 software version of the nobody account.

- /etc/shadow 파일
loginID:password:lastchg:min:max:warn:inactive:expire
Field
Description
loginID
user's login name
password
A 13-charactoer encrypted password.
lastchg
the last password modification date.
min
이 기간동안 password를 바꾸지 마라.
max
이 기간내에 password를 바꿔라.
warn
정해진 기간 며칠전에 password 변경 권고창을 띄운다.
inactive
일정기간 동안 login을 하지 않으면 lock을 건다.
expire
password 만료. login이 할 수 없다.

- /etc/groups 파일
groupname:group-password:GID:username-list

- /etc/default/passwd 파일
/etc/shadow에 먼저 등록이 되어 있으면 /etc/default/passwd의 내용은 무시된다.
Field
Description
MAXWEEKS
이 기간내에 password를 바꿔라.
MINWEEKS
이 기간동안 password를 바꾸지 마라.
PASSLENGTH
password 길이 = 6 or 7 or 8 사용 가능
WARNWEEKS
password가 만료되기 전에 경고창을 띄워라. default로 이 필드가 존재하지 않으므로 생성해 주어야 한다.


2) Managin User Accounts
- useradd 명령어
# useradd -u 100 -g other -m -d /export/home/blackbat -s /bin/ksh
   -c "blackbat home" blackbat
# passwd blackbat
# passwd -l blackbat  (lock 걸기)
# passwd -d blackbat  (lock 풀기, passwd가 지워지므로 다시 설정해준다.)
# useradd -D  (/usr/sadm/defadduser 파일 생성. 편집기로 default 정의 가능)

/home에 계정 만들기
# vi /etc/auto_master
  #home ...... (home에 ‘#’ 표시 해 준다.)
# automount -v
or
# /etc/init.d/autofs stop

- usermod 명령어
# usermod -m -d /export/home/newblack -l newblack blackbat
  (blackbat에서 newblack으로 login name과 home directory를 변경한다. passwd는 변경되지 않는다.)

- userdel 명령어
# userdel blackbat
# userdel -r blackbat  (home directory까지 삭제)

- groupadd, groupmod, groupdel 명령어
# groupadd -g 301 class
# groupmod -g 400 class
# groupdel class




Device 설정 정보 보기
- Device Naming Conventions
Logical device name : /etc/dev/
Physical device name : /devices
Instance name : /etc/path_to_inst

- # cat /etc/path_to_inst  (인식하는 정보만 보여줌)
각 device의 instance name, number와 physical name display
  sd : disk
  fd : floppy disk
  se : serial ports A and B
  st : tape devices
  power : power management bus
  su0 : keyboard   su1 : mouse
  audiocs : crystal semiconductor
  ecpp : extended capability parallel port
  hme : fast ethernet

- # dmesg
각 device들의 physical name, OS revision number, ethernet address, physical memory
size 등 확인.
= # more /var/adm/messages

- # prtconf  (인식하지 않는 정보도 보여줌)
  /etc/prtconf -> ../usr/sbin/prtconf
  memory, peripheral configuration 등의 시스템 구성 정보 출력.
  -F : console frame buffer의 pathname
  -P : PROM mode의 정보
  -p : pseudo device 정보
  -v : verbose mode
  # prtconf | grep -v not ('not' 포함하는 라인을 생략하고 정보 출력)
  # prtconf | grep Memory (memory 확인)

- # psrinfo -v (cpu clock 확인)
- # isainfo -kv (32 or 64bit 확인)

- # sysdef
  prtconf 이외의 추가정보 보여줌.
  hostid, pseudo devices, loadavle modules, H/W device, select kernel parameter값,     system device
  # sysdef | grep -v not | more

- # format
  disk 선택
  format -> partition -> print
  partition 수정
  label -> buffer -> VTOC(파일시스템의 0번째 섹터,512byte,디스크정보 포함)
  name test01
  save -> /etc/format.dat에 저장
  사용가능한 disk의 physical device name과 logical device name 출력.
  ^D를 누르면 메뉴에서 빠져 나옴.

- # prtvtoc /dev/rdsk/c0t0d0s2  (VTOC 내용 확인)

- Relabeling a Disk (disk의 VTOC 정보를 그대로 사용하고 싶을때)
# prtvtoc /dev/rdsk/c0t0d0s2 > /vtoc (VTOC 백업)
# ftp 192.168.0.151
ftp> put vtoc
# dd if=/dev/zero of=/dev/rdsk/c0t0d0s2 bs=512 count=1
(VTOC=512byte  VTOC가 512byte이므로 1번만 넘김.)
ok> boot cdrom -s
# TERM=sun  (vi editor enable)
# export TERM
# ifconfig -a
# ifconfig hme0 192.168.0.150 up
# cd /tmp/root
# ftp 192.168.0.151
ftp> get vtoc
# fmthard -s ./vtoc /dev/rdsk/c0t0d0s2  (VTOC 복구)

- 하드디스크 백업
# dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t1d0s2 bs=1024
                                                  1024byte 단위로 전송




Device 재구성
- /reconfigure 파일 이용 (/dev, /devices, /etc/path_to_inst에 동시 등록)
# touch /reconfigure
# init 5
추가 disk 연결
power on

- ok mode에서 인식 (/dev, /devices, /etc/path_to_inst에 동시 등록)
ok> boot -r

- reboot하면서 인식 (/dev, /devices, /etc/path_to_inst에 동시 등록)
# reboot -- -r

- prompt상에서 바로 인식 (/dev, /devices, /etc/path_to_inst에 동시 등록)
# devfsadm  (Solaris8 이상에서 사용)
시스템의 모든 driver를 로드하기 위해 시도하고 가능한 모든 device instance 추가
# devfsadm -c disk
# devfsadm -c disk -c tape -c audio (여러개의 device class 명시)
# devfsadm -i dad (dad driver에 의해 지원되는 disk들만 구성)
# devfsadm -i sd (sd driver에 의해 지원되는 disk들만 구성)
# devfsadm -i st (st driver에 의해 지원되는 disk들만 구성)

# drvconfig (/devices, /etc/path_to_inst에 등록, Solaris7에서 사용)
# devlinks [disks or nets or ports]  (/dev에 등록)




Solrais file system
ufs(Unix File System) : 여러개의 physical disk를 가지며, 각각의 disk는 하나 이상의 file system을 갖는다. kernel은 각각의 file system을 다루며 각 file system마다 device number(/dev/dsk/c0t0d0s0)를 부여하여 이를 logical device로 다룸.

- File System의 종류 -
Disk-Based file system
Distributed file system
Pseudo file system

1) Disk-Based file system
Hard disk, CD-ROM, disket, DVD 등을 포함.
- ufs(Unix File System) : unix system 표준. solaris 기본 파일 시스템.
- hsfs(high sierra file system) : CD-ROM
- pcfs(pc file system) : DOS FAT32 file system이 data access 지원.
- udfs(universal disk format file system) : DVD와 CD-ROM을 대상으로 optical storage를 위한 file system.

2) Distributed file system
네트워크를 통한 file system resource 접근, 분산형 data 처리 방식.
- NFS(Network File System) : 네트워크에서 다양한 유형의 시스템 사이의 파일 공유를 위한 file system.

3) Pseudo file system (메모리기반의 파일시스템)
특별한 커널 정보와 기능에 접근을 제공하는 memory-based file system
- tmpfs(temporary file system) : local memory로 사용. /tmp
- swapfs(swap file system) : swap space를 위하여 커널에 의해 사용. (메모리 + swap)
- fdfs(file descriptor file system) : file descriptor를 사용하고 있는 파일명으로의 접근 허용.
                                  /dev/fd/0, /dev/fd/1, /dev/fd/2, .....
- profs(process file system) : /proc에서 활동하는 process list 포함. ‘#ps’로 확인.




Solaris ufs file system 구조
하나의 file system은 label, boot block, super block, cylinder group block, inode table, data block으로 구성.

1) Disk Label(VTOC)
disk의 첫 번째 sector(512byte=1block), disk file system 정보인 파티션 table 포함.
=VTOC(Volume Table Of Content) = Disk label
: disk controller, 지오메트릭(섹터,트랙,실린더), 슬라이스에 관한 정보 제공.
- 포함 내용 -
disk pertition table
disk device를 구분하는 volume name
Optional Partition tag(각 partition의 mount point name)
Optional Partition flag(각 partition의 writable인 mountable인지 결정하는 값)
2) Boot Block
- label 다음의 15개 disk sectors(sectors 1-15)로 구성.
-운영체제를 부팅하거나 초기화하는 bootstrap program(bootblk) 포함.
3) super block
- boot block 다음의 16개의 disk sectors(sectors 16-31)로 구성.
- file system 전체를 관리.
- super block은 메모리에 적재되어 사용하므로, 시스템을 정지할때는 sync 명령어로 디스크에 작성한 후 정지한다.  평소에는 update라는 프로그램이 30초마다 sync 명령 수행.
- super block 포함 내용.
  file system size
  label(file system name and volume name)
  file system logical block이 size
  last update 시간과 날짜
  cylinder group size
  cylinder group내의 data block number와 fragment의 size
  data block의 요약정보
  last mount point의 경로명
  file system의 상태값(clean, stable, active, logging or unknown)
4) cylinder group
partition을 cylinder group(1group당 16sectors)로 나누어 disk 접근 향상.
- backup superblock : superblock 자체적으로 가지고 있는 백업본.(sector 32)
                       file system을 처음 만들때 생성된다.
- cylinder group block 내용
  inode 수
  cylinder group에서의 data block 수
  directory 수
  free block의 map
  cylinder group에서 free block, free inode, free fragment number
- inode table : 하나의 file system에서 file or directory inode가 가지고 있는 table.
  file type(일반파일, directory, block special, character special, 심볼릭링크, FIFO, 소켓.
  file mode(r, w, x, permision), file 하드 링크 수, 파일 소유자의 UID
  file이 속하는 group의 GID
  file byte 수
  file이 마지막으로 수정된 날짜, 시간
  file이 마지막으로 access된 날짜, 시간
  file이 만들어진 날짜, 시간
- data block : 실제 data가 저장되는 영역.
  1data block = 8192kb = 8×1024kb(fragment)

hard link & symbolic link
inode : 파일이나 디렉토리의 속성을 가지고 있다.
        퍼미션이나 size 등...
hard link
symbolic link
# ln Source_file Destination_file
ex) # ln A B
# ln -s Source_file Destination_file
ex) # ln -s A B
A->100->data
B->100↗
B는 A와 같은 inode를 가지고 있으며 inode가
바로 data를 access한다.
A->100->data
B->200->'A'의 inode=100
B는 A의 inode 정보만을 가지고 있고, data access시에 A의 inode를 경유해서 access한다.
inode가 동일하다.
inode가 다르다
디렉토리링크가 안 된다.
디렉토리링크가 가능하다.
동일 filesystem에서만 가능하다.
다른 filesystem에서도 가능하다.
같은 slice에서만 가능하다.
다른 slice에서도 가능하다.


< file과 directory의 inode 확인 방법 >
file의 inode
# ls -l /etc/passwd  (file의 inode 확인)
-r--r--r--       1      root  ............
               링크카운트
# cat /etc/passwd  (file의 data 확인)

directory의 inode 확인 방법
# ls -ld /etc/  (directory의 inode 확인)
# ls -l /etc (directory의 내용 확인)
# du -sk /etc (directory의 size 확인)

symbolic link의 실제 파일의 퍼미션 확인 방법
# cd /
# ls -l bin
total 135
lrwxrwxrwx   1   root   ...........    bin -> ./usr/bin
심볼릭링크의 실제퍼미션이 아님.
# ls -lL /usr/bin  (파일의 실제 퍼미션 확인)

inode가 같은 파일 찾기
# cd /etc/init.d
# ls -l
# ls -i cron
# find /etc -inum xxxx




File System 생성
새롭게 파티션된 disk는 ‘newfs' or 'mkfs'를 사용하여 파일시스템을 새로 만들어주어야 함.
# newfs /dev/rdsk/c0t0d0s7
newfs 실행 후 lost+found 디렉토리 생성. fsck에 의해 파일시스템 복구 or 체크에 사용.
inumber가 153이라면 파일이름은 000153이다.

- dsk와 rdsk의 차이점 -
dsk : block device, 8kb단위, mount 명령에 사용.(속도를 필요로 하는 작업)
      mount 시에 사용한다.
rdsk : character(raw) device, 512byte(sector)단위.
      dsk보다 셈세함을 요구하는 fsck, newfs 등에서 사용한다.

- minfree : system maintenance를 위해 예약되어 있는 10%의 disk 공간.
newfs 명령어 실행시 파일시스템의 크기에 따라 적절한 값을 계산하여 사용한다. 파일시스템에 여분의 공간을 마련하는 것은 파일시스템의 성능 때문이다. 파일시스템에 여분의 공간이 적으면 이미 존재하는 파일의 크기가 커지거나 새로운 파일이 생성될 경우 추가로 소모되는 데이터블록을 파일시스템에서 찾는데 시간이 많이 걸린다. 이 시간을 줄여기 위해서 시스템에 적절한 여분을 두는 것이 좋다.
<block 내용 보기 - minfree 확인 가능>
# fstyp -v /dev/rdsk/c0t0d0s0 | head -10
bsize  ...... (data block size)
fsize  ......  (단편화 size)
단 편화 : 동적으로 기억 장치를 관리하는 시스템에서 빈번하게 기억 장소가 할당되고 반납되는 과정에서 기억 장소들이 조각조각으로 연결되는 상황이 발생하게 된다. 이러한 상황에서 커다란 크기의 기억 장소를 요구하는 프로그램이 들어오게 되면 시스템에 기억 장소가 존재함에도 불구하고 프로그램에 하나의 연속된 기억 장소를 할당할 수 없게 된다. 이처럼 사용 가능하면서도 시스템의 이곳 저곳에 흩어져 있기 때문에 실제로는 사용할 수 없는 기억 장소 조각들로 나누어져 있는 현상을 지칭한다.

# file /export/home/lost+found/#788  (file 유형 보기)

<file system 생성 전>
# newfs -m 2 /dev/rdsk/c0t0d0s7
(2 : 2% free를 뜻함.)

<file system 생성 후>
# tunefs -m 2 /dev/rdsk/c0t0d0s7

- File system의 유형을 정의하는 file
# more /etc/default/fs (기본 local file system의 유형 정의)
# more /etc/dfs/fstypes (기본 remote file system의 유형 정의)
# fstyp /dev/rdsk/c0t0d0s7
(raw devie name과 함께 사용하여 file system의 유형을 보여줌)




File System Mounting
mount 정보 보기
/usr/sbin/mount : 현재 mount된 모든 file
/etc/mnttab : mount table
# df -k

- /var/run file system
tmpfs로써 mount된 file system. 재부팅시 필요없는 임시 파일 저장소.
umount or umountall에 의해 unmount 되지 않는다.

File system mounting
1) /usr/sbin/mount 명령어
부팅시에는 /sbin/mount을 이용해서 실행하고, command line에서는 /usr/sbin/mount 명령어를 사용한다.
-F : mount를 원하는 file system 유형 정의.
-m : mount 명령어 사용시 /etc/mnttab을 수정하지 않는다.
-o : ufs file system의 마운트를 위한 특별한 옵션 정의.
ex)
# mount /dev/dsk/c0t0d0s7 /usr1
# mount -F ufs -o ro,nosuid /dev/d나/c0t0d0s7 /usr3
(file system은 ufs, 읽기 전용, setuid 실행을 원치 않는 조건으로 mount)
# mount -o remount,noatime,logging /dev/dsk/c0t0d0s0 /
(운영중인 c0t0d0s0를 다시 마운트 하기)

2) /usr/sbin/umount 명령어
# umount /usr1
or
# umount /dev/dsk/c0t0d0s7

3) /etc/vfstab
- 시스템 부팅시 file system이 mount 되도록 정의 가능.
- mount point와 slice의 logical device name과 mapping 관계를 포함하고 있기 때문에 mount point name만 가지고 file system mount 가능.

4) /usr/sbin/mountall 명령어
- system 부팅시 /etc/vfstab 파일안의 mount at boot field가 yes이면 mount한다.
- command line에서 /etc/vfstab 파일안의 mount at boot field가 yes이면 mount한다.
# mountall
# mountall -l

5) /usr/sbin/umountall 명령어
- 시스템이 정지되는 동안 /etc/mnttab 파일을 읽어 file system umount.
- /, /usr, /proc, /dev/fd, /var, /var/run, /tmp file system을 제외한 /etc/vfstab에 정의되어 있는 모든 file system을 umount
# umountall

6) /usr/sbin/ 명령어
file system에서 활동중인 사용자 process들의 PID 출력
- /export/home file system을 사용하고 있는 PID 출력/중지
# fuser -c /export/home
# fuser -c -k /export/home
- /cdrom/cdrom0 file system을 사용하는 소유자에 의해 소유되고 있는 PID 출력/중지
# fuser -u /cdrom/cdrom0  (프로세스와 소유자 표시)
# fuser -u -k /cdrom/cdrom0
or
# umount -f /export/home

7) /etc/vfstab 필드
- device to mount : block device(mount에 사용할 device)
- device to fsck : raw device(fsck에 사용할 device)
- mount point : mount시 사용할 디렉토리(존재하고 있어야 함)
- FS type : file system type
- fsck pass : 부팅시 fsck 검사 실행.
            0 or - : fsck 실행하지 않는다.
            1 : fsck 실행.
            1 이상 : 디스크의 효율성을 위해 여러개의 파일시스템을 함께 fsck 실행.
- mount at boot : 부팅시 mount 실행.
                 fd, /proc, /dev/dsk/c0t0d0s0, /dev/d나/c0t0d0s1은 ‘no'로 설정되어 있지만 vfstab을 실행하기 전에 script로 먼저 mount 실행.
- mount option : mount시 실행 될 옵션 설정.
               rw : 읽고 쓰기 가능 ↔ ro
               setuid : SUID 설정 ↔ nosuid
               intr : locked system에서 동작을 기다리는 프로세스를 키보드를 이용해서
                    interrupt 할 수 있도록 허용. ↔ nointr
               logging : 메모리의 데이터 변경시 데이터의 안정성을 위해서 파일시스템에 함께 기록한다. 비정상 종료시 data가 안전하기 때문에 재팅시  fsck를 자동으로 수행하지 않는다. ↔ nologging
               nolargefiles : 2Gbytes 이상의 파일 생성이 불가능하다.
                            ↔ largefiles(1TBytes까지 가능.)
               fg : foreground로 실행한다. ↔ bg
               soft : 한 번 실행 실패시 다시 재실생하지 않는다. ↔ hard
               noatime : 파일의 세가지 시간정보를 수행하지 않는다. 속도 향상.
                        (마지막으로 수정, accessed, inode가 변경된 시간) ↔ atime
                        atime을 설정하면 파일변경시 inode 데이터를 그때마다 하드디스크에 기록해야 하므로 시간이 많이 소요된다.
               omerror=panic or lock or umount : 솔라리스 커널 자체의 이상으로 인하여 파일시스템에 이상 발생시 대처 방안 설정.
                        panic : 시스템 재부팅(/var/crash/시스템명/vmcore.0 등이 생성)
                        lock : 파일시스템에 lock을 걸어서 파일시스템의 내용을 읽지도  변경하지도 못하게 함.
                        umount : 해당 파일시스템을 unmount한다.
               xattr : 표준 UNIX속성에서 발견되지 않은 확장된 속성 지원.

Floppy와 CD-ROM Mounting
1) /usr/sbin/vold 데몬이 제어한다.
# volcheck
# cd /floppy/floppy0
# eject /floppy/floppy0

2) Volume Management 관리
# /etc/init.d/volmgt stop
# /etc/init.d/volmgt start
- /etc/vold.conf 파일
volume management configuration 파일. media의 insert or eject 시기, 사용 device, 어떤 file system이 안전하지 못해 eject 되는지 등에 대한 action 정의.
- /etc/rmmount.conf 파일
rmmount 명령어의 configuration 파일. Floppy or CD-ROM 삽입시 volmgt 데몬에 의해 실행되는 media mounter 제거.

3) Volume Management를 이용하지 않는 Floppy와 CD-ROM mount
# mkdir /CDROM
# mkdir /Floppy
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /CDROM
# mount -F pcfs /dev/fd0 /Floppy
# umount /CDROM
# umount /Floppy





File System Maintenance
1) Data의 모순성 검사
fsck utility가 검사하는 ufs file system 항목.
- super block : file system의 모든 요약 정보 포함. 가장 일반적인 문제 발생.
- inode : inode 일치 여부 검사
- indirect block : inode에 의해 소유. 이 block의 문제점은 inode에 영향을 준다.
- data block : inode는 직/간접적으로 3종류의 data block을 참조한다.
               평범한 data block, 심볼릭 링크 data block, 디렉토리 data block

2) FSCK Utility
- phase1 : check blocks and sizes
inode검사단계->파일유혀의 이상유무, disk block의 주소, size, link count 검사.
- phase2 : check pathnames
파일시스템의 디렉토리 구조 검사단계->root 이하의 모든 디렉토리에 대해 각 파일 이름과 inode link에 대한 이상유무 검사.
- phase3 : check connectirity
파일시스템의 디렉토리 검사->디렉토리 구조가 잘못되어 파일이름과 inode link의 디렉토리 entry가 없을 경우 복구.
- phase4 : check reference counts
superblock내의 할당된 파일수와 디렉토리 검사, 파일수를 비교 후 복구.
- phase5 : check cyl groups
consistency를 위해 사용된 inode map과 free block 검사.

- non-interactive mode : 시스템이 정상적으로 부팅시 non-interactive mode로 운영. 관리자의 개입없이 repair 할 수 있는 문제 해결. repair 할 수 없는 경우에는 fsck 종료 후 - single user 모드로 올린 뒤 관리자에게 interactive fsck 실행.
interactive mode : 문제가 발생될때마다 문제의 수정 방법 제시. 관리자가 결정.

# umount /export/home
# fsck /dev/rdsk/c0t0d0s7
# fsck -V /export/home (fsck가 실행되지 않고 실행명령어를 자세히 보여줌.)
# fsck -m /dev/rdsk/c0t0d0s7 (파일시스템을 검사하여 시스템의 상태값 리턴)

- Bad superblock 복구
backup superblock은 offset 32에 존재. superblock 문제 발생시 사용.
# umount /file7
# newfs -N /dev/rdsk/c0t0d0s7 (backup superblock 확인)
# fsck -F ufs -o b=5264 /dev/rdsk/c0t0d0s7 (b는 backup superblock 중 한개 선택)




디스크사용관리
- df 명령어 : 각 파일시스템의 disk space에 대한 정보 보여줌.
# df  (block 단위로 disk space display)
# df -b  (kb단위로 보여줌. 사용 가능한 디스크 공간)
# df -k  (disk space 정보를 kb단위로 보여줌)
# df -n  (파일시스템의 유형을 보여줌)
# df -F ufs -h (ufs 파일시스템만 보여줌)
# df -F ufs -o i  (mount된 inode 내역 및 정보 보여줌)

- du 명령어 : directory와 file에서 사용하는 disk space를 512byte단위로 보여줌.
# cd /export/home
# du  (512byte 단위로)
# du -k  (kb단위로)
# du -ak  (모든 블록수와 kb단위로)
# du -sk (디스크 사용량의 요약을 kb단위로)

- ff 명령어 : 파일시스템의 파일들에 대한 inode number와 path name 제공.
# ff /dev/dsk/c0t0d0s7  (파일들의 inode number와 pathname)
# ff -V /dev/dsk/c0t0d0s7  (사용법 확인)
# ff -s /dev/dsk/c0t0d0s7  (inode number, 경로명, size=byte로 표시)
# ff -u /dev/dsk/c0t0d0s7  (inode number, 경로명, 파일소유자 표시)

- quot 명령어
각 사용자에 의해 사용된 disk 사용량을 1kb단위로 표시.
(-a : 모든 디스크 사용량을 1kb단위로
  -f : 각 사용자의 disk 사용량과 파일 수 보여줌.)
# quot -a
# quot -af
# quot -f /dev/dsk/c0t0d0s7
/dev/dsk/c0t0d0s7:
  134       62       root
  103       84       user1  
파일 수   소유 공간

- quota 설정
각 사용자에 대해 disk의 space를 제한하여 사용하도록 함.
# vi /etc/vfstab
/dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /file7 ufs 2 yes rq(request quota)
# touch /file7/quotas
# chmod 600 /file7/quotas
# quotaon -v /file7 (quota turn on)
# /usr/sbin/edquota user1  (각 user의 디스크사용량 할당)
# quotacheck -av  (quota 적용)
# quota /dev/dsk/c0t0d0s7  (quota 확인)

- swap : physical memory가 부족시 virtual memory storage 영역으로 사용.
1) swap 명령어 : swap 추가,삭제,수정 가능.
-a : swap 추가
-d : swap 제거
-l : swap display
-s : swap의 요약정보
2) swap 추가
# mkdir /files
# mkfile 256m /files/swapfile
# swap -a /files/swapfile
# vi /etc/vfstab
/files/swapfile  -  -  swap  -  no -
# swap -l
3) swap 제거
# swap -d /files/swapfile
# rm /files/swapfile
# swap -l




Software 추가/삭제
- pkginfo 명령어
# pkginfo | more (전체 패키지 확인)
# poginfo -l SUNWab2s (SUNWab2s에 대한 상세 정보 출력)
# pkginfo | wc -l  (패키지 수 확인)
# pkginfo -d /cdrom/sol_8_u3_sparc/s0/solaris_8/Product | more
  (CD-ROM으로부터 패키지 정보 확인)
# pkginfo -d /cdrom/sol_8_u3_sparc/s0/solaris_8/Product -l SUNWaudio | more
  (CD-ROM으로부터 SUNWaudio 패키지 정보 확인)

- pkgadd 명령어
# pkgadd -d .  (현재 directory에서 directory형태로 되어 있는 패키지 모두 설치)
# pkgadd -d SUNWsan (현재 directory의 패키지중 SUNWsan 패키지만 설치)
# pkgadd -d /cdrom/sol_8_u3_sparc/s0/solaris_8/Product SUNWaudio
(CD_ROM으로부터 SUNWsan 패키지 설치)
# pkgadd -d /cdrom/sol_8_u3_sparc/s0/solaris_8/Product -s spool SUNWaudio
(/var/spool/pkg 디렉토리로 복사)

- pkgrm 명령어
# pkgrm SUNWsan
# pkgrm -s spool SUNWsan  (/var/spool/pkg로 제거된 패키지 저장)
# pkgrm -s /export/pkg SUNWsan  (spool 디렉토리 /export/pkg로 제거된 패키지 저장)

- pkgchk 명령어
파일 정확성 검사 : 파일퍼미션, 소유자, block or charactor device의 major/minor, 파일 크기, checksum, 수정날짜 등.
(-l : 자세한 정보 제공
  -v : 검사한 파일리스트 제공
  -p path: 경로명의 정확성 검사 )
# pkgchk SUNWsan
#          <-- 아무런 message도 없으면 성공적인 설치
# pkgchk -v SUNWsan  (패키지에 포함된 file list)

# pkgchk -p /etc/passwd
  (설치시 /etc/passwd와 현재의 /etc/passwd의 변화된 정보를 보여줌)
# pkgchk -l -p /usr/bin/ls  (패키지 설치 정보 검사)

- /var/sadm/install/contents 파일
pkgadd에 의해 패키지가 추가될때마다 /var/sadm/install/contents에 정보 추가.
# grep pkgadd /var/sadm/install/contents  (pkgadd에 대한 정보를 출력)



 




 


Patches
1) patch 가져오기
- ftp 이용시 -
# cd /tmp
# ftp sunsolve.sun.com
  user : anonymous
  passwd : 아무거나
ftp> bin
ftp> hash
ftp> prompt
ftp> cd /pub/patches
ftp> ls 109320*
ftp> mget 109320*
ftp> bye

2) patch 정보 보기
- showrev 명령어
# showrev -p
(-a : 모든 정보 
   -p : 패치에 관한 정보만
   -w : open windows 정보만  
   -c command : 입력된 명령어에 대한 정보만)

- /var/sadm/patch 디렉토리
solaris 설치부터 현재까지 설치된 패치가 저장되어 있는 디렉토리

3) patch 설치/제거
# cd /tmp
# unzip 109320-03.zip
# patchadd 109320-03
# showrev -p | grep 109320-03  (#showrev -p = #patchadd -p)
# patchrm 109320-03  (패치 제거시 ‘showrev -p’로 의존성 조사 후 제거)
# showrev -p | grep 109320-03

- Solaris 2.6이하 버전에서 설치/제거 -
# /usr/bin/zcat 104040-01.tar.Z | tar xvf-
# showrev -p | grep 104040-01
# cd 104040-01
# ./installpatch
# cd /var/sadm/patch
# cd 104040-01
# ./backoutpatch 104040-01



 




 

Network 환경 설정
- /etc/hostname.interface_name
- /etc/nodename
- /etc/defaultdomain
- /etc/defaultrouter
- /etc/hosts
- /etc/inet/ipnodes  (IPv6 주소와 hostname)
- /etc/netmasks
- /etc/resolv.conf  (nameserver)
# cat /etc/hostname.hme0
  blackbat
# cat /etc/nodename
blackbat
# cat /etc/defaultdomain
  blackbat.co.kr
# cat /etc/defaultrouter
  192.168.0.1
# cat /etc/inet/hosts
  127.0.0.1 localhost  
  192.168.0.16 blackbat loghost
# cat /etc/netmasks
  192.168.0.0 255.255.255.0
# cat /etc/resolv.conf
  domain kns.kornet.co.kr
  nameserver 168.126.63.1

- Ethernet interface Up/Down
# ifconfig hme0 plumb (interface open)
# ifconfig hme0 unplumb  (interface close)
# ifconfig hme0 up   (interface enable)
# ifconfig hme0 down  (interface disable)
# ifconfig hme0 192.168.0.16 netmask 255.255.255.0 up
# ifconfig hme0:1 plumb  (가상 interface open)
# ifconfig hme0:1 192.168.0.15 netmask 255.255.255.0 up

- Gateway 설정
# route add default 192.168.0.1
# vi /etc/defaultrouter
  192.168.0.1
# netstat -rn  (default router 확인)

- 인터넷을 찾는 경로
/etc/nsswitch.conf 파일 확인
passwd : files      nis
         /etc/passwd,/etc/shadow ->
hosts : files         dns
    /etc/hosts -> /etc/resolv.conf에 등록된 nameserver를 찾는다.

- 시스템 hostname 변경
# vi /etc/nodename
# vi /etc/hostname.interface_name
# vi /etc/inet/hosts or /etc/hosts
# vi /etc/net/ticlts/hosts
# vi /etc/net/ticots/hosts
# vi /etc/net/ticotsord/hosts
위 파일에서 모두 host명을 바꾸어 주어야 한다.




NFS(Network File System)
NFS는 server-client로 구현.
NFS server : 시스템을 공유함.
NFS client : 시스템을 mount.

1) NFS 환경
/etc/hosts 파일에 hostname이 존재해야 함.
- mount 데몬
/usr/lib/nfs/mountd  (제일 먼저 실행)
클라이언트로부터 NFS 마운트 요청 -> 마운트 프로세스에 의해 /etc/mnttab에 기록.
- Server 데몬
/etc/dfs/dfstab에 공유 내용 기록하면 run level3에서 nfsd 자동 구동.
/etc/lib/nfs/nfsd -> /etc/init.d/nfs.server에 의해 구동.
- Server, Client 데몬
/etc/vfstab에 마운트 내용 기록하면 run level2에서 자동 구동.
/usr/lib/nfs/lockd, /usr/lib/nfs/statd -> /etc/init.d/client에 의해 구동.

2) NFS Server
- share : NFS Server의 리소스 공유, 자신이 공유한 리소스 보여줌.
# share -F nfs -o ro /usr/share/man
# share  (공유확인)
  /usr/share/man
# share -F nfs -o ro,rw=hostB /usr/share/man (hostB만 쓰기 가능)
# share -F nfs -o root=hostB /usr/share/man  (hostB에 root 권한 줌)
# share -F nfs -o anon=0 /usr/share/man   (UID를 0으로 access)
- /etc/dfs/dfstab
시스템이 부팅시 자동으로 NFS 리소스 공유.
# vi /etc/dfs/dfstab
  share -F nfs -o rw=hostB -d "Blackbat Home" /export/home/blackbat
- unshare : NFS 서비스 중단
# unshare /usr/share/man
- shareall : /etc/dfs/dfstab에 등록된 모든 리소스 공유.
# shareall
- unshareall : /etc/dfs/dfstab에 등록된 모든 NFS 서비스 중단.
# unshareall
- dfshares : 공유된 리소스 보여줌.
# dfshares
# dfsharea hostA
- dfmounts : /etc/rmtab 내용을 참조하여 mount된 정보 보여줌.
# dfmounts
# dfmounts hostA
- /etc/rmtab 파일 : 서버가 공유해 준 리소스를 client가 마운트하면 정보 기록.
# cat /etc/rmtab

3) NFS Client
- mount : NFS 리소스를 access.
# mount hostA:/usr/share/man /usr/share/man
# mount -F nfs -o ro hostA:/usr/share/man /usr/share/man
- /etc/vfstab : 부팅시 자동 마운트.
# vi /etc/vfstab
  hostA:/usr/share/man  -  /usr/share/man  nfs  -  yes  -
- unmount
# umount /usr/share/man
# umountall -r
# mountall -r

4) NFS Server & Client 설정
- NFS Server 설정
# share
# share -F nfs /usr/share/man
# vi /etc/dfs/dfstab
  share -F nfs /usr/share/man
# /usr/lib/nfs/mountd
# /etc/init.d/nfs.server start  or  # /usr/lib/nfs/nfsd
# dfshares
- NFS Client 설정
# dfshares hostA
# mount hostA:/usr/share/man /usr/share/man
# more /etc/mnttab
# vi /etc/vfstab
  hostA:/usr/share/man  -  /usr/share/man  nfs  -  yes  -
# umount /usr/share/man

5) NFS 에러메세지와 해결방안
- nfs mount:hostA::RPC:Name to address translation failed -n2a:hostname not found
(호스트명을 체크한다.)
- nfs server hostA ot responding, still trying
  (서버 다운 확인. ping을 이용해서 NFS 서버와 Network 상태 확인.)
- nfs mount:hostA::RPC:program not registed
(run level이 3인지 확인  #who -r
   데몬이 구동중인지 확인  #ps -ef | grep nfs)
- nfs mount:hostA:/opt:no such file or directory
  (해당 디렉토릭 Server에 있는지 확인.)
- mount:mount-point /DS9 does not exits
(mount point /DS9 디렉토리가 존재하는지 확인.)
- hme0:No carrier - transceiver cable problem?
(Network에 이상이 없는지 확인.)




AutoFS
NFS에 의해 공유된 파일시스템은 automount를 이용하여 마운트 할 수 있다.
# /etc/init.d/autofs [start or stop]
# cd /net/hostA/usr/share/man
hostA의 /usr/share/man을 hostB의 /net디렉토리에 mount.
root가 아닌 일반 user에서도 접근 가능. 자동 mount 제공.

1) Autofs Map
autofs를 관리하는 파일과 디렉토리들. mount list를 /etc/vfstab이 아닌 autofs의 map 파   일에 정의된 내용 참조.
[Map 유형]
master : autofs file system 설정에 사용되는 다른 map(direct, indirect)들이 list 포함.
direct : 절대 경로명을 가진 mount point list들로 client상의 mount point를 정확히 지시.
indirect : 상대경로명을 표현하는 mount point list. client상의 mount point 설정을 위한 상대 경로 이용.

- Master Map : /etc/auto_master 파일
# cat /etc/auto_master
  /net          -hosts               -nosuid,nobrowse
  /-            auto_direct
  /home        auto_home           -nobrowse
  /xfn          -xfn
[mount_point] [map_name]          [map_option]
  map_name : direct or indirect map의 이름으로 마운트하는 정보를 위한 지시어들.
<special map>
-hosts : NFS Server에 의해 공유된 모든 리소스에 접근.
          /net/host_name 아래로 마운트 접근.
-xfn : 네임서비스를 통해 사용 가능한 리소스에 접근.
        /xfn 아래로 mount.
<direct map entry>
/etc/auto_direct에 정의되어 있는 파일의 완전경로명을 automount 프로그램에게 알려주는 pointer.
<indirect map entry>
/net, /home, /xfn은 indirect map을 위한 mount point 정의.
/etc/auto_master로부터 mount point 초기 경로 읽음.

- Direct Map : /etc/auto_direct 파일
# cat /etc/auto_direct
  /export/home/man  -ro,soft  hostA:/usr/share/man
(nfs로 공유된 hostA의 /usr/share/man을 hostB[Client]의 /export/home/man으로 mount 한다. 읽기 전용. nfs가 응답 안 할시 error 리턴.)

- Indirect Map : /etc/auto_home 파일
# cat /etc/auto_home
  (사용자가 어느 시스템에 있던 네트워크를 통해 홈디렉토리를 일관성있게 보이도록 함.)
  +auto_home (automounter에게 NIS or NIS+ database를 보도록 지시.)
  vian  host5:/export/home/vian
  clare host6:/export/home/clare

- automount 명령어
# automount
  -t duration : automount된 시스템의 유지 시간. default=600초
  -v : automount의 실행과정 보여줌.

2) AutoFS Management

- Direct Map 설정
# vi /etc/auto_master
  /-   auto_direct   (direct map 추가)
# vi /etc/auto_direct    (파일 생성)
  /usr/share/man   -ro   hostA:/usr/share/man    (entry 추가)
# automount -v   (변경 사항 적용)

- Indirect Map 설정
# vi /etc/auto_master   (패치디렉토리와 map 추가)
  /service       auto_patch    (파일 생성)
# vi /etc/patch
  patch    hostA:/export/patch   (패치디렉토리와 서버 경로 추가)
# automount -v (변경 사항 적용) - 펌  -  자료출처->http://blog.empas.com/syk1000/

Solaris 부팅 순서

1. PROM이 POST를 실행
2. boot device 결정
3. 부트프로그램인 bootblk를 load
4. bootblk는 2번째 부트프로그램인 ufsboot를 load
5. ufsboot는 kernel을 load (32bit or 64bit)
6. kernel은 자신을 초기화하고 module을 load
7. configuration 파일인 /etc/system을 읽음
8. kernel이 /sbin/init을 실행

boot PROM 단계 : 1,2,3
boot program 단계 : 4,5
kernel 초기화 단계 : 6,7
init 단계 : 8

5) ufsboot -> 32bit or 64bit kernel을 load한다.
32bit kernel directory : /platform/`uname-m`/kernel
64bit kernel directory : /platform/`uname-m`/kernel/sparcv9

- 시스템이 32/64bit kernel로 운영중인지 확인 방법
# isainfo -kv

- solaris7에서 64bit kernel로 지정
# vi /platform/sun4u/boot.conf
ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true
# reboot

- 32bit->64bit
ok> setenv boot-file kernel/sparcv9/unix

- 64bit->32bit
ok> setenv boot-file kernel/unix
or
# eeprom boot-file=kernel/unix
# reboot

- null값에 의해 자동으로 32,64bit로
# eeprom boot-file=
# reboot

6) /kernel 디렉토리
기본값으로 load하는 kernel module은 /kernel, /usr/kernel, /platform/`uname -m`/kernel   or /platform/`uname -i`/kernel에서 찾는다.

- /kernel내의 모듈 유형
drv : device driver와 pseudo device driver
exec : 여러 실행 가능한 파일들ㅇ르 이용하는 모듈.
fs : ufs, nfs, proc 등의 파일 시스템 모듈.
misc : 가상기억연산과 프로세스간의 통신을 위해 필요한 여러 모듈.
sched : scheduling classes와 상응한 dispatch tables 모듈.
strmod : STREAMS 모듈.
sys : 로드 할 수 있는 시스템 호출.

/usr/kernel 디렉토리
kernel 모듈을 저장하고 있는 디렉토리
/kernel을 먼저 읽은 후 /usr/kernel을 찾는다.

7) /etc/system
부팅할 때 커널에 의해 로드되는 모듈들과 파미터를 정의하는 파일.
/etc/system 파일 내부에서 사용되는 변수
- moddir : 커널 모듈의 경로를 변경하여 지정하고자 할 경우 커널 모듈의 변경경로지정.
- root device and root filesystem configuration
  root devicedhk root 파일 시스템 정의
- exclude : 배제하는 모듈명 지정.
- forceload : 부팅시 무조건 메모리로 올릴 모듈명 지정.
- set : 시스템의 파라미터를 변경할 때 사용.

8) 커널이 /sbin/init 실행
커널이 /sbin/init 실행 ->
/sbin/init은 /etc/inittab 파일에 등록된 정보를 참고로 하여 rc script or 실행 가능한 다른 스크립트들을 차례로 실행. ->
init 수행 후 login 프롬프트 보여줌.

- /etc/inittab 파일
시스템 부팅시 init이나 shutdown 명령어에 의해 run level을 변경하고자 할 때 init 데몬은   /etc/inittab 파일로부터 정보를 얻어 프로세스 실행.

- /sbin/init(/etc/init와 링크) 프로세스의 /etc/inittab 파일 참조 부팅 순서
init process는 inittab 파일 load.
init process는 default run level3으로 정의된 initdefault entry load.
init process는 /sbin/autopush와 같은 action entry에서 sysinit을 가진 entry의 명령이나   스크립트 수행.
init process는 rstate entry에서 3을 가진 entry에 대한 스크립트들(/sbin/rc2, /sbin/rc3,    /usr/lib/saf/sac, /usr/lib/saf/ttymon 등)을 수행. sac와 ttymon은 console과 tty device의 로그인 서비스 제공.


- /etc/inittab 파일의 4개 필드
  id : rstate : action : process
  id : 최대 4자 가능. entry정의.
rstate : entry가 수행 될 run level 지정.
        공란 지정시 run level에 관계없이 언제나 수행.
action : initdefault : 기본 run level 정의 (default 3)
        respawn : 프로세스가 종료되면 다시 시작하여 해당프로세스가 존재하지 않을시에  inittab파일을 load해서 process 시작.
        wait : 자신에 의해 수행될 명령이 종료될때까지 그 다음 entry를 수행하지 말고 대기하도록 함.
        sysinit : 콘솔에 접근하려고 시도하기전에 process 실행.
                 run level에 상관없이 실행.
        respawn : 항상 process 실행.
        powerfail : init이 power fail signal을 받을때만 실행.
process : 실제로 수행 될 응용프로그램 or shell 스크립트 정의.

init0 = halt
init5 = poweroff
init6 = reboot

- run control 스크립트
process를 start하고 stop 시키는 run level과 밀접한 관계가 있는 rc 제공.
/sbin 디렉토리에 존재. rc0,rc5,rc6은 하드링크 되어 있음.
/etc 디렉토리의 rc script와 심볼릭 링크.

/etc/rc#는 /etc/rc#.d 아래에 해당하는 파일 존재.

/etc/init.d는 start or kill 시키는 실질적인 run control 파일 존재.
/etc/rc#.d 디렉토리와 하드링크 되어 있음.

스크립트 실행 순서
# init 2 -> /etc/inittab -> /sbin/rc2 -> /etc/rc2.d/S* or K*
                                        /etc/init.d와 하드링크

- run control 파일 추가하기
# more /etc/init.d/sample
  echo hello solaris
# cd /etc/rc3.d
# ln /etc/init.d/sample S22sample
# /sbin/rc3




Boot PROM
Stop : 부팅시 Stop키가 눌려져 있으면 POST 과정을 검사 안함.
Stop+d : default로 cpu,mem검사를 하지만 Stop+d는 집중적으로 전체 device 검사.
Stop+n : 모든 상태 초기화. boot prom의 변수를 잘못 설정하여 시스템이 비정상적으로 동작할 때 Stop+n키를 누른 상태에서 재부팅하면 모든 변수를 기본값으로 바꾸어  처음 시스템을 사용할때와 동일하게 동작한다.
Command
Description
banner
displays the power-on banner
boot
boots the system
help
lists te main help categories
printenv
displays all parameters' current and default values
setenv
sets the specified NVRAM parameter to some value
reset-all
resets the entire system; similar to a power cycle
set-defaults
resets all parameter values to the factory defaults
sifting text
displays the FORTH commands containing text
.registers
displays the contents of the registers
probe-scsi
identifies the devices on the internal Small Computer System Interface(SCSI)
probe-scsi-all
identifies the devices on all SCSI buses
probe-ide
identifies the devices on the internal intergrated device electronics (IDE) bus
probe-fcal-all
identifies devices on all Fibre Channel loops
show-devs
displays the entire device tree
devalias
identifies the current boot device alias for the system
nvalias
creates a new device alias name
nvunalias
removes a device alias name
showdisks
displays and allows a selection of device paths for the disks to be used for nvalias
sync
manually attempts to flush memory and synchronize file systems
커널자료덤프-> /var/crash/host명/덤프파일
test
runs self-tests on specified devices

- 장비의 기본 옵션 보기
ok> banner

- Boot PROM의 버전과 출시일 보기
ok> .version

- Devices 연결 상태 보기
ok> probe-scsi
ok> probe-scsi-all
ok> probe-ide
ok> probe-fcal

- Alias 내용 보기
ok> devalias (physical name이 특정 이름으로 alias 되어 있는 리스트)

- 환경 설정 내용보기
ok> printenv (부트파라미터의 기본값 display)

- 환경 설정
ok> setenv <parameter_name> <value>
    (prom 변수값의 변경, 부팅디스크의 변경, 자동 부팅 여부 등)
ok> reset (setenv에 의해 변경된 값 저장 후 재부팅)

- Default값으로 변경하기
ok> set-default (지정한 파라미터값을 처음 정의되었던 기본값으로 변경)
ok> set-default parameter-name
ok> set-defaults (모든 환경값을 기본값으로 변경)

- Boot
ok> boot -s
ok> boot -v (부팅시 더 자세한 device 정보를 보여줌)
ok> boot -a (사용자 입력을 기다리는 interactive mode로 부팅)
     Enter filename : kernel/unix (32bit only) - 일시적(재부팅하면 예전값 복원)
                     kernel/sparcv9/unix (32,64bit) -일시적
     Name of system file : /etc/system or /dev/null
ok> boot -r (새로 추가된 device들의 device 파일을 새로 만듬)

- 도움말 보기
ok> help boot
ok> help nvramrc
ok> help diag
ok> help misc

- 자동 부팅 설정/해제
ok> printenv auto-boot?
auto-boot? = true
ok> setenv auto-boot? false
auto-boot? = false
ok> reset-all
Resetting ...

- 펌웨어 password 설정 / 해제
ok> setenv security-mode full  (설정)
ok> setenv security-password passwd명
ok> reset
ok> setenv security-mode none  (해제)

- 랜포트가 여러개 일때 1개의 mac address만 사용
ok> setenv local-mac-address? false
ok> setenv local-mac-address? true
ok> reset

- 명령어 리스트 보기
ok> sifting
ok> sifting probe

- 네트워크 검사
ok> watch-net  (네트워크카드의 정상 동작 상태 확인)

- physical path 보기
ok> show-disks
ok> show-nets
ok> show-devs



- mirror disk가 1개 따로 있어서 백업을 받아둔 상태에 원본 disk가 fail시 교체
ok> show-disks
  disk를 선택한다.
ok> nvalias mydisk [ctrl+y]@target_numner
ok> devalias
ok> setenv boot-device mydisk
ok> reset

ok> nvunalias mydisk  (alias 삭제)
ok> setenv boot-device disk
ok> reset-all

- eeprom 명령어
# eeprom
# eeprom boot-device
boot-device=disk
# eeprom boot-device=disk2
# eeprom auto-boot?=true (sh,ksh)
# eeprom 'auto-boot?=true' (csh)

- Slice(partition number)
  slice0 : /
  slice1 : swap
  slice2 : 전체 disk
  slice5 : /opt
  slice6 : /usr
  slice7 : /export/home




Managing Initialization Files

- Intialization Files for the Primary Shells
Shells
System-Wide
Initialization Files
Primary Initialization
Files Read at Login
User Initialization Files Read When a New Shell is Started
Shell Path Name
Bourne
/etc/profile
$HOME/.profile
 
/sbin/sh
Korn
/etc/profile
$HOME/.profile
$HOME/.kshrc
$HOME/.kshrc
/bin/ksh
C
/etc/.login
$HOME/.cshrc
$HOME/.login
$HOME/.cshrc
/bin/csh

- Default User Initialization Files
Shell
Initialization File Templates
User Initialization Files
Bourne
/etc/skel/local.profile
$HOME/.profile
Korn
/etc/skel/local.profile
$HOME/.profile
C
/etc/skel/local.cshrc
/etc/skel/local.login
$HOME/.cshrc
$HOME/.login

- Login Variable
변수명
Set By
Description
LOGNAME
Login
Defines the user's login name.
HOME
Login
Sets the path to the user's home directory. It is the default
argument for the cd command.
SHELL
Login
Sets the path to the default shell.
PATH
Login
Sets the default that the shell searches to find commands.
MAIL
Login
Sets the path to the users's mailbox.
TERM
Login
Defines the terminal.
LPDEST
Not set by default
Sets the user's default printer.
PWD
Shell
Defines the current working directory.
PS1
Shell
Defines the shell prompt for the Bourne or Kornn shell.
prompt
Shell
Defines the shell prompt for the C shell.





Managing User Accounts
1) 파일 관리
/etc/passwd
/etc/shadow
/etc/group

- /etc/passwd 파일
Field in the /etc/passwd File
loginID:x:UID:GID:comment:home_directory:login_shell
Field
Description
loginID
user's login name
x
user's encrypted password, /etc/shadow에 보존.
UID
100~60000 : 사용 가능.
0~99 : system accounts.
60001 : nobody
60002 : noaccess
GID
100~60000 : 사용 가능.
0~99 : system accounts.
comment
user's full name
home_directory
user's home directory
login_shell
user's login shell. ( /sbin/sh or /bin/ksh or /bin/csh )

Default System Account Entries
User Name
UID
Description
root
0
root account (access to the entire system)
daemon
1
routine(독립적으로 명령을 수행할 수 있는 명령어 집단) system tasks.
bin
2
running system binary files
sys
3
system logging or updating files in temporary directories
adm
4
system logging
lp
71
line printer
uucp
5
UNIX-to-UNIX Copy Protocol 기능.
nuucp
6
remote systems to log in to the host and start file transfers.
smmsp
25
sendmail message submission
listen
37
network listener
nobody
60001
인증되지 않는 root 사용자가 요청시 NFS에 의해 할당 받는다.
software processes that do not need any special permissions.
noaccess
60002
a user or a process that access to a system through some application instead of through a system login procedure.
nobody4
65534
SunOSTM 4.0 or 4.1 software version of the nobody account.

- /etc/shadow 파일
loginID:password:lastchg:min:max:warn:inactive:expire
Field
Description
loginID
user's login name
password
A 13-charactoer encrypted password.
lastchg
the last password modification date.
min
이 기간동안 password를 바꾸지 마라.
max
이 기간내에 password를 바꿔라.
warn
정해진 기간 며칠전에 password 변경 권고창을 띄운다.
inactive
일정기간 동안 login을 하지 않으면 lock을 건다.
expire
password 만료. login이 할 수 없다.

- /etc/groups 파일
groupname:group-password:GID:username-list

- /etc/default/passwd 파일
/etc/shadow에 먼저 등록이 되어 있으면 /etc/default/passwd의 내용은 무시된다.
Field
Description
MAXWEEKS
이 기간내에 password를 바꿔라.
MINWEEKS
이 기간동안 password를 바꾸지 마라.
PASSLENGTH
password 길이 = 6 or 7 or 8 사용 가능
WARNWEEKS
password가 만료되기 전에 경고창을 띄워라. default로 이 필드가 존재하지 않으므로 생성해 주어야 한다.


2) Managin User Accounts
- useradd 명령어
# useradd -u 100 -g other -m -d /export/home/blackbat -s /bin/ksh
   -c "blackbat home" blackbat
# passwd blackbat
# passwd -l blackbat  (lock 걸기)
# passwd -d blackbat  (lock 풀기, passwd가 지워지므로 다시 설정해준다.)
# useradd -D  (/usr/sadm/defadduser 파일 생성. 편집기로 default 정의 가능)

/home에 계정 만들기
# vi /etc/auto_master
  #home ...... (home에 ‘#’ 표시 해 준다.)
# automount -v
or
# /etc/init.d/autofs stop

- usermod 명령어
# usermod -m -d /export/home/newblack -l newblack blackbat
  (blackbat에서 newblack으로 login name과 home directory를 변경한다. passwd는 변경되지 않는다.)

- userdel 명령어
# userdel blackbat
# userdel -r blackbat  (home directory까지 삭제)

- groupadd, groupmod, groupdel 명령어
# groupadd -g 301 class
# groupmod -g 400 class
# groupdel class




Device 설정 정보 보기
- Device Naming Conventions
Logical device name : /etc/dev/
Physical device name : /devices
Instance name : /etc/path_to_inst

- # cat /etc/path_to_inst  (인식하는 정보만 보여줌)
각 device의 instance name, number와 physical name display
  sd : disk
  fd : floppy disk
  se : serial ports A and B
  st : tape devices
  power : power management bus
  su0 : keyboard   su1 : mouse
  audiocs : crystal semiconductor
  ecpp : extended capability parallel port
  hme : fast ethernet

- # dmesg
각 device들의 physical name, OS revision number, ethernet address, physical memory
size 등 확인.
= # more /var/adm/messages

- # prtconf  (인식하지 않는 정보도 보여줌)
  /etc/prtconf -> ../usr/sbin/prtconf
  memory, peripheral configuration 등의 시스템 구성 정보 출력.
  -F : console frame buffer의 pathname
  -P : PROM mode의 정보
  -p : pseudo device 정보
  -v : verbose mode
  # prtconf | grep -v not ('not' 포함하는 라인을 생략하고 정보 출력)
  # prtconf | grep Memory (memory 확인)

- # psrinfo -v (cpu clock 확인)
- # isainfo -kv (32 or 64bit 확인)

- # sysdef
  prtconf 이외의 추가정보 보여줌.
  hostid, pseudo devices, loadavle modules, H/W device, select kernel parameter값,     system device
  # sysdef | grep -v not | more

- # format
  disk 선택
  format -> partition -> print
  partition 수정
  label -> buffer -> VTOC(파일시스템의 0번째 섹터,512byte,디스크정보 포함)
  name test01
  save -> /etc/format.dat에 저장
  사용가능한 disk의 physical device name과 logical device name 출력.
  ^D를 누르면 메뉴에서 빠져 나옴.

- # prtvtoc /dev/rdsk/c0t0d0s2  (VTOC 내용 확인)

- Relabeling a Disk (disk의 VTOC 정보를 그대로 사용하고 싶을때)
# prtvtoc /dev/rdsk/c0t0d0s2 > /vtoc (VTOC 백업)
# ftp 192.168.0.151
ftp> put vtoc
# dd if=/dev/zero of=/dev/rdsk/c0t0d0s2 bs=512 count=1
(VTOC=512byte  VTOC가 512byte이므로 1번만 넘김.)
ok> boot cdrom -s
# TERM=sun  (vi editor enable)
# export TERM
# ifconfig -a
# ifconfig hme0 192.168.0.150 up
# cd /tmp/root
# ftp 192.168.0.151
ftp> get vtoc
# fmthard -s ./vtoc /dev/rdsk/c0t0d0s2  (VTOC 복구)

- 하드디스크 백업
# dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t1d0s2 bs=1024
                                                  1024byte 단위로 전송




Device 재구성
- /reconfigure 파일 이용 (/dev, /devices, /etc/path_to_inst에 동시 등록)
# touch /reconfigure
# init 5
추가 disk 연결
power on

- ok mode에서 인식 (/dev, /devices, /etc/path_to_inst에 동시 등록)
ok> boot -r

- reboot하면서 인식 (/dev, /devices, /etc/path_to_inst에 동시 등록)
# reboot -- -r

- prompt상에서 바로 인식 (/dev, /devices, /etc/path_to_inst에 동시 등록)
# devfsadm  (Solaris8 이상에서 사용)
시스템의 모든 driver를 로드하기 위해 시도하고 가능한 모든 device instance 추가
# devfsadm -c disk
# devfsadm -c disk -c tape -c audio (여러개의 device class 명시)
# devfsadm -i dad (dad driver에 의해 지원되는 disk들만 구성)
# devfsadm -i sd (sd driver에 의해 지원되는 disk들만 구성)
# devfsadm -i st (st driver에 의해 지원되는 disk들만 구성)

# drvconfig (/devices, /etc/path_to_inst에 등록, Solaris7에서 사용)
# devlinks [disks or nets or ports]  (/dev에 등록)




Solrais file system
ufs(Unix File System) : 여러개의 physical disk를 가지며, 각각의 disk는 하나 이상의 file system을 갖는다. kernel은 각각의 file system을 다루며 각 file system마다 device number(/dev/dsk/c0t0d0s0)를 부여하여 이를 logical device로 다룸.

- File System의 종류 -
Disk-Based file system
Distributed file system
Pseudo file system

1) Disk-Based file system
Hard disk, CD-ROM, disket, DVD 등을 포함.
- ufs(Unix File System) : unix system 표준. solaris 기본 파일 시스템.
- hsfs(high sierra file system) : CD-ROM
- pcfs(pc file system) : DOS FAT32 file system이 data access 지원.
- udfs(universal disk format file system) : DVD와 CD-ROM을 대상으로 optical storage를 위한 file system.

2) Distributed file system
네트워크를 통한 file system resource 접근, 분산형 data 처리 방식.
- NFS(Network File System) : 네트워크에서 다양한 유형의 시스템 사이의 파일 공유를 위한 file system.

3) Pseudo file system (메모리기반의 파일시스템)
특별한 커널 정보와 기능에 접근을 제공하는 memory-based file system
- tmpfs(temporary file system) : local memory로 사용. /tmp
- swapfs(swap file system) : swap space를 위하여 커널에 의해 사용. (메모리 + swap)
- fdfs(file descriptor file system) : file descriptor를 사용하고 있는 파일명으로의 접근 허용.
                                  /dev/fd/0, /dev/fd/1, /dev/fd/2, .....
- profs(process file system) : /proc에서 활동하는 process list 포함. ‘#ps’로 확인.




Solaris ufs file system 구조
하나의 file system은 label, boot block, super block, cylinder group block, inode table, data block으로 구성.

1) Disk Label(VTOC)
disk의 첫 번째 sector(512byte=1block), disk file system 정보인 파티션 table 포함.
=VTOC(Volume Table Of Content) = Disk label
: disk controller, 지오메트릭(섹터,트랙,실린더), 슬라이스에 관한 정보 제공.
- 포함 내용 -
disk pertition table
disk device를 구분하는 volume name
Optional Partition tag(각 partition의 mount point name)
Optional Partition flag(각 partition의 writable인 mountable인지 결정하는 값)
2) Boot Block
- label 다음의 15개 disk sectors(sectors 1-15)로 구성.
-운영체제를 부팅하거나 초기화하는 bootstrap program(bootblk) 포함.
3) super block
- boot block 다음의 16개의 disk sectors(sectors 16-31)로 구성.
- file system 전체를 관리.
- super block은 메모리에 적재되어 사용하므로, 시스템을 정지할때는 sync 명령어로 디스크에 작성한 후 정지한다.  평소에는 update라는 프로그램이 30초마다 sync 명령 수행.
- super block 포함 내용.
  file system size
  label(file system name and volume name)
  file system logical block이 size
  last update 시간과 날짜
  cylinder group size
  cylinder group내의 data block number와 fragment의 size
  data block의 요약정보
  last mount point의 경로명
  file system의 상태값(clean, stable, active, logging or unknown)
4) cylinder group
partition을 cylinder group(1group당 16sectors)로 나누어 disk 접근 향상.
- backup superblock : superblock 자체적으로 가지고 있는 백업본.(sector 32)
                       file system을 처음 만들때 생성된다.
- cylinder group block 내용
  inode 수
  cylinder group에서의 data block 수
  directory 수
  free block의 map
  cylinder group에서 free block, free inode, free fragment number
- inode table : 하나의 file system에서 file or directory inode가 가지고 있는 table.
  file type(일반파일, directory, block special, character special, 심볼릭링크, FIFO, 소켓.
  file mode(r, w, x, permision), file 하드 링크 수, 파일 소유자의 UID
  file이 속하는 group의 GID
  file byte 수
  file이 마지막으로 수정된 날짜, 시간
  file이 마지막으로 access된 날짜, 시간
  file이 만들어진 날짜, 시간
- data block : 실제 data가 저장되는 영역.
  1data block = 8192kb = 8×1024kb(fragment)

hard link & symbolic link
inode : 파일이나 디렉토리의 속성을 가지고 있다.
        퍼미션이나 size 등...
hard link
symbolic link
# ln Source_file Destination_file
ex) # ln A B
# ln -s Source_file Destination_file
ex) # ln -s A B
A->100->data
B->100↗
B는 A와 같은 inode를 가지고 있으며 inode가
바로 data를 access한다.
A->100->data
B->200->'A'의 inode=100
B는 A의 inode 정보만을 가지고 있고, data access시에 A의 inode를 경유해서 access한다.
inode가 동일하다.
inode가 다르다
디렉토리링크가 안 된다.
디렉토리링크가 가능하다.
동일 filesystem에서만 가능하다.
다른 filesystem에서도 가능하다.
같은 slice에서만 가능하다.
다른 slice에서도 가능하다.


< file과 directory의 inode 확인 방법 >
file의 inode
# ls -l /etc/passwd  (file의 inode 확인)
-r--r--r--       1      root  ............
               링크카운트
# cat /etc/passwd  (file의 data 확인)

directory의 inode 확인 방법
# ls -ld /etc/  (directory의 inode 확인)
# ls -l /etc (directory의 내용 확인)
# du -sk /etc (directory의 size 확인)

symbolic link의 실제 파일의 퍼미션 확인 방법
# cd /
# ls -l bin
total 135
lrwxrwxrwx   1   root   ...........    bin -> ./usr/bin
심볼릭링크의 실제퍼미션이 아님.
# ls -lL /usr/bin  (파일의 실제 퍼미션 확인)

inode가 같은 파일 찾기
# cd /etc/init.d
# ls -l
# ls -i cron
# find /etc -inum xxxx




File System 생성
새롭게 파티션된 disk는 ‘newfs' or 'mkfs'를 사용하여 파일시스템을 새로 만들어주어야 함.
# newfs /dev/rdsk/c0t0d0s7
newfs 실행 후 lost+found 디렉토리 생성. fsck에 의해 파일시스템 복구 or 체크에 사용.
inumber가 153이라면 파일이름은 000153이다.

- dsk와 rdsk의 차이점 -
dsk : block device, 8kb단위, mount 명령에 사용.(속도를 필요로 하는 작업)
      mount 시에 사용한다.
rdsk : character(raw) device, 512byte(sector)단위.
      dsk보다 셈세함을 요구하는 fsck, newfs 등에서 사용한다.

- minfree : system maintenance를 위해 예약되어 있는 10%의 disk 공간.
newfs 명령어 실행시 파일시스템의 크기에 따라 적절한 값을 계산하여 사용한다. 파일시스템에 여분의 공간을 마련하는 것은 파일시스템의 성능 때문이다. 파일시스템에 여분의 공간이 적으면 이미 존재하는 파일의 크기가 커지거나 새로운 파일이 생성될 경우 추가로 소모되는 데이터블록을 파일시스템에서 찾는데 시간이 많이 걸린다. 이 시간을 줄여기 위해서 시스템에 적절한 여분을 두는 것이 좋다.
<block 내용 보기 - minfree 확인 가능>
# fstyp -v /dev/rdsk/c0t0d0s0 | head -10
bsize  ...... (data block size)
fsize  ......  (단편화 size)
단 편화 : 동적으로 기억 장치를 관리하는 시스템에서 빈번하게 기억 장소가 할당되고 반납되는 과정에서 기억 장소들이 조각조각으로 연결되는 상황이 발생하게 된다. 이러한 상황에서 커다란 크기의 기억 장소를 요구하는 프로그램이 들어오게 되면 시스템에 기억 장소가 존재함에도 불구하고 프로그램에 하나의 연속된 기억 장소를 할당할 수 없게 된다. 이처럼 사용 가능하면서도 시스템의 이곳 저곳에 흩어져 있기 때문에 실제로는 사용할 수 없는 기억 장소 조각들로 나누어져 있는 현상을 지칭한다.

# file /export/home/lost+found/#788  (file 유형 보기)

<file system 생성 전>
# newfs -m 2 /dev/rdsk/c0t0d0s7
(2 : 2% free를 뜻함.)

<file system 생성 후>
# tunefs -m 2 /dev/rdsk/c0t0d0s7

- File system의 유형을 정의하는 file
# more /etc/default/fs (기본 local file system의 유형 정의)
# more /etc/dfs/fstypes (기본 remote file system의 유형 정의)
# fstyp /dev/rdsk/c0t0d0s7
(raw devie name과 함께 사용하여 file system의 유형을 보여줌)




File System Mounting
mount 정보 보기
/usr/sbin/mount : 현재 mount된 모든 file
/etc/mnttab : mount table
# df -k

- /var/run file system
tmpfs로써 mount된 file system. 재부팅시 필요없는 임시 파일 저장소.
umount or umountall에 의해 unmount 되지 않는다.

File system mounting
1) /usr/sbin/mount 명령어
부팅시에는 /sbin/mount을 이용해서 실행하고, command line에서는 /usr/sbin/mount 명령어를 사용한다.
-F : mount를 원하는 file system 유형 정의.
-m : mount 명령어 사용시 /etc/mnttab을 수정하지 않는다.
-o : ufs file system의 마운트를 위한 특별한 옵션 정의.
ex)
# mount /dev/dsk/c0t0d0s7 /usr1
# mount -F ufs -o ro,nosuid /dev/d나/c0t0d0s7 /usr3
(file system은 ufs, 읽기 전용, setuid 실행을 원치 않는 조건으로 mount)
# mount -o remount,noatime,logging /dev/dsk/c0t0d0s0 /
(운영중인 c0t0d0s0를 다시 마운트 하기)

2) /usr/sbin/umount 명령어
# umount /usr1
or
# umount /dev/dsk/c0t0d0s7

3) /etc/vfstab
- 시스템 부팅시 file system이 mount 되도록 정의 가능.
- mount point와 slice의 logical device name과 mapping 관계를 포함하고 있기 때문에 mount point name만 가지고 file system mount 가능.

4) /usr/sbin/mountall 명령어
- system 부팅시 /etc/vfstab 파일안의 mount at boot field가 yes이면 mount한다.
- command line에서 /etc/vfstab 파일안의 mount at boot field가 yes이면 mount한다.
# mountall
# mountall -l

5) /usr/sbin/umountall 명령어
- 시스템이 정지되는 동안 /etc/mnttab 파일을 읽어 file system umount.
- /, /usr, /proc, /dev/fd, /var, /var/run, /tmp file system을 제외한 /etc/vfstab에 정의되어 있는 모든 file system을 umount
# umountall

6) /usr/sbin/ 명령어
file system에서 활동중인 사용자 process들의 PID 출력
- /export/home file system을 사용하고 있는 PID 출력/중지
# fuser -c /export/home
# fuser -c -k /export/home
- /cdrom/cdrom0 file system을 사용하는 소유자에 의해 소유되고 있는 PID 출력/중지
# fuser -u /cdrom/cdrom0  (프로세스와 소유자 표시)
# fuser -u -k /cdrom/cdrom0
or
# umount -f /export/home

7) /etc/vfstab 필드
- device to mount : block device(mount에 사용할 device)
- device to fsck : raw device(fsck에 사용할 device)
- mount point : mount시 사용할 디렉토리(존재하고 있어야 함)
- FS type : file system type
- fsck pass : 부팅시 fsck 검사 실행.
            0 or - : fsck 실행하지 않는다.
            1 : fsck 실행.
            1 이상 : 디스크의 효율성을 위해 여러개의 파일시스템을 함께 fsck 실행.
- mount at boot : 부팅시 mount 실행.
                 fd, /proc, /dev/dsk/c0t0d0s0, /dev/d나/c0t0d0s1은 ‘no'로 설정되어 있지만 vfstab을 실행하기 전에 script로 먼저 mount 실행.
- mount option : mount시 실행 될 옵션 설정.
               rw : 읽고 쓰기 가능 ↔ ro
               setuid : SUID 설정 ↔ nosuid
               intr : locked system에서 동작을 기다리는 프로세스를 키보드를 이용해서
                    interrupt 할 수 있도록 허용. ↔ nointr
               logging : 메모리의 데이터 변경시 데이터의 안정성을 위해서 파일시스템에 함께 기록한다. 비정상 종료시 data가 안전하기 때문에 재부팅시  fsck를 자동으로 수행하지 않는다. ↔ nologging
               nolargefiles : 2Gbytes 이상의 파일 생성이 불가능하다.
                            ↔ largefiles(1TBytes까지 가능.)
               fg : foreground로 실행한다. ↔ bg
               soft : 한 번 실행 실패시 다시 재실생하지 않는다. ↔ hard
               noatime : 파일의 세가지 시간정보를 수행하지 않는다. 속도 향상.
                        (마지막으로 수정, accessed, inode가 변경된 시간) ↔ atime
                        atime을 설정하면 파일변경시 inode 데이터를 그때마다 하드디스                           크에 기록해야 하므로 시간이 많이 소요된다.
               omerror=panic or lock or umount : 솔라리스 커널 자체의 이상으로 인하                           여 파일시스템에 이상 발생시 대처 방안 설정.
                        panic : 시스템 재부팅(/var/crash/시스템명/vmcore.0 등이 생성)
                        lock : 파일시스템에 lock을 걸어서 파일시스템의 내용을 읽지도                                  변경하지도 못하게 함.
                        umount : 해당 파일시스템을 unmount한다.
               xattr : 표준 UNIX속성에서 발견되지 않은 확장된 속성 지원.

Floppy와 CD-ROM Mounting
1) /usr/sbin/vold 데몬이 제어한다.
# volcheck
# cd /floppy/floppy0
# eject /floppy/floppy0

2) Volume Management 관리
# /etc/init.d/volmgt stop
# /etc/init.d/volmgt start
- /etc/vold.conf 파일
volume management configuration 파일. media의 insert or eject 시기, 사용 device, 어   떤 file system이 안전하지 못해 eject 되는지 등에 대한 action 정의.
- /etc/rmmount.conf 파일
rmmount 명령어의 configuration 파일. Floppy or CD-ROM 삽입시 volmgt 데몬에 의해   실행되는 media mounter 제거.

3) Volume Management를 이용하지 않는 Floppy와 CD-ROM mount
# mkdir /CDROM
# mkdir /Floppy
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /CDROM
# mount -F pcfs /dev/fd0 /Floppy
# umount /CDROM
# umount /Floppy





File System Maintenance
1) Data의 모순성 검사
fsck utility가 검사하는 ufs file system 항목.
- super block : file system의 모든 요약 정보 포함. 가장 일반적인 문제 발생.
- inode : inode 일치 여부 검사
- indirect block : inode에 의해 소유. 이 block의 문제점은 inode에 영향을 준다.
- data block : inode는 직/간접적으로 3종류의 data block을 참조한다.
               평범한 data block, 심볼릭 링크 data block, 디렉토리 data block

2) FSCK Utility
- phase1 : check blocks and sizes
inode검사단계->파일유혀의 이상유무, disk block의 주소, size, link count 검사.
- phase2 : check pathnames
파일시스템의 디렉토리 구조 검사단계->root 이하의 모든 디렉토리에 대해 각 파일 이름   과 inode link에 대한 이상유무 검사.
- phase3 : check connectirity
파일시스템의 디렉토리 검사->디렉토리 구조가 잘못되어 파일이름과 inode link의 디렉토   리 entry가 없을 경우 복구.
- phase4 : check reference counts
superblock내의 할당된 파일수와 디렉토리 검사, 파일수를 비교 후 복구.
- phase5 : check cyl groups
consistency를 위해 사용된 inode map과 free block 검사.

- non-interactive mode : 시스템이 정상적으로 부팅시 non-interactive mode로 운영. 관   리자의 개입없이 repair 할 수 있는 문제 해결. repair 할 수 없는 경우에는 fsck 종료 후 - single user 모드로 올린 뒤 관리자에게 interactive fsck 실행.
interactive mode : 문제가 발생될때마다 문제의 수정 방법 제시. 관리자가 결정.

# umount /export/home
# fsck /dev/rdsk/c0t0d0s7
# fsck -V /export/home (fsck가 실행되지 않고 실행명령어를 자세히 보여줌.)
# fsck -m /dev/rdsk/c0t0d0s7 (파일시스템을 검사하여 시스템의 상태값 리턴)

- Bad superblock 복구
backup superblock은 offset 32에 존재. superblock 문제 발생시 사용.
# umount /file7
# newfs -N /dev/rdsk/c0t0d0s7 (backup superblock 확인)
# fsck -F ufs -o b=5264 /dev/rdsk/c0t0d0s7 (b는 backup superblock 중 한개 선택)




디스크사용관리
- df 명령어 : 각 파일시스템의 disk space에 대한 정보 보여줌.
# df  (block 단위로 disk space display)
# df -b  (kb단위로 보여줌. 사용 가능한 디스크 공간)
# df -k  (disk space 정보를 kb단위로 보여줌)
# df -n  (파일시스템의 유형을 보여줌)
# df -F ufs -h (ufs 파일시스템만 보여줌)
# df -F ufs -o i  (mount된 inode 내역 및 정보 보여줌)

- du 명령어 : directory와 file에서 사용하는 disk space를 512byte단위로 보여줌.
# cd /export/home
# du  (512byte 단위로)
# du -k  (kb단위로)
# du -ak  (모든 블록수와 kb단위로)
# du -sk (디스크 사용량의 요약을 kb단위로)

- ff 명령어 : 파일시스템의 파일들에 대한 inode number와 path name 제공.
# ff /dev/dsk/c0t0d0s7  (파일들의 inode number와 pathname)
# ff -V /dev/dsk/c0t0d0s7  (사용법 확인)
# ff -s /dev/dsk/c0t0d0s7  (inode number, 경로명, size=byte로 표시)
# ff -u /dev/dsk/c0t0d0s7  (inode number, 경로명, 파일소유자 표시)

- quot 명령어
각 사용자에 의해 사용된 disk 사용량을 1kb단위로 표시.
(-a : 모든 디스크 사용량을 1kb단위로
  -f : 각 사용자의 disk 사용량과 파일 수 보여줌.)
# quot -a
# quot -af
# quot -f /dev/dsk/c0t0d0s7
/dev/dsk/c0t0d0s7:
  134       62       root
  103       84       user1  
파일 수   소유 공간

- quota 설정
각 사용자에 대해 disk의 space를 제한하여 사용하도록 함.
# vi /etc/vfstab
/dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /file7 ufs 2 yes rq(request quota)
# touch /file7/quotas
# chmod 600 /file7/quotas
# quotaon -v /file7 (quota turn on)
# /usr/sbin/edquota user1  (각 user의 디스크사용량 할당)
# quotacheck -av  (quota 적용)
# quota /dev/dsk/c0t0d0s7  (quota 확인)

- swap : physical memory가 부족시 virtual memory storage 영역으로 사용.
1) swap 명령어 : swap 추가,삭제,수정 가능.
-a : swap 추가
-d : swap 제거
-l : swap display
-s : swap의 요약정보
2) swap 추가
# mkdir /files
# mkfile 256m /files/swapfile
# swap -a /files/swapfile
# vi /etc/vfstab
/files/swapfile  -  -  swap  -  no -
# swap -l
3) swap 제거
# swap -d /files/swapfile
# rm /files/swapfile
# swap -l




Software 추가/삭제
- pkginfo 명령어
# pkginfo | more (전체 패키지 확인)
# poginfo -l SUNWab2s (SUNWab2s에 대한 상세 정보 출력)
# pkginfo | wc -l  (패키지 수 확인)
# pkginfo -d /cdrom/sol_8_u3_sparc/s0/solaris_8/Product | more
  (CD-ROM으로부터 패키지 정보 확인)
# pkginfo -d /cdrom/sol_8_u3_sparc/s0/solaris_8/Product -l SUNWaudio | more
  (CD-ROM으로부터 SUNWaudio 패키지 정보 확인)

- pkgadd 명령어
# pkgadd -d .  (현재 directory에서 directory형태로 되어 있는 패키지 모두 설치)
# pkgadd -d SUNWsan (현재 directory의 패키지중 SUNWsan 패키지만 설치)
# pkgadd -d /cdrom/sol_8_u3_sparc/s0/solaris_8/Product SUNWaudio
(CD_ROM으로부터 SUNWsan 패키지 설치)
# pkgadd -d /cdrom/sol_8_u3_sparc/s0/solaris_8/Product -s spool SUNWaudio
(/var/spool/pkg 디렉토리로 복사)

- pkgrm 명령어
# pkgrm SUNWsan
# pkgrm -s spool SUNWsan  (/var/spool/pkg로 제거된 패키지 저장)
# pkgrm -s /export/pkg SUNWsan  (spool 디렉토리 /export/pkg로 제거된 패키지 저장)

- pkgchk 명령어
파일 정확성 검사 : 파일퍼미션, 소유자, block or charactor device의 major/minor, 파일 크기, checksum, 수정날짜 등.
(-l : 자세한 정보 제공
  -v : 검사한 파일리스트 제공
  -p path: 경로명의 정확성 검사 )
# pkgchk SUNWsan
#          <-- 아무런 message도 없으면 성공적인 설치
# pkgchk -v SUNWsan  (패키지에 포함된 file list)

# pkgchk -p /etc/passwd
  (설치시 /etc/passwd와 현재의 /etc/passwd의 변화된 정보를 보여줌)
# pkgchk -l -p /usr/bin/ls  (패키지 설치 정보 검사)

- /var/sadm/install/contents 파일
pkgadd에 의해 패키지가 추가될때마다 /var/sadm/install/contents에 정보 추가.
# grep pkgadd /var/sadm/install/contents  (pkgadd에 대한 정보를 출력)






Patches
1) patch 가져오기
- ftp 이용시 -
# cd /tmp
# ftp sunsolve.sun.com
  user : anonymous
  passwd : 아무거나
ftp> bin
ftp> hash
ftp> prompt
ftp> cd /pub/patches
ftp> ls 109320*
ftp> mget 109320*
ftp> bye

2) patch 정보 보기
- showrev 명령어
# showrev -p
(-a : 모든 정보 
   -p : 패치에 관한 정보만
   -w : open windows 정보만  
   -c command : 입력된 명령어에 대한 정보만)

- /var/sadm/patch 디렉토리
solaris 설치부터 현재까지 설치된 패치가 저장되어 있는 디렉토리

3) patch 설치/제거
# cd /tmp
# unzip 109320-03.zip
# patchadd 109320-03
# showrev -p | grep 109320-03  (#showrev -p = #patchadd -p)
# patchrm 109320-03  (패치 제거시 ‘showrev -p’로 의존성 조사 후 제거)
# showrev -p | grep 109320-03

- Solaris 2.6이하 버전에서 설치/제거 -
# /usr/bin/zcat 104040-01.tar.Z | tar xvf-
# showrev -p | grep 104040-01
# cd 104040-01
# ./installpatch
# cd /var/sadm/patch
# cd 104040-01
# ./backoutpatch 104040-01






Network 환경 설정
- /etc/hostname.interface_name
- /etc/nodename
- /etc/defaultdomain
- /etc/defaultrouter
- /etc/hosts
- /etc/inet/ipnodes  (IPv6 주소와 hostname)
- /etc/netmasks
- /etc/resolv.conf  (nameserver)
# cat /etc/hostname.hme0
  blackbat
# cat /etc/nodename
blackbat
# cat /etc/defaultdomain
  blackbat.co.kr
# cat /etc/defaultrouter
  192.168.0.1
# cat /etc/inet/hosts
  127.0.0.1 localhost  
  192.168.0.16 blackbat loghost
# cat /etc/netmasks
  192.168.0.0 255.255.255.0
# cat /etc/resolv.conf
  domain kns.kornet.co.kr
  nameserver 168.126.63.1

- Ethernet interface Up/Down
# ifconfig hme0 plumb (interface open)
# ifconfig hme0 unplumb  (interface close)
# ifconfig hme0 up   (interface enable)
# ifconfig hme0 down  (interface disable)
# ifconfig hme0 192.168.0.16 netmask 255.255.255.0 up
# ifconfig hme0:1 plumb  (가상 interface open)
# ifconfig hme0:1 192.168.0.15 netmask 255.255.255.0 up

- Gateway 설정
# route add default 192.168.0.1
# vi /etc/defaultrouter
  192.168.0.1
# netstat -rn  (default router 확인)

- 인터넷을 찾는 경로
/etc/nsswitch.conf 파일 확인
passwd : files      nis
         /etc/passwd,/etc/shadow ->
hosts : files         dns
    /etc/hosts -> /etc/resolv.conf에 등록된 nameserver를 찾는다.

- 시스템 hostname 변경
# vi /etc/nodename
# vi /etc/hostname.interface_name
# vi /etc/inet/hosts or /etc/hosts
# vi /etc/net/ticlts/hosts
# vi /etc/net/ticots/hosts
# vi /etc/net/ticotsord/hosts
위 파일에서 모두 host명을 바꾸어 주어야 한다.




NFS(Network File System)
NFS는 server-client로 구현.
NFS server : 시스템을 공유함.
NFS client : 시스템을 mount.

1) NFS 환경
/etc/hosts 파일에 hostname이 존재해야 함.
- mount 데몬
/usr/lib/nfs/mountd  (제일 먼저 실행)
클라이언트로부터 NFS 마운트 요청 -> 마운트 프로세스에 의해 /etc/mnttab에 기록.
- Server 데몬
/etc/dfs/dfstab에 공유 내용 기록하면 run level3에서 nfsd 자동 구동.
/etc/lib/nfs/nfsd -> /etc/init.d/nfs.server에 의해 구동.
- Server, Client 데몬
/etc/vfstab에 마운트 내용 기록하면 run level2에서 자동 구동.
/usr/lib/nfs/lockd, /usr/lib/nfs/statd -> /etc/init.d/client에 의해 구동.

2) NFS Server
- share : NFS Server의 리소스 공유, 자신이 공유한 리소스 보여줌.
# share -F nfs -o ro /usr/share/man
# share  (공유확인)
  /usr/share/man
# share -F nfs -o ro,rw=hostB /usr/share/man (hostB만 쓰기 가능)
# share -F nfs -o root=hostB /usr/share/man  (hostB에 root 권한 줌)
# share -F nfs -o anon=0 /usr/share/man   (UID를 0으로 access)
- /etc/dfs/dfstab
시스템이 부팅시 자동으로 NFS 리소스 공유.
# vi /etc/dfs/dfstab
  share -F nfs -o rw=hostB -d "Blackbat Home" /export/home/blackbat
- unshare : NFS 서비스 중단
# unshare /usr/share/man
- shareall : /etc/dfs/dfstab에 등록된 모든 리소스 공유.
# shareall
- unshareall : /etc/dfs/dfstab에 등록된 모든 NFS 서비스 중단.
# unshareall
- dfshares : 공유된 리소스 보여줌.
# dfshares
# dfsharea hostA
- dfmounts : /etc/rmtab 내용을 참조하여 mount된 정보 보여줌.
# dfmounts
# dfmounts hostA
- /etc/rmtab 파일 : 서버가 공유해 준 리소스를 client가 마운트하면 정보 기록.
# cat /etc/rmtab

3) NFS Client
- mount : NFS 리소스를 access.
# mount hostA:/usr/share/man /usr/share/man
# mount -F nfs -o ro hostA:/usr/share/man /usr/share/man
- /etc/vfstab : 부팅시 자동 마운트.
# vi /etc/vfstab
  hostA:/usr/share/man  -  /usr/share/man  nfs  -  yes  -
- unmount
# umount /usr/share/man
# umountall -r
# mountall -r

4) NFS Server & Client 설정
- NFS Server 설정
# share
# share -F nfs /usr/share/man
# vi /etc/dfs/dfstab
  share -F nfs /usr/share/man
# /usr/lib/nfs/mountd
# /etc/init.d/nfs.server start  or  # /usr/lib/nfs/nfsd
# dfshares
- NFS Client 설정
# dfshares hostA
# mount hostA:/usr/share/man /usr/share/man
# more /etc/mnttab
# vi /etc/vfstab
  hostA:/usr/share/man  -  /usr/share/man  nfs  -  yes  -
# umount /usr/share/man

5) NFS 에러메세지와 해결방안
- nfs mount:hostA::RPC:Name to address translation failed -n2a:hostname not found
(호스트명을 체크한다.)
- nfs server hostA ot responding, still trying
  (서버 다운 확인. ping을 이용해서 NFS 서버와 Network 상태 확인.)
- nfs mount:hostA::RPC:program not registed
(run level이 3인지 확인  #who -r
   데몬이 구동중인지 확인  #ps -ef | grep nfs)
- nfs mount:hostA:/opt:no such file or directory
  (해당 디렉토릭 Server에 있는지 확인.)
- mount:mount-point /DS9 does not exits
(mount point /DS9 디렉토리가 존재하는지 확인.)
- hme0:No carrier - transceiver cable problem?
(Network에 이상이 없는지 확인.)




AutoFS
NFS에 의해 공유된 파일시스템은 automount를 이용하여 마운트 할 수 있다.
# /etc/init.d/autofs [start or stop]
# cd /net/hostA/usr/share/man
hostA의 /usr/share/man을 hostB의 /net디렉토리에 mount.
root가 아닌 일반 user에서도 접근 가능. 자동 mount 제공.

1) Autofs Map
autofs를 관리하는 파일과 디렉토리들. mount list를 /etc/vfstab이 아닌 autofs의 map 파일에 정의된 내용 참조.
[Map 유형]
master : autofs file system 설정에 사용되는 다른 map(direct, indirect)들이 list 포함.
direct : 절대 경로명을 가진 mount point list들로 client상의 mount point를 정확히 지시.
indirect : 상대경로명을 표현하는 mount point list. client상의 mount point 설정을 위한 상대 경로 이용.

- Master Map : /etc/auto_master 파일
# cat /etc/auto_master
  /net          -hosts               -nosuid,nobrowse
  /-            auto_direct
  /home        auto_home           -nobrowse
  /xfn          -xfn
[mount_point] [map_name]          [map_option]
  map_name : direct or indirect map의 이름으로 마운트하는 정보를 위한 지시어들.
<special map>
-hosts : NFS Server에 의해 공유된 모든 리소스에 접근.
          /net/host_name 아래로 마운트 접근.
-xfn : 네임서비스를 통해 사용 가능한 리소스에 접근.
        /xfn 아래로 mount.
<direct map entry>
/etc/auto_direct에 정의되어 있는 파일의 완전경로명을 automount 프로그램에게 알려주는 pointer.
<indirect map entry>
/net, /home, /xfn은 indirect map을 위한 mount point 정의.
/etc/auto_master로부터 mount point 초기 경로 읽음.

- Direct Map : /etc/auto_direct 파일
# cat /etc/auto_direct
  /export/home/man  -ro,soft  hostA:/usr/share/man
(nfs로 공유된 hostA의 /usr/share/man을 hostB[Client]의 /export/home/man으로 mount 한다. 읽기 전용. nfs가 응답 안 할시 error 리턴.)

- Indirect Map : /etc/auto_home 파일
# cat /etc/auto_home
  (사용자가 어느 시스템에 있던 네트워크를 통해 홈디렉토리를 일관성있게 보이도록 함.)
  +auto_home (automounter에게 NIS or NIS+ database를 보도록 지시.)
  vian  host5:/export/home/vian
  clare host6:/export/home/clare

- automount 명령어
# automount
  -t duration : automount된 시스템의 유지 시간. default=600초
  -v : automount의 실행과정 보여줌.

2) AutoFS Management

- Direct Map 설정
# vi /etc/auto_master
  /-   auto_direct   (direct map 추가)
# vi /etc/auto_direct    (파일 생성)
  /usr/share/man   -ro   hostA:/usr/share/man    (entry 추가)
# automount -v   (변경 사항 적용)

- Indirect Map 설정
# vi /etc/auto_master   (패치디렉토리와 map 추가)
  /service       auto_patch    (파일 생성)
# vi /etc/patch
  patch    hostA:/export/patch   (패치디렉토리와 서버 경로 추가)
# automount -v (변경 사항 적용)


- 펌  -  자료출처->http://blog.empas.com/syk1000/

댓글 없음:

댓글 쓰기