转自 http://hacking.egloos.com/94216
------------------------------------------------------------------------------
Module 3 Creating and Managing User Accounts
-----------------------------------------------------------------------------
dmesg : 시스템 관련 정보들 보기(메모리, CPU ...)
uname -m : 모델명 출력
uname -a : OS정보 전체 출력
< 사용자 계정 생성 방법>
1. SAM이용 계정 생성
- 환경 파일 자동생성
2. manual 방식( /etc/passwd , /etc/group, /etc/skel)
- 관련된 파일을 직접 수정하는 방법
- 환경 파일 copy후 소유권 변경
3. 명령어를 이용한 방식
- 옵션을 주면 환경파일을 생성할수 있음
# useradd -u 유저ID -g 그룹ID -d 홈디렉토리 -s 기본쉘설정 -m -k /etc/skel 유저이름
# useradd -u 101 -g 1000 -d /home/gwchoi -s /usr/bin/sh -m -k /etc/skel gwchoi
< /etc/passwd 파일 내용>
유저이름:암호화된패스워드:유저ID:그룹ID:설명:홈디렉토리:기본수행쉘
# /usr/sbin/vipw : 내가 저장하고 나갈때까지 다른 사람은 저장할수 없음
# /usr/sbin/pwck : /etc/passwd의 내용이 틀린것이 없는지 검사
< /etc/group> 파일 내용>
그룹이름:패스워드(보통null로 세팅):그룹ID:그룹에속한유저리스트
# /usr/sbin/grpck : /etc/group의 내용이 틀린것이 없는지 검사
< SAM으로 계정 생성>
- 계정 파일 생성
- 환경 파일 설정(shell, 홈 디렉토리)
< SAM의 Template로 유저 생성>
- First Available : 현재 할당된 UID중 가장 큰 수 다음의 수를 UID로 할당합니다.
- First Available greater than Value : 입력한 값보다 큰 ID를 순차적으로 할당.
- First Available within range : 입력한 범위 안의 값을 UID로 할당
- Prompt for it : 사용자 생성시 UID를 입력하도록 한다.
< SAM으로 사용자 삭제시 옵션>
- Left where They Are : 단지 비활성화만 시킴.
- Removed from User's Home Directory Only : 사용자의 홈 디렉토리만 삭제
- Removed from All Local File Systems : 사용자의 모든 파일들을 삭제.
- Assigned to Another User : 다른 사용자에게 모두 할당.
- /etc/sam/rmuser.excl : 지워져서는 안되는 사용자의 리스트들
- /etc/sam/rmfiles.excl : 사용자를 삭제를 하더라도 지워져서는 안되는 파일들의 리스트들
- /etc/sam/rmgroup.excl : 삭제되어서는 안되는 그룹의 리스트들
< 명령어 방식으로 유저 생성시 주의사항>
# useradd gwchoi
- 위의 명령어를 통해 유저생성시 /etc/passwd 부분에서 생성된 gwchoi계정의 패스워드 부분에
*가 되어 있는데 이것을 삭제해 줘야 한다.
- 위의 명령어로 유저를 생성하면 환경 setting은 하지 않는다.
- 따라서 다음과 같은 절차를 수행하면 된다.
# mkdir /home/gwchoi
-> 환경 파일이 생성되지 않았기 때문에 환경 파일을 생성해야 한다.
# cp /etc/skel/.* /home/gwchoi
# chown -R gwchoi:그룹명 /home/gwchoi
# ls
.cshrc .exrc .login .profile .sh_history
------------------------------------------------------------------------------
Module 4 Customizing User Accounts
-----------------------------------------------------------------------------
Why Customizing a User Account?
- Set the user's terminal type
- Customize the user's prompt
- Set the user's default printer
- Customize the user's PATH variable
- Define a command line editor
- root용 환경 원본 파일 : /usr/newconfig/.profile
- 일반 유저용 환경 원본 파일 : /etc/skel
환경변수 Setting
# export TERM='vt100' : 터미널 설정 vt100은 netterm, vt200은 X-win
# export PS1=`$PWD $` : 프롬프트 설정
# export LPDEST='laser' : 디폴트 프린터 설정
# export EDITOR=vi : 디폴트 편집기 설정
# export HISTSIZE=50 : 한 라인에 실행되는 커맨드의 길이 설정
# export HISTFILE=~/.sh_history : 유저가 실행하는 커맨드가 기록되는 곳
< Login 절차>
1) login, passwd 화면 표시(csh login script, POSIX login scripts)
2) system login script(/etc/csh.login, /etc/profile)
3) local login script($HOME/.login, $HOME/.profile)
4) additional local login script($HOME/.cshrc, $HOME/.kshrc)
- 같은 환경변수가 설정되어 있을때 개인변수가 최우선으로 적용된다.
- /etc/copyright 와 /etc/motd 파일 : 로그인시 설정한 Text를 보여준다.(사용자 임의 수정 가능)
< CDE login>
1) login, passwd 화면 표시
2) $HOME/.dtprofile
3) CDE home Session
- $HOME/.profile 과 $HOME/.login 스크립트는 CDE 에 의해서 실제로 참조되지 않으나
- 강제로 .dtprofile 파일의 DTSOURCEPROFILE="true" 같이 true 라고 수정을 하면
환경설정 파일을 참조할 수 있음.
- 사용자가 CDE로 처음 로그인 하였을 경우 .dtprofile은
/usr/dt/config/sys.dtprofile 로부터 복사되어 존재.
- 만약 sys.dtprofile 의 내용을 변경시키면 /etc/dt/config로 내용을 복사하게 되어 시스템에 반영됨.
< /etc/skel 디렉토리 >
- /etc/skel/.profile : ksh 나 POSIX 에서 사용자별 로그인시 참조되는 파일
- /etc/skel/.login : csh 에서 사용자별 로그인시 참조되는 파일
- /etc/skel/.cshrc : csh 에서 추가적인 사용자 환경 참고 파일
- /etc/skel/.exrc : 각 사용자의 디폴트 vi 에디터 환경을 설정하는 파일
------------------------------------------------------------------------------
Module 5 Guide Tour of the HP-UX File Hierarchy
------------------------------------------------------------------------------
< General directories>
/usr : Sharable operating system commands, library, and documentation
/sbin : Minimum command needed to boot the system and mount other file systems
/opt : Applications
/etc : System configuration files. No longer contain executable files
/dev : Device files
/var : Dynamic infomation such as logs spooler files
/mnt : Local Mounts
/tmp : Operating System temporary files
/stand : Kernel and boot loader
/home : user directories
< /usr directories>
/usr/bin : Operating system user commands
/usr/conf : Kernel configuration
/usr/contrib : Contributed software
/usr/lbin : Back-ends to other commands
/usr/local : User-contributed software
/usr/newconfig : Default operation system configuration data file
/usr/sbin : System administration commands
/usr/share : Architecture independent sharable files
/usr/share/man : Operating System man pages
/usr/share/doc : White papers on technical topics
< /var directories>
/var/adm : Common Administrative files and log files
/var/adm/crash : Kernel crash dumps
/var/mail : Incoming mail
/var/opt : Application-specific runtime files(logs, temporary files)
Each application will have its own directory
/var/spool : Spooled files used by subsystems such as lp, cron, software distributor
/var/tmp : Temporary files generated by commands in the /usr hierarchy
find : Serach the file hierarchy
whereis : Locates source, binaries and man pages
which : which an executable in your PATH
file : Determines file type
strings : file형식이 data일때 내부의 string문자열을 볼수 있는 명령어
------------------------------------------------------------------------------
Module 6 Connecting Pheripherals
-----------------------------------------------------------------------------
# ioscan
-k 옵션 : 시스템의 커널이 가지고 있는 값을 보여주도록 하는 것입니다.
-f 옵션 : 보여줄 수 있는 모든 내용을 출력하라는 뜻입니다.
-n 옵션 : 출력할 때 디바이스 파일명을 출력하라는 뜻(/dev/dsk/c3t8d0, /dev/rdsk/c3t8d0)
-C 옵션 : 클래스가 disk 인 내용을 모두 출력하라는 뜻입니다.
# ioscan -f : 페이지 단위로 보여줌
# ioscan -fH 8/12.2.0 : 하드웨어 버전이 8/12.2.0인것만 보여줌
# ioscan -fC disk : 디스크의 정보만 보여줌(C는 class)
# ioscan -kfnC disk : 현재 커널이 가지고 있는 디바이스명중에서 disk를 보여줌
(디바이스를 재구성하는 것이 아니므로 속도가 빠름)
disk -sdisk(workstation)
-disc3(Server)
tape -stape(workstation)
-tape2(Server)
printer -CenIF(workstation)
-lpr2(Server)
Class I H/W Path Driver S/W State H/W Type Description
disk 0 8/12/2.0 sdisk CLAIMED DEVICE SEAGATE
Class : 구분이름(사람들이 인식하는 I/O 장치 이름)
I : 식별자 Interface Number
Driver : 외부 디바이스 실행 p/g
S/W State : 인식상태(CLAIMED : 정상 인식 상태, UNCLAIMED : 커널중에 이 디바이스의 드라이버가 없음)
* 8/12/2.0
8 : 내부버스 번호
/ : 어댑터 카드가 있다는 뜻(컨버터)
12 : 슬롯위치(나누기 4하면 됨) 3번째 슬롯
2 : 장치 딥 스위치
0 : SCSI하드디스크의 경우 0
-------------------------------------------------------------------------------------
Module 7 Configuring Device Files
-------------------------------------------------------------------------------------
< What is Device File? >
- HP-UX는 Device File이라는 것을 통해서 Periperals devices(주변장치- tape drivers,
disk drivers, printers, terminals, modems)와 통신한다.
- A device file does not contain data.
- Device file are stored in the /dev directory
- 경우에 따라서는 처음으로 새로운 주변장치를 연결할 때 그 디바이스 파일이
시스템에 존재하지 않는다면 직접 이 파일을 생성
< Listing Device ll /dev >
- ll 커맨드를 사용하여 /dev 디렉토리를 리스팅할수 있다.
# ll /dev
total 62
drwxrwxrwx 3 root root 1024 Nov 24 19:03 OpenTP1
crw-rw-rw- 1 root root 72 0x00004e Nov 24 19:00 arp
crw-rw-rw- 2 bin bin 66 0x000000 Mar 7 2001 audio
crw-rw-rw- 2 bin bin 66 0x000002 Mar 7 2001 audioBA
crw-rw-rw- 2 bin bin 66 0x000002 Mar 7 2001 audioBA_0
crw-rw-rw- 2 bin bin 66 0x000003 Mar 7 2001 audioBL
crw-rw-rw- 2 bin bin 66 0x000003 Mar 7 2001 audioBL_0
crw-rw-rw- 2 bin bin 66 0x000001 Mar 7 2001 audioBU
crw-rw-rw- 2 bin bin 66 0x000001 Mar 7 2001 audioBU_0
- crw-rw-rw- 에서 c는 device file type중에서 character file임을 나타낸다.
b는 block file이며 -는 일반 파일이다.
- 77의 숫자부분은 major number이며 HP-UX가 주변기기와 통신할 때 사용하는 커널 드라이버이다.
- 0x000001는 minor number이며 장치 주소와 몇몇 장치용 정보를 간결하게 나타낸다.
< Listing Device File with ioscan >
- ll command doest not indicate which device each device file accesses
- ioscan -fun 커맨드는 시스템과 연관된 모든 디바이스 파일을 출력해준다.
- ioscan can list multiple device files for a single device
# ioscan -fun : list all devices and device files
# ioscan -funC disk : Only list all disk devices and device files( C : class)
# ioscan -funH 2/0/1.6.0 : Only list device files for the device at 2/0/1.6.0
< Listing Device File with lssf >
- List characteristics of device files
- ioscan 명령어는 각 디바이스에 대한 상세 정보는 보여주지 않는다.
- lssf명령어는 각 디바이스의 제공하는 상세한 정보를 표현해 준다.
* 어느 디바이스 드라이버가 사용되는지
* 디바이스 하드웨어 주소정보
* 디바이스 파일에 사용되는 어느 특정 디바이스 액세스 옵션
# /usr/sbin/lssf 디바이스패스명
# /usr/sbin/lssf /dev/rdsk/c2t2d0
sdisk card instance 2 SCSI target 2 SCSI LUN 0 section 0 at address 10/0/15/0.2.0 /dev/rdsk/c2t2d0
< Device File Naming Convention >
- c#t#d#
c# : Instance number of the interface card( 몇번째 어댑터 카드인지...)
t# : SCSI target address
d# : Device-dependent information(0는 SCSI만, 1은 array, 2는 mirroring)
< Disk Device File Names >
- A block device file in /dev/dsk
- A character device file in /dev/rdsk
< tape Device File Names >
- /dev/rmt/c#t#d#[access option]
# tty
/dev/pts/th : 모니터를 가르키는 device file
# banner hi > /dev/pts/tj : 상대방 모니터 file을 알면 다른 모니터로 뿌릴수 있다.
< 디바이스 파일을 생성하는 방법 >
# diskinfo /dev/rdsk/c3t6d0 : 디스크 제품에 관련된 정보를 보는 명령.
SCSI describe of /dev/rdsk/c3t6d0:
vendor: SEAGATE
product id: ST39102LC
type: direct access
size: 8886762 Kbytes
bytes per sector: 512
(1) Autoconfiguration
전제 조건 : 드라이버가 존재하고 있어야 한다.
1) 커널은 자동으로 구성될 수 있는 모든 장치를 구별하고, 해당 드라이버를 특정 하드웨어
주소에서 탐지된 각 장치에 결합. 자동으로 구성할 수 있는 장치에 대해서만 이루어짐.
2) 하드웨어 조사 등의 시스템 초기화 작업이 끝나면, 커널은 init 명령을 호출.
3) init 프로세스는 /etc/inittab 파일을 읽어 들이고 /sbin/ioinitrc 등 그 파일에
나열된 여러 시스템 시작 명령을 호출.
/sbin/ioinitrc 명령은 대개 ioinit을 시작시켜서 여러 가지 일을 수행.
4) ioinit은 먼저 /etc/ioconfig 파일의 내용을 읽어 들이고, 거기서 발견된 장치 대응 정보를
커널 데이터 구조인 io_tree로 전송.
5) ioinit은 이어 insf를 실행
ioinit은 /etc/inittab에 -i 선택 항목이 있는 상태에서 실행되므로 insf가 호출
# file /etc/ioconfig
/etc/ioconfig: data
# strings /etc/ioconfig
!"IA
0btlan3
audio
.....
< insf명령어 >
- insf 명령은 장치가 아직 할당되지 않았을 경우에 디바이스 파일을 만들기 위해 사용.
- 한꺼번에 여러개 device 생성
# /sbin/insf [-C class][-H h/w path][-d driver][-I card instance][-D directory][-k|-e]
# /sbin/insf -e -C disk : C는 class
insf : Installing special files for disk3 instance 0 address 56/52.5.0
insf : Installing special files for disk3 instance 1 address 56/52.6
-d 드라이버 이름에 의해 특정 장치를 선택합니다.
-d, -H, -C 선택 항목은 지정된 드라이버, 장치등급, 또는 하드웨어 경로 주소를 가진
장치를 선택하기 위해 사용.
-C 디스크와 같이 주어진 등급에 속한 장치를 대조합니다.
-H 주어진 하드웨어 경로에 있는 장치를 대조합니다.
-I 카드 예를 선택합니다.
-k 카드 예 번호를 할당하지만 디바이스 파일 이름을 만들지 않음.
-e 기존 장치용 디바이스 파일을 만들거나 다시 설치.
-f 디바이스 파일을 강제로 만듭니다.
-D 기본 장치 설치 디렉토리를 대체하고 디렉토리에 특수 파일을 설치.
디렉토리는 반드시 있어야 됨.
# insf : 시스템의 장치에 필요한 모든 디바이스 파일을 설치.
# insf -e : 기존 장치용 디바이스 파일을 만들거나 다시 설치(모든 것 업데이트)
# insf -d disc2 -I 3 : 카드 번호 3을 가진 추가디스크를 설치.
# insf -d mux1 -I 1 : 카드 번호 2를 가진 멀티플렉서를 설치.
# insf -C tty : 클래스 tty 에 해당되는 모든 디바이스 파일을 만들 때 사용.
# insf -H 4.2.0 : 주소 4.2.0에 있는 장치의 디바이스 파일을 만들 때 사용.
< mksf 명령어 >
- mksf 명령은 시스템이 해당 장치를 이미 인식한 상태에서 디바이스 파일을 만들 때 사용
- 한번에 한개의 device생성(detail하게...)
# /sbin/mksf [-C class|-d driver][-H h/w path][-I card instance][-D directory][driver-option][special file]
-C : 디스크와 같이 주어진 등급에 속한 장치를 대조.
-d : 특정 장치를 그 드라이버 이름에 의해 선택.
-I : 카드 예를 선택.
-H : 주어진 하드웨어 경로에 있는 장치를 대조.
-D : 기본 장치 설치 디렉토리를 무시하고 다른 디렉토리에 특수파일을 설치.
driver-option : 드라이버 이름에 따라 다릅니다.
special file : 대체 디바이스 파일 이름을 선택. 선택된 대체 파일이름은 절대 파일 이름.
# mksf -C disk -I 0 /dev/rdsk/c0t6d0 : 디스크 정보 커널 업데이트
# mksf -C disk -I 1 -D /home/gwchoi : 내 홈 밑에 디바이스 파일
# mksf -C tape -I 0 -D /home/gwchoi : 내 홈 밑에 디바이스 파일
------------------------------------------------------------------------------
Module 8 Configuring Disk Devices
------------------------------------------------------------------------------
Whole Disk : 디스크를 통채로 쓴다.
5가지의 방법으로만 사용가능. 거의 안씀.
- file system
- swap
- raw data
- file system과 swap
- boot area과 file system 그리고 swap
Whole Disk단점
- A file system cannot span multiple disks.
- There can only be one file system partition per disk(디스크 당 하나의 파일 시스템 파티션만 가능)
- It is difficult to extend a file system if more space is needed.(디스크 확장불가)
LVM Disk : HP UX는 주로 LVM을 사용
- Create logical volumes that span multiple disks.
- Create multiple logical volumes on a single disk.
- Extend and reduce logical volumes as necessary.
- Software Disk Striping을 지원하여 디스크의 성능향상을 위해
하나의 데이터를 여러 디스크에 분산하여 저장 가능.
LVM구성 방법
1) 물리 포맷팅(물리볼륨)
2) 물리 볼륨을 논리적으로 합친다(볼륨그룹)
3) 불륨그룹을 논리적으로 목적에 맞게 다시 나눈다(논리볼륨)
Physical Volumes
- LVM에서 관리하는 전체 디스크. LVM 시스템에서는 하나의 물리적인 디스크를 전체 디스크로 관리.
- LVM에 의해서 디스크가 관리되려면, 디스크에 LVM 관리를 위한 정보를 생성 후
--> 이 데이터 구조가 생성되면 LVM은 디스크를 하나의 물리볼륨으로 간주하게 되고 볼륨그룹에 포함
Volume Groups
- 하나 또는 그 이상의 물리볼륨들로 구성.
- vg00은 부트디스크와 OS를 포함하는 특별한 루트 볼륨그룹(/dev/vg00)
Logical Volumes
- 하나 이상의 물리볼륨으로 구성된 볼륨그룹의 분할.
- 볼륨그룹에 포함되어 있는 물리볼륨 전체 또는 일부 공간을 사용
- 공간이 부족할 경우 볼륨그룹에 속해 있는 또 다른 물리볼륨을 사용하여 물리적인 디스크보다
더 큰 크기로 확장이 가능
- lvoln 은 논리 볼륨을 파일시스템이나 swap, dump영역으로 할당할 경우에 사용하는 block device
- rlvoln 은 논리볼륨을 raw data영역으로 할당할 경우에 사용하는 character device 파일
- 물리 볼륨의 시작부분에 바로 LVM 관리를 위한 정보들(물리볼륨정보, 부트데이터, 볼륨그룹정보, 그리고 LVM을 구축하기 위해 필요한 다른 정보들)을 데이터 구조화하여 저장하고 pvcreate나 vgcreate 명령어를 사용하여 생성
LVM Extents
- LVM 방식으로 디스크를 구성하고 나면 디스크는 동일한 크기의 여러 개의 Extent로 나뉘어 진다.
* Extent
- 디스크와 같은 직접 접근 기억 장치에서 운영체제에 의하여 특별한 프로그램과 파일이
저장될 수 있도록 예약되어 있는 영역입니다
* PE(Physical Extent)
- 논리볼륨에 공간을 할당하는 기본 할당 단위. 초기값은 4MB
- 하나의 물리볼륨에 포함된 연속적인 디스크 블록. 하나의 볼륨그룹에서는 그 크기가 항상 같음.
* LE(Logical Extent)
- 하나의 논리볼륨에 포함된 연속적인 논리블록
- 볼륨그룹이 mirror되지 않았을 경우 PE와 항상 일치
- 루트 디스크의 LE는 반드시 contiguous. 그러나 데이터만 저장되는 디스크의 경우 그렇지 않아도 됨.
Creating Physical Volume
1) 미디어(디스크)의 초기화
- 제조사에서 미리 미디어가 초기화되어 나옴.
- 디스크를 이전에 한번 사용했거나 디스크의 무결성이 의심스러울 때.
- 이 명령어를 사용할 경우 현재 디스크에 있는 데이터들이 모두 완전히 삭제
- 시간이 많이 걸림.(4G에 약77분...)
# mediainit /dev/rdsk/c0t3d0
2) 물리 볼륨 생성
# pvcreate [-f|-B] /dev/rdsk/c0t3d0
-f 옵션 : 이전 볼륨의 LVM정보를 무시하고 새로운 정보를 덮어씀.
-B 옵션 : LIF 헤더정보와 BDRA(Boot Data Reserved Area), LIF 디렉토리 영역을 생성하여
부팅 가능한 디스크로 만들어 준다.
* LIF Header : 여러 가지 HP 시스템 간에 파일 교환을 위한 표준 mass storage format.
root, swap, dump 디바이스의 물리볼륨에 존재.
LIF Header정보는 mkboot명령어로 만들어집니다.
* BDRA(Boot Data : root, primary swap, dump 논리볼륨을 구성하기 위한 정보뿐만 아니라
Reserved Area) root 파일시스템을 mount 하고 root 볼륨그룹에 속하는
LVM 디스크의 위치와 크기를 가지고 있습니다.
* LIF Directory Area : HPUX, LABEL, ISL, AUTO 파일 등을 포함하고 있는 영역
mkboot 명령어로 생성.
# lifls -v -l /dev/dsk/c0t0d0 와 같은 명령으로 이 영역의 내용을 볼수 있음.
* PVRA(Physical Volume : 물리볼륨에 관한 고유정보를 포함
Reserved Area) pvcreate 명령으로 생성되는 영역
* VGRA(Volume Group : 전체 볼륨그룹에 대한 정보 볼륨그룹에 속해
Reserved Area) 있는 각각의 물리 볼륨에는 VGRA의 복사본이 들어가게 됩니다.
VGRA는 볼륨그룹의 정족수(quorum)정보를 가지고 있는 VGSA(Volume Group Status Area)와
볼륨그룹을 구성하기 위해 필요한 device driver 정보를 가지고 있는
VGDA(Volume Group Descriptor Area)영역이 있습니다. LE의 map은 이 VGRA 영역에 있음.
* User Data Area : 모든 사용자 데이터가 저장되는 곳으로서 파일시스템, swap, 사용자 application들이 들어있음
볼륨그룹이 만들어질 때 이 영역은 고정크기의 PE(Physical Extent)와
LE(Logical Extent)의 map으로 나뉘어진다.
* BBRA(Bad Block : 이 영역은 손상된 블록에 대한 복구 방법에 관한 정보가 저장되어 있는 곳.
Relocation Area)
- LIF Header, BDRA, LIF Directory Area는 부트 가능한 disk에만 생기는 정보임.
- LVM에 사용되는 데이터 구조는 디스크 공간에 대한 약간의 overhead를 소비하게 되는데,
이 overhead는 부팅 가능한 LVM 디스크의 경우 2912Kb의 고정된 크기를 사용하며,
부팅하지 않는 디스크의 경우는 보통 400Kb를 사용
Removing Physical Volume
- 물리볼륨을 삭제하는 경우는 시스템에서 더 이상 디스크를 사용하지 않거나 LVM을 이용하여 관리하지 않을 경우
- 삭제하려는 디스크의 device파일이 볼륨그룹에 속해 있지 않을 경우에만 사용이 가능
# pvremove /dev/rdsk/c0t2d0
Creating Volume Group
1) Volume group을 위한 디렉토리 작성.
# mkdir /dev/vgfil00 : /dev/vgnn의 네이밍 룰에 따라서 작성해줄것.
2) 볼륨그룹에서 사용할 group 파일을 생성.
# mknod /dev/vgfil00/group c 64 0x100000
- group 파일은 볼륨그룹 내에서 LVM 커널과 LVM 명령어가 상호간의 통신에 사용하는 제어 파일.
- group 파일은 캐릭터 device 파일로서, mknod 명령을 이용하여 생성
- LVM에서 사용하는 Major 값은 항상 64
- Minor 값으로는 일반적으로는 볼륨그룹명을 사용하지만 00은 이미 루트 볼륨그룹인 vg00에서
사용하고 있는 값이므로, 여기서는 새로 생성하는 볼륨그룹인 vgfil00에 대해서는 10을 사용.
(0xhh0000에서 hh의 값이 10이 된다.)
3) vgcreate 명령을 사용하여 볼륨그룹을 생성
- /dev/dsk/c0t3d0, /dev/dsk/c0t4d0 두개의 물리 볼륨을 두개 합쳐서 vgfil00이라는 볼륨 그룹 생성
- block device임에 주의
# /usr/sbin/vgcreate /dev/vgfile00 /dev/dsk/c0t3d0 /dev/dsk/c0t4d0
vgcreate 옵션
-e max_physical_extents : 볼륨그룹에 속한 물리적 볼륨의 physical extents 최대 개수
-l max_logical_vols : 볼륨그룹에 허용되는 logical volume의 최대 개수
-p max_physical_vols : 볼륨그룹에 허용되는 LVM디스크의 최대 개수
-s physical_extents_size : 볼륨그룹에 속한 각 physical extent의 용량(MB단위)
생성된 물리 볼륨과 볼륨 그룹 체크 (-v : detail정보)
# vgdisplay -v vgfil00
# pvdisplay -v /dev/dsk/c0t3d0
# pvdisplay -v /dev/dsk/c0t4d0
Removing Volume Group
- 현재 사용중인 논리볼륨이 있거나 두 개 이상의 물리볼륨으로 구성된 볼륨그룹일 경우에는
논리볼륨을 모두 삭제하고 물리볼륨 역시 볼륨그룹에서 단 하나만 남기고 모두 제거한 뒤에야 삭제가 가능
- 볼륨그룹을 삭제한다고 해서 /dev 에 생성한 볼륨그룹 디렉토리 또한 삭제되는 것은 아니므로,
이 디렉토리는 별도로 삭제하는 과정이 필요합니다
# /usr/sbin/vgremove /dev/vgfile00
- 볼륨 그룹 삭제
# /usr/sbin/vgdisplay -v vgfil00
- 볼륨 그룹이 삭제되었으므로 결과 출력 안됨.
# ll /dev/vgfil00
- group 파일이 남아 있으나 내용은 0임. 삭제 필요
# rm -rf /dev/vgfil00
- 볼륨그룹의 device 파일 디렉토리를 삭제
Creating Logical Volume
# vgdisplay -v vgfil00 | grep PE
- vgdisplay명령으로 현재 볼륨그룹의 남아있는 PE(Physical Extent)양을 확인
- Free PE 부분이 현재 사용가능한 PE의 양. PE의 단위는 기본 4MB.
# lvcreate -l 256 /dev/vgfil00
- l 옵션을 주었으므로 논리볼륨의 생성단위가 PE 혹은 LE가 됨. (256*4M = 1G)
lvcreate 옵션
-L logical_volume_size : 논리볼륨을 생성할 때 사용하는 단위를 MB 단위의 크기로 설정
-l logical_extents_number : 논리볼륨을 생성할 때 사용하는 단위를 PE 혹은 LE 단위로 설정
-n name : 논리볼륨 생성 시 원하는 이름으로 설정
# lvcreate -L 16 -n myswap vg01
# lvcreate -L 16 -n myfs1 vg01
# lvcreate -L 16 -n myfs2 vg01
Logical Volume 체크
# vgdisplay -v vg01
# lvdisplay -v /dev/vg01/myswap
Removing Logical Volume
- 논리볼륨을 삭제하기 전에는 반드시 몇 번이고 확인을 한 후에 삭제할 것.
# /usr/sbin/lvremove /dev/vgfil00/lvol1
- 데이터가 들어 있다면 삭제전에 데이터까지 삭제할것인지 물어본다. 같이 삭제하려면 y를 누른다.
# vgdisplay -v vgfil00 |grep lvol1
- 삭제된 논리 볼륨의 정보가 보이지 않으면 올바로 삭제된 것임.
------------------------------------------------------------------------------
Module 9 File System Concept
-----------------------------------------------------------------------------
File System Type
- HFS : High Performance File System
- JFS : Journaled File System
- NFS : Network File System
- CDFS : CD-ROM File System
HFS
- HP-UX에서 사용하는 보통의 UNIX File System(UFS)
- 현재는 HP-UX의 커널 이미지를 저장하는 파일시스템으로만 사용
JFS
- Veritas File System (VxFS)로 알려져 있는 파일시스템의 특징 중 신속한 파일시스템의 복구 및
온라인 백업, 온라인 리사이징, 온라인 재구성 정도 등의 제한된 기능만을 가지고 있음.
- 부트할 수 있는 파일시스템에는 사용할 수 없음.
- online defragmentation and reorganization
- online expantion and contraction of file system size
- online backup
NFS
- 클라이언트/ 서버 환경에서 다수의 시스템이 동일한 파일들을 공유할 수 있도록 하는 파일 시스템
CDFS
- CD-ROM에 담겨있는 데이터를 access하기 위한 파일시스템
What's in File System ?
- User Data
- Meta Data(Superblock, i-nodes, Directories)
* Superblock
- 파일시스템의 첫머리 부근에 있는 8KB 크기의 디스크 블록
- 파일시스템에 대한 일반적인 정보를 가지는 영역
- 시스템의 타입(type), 크기(size), 상태(status), 그 밖의 다른 파일 시스템의
metadata structure에 대한 포인터 등의 정보를 포함.
- 여러개의 복사본이 있으며, sync 명령이 수행될 때마다 새롭게 갱신
* i-nodes
- 모든 파일의 속성에 대한 정보를 가지는 영역
- 파일의 타입(type), 권한(permission), 소유자(owner), 그룹(group), 크기(size)등의 정보와
파일과 관련된 데이터 블록의 포인터를 가짐.(파일의 이름 정보는 없음)
- 각각의 inode는 파일시스템 내에서 유일한 inode number가 있어 그 값으로 인식
- 'ls -i filename' 명령으로 inode 값을 볼 수 있음.
* Directories
- 파일 이름과 inode number 사이의 mapping 정보를 가짐.
Accessing a File System
---------------------------------------------------------------------------------
module 10 File System Creation
---------------------------------------------------------------------------------
Creating a File System
(1) Create the new File System
# newfs -F vxfs /dev/vg00/rmyfs1
- newfs는 VxFS나 HFS 파일 시스템을 생성할때 사용
- F옵션 다음에는 생성할 파일 시스템 종류를 입력
- 디바이스 명은 character device명을 사용
(2) Create a mount point directory for the file system
# mkdir /myfs1
(3) Mount the new file system
# mount /dev/vg01/myfs1 /myfs1
- 생성된 /dev/vg01/myfs1를 /myfs1이라는 디렉토리에 마운트한다.
- 마운트 시에는 block device명을 사용
(4) Add the file system to the /etc/fstab file
- 부팅시 자동으로 인식하게 하려면 /etc/fstab에 등록해준다.
The New FS Command
# newfs -F vxfs /dev/vg01/rmyfs1
# newfs -F vxfs -o largefiles /dev/vg01/rmyfs1
# newfs -F hfs /dev/vg01/rmyfs2
# newfs -F hfs -o largefiles /dev/vg01/rmyfs2
# newfs -F hfs -b 4096 -f 2048 -m 5 -i 4096 /dev/vg01/rmyfs2
[Vxfs와 HFS에 공통으로 사용되는 옵션]
-F hfs|vxfs : 파일 시스템의 결정
-o largefiles : 2G이상의 파일시스템을 만들시(DB파일같은것...) 128G까지 확장 가능.
-s size :
-v : newfs 커맨드를 입력후 처리하는 과정을 보여준다.
[HFS에만 사용되는 옵션]
-L/-S : S옵션으로 파일이름을 14자까지 제한할 수 있음. 이 옵션이 없으면
기본적으로 256이상 가능
-b block-size : block 사이즈를 바이트 단위로 지정가능. 이 옵션 없으면 디폴트 8KB
-f frag-size : frag 사이즈를 바이트 단위로 지정가능. 이 옵션 없으면 디폴트 1KB
-m min-free : 루트만을 위한 여유공간을 남기기 위한 것. 이 옵션 없으면 디폴트 10%
-i inode-size : inode 사이즈
newfs Option Speific to the Whole-Disk Approach
- LVM식으로 파일 시스템을 생성하지 않고 전체 디스크를 newfs 명령어를 사용하여 파일 시스템 생성
# newfs -F hfs /dev/rdsk/c0t0d0 : creates and HFS on disk c0t0d0
# newfs -F vxfs /dev/rdsk/c0t0d0 : creates and JFS on disk c0t0d0
# newfs -F hfs -R 200 /dev/rdsk/c0t0d0 : HFS, with 200MB reserved for swap
# newfs -F vxfs -R 200 /dev/rdsk/c0t0d0 : JFS, with 200MB reserved for swap
Mounting the New File System
# mkdir /myfs1
# mount /dev/vg01/myfs1 /myfs1
# mount -v
- 마운트 포인트는 어느곳이나 해도 상관없지만 특정히 정해진곳(/, /usr, /opt, /tmp)등은
하지 말아야 한다.
- 만약 비어있는 디렉토리가 아닌 디렉토리에 다시 마운트를 하게되면 이전의 디렉토리의 있던 내용은
현재 마운트되어 있는 상태를 언마운트 하지 않으면 hidden된다.
- 마운트 하려고하는 디렉토리가 다른 유저에 의해서 사용되고 있을 시에는 'device busy' 가 되면서
마운트 되지 않는다.
The unmount command
# umount /dev/vg01/myfs1
or
# umount /myfs1
[umount 옵션]
-a : 현재 파일시스템에 마운트된 것을 전부 언마운트
-F 파일시스템타입 : 특정한 파일 시스템만을 언마운트
-v : 언마운트 되는 과정을 디스플레이(언마운트되는 파일시스템도 보여줌)
< 유저에 의해 사용되고 있는 마운트 포인트를 언마운트 하는 방법 >
1) fuser명령어를 사용하여 어떤 유저가 현재 파일과 디렉토리를 사용하고 있는지 확인
# fuser -u /dev/vg01/myfs1
- 위 명령은 /dev/vg01/myfs1을 사용하고 있는 프로세스ID와 login names을 알려준다.
# fuser -u /etc/passwd
- 위 명령은 /etc/passwd를 사용하고 있는(열고 있는) 프로세스ID와 login names을 알려준다.
# fuser -uc /opt
- 위 명령은 /opt 파일 시스템을 사용하고 있는 프로세스ID와 login names을 알려준다.
2) 현재 파일시스템을 사용하고 있는 유저의 프로세스를 종료시켜서 언마운트 가능하게 한다.
# fuser -ku /dev/vg01/myfs1
- 이 명령을 실행하면 현재 /dev/vg01/myfs1를 액세스해서 사용하고 있는 모든 유저의
session이 없어진
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22606628/viewspace-1041993/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22606628/viewspace-1041993/