! 마운트(mount)
-> 새롭게 만든 파일시스템을 사용하기위해 생성된 디스크장치를 트리 구조의
임의의 디렉토리인 마운트포인트에 맵핑 시키는 작업.
! 마운트포인트
-> 파일시스템을 디렉토리에 연결해야하는데 이때 연결되는 디렉토리
# mount -> 현재시스템의 마운트 정보확인
# cat /etc/mtab -> 현재시스템의 마운트 정보확인
# df -h -> 마운트 정보 출력
# mount [dev_name] [mount_point]
# mount -t [filesystem_type] -o [option] [dev_name] [mount_point]
<option>
auto -> /etc/fstab에 등록된 정보에대해 부팅시 자동으로 마운트
defaults-> rw,suid,dev,exec,auto,nouser,async 의 옵션을 포함
dev -> 해당파일시스템을 문자디바이스나 블록디바이스를 이용해서 해석
exec -> 파일시스템에 포함된 프로그램을 실행할 수 있음
noauto -> 자동마운트가 되지 않도록.
noexec -> 해당 파일시스템에 포함된 프로그램이 실행되지 않도록 함.
nosuid -> suid, sgid 비트의 기능을 제한
nouser -> 관리자(root)외의 사용자가 파일시스템의 마운트/언마운트 금지
ro -> 읽기전용
rw -> 읽기쓰기
suid -> 실행파일에 존재하는 suid,sgid 비트 기능 사용
sync -> 동기식 입출력
user -> 일반사용자의 파일시스템마운트 허용
noatime -> access time 기록하지 않음.
! /etc/fstab -> 리눅스 부팅시 자동으로 마운팅 시키기 위해 OS가 참조해야할
마운팅 테이블 정보이며 다음의 6개의 필드로 구성됨.
1) 장치명. Label과 UUID로 지정될 수도 있음.
2) 마운트 포인트
3) 파일시스템의 유형
4) 옵션
5) 덤프의 필요여부(HDD인 경우는 1, 그 외는 0)
6) fsck 명령어로 무결성 체크 여부 지정(0: 체크하지않음. 숫자가 작은
순서로 체크하게 되므로 /는 1, 그외는 2를 지정하여 병렬처리)
! 파일시스템 마운트 예
# mount -t ext4 /dev/sdb2 [/mnt_dir] -> 로컬 파일시스템 마운트
# mount -t nfs [ip:/export_dir] [/mnt_dir|] -> nfs 파일시스템 마운트
mkdir /nfs_client
service nfs start
mount -t nfs 192.168.201.100:/nfs_server /nfs_client
# mount -o remont [mnt_point] -> 특정파일시스템 remount 해당파일을 다시 마운틴해주는거
# mount -t iso9660 /dev/sr0 /cdrom -> cdrom 마운트
vm> setting 에서 cd에서 dvd1선택 >device status connected 선택
umount
umount /dev/sr0
mkdir /my_cd
mount -t iso9660 /dev/sr0 /my_cd
mount: block device /dev/sr0 is write-protected, mounting read-only
df
cd /my_cd
ls
# ls
CentOS_BuildTag Packages RPM-GPG-KEY-CentOS-Security-6 isolinux
EFI RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 repodata
EULA RPM-GPG-KEY-CentOS-6 TRANS.TBL
GPL RPM-GPG-KEY-CentOS-Debug-6 images
# mount -o loop [iso_image] [mnt_point] -> iso 이미지파일 마운트
! 언마운트(umount) -> 마운팅된 장치 연결 해제
# umount [mnt_point or dev_name] -> 지정된 마운트 포인트 해제
! UUID (Universally Unique IDentifer)
-> HDD 추가 후 device name이 바뀌는 경우가 발생될 수 있음.
이때 고유 넘버인 uuid를 이용하면 device name 이 바뀌더라도
상관없게됨.
# blkid -> hdd의 각 device 에 대한 uuid확인.
-> /etc/fstab 파일의 첫번째 필드인 장치명에 해당하는 UUID를
'UUID=xxxxxxxxxxxxxxxxxxxxxx' 포멧으로 바꿔주면 ok.
! Swap Filesystem
-> 프로세스 메모리 이미지를 가지고 있는 임시 디스크 공간.
swap 공간을 통하여 시스템은 많은 물리적 메모리공간 확보가
가능하게 됨.
! Swap 영역 확장하는 방법
# free -> 현재 메모리 및 스왑 크기 확인
# fdisk /dev/sdb -> 추가할 스왑파티션 생성.
즉, /dev/sdb7을 스왑 타입으로 파일시스템 할당.
-> fdisk 내부명령에서 파일시스템 타입변경(t)-> Hexa code(82)
# mkswap /dev/sdb7 -> 스왑파일시스템 생성
# vi /etc/fstab -> 리부팅 후 적용되도록 테이블에 다음을 추가
.......
/dev/sdb7 swap swap defaults 0 0
~
~
:wq
# swapon -a -> /etc/fstab에 등록된 모든 swap enable, 스왑파일시스템 활성화
# free -> 스왑 영역 확장된 내용 확인
# swapoff -a -> swap 영역 비활성화
@@ init 프로세스 실행
-> init 프로세스란 사용자가 시스템을 사용할 수 있는 환경을
만들어 주는데 필요한 시스템 기본 설정을 하는 과정을 의미.
-> 리눅스 시스템 부팅 과정에서 커널이 수행하는 마지막 작업에
해당.
-> /etc/inittab 파일을 읽어 들이며 이 파일에는 시스템의
기본 실행 단계가 정의되어 있음.
! 리눅스시스템 부팅과정
1) POST -> 시스템 전원ON
2) BIOS 프로그램 실행
3) 부팅매체검색(CMOS에 의한 부팅시도)
4) 부트로더(GRUB)실행
5) 커널부트 이미지 적재
6) 루트(/)파일시스템마운트
7) INIT 프로세스 실행 - /etc/inittab 설정내용 참조
! runleve
# runlevel -> 현재의 부팅 runlevel 출력. 이전모드 / 현재모드
0 -> halt
1 -> Single usermode
2 -> multiuser mode. without NFS
3 -> full multiuser mode
4 -> unused
5 -> X11 포함. full multiuser mode
6 -> reboot mode
! /etc/inittab 파일내용
id:runleve:action:process -> 기본 유형이며 다음의 4개의 필드로 구성됨
id:5:initdefault:
1) id -> 다른 설정과 구분하기위한 이름
2) runlevel -> runlevel
3) action -> 특정 key 값
4) process -> 실제 실행할 프로그램
<예>
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
1:2345:respawn:/sbin/mingetty tty1 -> 기본터미널
@@ 리눅스 부트로더 GRUB(GRand Unified Bootloader)
-> 부트로더란 운영체제의 부팅 이전에 먼저 실행되는 프로그램으로서
커널이 올바르게 부팅되기 위해 필요한 모든 관련 작업을 수행.
! GRUB를 이용한 root 패스워드 복구
-> 관리자의 패스워드를 복구하기 위해 /etc/passwd 파일을 수정하려면
grub를 이용하여 single user mode로 접근해야 함.
mount /dev/sda1 /a
vi /a/etc/passwd
루트 패스워드초기화 <유닉스계열에서
리눅스에서는
reboot 리붓도중에 엔터 >>e 에서 hd0는 첫뻔재하드디스크,뒤에0은 파티션순서 //kernerl에서 e키>>스페이스로한칸 뛰우고 single치고 엔터
싱글로 부팅하란뜻>>b입력 싱글유저로부팅됨 >vi /etc/passwd 하고 root 에 비밀번호부분인 x삭제 하고 wq >> reboot
! GRUB에 패스워드 설정
grub- 탭두번 하면 여러개나옴
# grub-md5-crypt사용할패스워드입력 root123 -> md5 hash 알고리즘에 의해 암호화된 패스워드 생성
# vi /boot/grub/grub.conf
.....
:r !grub-md5-crypt 비번 입력 123엔터 123엔터
.....
timeout 타임밑에 두개삭제 dd
password --md xxxxxxxxxxxxxxx(생성된 암호)
splashimage.....
.....
~
~
:wq
reboot 하고 엔터 p 그루브 비번
default -> 초기 grub 화면에서 아무런 선택을 하지않으면 어느쯕으로
부팅할것인지 지정
timeout -> 초기 grub 화면에서 default를 적용하기전의 대기 시간(초)
password -> grub 내부명령으로 들어가기위한 인증
splashimage -> grub 화면이미지
hiddenmenu -> 기본적으로 hiddenmenu 아래의 내용은 숨김.
title -> os 지정
@@ 압축 명령어
# gzip -> 파일단위로만 압축가능. 묶음 기능은 없음.
# gzip [option] [file_name] -> .gz 확장자를 갖는 압축파일 생성
-d -> 압축 해제
-r -> 디렉토리내의 파일 압축
gzip -dr dir1
# gunzip -> 압축을 해제. gzip -d 와 동일.
# bzip2 -> 파일단위로만 압축가능. 묶음 기능은 없음. 압축률이 좀더뛰어나다 gzip보다
# bzip2 [option] [file_name] -> .bz2 확장자를 갖는 압축파일 생성
-d -> 압축해제
# bunzip2 -> 압축해제. bzip2 -d 와 동일.
@@ 백업 명령어
! tar (tape archive)
# tar [option] [tar_file] [source_file/dir]
-> source_file 또는 directory를 tar_file로 묶음.
# tar [option] [tar_file] -C [dir_name] -> 특정 위치에 해제
-c -> 파일을 묶음
-t -> tar 파일 내용 확인
-x -> 압축 해제
-f -> tar 파일임을 명시
-v -> 진행과정내용을 출력
-p -> 원본 파일의 퍼미션 유지
-g -> 증분백업
-C -> tar파일을 해제될 위치 지정
cvf 옵션으로 묵음
tvf
xvf
! 묶음 + 압축
# tar -cvf [file.tar] [source_file]
-> source 파일또는 디렉토리를 file.tar 라는 이름으로 묶음.
# tar -zcvf [file.tar.gz] [source_file] -> tar로 묶은 후 gzip 으로 압축
# tar -jcvf [file.tar.bz2] [source_file] -> tar로 묶은 후 bzip2로 압축
# tar -tvf [tar_file] -> tar_file 내용 출력
# tar -ztvf [tar_file]
# tar -jtvf [tar_file]
# tar -xvf [file.tar] -> tar_file 묶음을 해제
# tar -zxvf [file.tar.gz]
# tar -jxvf [file.tar.bz2]
tar -xvf dir.tar -C dir1 이위치에 해제
! dd (Disk Dump)
-> 지정한 블록의 크기만큼 파일 복사에 유용. 디스크 이미지 복사
# dd if=[대상파티션/디스크] of=[저장위치/파일명] bs=<n> count=<n>
-> 부트 플로피나 스왑파일을 만드는 특수파일 복사.
# dd if=[input_device] of=[output_device]
# dd if=/dev/sda of=/dev/fd0 bs=512 -> MBR 0섹터부분을 플로피에 복사
MBR(Master Boot Record) O sector :512byte 3단계로 나누면 제일큰쪽 1.code zone 446byte ////
2.partituion zone 64byte ,최소 16byte필요x 4 = 64 모든하드디스크는 기본적으로 4개의 파티션까지됨 4개가 한계임
3.Magic # 제대로동작하는지 체크하는 곳 MBR 분할 Primary patition/ Extended patition [영역만 확보하는 영역],사용하려면 논리적으로 구성해야됨
논리적으로 logical p1 ,p2, p3, p4 //
! dump 백업 -> filesystem 단위로 스케줄링 백업
# yum -y install dump -> dump 패키지 설치
# dump [option] [file_name] [dump_file]
-0~9 -> 레벨0는 전체백업, 나머지는 부분백업
-u -> /etc/dumpdates 에 기록
-f -> 백업할 미디어 및 파일명 지정, device 이름
-s -> 실제 백업하기전에 용량 확인
-l -> tape autoloader
# dump -0uf /tmp/home_L0.dmp /home
-> /home 디렉토리를 home.dmp 파일이름으로 full backup.
/etc/dumpdates 내용은 증분백업에 대한 정보로 활용됨.
# tar -cf - /usr/share/man | (cd /home; tar -xf -)
-> 증분백업 데이터 작성
# dump -1uf /tmp/home_L1.dmp /home -> 증분백업
! restore 데이터 복구
# restore [option] [dump_file] -> dump된 파일을 복구
-i -> 대화식으로 복구 파일을 선택 후 복원
-f -> 백업 파일명으로 지정
-r -> 전체 복원
# umount /home
# mkfs -t ext4 /dev/sda3
# mount /home
# cd /home
# restore -tvf home.dmp -> 내용확인
# restore -rvf /tmp/home_L0.dmp -> 전체 복구
# restore -ivf /tmp/home_L1.dmp -> interactive mode로 복구
restore> ?
restore> ls
restore> add file1 -> 복구 대상으로 추가
restore> extract -> add 된 파일만 복구
다음 볼륨 #를 지정: 1
소유자/모드 설정'.'?[yn]n
! 파일을 이용하여 swap 확장.
# free -> 현재 스왑 영역 확인
# dd if=/dev/zero of=/swapfile bs=1024 count=2000000 zero는 원래 있는거라서 다른이름 으로 바꿀필요없음
-> 1024byte를 2048000 번을 /dev/zero에서 읽어서 /swapfile 파일생성.
# mkswap /swapfile -> 스왑파일시스템 생성
# swapon /swapfile -> swap enable
# free -> 확장된 스왑영역 확인
# vi /etc/fstab -> 리부팅 후 적용되도록 테이블에 다음을 추가
/swapfile swap swap defaults 0 0
~
~
:wq
# swapon -a -> /etc/fstab에 등록된 모든 swap enable, 스왑파일시스템 활성화
# free -> 스왑 영역 확장된 내용 확인
# swapoff -a -> swap 영역 비활성화
[실습 1]
1) 최상위디렉토리에 backup 디렉토리 생성
2) 모든 사용자의 홈디렉토리인 /home을 /backup디렉토리에 압축 백업하시오.
#tar zcvf [저장되어질위치] [백업압축할소스]
ex) /dev/rmt/0 /home 홈디렉토리 통재를 앞에 /dev/rmt/0에 압축하겠다는 뜻
어디에 backup.tar.gz
tar -zcvf /backup/home.tar.gz /home 앞에 /backup/home<<이건 내가 만들 파일이름 아무거나 적어도됨
[실습 2]
1) tar -> 로컬 영역 백업
# tar zcvf /backup/home$(date +%Y%m%d).tar.gz /home $변수값을 불러내기위한 데이터문자
날짜정보에의한 파일명 정보가 달라질태니
# cd /home ; ls -l
# tar cf - . | (cd /backup; tar xf -) -> 퍼미션 및 속성 그대로 백업 복사 (홈에있는걸 /backup에 넣은거) ()<이건 안에꺼한번 실행하겠다는의미
이름이없고 -있으면 버퍼 저장하겠다 . 현재디렉토리모든내용을 버퍼에저장하겠다 |기준으로해서 데이터이전 왼쪽결과값을 오른쪽 결과값으로 사용
2) 원격 서버로 백업
# tar cf - . | ssh dhkim@192.168.201.100 "(mkdir backup; cd backup; tar xf -)" [[ssh 암호화 쉘
확인은 부티로 내아이디 들어가서 ls -l
3) 증분백업
# cd /backup
# tar -g list -zcvf backup.tar.gz /home list는 임의의파일이름 어떤이름을줘도상관없음 현재구조를 list가 알고있고 backup에 들어감
-> /home을 풀 백업
# tar -cf /home/man.tar /usr/share/man <<매뉴얼페이지
-> home 파일시스템에 증분 파일 생성
# tar -g list -zcvf backup-1.tar.gz /home 위하고 임시파일이름 같아야된다
-> 스냅샷 list 정보와 비교하여 추가된 부분만 증분백업
# tar tvf backup-1.tar.gz
-> 추가된 new_file 있는지 확인.
[실습 3]
# dd if=/dev/sda of=/dev/sdb 홈파일시스템만 이미지 덮어씨우는걸로 해보잧
-> 디스크 전체이미지 복사.
-> target 디스크 크기가 원본보다 작으면 불완전 복사가 됨.
# dd if=/dev/sda1 of=/dev/sdb1 -> 디스크 특정 파티션 이미지 복사
# dd if=/dev/zero of=/swapfile bs=1024 count=65536
fdisk -l
df
/dev/sda3 2064208 91984 1867368 5% /home
dd [디스크 덤프] if임풋파일=백업을 받기로한파일 of풋파일
dd if=/dev/sda3 of=/dev/sdc1 앞쪽데이터를 뒤쪽데이터로 넣음 받는쪽은 용량비슷하거나커야됨
시스템 확인할때 느리면 iostat 1< 1초단위로 확인하는것
cd /
ls /home
umount /home
mount /dev/sda3 /home
umonut /home
mount /dev/sdc1 /home