리눅스 명령어 실습 요약(저장소 관리 및
네트워크 관련)
CPIO 명령 실습
# find . -name '*.c' -print | cpio -o > data.cpio
# ls | cpio -o > ../test.cpio
- CPIO 화일 복원
# cpio -idmv < test.cpio
# cpio -i < data.cpio
# cpio -dmvi < example.cpio
# cpio -dmvi < /root/test.cpio
- gz으로 압축되어 있는것을 풀기
# gunzip targetfile.cpio.gz
# cpio -idmv < targetfile.cpio
# cpio -iv < directory.cpio
dump 실습예제
# dump -0f home_backup /home
# dump -0f usr_backup /dev/sda5
#restore - dump된 파일을 복구할 때 사용하는 명령.
- restore [option] [dump_file]
option
-i : 대화식으로 복구 파일을 선택 후 복원
-f : 백업 파일명으로 지정
-r : 전체 복원
*dump 명령어 실습 예)
# mkdir backup - 백업할 폴더를 생성한다.
# cd backup
# dump -0f home-backup /home
DUMP: Date of this level 0 dump: Mon Nov 17 16:16:36 2008
DUMP: Dumping /dev/sda6 (/home) to home-backup
DUMP: Label: /home
DUMP: Writing 10 Kilobyte records
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 1890 blocks.
DUMP: Volume 1 started with block 1 at: Mon Nov 17 16:16:41 2008
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: Closing home-backup
DUMP: Volume 1 completed at: Mon Nov 17 16:16:42 2008
DUMP: Volume 1 1820 blocks (1.78MB)
DUMP: Volume 1 took 0:00:01
DUMP: Volume 1 transfer rate: 1820 kB/s
DUMP: 1820 blocks (1.78MB) on 1 volume(s)
DUMP: finished in 1 seconds, throughput 1820 kBytes/sec
DUMP: Date of this level 0 dump: Mon Nov 17 16:16:36 2008
DUMP: Date this dump completed: Mon Nov 17 16:16:42 2008
DUMP: Average transfer rate: 1820 kB/s
DUMP: DUMP IS DONE
# ls -l
-rw-r--r-- 1 root root 1863680 11월 17 16:16 home-backup
# file home-backup
# du -sh home-backup
# restore -rf home-backup - dump된 화일 복원
# ls
aquota.user install.log.syslog ks.cfg lost+found test1 test2 test3
home-backup restoresymtable
# restore -if home-backup
restore > help
Available commands are:
ls [arg] - list directory
cd arg - change directory
pwd - print current directory
add [arg] - add `arg' to list of files to be extracted
delete [arg] - delete `arg' from list of files to be extracted
extract - extract requested fil files
setmodes - set modes of requested directories
quit - immediately exit program
what - list dump header information
verbose - toggle verbose flag (useful with ``ls'')
prompt - toggle the prompt display
help or `?' - print this list
If no `arg' is supplied, the current directory is used
restore > ls
aquota.user lost+found/ test1/ test2/
terran/ test3/
restore > add test1 - 복원할 파일 또는 폴더를 선택
restore > add test2 - 복원할 파일 또는 폴더를 선택
restore > add test3 - 복원할 파일 또는 폴더를 선택
restore > ls
aquota.user lost+found/ *test1/
install.log.syslog *test2/ *test3/
restore > extract - 화일 추출.
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume # (none if no more volumes): 1
set owner/mode for '.'? [yn] y
restore > quit - 복원 종료
# ls -l
합계 1836
-rw-r--r-- 1 root root 1863680 11월 17 16:16 home-backup
drwx------ 18 test1 test1 4096 11월 17 10:09 test1
drwx------ 4 test2 test2 4096 11월 17 10:10 test2
drwx------ 3 test3 test3 4096 11월 12 09:33 test3
dd (Disk Dump) 명령
형식
- dd if=[input_device] of=[output_device]
실습 예)
#fdisk /dev/sda -dump할 파티션생성
# df -l
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 9920624 1125780 8282776 12% /
/dev/sda1 101086 11128 84739 12% /boot
tmpfs 512776 0 512776 0% /dev/shm
/dev/sda3 1929068 2880 1828196 1% /data1
# dd if=/dev/sda1 of=/dev/sda5
208782+0 records in
208782+0 records out
106896384 bytes (107 MB) copied, 17.1724 seconds, 6.2 MB/s
# mkdir /bak-boot
# mount /dev/sda5 /bak-boot
# ls /bak-boot
System.map-2.6.18-92.el5 grub lost+found symvers-2.6.18-92.el5.gz
config-2.6.18-92.el5 initrd-2.6.18-92.el5.img message vmlinuz-2.6.18-92.el5
# ls /boot
System.map-2.6.18-92.el5 grub lost+found symvers-2.6.18-92.el5.gz
config-2.6.18-92.el5 initrd-2.6.18-92.el5.img message vmlinuz-2.6.18-92.el5
- 원본 화일과 동일함을 확인
저장소(HD)관리 및 공간할당
목차
1. 가상 머신에 linux sever 만들기
2. linux 설치방법 익히기
3. HD 추가 및 관리방법 익히기
4. 관련 명령어 익히기
1. Linux 설치 - 가상머신상에 리눅스 설치
Step 1 VirtualBox 다운로드
Step 2 Centos 다운로드
* https://www.virtualbox.org/
* http://vault.centos.org/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD
2. 가상머신 Server 만들기
Step 1 가상머신 실행
-새로만들기 -> Sever 생성
Step 2 Centos 설치
-Server Computer CDROM에 ISO 실장
Step 3 Server 실행 -> OS 설치 과정 따라 함
3. Server에 HD 1개 추가하기
Step 1 저장소 메뉴에서 추가 -> Server 실행
* 데스크 탑 설치 안된경우
#ifup ifcfg-enp0s3 /* NAT 네트워크 연결 및 작동
#yum list updates /* SW Update
#yum update
#yum -y groupinstall "GNOME Desktop"
#startx
HD 한개 추가하기
#ls -al /dev/sd*
#fdisk /dev/sdb
...
#mkfs -t ext4 /dev/sdb1
#ls /dev/sd*
#mkdir /disk-b
#mount /dev/sdb1 /disk-b
#mount
#cd /disk_b
#cp /a* .
#ls -al
부팅시 자동 마운트 설정
#vi /etc/fstab
/dev/sdb1 /disk-b ext4 defaults 1 2
#df
여러개 디스크를 하나로 사용하기(mdadm)
-저장용량의 지속적 증가에 대처하기위한 방안필요(HD 추가방식)
-추가시 고려사항 (신뢰성, 고장허용, 교체용이)
RAID(Redundant Array of Independent Disks)
-HW 구현방법
-SW 구현방법
Liner RAID -직렬 연결 (1+1...=n)하여 하나의 디스크로 활용
RAID 0 - n개의 디스크에 균등배분 저장하는 방식
RAID 1 - n개의 디스크에 같은 데이터 저장하는 방식
RAID 5 - n개의 디스크에 균등배분 저장
* 저장공간은 n-1: 1개 디스크 용량이 복구 데이터 저장용으로 사용됨
RAID 6 - n개의 디스크에 균등배분 저장
* 저장공간은 n-2: 2개 디스크 용량이 복구 데이터 저장용으로 사용됨
RAID 1+0
Liner RAID 실습
1. 서버에 2개 하드 추가 설치
2. fdisk /dev/sdb (타입 fd)
...
3. mdadm --create /dev/md9 --level=liner --raid-devices=2 /dev/sdb1 /dev/sdc1
4. mdadm --detail --scan
mdadm --stop /dev/mdliner
mdadm --run /dev/mdliner
5. mkfs.ext4 /dev/mdliner
6. mkdir /raidliner
mount /dev/mdliner /raidlinear
df
vi /etc/fstab 추가 - 부팅시 자동 마운트 되게
mdadm --detail /dev/md9
RAID0 실습
1. 서버에 2개 하드 추가 설치
2. fdisk /dev/sdb
...
3. mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
4. mdadm --detail --scan
5. mkfs.ext4 /dev/md0
6. mkdir /raid0
mount /dev/md0 /raid0
df
vi /etc/fstab 추가 - 부팅시 자동 마운트 되게
mdadm --detail /dev/md0
RAID1 실습
1. 서버에 2개 하드 추가 설치
2. fdisk /dev/sdb
...
3. mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
4. mdadm --detail --scan
5. mkfs.ext4 /dev/md1
6. mkdir /raid1
mount /dev/md1 /raid1
df
vi /etc/fstab 추가 - 부팅시 자동 마운트 되게
mdadm --detail /dev/md01
RAID5 실습
1. 서버에 3개 하드 추가 설치
2. fdisk /dev/sdb
...
3. mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
4. mdadm --detail --scan
5. mkfs.ext4 /dev/md5
6. mkdir /raid5
mount /dev/md5 /raid5
df
vi /etc/fstab 추가 - 부팅시 자동 마운트 되게
mdadm --detail /dev/md5
문제 발생 테스트
-해당 디스크 제거 한후 서버 실행
-응급모드로 접속
비번 입력후 로그인
/dev/체크
mdadm --run /dev/md1
정상작동 확인
RAID6 실습
1. 서버에 2개 하드 추가 설치
2. fdisk /dev/sdb (타입 fd)
...
3. mdadm --create /dev/md6 --level=6 --raid-devices=2 /dev/sdb1 /dev/sdc1
4. mdadm --detail --scan
5. mkfs.ext4 /dev/md6
6. mkdir /raid6
mount /dev/md6 /raid6
df
vi /etc/fstab 추가 - 부팅시 자동 마운트 되게
mdadm --detail /dev/md01
RAID1+0 실습
1. 서버에 4개 하드 추가 설치
- 2개씩 묶어 md2,md3 를 레벨 1 생성
- md2,md3를 레벨 0으로 묶음 -> md10 생성
2. fdisk /dev/sdb
...
3. mdadm --create /dev/md10 --level=0 --raid-devices=2 /dev/md2 /dev/md3
4. mdadm --detail --scan
5. mkfs.ext4 /dev/md10
6. mkdir /raid10
mount /dev/md10 /raid10
df
vi /etc/fstab 추가 - 부팅시 자동 마운트 되게
mdadm --detail /dev/md01
문제 발생 테스트
-해당 디스크 제거 한후 서버 실행
-응급모드로 접속
비번 입력후 로그인
/dev/체크
mdadm --run /dev/md1
정상작동 확인
LVM(Logical Volume Manager)
- 여러개의 물리볼륨(파티션)을 볼륨그룹으로 합쳐서 하나의 물리그룹을 만들고
이를 여러개의 논리볼륨 나누어 사용할 수 있게 한다
LVM 실습
1. 서버에 2개 하드 추가 설치
2. fdisk /dev/sdb (타입 8e)
...
3. pvcreate /dev/ sdb1
pvcreate /dev/ sdc1
vgcreate myLG sdb1 /dev/ sdc1
vgdisplay
lvcreate --size 1G --name LG1 myLG
lvcreate --size 2G --name LG2 myLG
lvcreate --extents 100%FREE --name LG3 myLG
ls -l /dev/myLG
mkfs.ext4 /dev/../LG1
...
df
4. 마운트
mkdir /lg1
mount /dev/myLG/LG1 /lg1
df
vi /etc/fstab 추가 - 부팅시 자동 마운트
연습과제
-RAID 에 리눅스 설치하기
-설치 시 저장장소 타입을 RAID 0 로 한다.
-설치 완료후에 디스크 하나 제거하고 부팅해 본다
-정상 부팅되는 것을 확인
사용자별 사용공간 할당
vi /etc/fstab /* 쿼터를 할당할 하드에 다음 추가
/dev/sdb1 /home ext4 defaults,usrquota 0 0
reboot 또는 mount -o remount /home
cd /home /* 쿼타 루트 디렉토리로 이동
quotaoff -avug
quotacheck -avug
rm -rf aquota.*
quotacheck -avug
touch quota.user aquota.group
chmod 600 quota.*
quotacheck -avug
quoton -avug
edquota -u guest1 /*quota file 편집
softlimt hardlimit 수정후 빠져 나옴
repquota /home
edquota -p user1 user2 user3 /* quota 복사
/* quota test
su guest1
cd ~
cp /test1.c .
cp test1.c test2.c
cp test1.c test3.c
cp test1.c test4.c
쿼타 실습 예
[root@localhost ~]# yum remove quota
[root@localhost ~]# yum install quota
[root@localhost ~]# cd /home
[root@localhost home]# ls
aquota.user lost+found user user1 user2 user3 usergroup
[root@localhost home]# quotaoff -avu
/dev/sda2 [/home]: user quotas turned off
[root@localhost home]# quotacheck -auv
quotacheck: Your kernel probably supports journaled quota but you are not using it.
Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sda2 [/home] done
quotacheck: Cannot stat old user quota file /home/aquota.user:. Usage will not be subtracted.
quotacheck: Old group file name could not been determined. Usage will not be subtracted.
quotacheck: Checked 207 directories and 203 files
quotacheck: Old file not found.
[root@localhost home]# ls
aquota.user lost+found user user1 user2 user3 usergroup
[root@localhost home]# chmod 600 aquota*
[root@localhost home]# quotacheck -auv
quotacheck: Your kernel probably supports journaled quota but you are not using it.
Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sda2 [/home] done
quotacheck: Old group file name could not been determined. Usage will not be subtracted.
quotacheck: Checked 207 directories and 204 files
[root@localhost home]# quotaon -avu
/dev/sda2 [/home]: user quotas turned on
[root@localhost home]# repquota -a
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
user -- 39940 0 0 380 0 0
user1 -- 28 0 0 7 0 0
user2 -- 28 0 0 7 0 0
user3 -- 28 0 0 7 0 0
usergroup -- 28 0 0 7 0 0
[root@localhost home]# repquota /home
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
user -- 39940 0 0 380 0 0
user1 -- 28 0 0 7 0 0
user2 -- 28 0 0 7 0 0
user3 -- 28 0 0 7 0 0
usergroup -- 28 0 0 7 0 0
[root@localhost home]# edquota user
[root@localhost home]# repquota -a
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
user -- 39940 100000 120000 380 500 600
user1 -- 28 0 0 7 0 0
user2 -- 28 0 0 7 0 0
user3 -- 28 0 0 7 0 0
usergroup -- 28 0 0 7 0 0
[root@localhost home]# edquota -p user -u user1
[root@localhost home]# repquota -a
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
user -- 39940 100000 120000 380 500 600
user1 -- 28 100000 120000 7 500 600
user2 -- 28 0 0 7 0 0
user3 -- 28 0 0 7 0 0
usergroup -- 28 0 0 7 0 0
[root@localhost home]# edquota -p user user2
[root@localhost home]# repquota -a
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
user -- 39940 100000 120000 380 500 600
user1 -- 28 100000 120000 7 500 600
user2 -- 28 100000 120000 7 500 600
user3 -- 28 0 0 7 0 0
usergroup -- 28 0 0 7 0 0
[root@localhost home]# edquota -p user user3 usergroup
[root@localhost home]# repquota -a
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
user -- 39940 100000 120000 380 500 600
user1 -- 28 100000 120000 7 500 600
user2 -- 28 100000 120000 7 500 600
user3 -- 28 100000 120000 7 500 600
usergroup -- 28 100000 120000 7 500 600
Network 구성
VBox -> 환경설정->네트워크
-> NAT(NatNetwork )
-> HOST only 설정
192.168.56.1
255.255.255.0
DHCP 서버 설정
192.168.56.1
255.255.255.0
192.168.56.100
192.168.56.200
게스트 머신 모두 자동으로 설정
윈도우 명령 창에서 ipconfig 호스트 어뎁터 주소 확인
연결확인 ping 192.168.56.1
ping 192.168.56.105
#ifconfig enp0s3 enp0s8 -가상 ip 확인
#ifup enp0s8 /* nmtui firefox ping nslookup 네트워크 확인
#systemctl restart network
telnet server 만들기
원격 터미널 서비스 (서버에 원격 접속)
telnet-server install
#yum install telnet-server
#systemctl start telnet.socket
#firewall-config
#systemctl enable telnet.socket
/* IN telnet client */ 유저 추가 및 해당유저로 터미날 열고
텔넷 연결 테스트 */
#yum install telnet
#telnet 192.168.111.100
//* WIN telnet client */rpm
windows telnet client 기능 키고 명령창에서 telnet 실행
#telnet 192.168.111.100
or
putty download &install
putty 실행
스마트폰에서 client 설치후 접속 실습
Open SSH server 암호화된 텔넷서비스
ssh-server install
#rpm -qa openssh-server
#systemctl status sshd
/* #yum install openssh-server
/* #systemctl start telnet.socket
#firewall-config
/* IN SSH client */
#ssh user@192.168.111.100
/* WIN SSH client */
putty 실행
/* SmartPhone 앱으로 접속 */
앱 다운로드하여 실행
VNC (Virtual Network Computing) 서버 활용 - 원격 Xwindow 환경
--server 설정
#yum -y install tigervnc-server
#firewall-config /*VNS 서비스 허용 */
#su - guest
$ vncserver /* VNS 서비스 시작 :비번설정*/
/* VNC Client 설치 */ - 터미날 하나 더 열고
#rpm -qa tigervnc
#su -c 'yum -y install tegervnc'
/*리눅스에서 VNC viewer 실행
#vncviewer 192.168.111.100:1
/*호스트 윈도우에서 실습
internet에서 클라이언트 검색 설치
VNC-Viewer-5.3.1-Windows-64bit or VNC-Viewer-5.3.1-Windows-32bit
실행- IP:번호
/* 서버에서 서비스 제거
#vncserver -kill :1
/* DNS 관련지식 URL -> /etc/host.conf-> /etc/hosts-> /etc/resolv.conf
에 기록돤 네임서버에 질의하여 IP 얻음
Name Server 구축
#yum -y install bind bind-chroot
#vi /etc/named.conf
/* 11 행 listen .. any 로 수정
12 행 listen .. none 로 수정
17 행 allow .. any 로 수정
#systemctl restart named
#systemctl status named
#systemctl enable named
/* 방화벽 설정 */
#firewall-config
/* 테스트 서비스
#dig @192.168.111.100 www.google.com
/* local DNS server test */
방문기록 모두 삭제후 테스트
또는 게스트 머신 하나 더 실행시켜 테스트 한다.
#vi /etc/resolv.conf /+ local server address로 수정
#nslookup
>server
>www.naver.com
>www.google.com
메일 서버를 만들어 보자
1. 메일 서버를 만들기 위한 마스터 네임 서버 만들기
#vi /etc/named.conf 수정
zone "server.com" IN {
type master;
file "serverr.com.db";
allow-update {none;};
};
/var/named/server.com.db 생성
$TTL 3H
@ SOA @ root. ( 2 1D 1H 1W 1H )
IN NS @
N A 192.168.56.105
IN MX 10 mail.server.com.
mail IN A 192.168.56.105
#named-checkconf
#named-checkzone server.com server.com.db
# systemctl restart named
#nslookup 마스터 네임서버 동작확인
# vi /etc/resolv.conf
# nslookup
2.메일서버 만들기 2
호스트네임 수정
mail.server.com # vi /etc/hostname 변경
192.168.56.105 mail.server.com # vi /etc/hosts 추가
mail.server.com # vi /etc/mail/local-host-names
HOSTNAME=mail.server.com # vi /etc/sysconfig/network
*** reboot ***
3. 메일 서버를 만들기 위한 패키지 설치
#yum -y install sendmail sendmail-cf dovecot
메일 config 화일 수정-생략
#vi /etc/mail/sendmail.cf
#vi /etc/mail/access 화일수정
192.168.56 추가
# makemap hash /etc/mail/access < /etc/mail/access
access화일이 수정되면 반드시 실행시켜야 함
# vi /etc/dovecot/dovecot.conf
protocois ,listen baseaddr 주석 삭제
# vi /etc/dovecot/conf.d/10-ssl.conf
ssl = yes 로 수정
#vi /etc/dovecot/conf.d/10-mail.conf
25행 주석제거 mail_allocation
119행 mail---group= mail
159행 주석제거 lock--
테스트 메일 유저 생성
kim
/메일 서비스 가동
#systemctl restart sendmail
#systemctl enable sendmail
#systemctl restart dovecot
#systemctl enable dovecot l
kim으로 로긴
evolution 실행 메일 송수신 테스트
NFS Server 구현
#yum -y install nfs-utils
# vi /etc/exports
/share 192.168.111.*(rw,sync) 공유 디렉토리 설정 (서버)
#mkdir /share
#chmod 707 /share
#cp /tmp/test* /share
# systemctl restart nfs-server
# systemctl enable nfs-server
# systemctl stop firewalld
NFS Client 구현
#yum -y install nfs-utils
# vi /etc/exports
/share 192.56.*(rw,sync) 공유 디렉토리 설정 (서버)
#mkdir myshare
#mount -t nfs 192.168.56.105:/share /home/myshare
# cd /home/myshare
-server share디렉토리 화일 확인
*** booting 시 자동 마운트 설정
#vi /etc/fstab 수정
window에서 제어판 에서 윈도우즈 기능 끄기/켜기에서 NFS용 크라이언트 키고 테스트
명령프롬프트 하에서
c:\>mount 192.168.56.105:/share *
드라이브 생성되면서 실행되면 화일탐색기로 확인