-YUM

RPM 기반의 패키지 관리도구로 의존성 문제를 자동으로 해결

-설치 가능한 패키지에 대한 정보가 담긴 저장소(Repository)를 가지고 있다.

-DVD이미지 혹은, 인터넷이 되는 환경에서 사용할 수 있다.

 

yum [옵션] [명령] [패키지명]

      -y 설치 과정에 출력되는 모든 질문에 yes로 대답

          -h 도움말 출력

      -v 자세한 메세지 출력

 

#yum info [패키지명]    //패키지 정보 확인

 

#yum list

#yum list all        // 설치 되었거나 설치가 가능한 모든 패키지

의 목록을 출력

#yum list update    //업데이트가 가능한 패키지의 목록만 출력

#yum list installed  //이미 설치된 패키지 목록을 출력

#yum list installed [패키지명] //해당 패키지 설치유무 확인

== #rpm -qa

#yum localinstall [패키지명].rpm    //rpm 패키지 설치

 

 

패키지 설치 하기

- 저장소를 검색하고 패키지를 설치할 저장소 찾지를 못하면 자동으로 다른 저장소를 검색하여 패키지를 설치한다.

 

#yum install [패키지명] [패키지명] [패키지명] 다 설치 가능

#yum install autotrace

 

패키지삭제

#yum remove [패키지명] [패키지명] [패키지명] 여러가지 지울 수 잇음

 

패키지 검색

#yum search [패키지명]

 

#yum provides [파일이름]   // 특정 파일이 어느 패키지에 포함되어

있는지 확인

ex)#yum provides /bin/ls

 

#yum clean all        //기존에 다운로드한 패키지 목록을지워

        설치 시 새로운 목록을 다운로드

그룹 설치

#yum grouplist | more    // 그룹 설치가 가능한 패키지 목록 확인

 

#yum groupinstall [패키지 그룹 이름]

 

# yum  groupinstall "X Window System" "Desktop" "Fonts" "Korean Support"

 

 # yum grouplist | more(한글로 나오지만 설치 할때는 영어로 해야함)

 

(영어로 나오게 하는법)

# LANG=us_US.UTF-8
 # echo $LANG
us_US.UTF-8
 # yum grouplist | more

영어로 나옴

 

yum 동작 가정과 설정 파일

 

1. /etc/yum.conf         //yum 설정 파일

2. /etc/yum.repos.d/   //저장소 정보가 저장되어 있는 디렉토리

 

저장소(Repository) 줄여서 Repo 라고도 부름 

 

(1) Server-A : yum install 입력

(2) Server-A : /etc/yum.repos.d/ 디렉토리에 repo 파일을 열어 URL 확인

(3) Server-A : 패키지 목록 파일을 REPO에 요청

(4) Repo      : 패키지 목록을 Server-A에게 전달

//설치 패키지 파일을 다운받는게 아니라 설치하고자하는 패키지목록만 다운 받는거다.

(5) Server-A: 화면에 설치할 패키지와 관련 패키지 이름을 출력

(6) Server-A: Y를 입력하면 설치 하고자하는 패키지 파일을 REPO에 요청

(7)Repo : 설치할 패키지를 전달

(8)Server-A: 다운로드한 패키지를 자동으로 설치

Ex) #yum -y install vim

 

[base] - 저장소 식별자

         - 각 식별자는 독립적으로 존재하여 동작

name - 저장소의 이름

         - 보기 편한 이름으로 지정

mirrorlist

- baseurl 에 설정 값이 생략되어 있으면 대신 동작하는 항목으로

  해당 URL은 전세계에 분포된 여러개의 Repository와 연결되어

   있다.

baseurl

-Repository URL적혀 있으며 URL대신에 ftp주소, file 경로

등이 올 수 있다.

 

repository를 DVD이미지로 변경

 

#cd /mnt

#ls        //마운트 확인

#cd /etc/yum.repoas.d/

#mkdir backup    //백업 디렉토리 생성

#mv *.repo backup //현재 경로의.repo를 가진 파일을 이동

 

#touch dvd.repo    //새로운 repo 파일 생성

 

#vi dvd.repo

 

[dongsam-dvd]

name=CentOS DVD REPO

baseurl=file:///mnt/        //네트워크 주소가 아니라, DVD 경로 주소

gpgcheck=0

 

네트워크 차단

#ifdown eth0

 

VMware에서 설치

#yum clean all

#yum -y install mysql-connector-odbc

#yum -y install php

 

DVD이미지에서 직접 다운받기 때문에 패키지를 외부에서 다운로드 하는 과정이 없어 설치 속도가 빠르다

 

vi /etc/yum.repos.d/dvd.repo

 

[extras]

name=network

baseurl=http://ftp.daumkakao.com/centos/6.8/extras/x86_64

gpgcheck=0

 

네트워크 다시 연결

#ifup eth0 

 

#cd /mnt/Packages/

epel-release 패키지 존재 유무 확인

// #yum remove mysql-connector-odbc

mysql-connector-odbc  //로컬 dvd 이미지에 있는 패키지 파일

epel-release                //외부 레포에 있는 패키지 파일

 

#yum -y install mysql-connector-odbc epel-release

 

http://mirror.centos.org/centos/6/os/x86_64/

실제 CentOS에서 기본으로 제공하는 기본 Base RePO의주소

 

yum 파일 원상 복구

dvd.repo 파일을 ->backup 디렉토리로 이동

backup 디렉토리에 원본 repo파일을 /etc/yum.repos.d/로 이동

 

 

 

 

 

Server-A B

Client-Linux 에 전부 설정

 

#setenforce 0
#vi /etc/sysconfig/selinux    //selinux disable

7번째 라인 SELINUX=disabled

#service iptables stop    //iptables 데몬 중지

#chkconfig iptables off //iptables 데몬이 부팅 시 동장하지 않도록 설정

 

MAC주소 - 물리 네트워크 카드 할당된 고유 주소

    #ipconfig

>ipconfig/all

 

IP주소 - 네트워크 상에서 컴퓨터를 찾아가기 위한 주소

            00000000.00000000.00000000.00000000 32bit

~

 11111111. 11111111. 11111111. 11111111 약43억개

 

공인IP- ISP (SK, LG,  KT)업체가 가지고 있는 IP주소

     전세계 어디서든 해당 IP주소를 가지고 있으면 통신이 가능하다.

 

NAT-  공인 IP <-> 사설 IP

    IP가 부족하여 각각의 컴퓨터에게 모두 IP를 할당할 수 없으므로 외부와 통신이 가능한 공인IP를 여러개 사설IP로 나누어 사용할 수 있는 기술

 

사설IP -NAT로 통해 외부와 통신할 수 있는 IP주소로 내부 네트워크

     에 위치한 컴퓨터 끼리만 통신할 수 있는 IP

 

DHCP -동적으로 사용자에게 IP를 할당해주는 프로토콜

사용자에게 네트워킹에 필요한, ip주소,DNS주소,서브넷마스크,GATEWAY에 대한 정보를 자동으로 구성해준다.

 

 

VMware에는 3가지 Network 타입이 있다.

1. 브릿지 (Bridge)

 물리 PC와 가상머신이 같은 스위치에 연결된 형태

-> 같은 네트워크 위치에 있다

 

물리 PC 주소 IP - 172.16.0.X(IPv4)

가상 머신 주소 IP- 172.16.8.x

VM웨어 Server-A 오른쪽 클릭 -> 셋팅 -> 네트워크 어댑터 클릭-> 오른쪽 브릿지 클릭-> OK

 

VM웨어 터미널

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=dhcp

#IPADDR=100.100.100.120

#NETMASK=255.255.255.0

#GATEWAY=100.100.100.2

#DNS1=8.8.8.8

#DNS2=8.8.4.4

 

#service network restart

#ifconfig

  inet addr 172.16.0.x

xshell -> 새 세션 만들기->IP입력->브릿지로 서로 연결한 상대에게 접속할 수 있음

#wall [하고싶은말]

 

NAT

가상머신의 네트워크타입을 NAT 변경

아이피 주소 설정을 DHCP(동적IP)

   STATIC(고정IP)

(1)DHCP가 할당해주는 IP범위내에서 IP를 할당받는 설정

(2)DHCP에게 IP를 할당받는 것이 아닌 수동으로 IP를 입력하여 고정IP를 사용하는 방법

 

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=static

IPADDR=100.100.100.110

NETMASK=255.255.255.0

GATEWAY=100.100.100.2

DNS1=8.8.8.8

DNS2=8.8.4.4

 

#service network restart

 

ping test 테스트

 

 

 

Xshell 접속이 안될 경우

#ping 8.8.8.8   //구글 dns서버

 

핑 테스트 실패 -> ip 설정파일 오타 , vmware 네트워크 설정 확인

핑 테스트 성공 -> VMware Netowkr Editor 설정에서

 vmnet8 (NAT 100.100.100.0/GATEWAY 100.100.100.2)

설정을 Remove하여 삭제하고 ,Apply을 클릭하여 적용 후, Add Network 를 클릭하여 다시 vmnet8

의 정보를 입력하고 ok 적용해야한다. 

 

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0                //이더넷 인터페이스 종류(장치이름)

TYPE=Ethernet              // 통신 타입 이더넷

ONBOOT=yes                // 부팅 시 장치 활성화 여부

NM_CONTROLLED=no    //네트워크 매니저 데몬 제어 여부

BOOTPROTO=static        //IP 할당 방식(DHCP,STATIC,NONE)

IPADDR=100.100.100.110 //IP주소

NETMASK=255.255.255.0 //서브넷 마스크 값

GATEWAY=100.100.100.2  //외부로 나가기 위한 주소

DNS1=8.8.8.8      //1차 DNS 주소

DNS2=8.8.4.4      //2차 DNS 주소

 

 

본딩 구성

1. 네트워크 카드 추가 후 재부팅

 

슬레이브                마스터

2. ifcfg-eth0(Active) -> ifcfg-bond0

   ifcfg-eth1(Backup) ->  ifcfg-bond0

 

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

#vi /etc/sysconfig/network-scripts/ifcfg-eth1

 

DEVICE=ethX                         
TYPE=Ethernet
ONBOOT=yes

MASTER=bond0    //마스터가될 본딩파일의이름

SLAVE=yes    //종속 여부
BOOTPROTO=none    //ip 설정방식(사용안함)

USERCTL=no        //일반 사용자 제어 허용 여부

NM_CONTROLLED=no    // 네트워크 매니저 데몬 제어 허용 여부

#vi /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=static

IPADDR=100.100.100.110

NETMASK=255.255.255.0

GATEWAY=100.100.100.2

DNS1=8.8.8.8

DNS2=8.8.4.4

      BONDING_MASTER=yes                //본딩 주체 여부

BONDING_OPTS="mode=1 miimon=100"    //본딩옵션

 

3. /etc/modprobe.d/bonding.conf 파일 생성

#vi /etc/modprobe.d/bonding.conf

alias bond0 bonding

options bond0 mode=1 miimon=100

 

4. 본딩 적용

#modprobe bond0     //커널에 본딩모듈 추가

 

5. #service network restart

6.#ifconfig

eth0   

eth1

bond0

7. 설정 확인

#cat /proc/net/bonding/bond0

 (1) 본딩을한 eth 장치가 정삭적으로 출력되는지 확인

 (2) Bonding Mode가 (Active-Backup)으로 잘 되어 있는지 확인

 (3) 현재 Active 상태의 인터페이스 확인

Currently Active Slave: eth0

(4) 모니터링 및 통신 상태 확인

MII Status: up

8. 본딩 테스트

외부 지속적으로 통신 하고 있어야 함

-> ex)ping 8.8.8.8

네트워크 카드(NIC) 비활성화 시키면서 테스트

 

세션 -1                    세션-2

#ping 8.8.8.8               #watch -d -n 1 "cat /proc/net/bonding/bond0"

 

Server-B             본딩 설정 진행    아이피번호는 바꿔

Client-Linux        본딩 설정 진행    아이피번호는 바꿔

 

'리눅스 ' 카테고리의 다른 글

RPM  (0) 2017.04.16
리눅스 부팅 프로세스  (0) 2017.04.16
압축해제 등등  (0) 2017.04.16
find,xargs  (0) 2017.04.16
find 옵션  (0) 2017.04.16

-RPM(Redhat Package Manager)의 약자로 래드햇에서 만든 패키지 관리 도구

1. CentOS 6.8 DVD Image 파일을 Server-A에 삽입

2. #mount -t iso9660 /dev/cdrom /mnt

3. #cd /mnt

4. #cd Packages

 

NetworkManager-0.8.1-107.     e16.    x86_64    .rpm

[이름                 ][패키지버전][릴리즈]  [아키텍쳐] [확장자

 

RedhatEnterpriseLinux 6의 커널에서 호환이되는 패키지

아키텍쳐 - x86_64 64비트 를 지원하는 인텔 CPU계열에서 사용할 수있는 패키지

is386 32비트

noarch -모든 cpu에 설치가 가능한 패키지

 

 

minimal 버전 X-windows 환경 만들기

# yum  groupinstall "X Window System" "Desktop" "Fonts" "Korean Support"

데스크탑 환경(X-window)  스냅샷

VMware 상단 메뉴 중 VM 메뉴 -> install VMware Tools 클릭

#vi /etc/inittab

 

id:3:initdefault -> id:5:initdefault 변경    /앞으로 게속 5로부팅

설정 다넘기기

 

rpm  패키지 설치 (-ivh)

-i install

-v verbose(설치과정 화면에 출력)

-h hash (해시 기호 #을 이용하여 설치과정 출력)

 

# rpm -ivh xterm-253-1.el6.x86_64.rpm
오류나면 정상

Failed dependencies <- 의존성 오류

     

(의존성 오류 해결하기위해 설치)

# rpm -ivh libXpm-3.5.10-2.el6.x86_64.rpm  

설치

#rpm -ivh libXaw-1.0.11-2.el6.x86_64.rpm
설치

 위에 있는 것을 다 설치하면

# rpm -ivh xterm-253-1.el6.x86_64.rpm

이게 설치가 된다.

 


# rpm -ivh yp-tools-2.9-12.el6.x86_64.rpm

오류: Failed dependencies(의존성 오류):
 ypbind is needed by yp-tools-2.9-12.el6.x86_64

 

의존성 무시하고 설치하는 방법

--nodeps 의존성 무시

--force 강제 설치

#rpm -ivh yp-tools-2.9-12.el6.x86_64.rpm --nodeps

이러면 설치가 된다. (대신 오류같은 것이 일어날 수 있다.)

 

패키지 정보검색

#rpm -q          //질의옵션

        -a         // 전체 패키지 목록 -> #rpm -qa | grep xterm

        -f         //파일명을 포함한 패키지명을 출력 (절대경로)

    #rpm -qf /bin/ls

   파일의 경로를 입력하면, 파일이 어떠한 패키지에 포함된 파일인지 확인이 가능함 

  -i        //패키지 상세한 정보 확인하기

                     #rpm -qi [패키지명]

                     #rpm -qi  xterm

                     #rpm -qi  coreutils

    

         -l              //패키지가 설치한 파일의 목록을 출력

   #rpm -ql   [패키지명]

   #rpm -ql  coreutils

 

         -R             //패키지 의존성 확인

   #rpm -qR [패키지명]

   #rpm -qR xterm

패키지 삭제

#rpm -e [패키지명]

#rpm -e xterm                패키지 삭제

# rpm -qa | grep xterm    삭제 확인

 

RPM 장점 : 설치가 쉽다.

  단점 : 의존성 문제를 해결하기가 어렵다. 

 


        

'리눅스 ' 카테고리의 다른 글

YUM+각 설정  (0) 2017.04.22
리눅스 부팅 프로세스  (0) 2017.04.16
압축해제 등등  (0) 2017.04.16
find,xargs  (0) 2017.04.16
find 옵션  (0) 2017.04.16

리눅스 부팅 프로세스

1. Power ON & ROM BIOS

-전원이 들어오면 CPU가 ROM에 저장된 BIOS 실행

- BIOS는 POST을 수행하여 하드웨어 장치들을 하나씩 인식하며 이상 유무 확인

- 부팅 장치에서 Bootsector에 MBR을 읽어드려 부트로더를 실행

 

리눅스 부트로더 - LILO -> 현재 사용 안함

 GRUB -> 현재 널리 사용하고 있는 부트로더

 

2. 부트로더 (GRUB) 실행

 

-부팅메뉴 (/boot/grub/grub.conf) 실행 , 부팅하고자하는 운영체제를 선택

- Kernel 이미지 (/boot/vmlinuz-*)가 메모리 로딩이 되고 , 동작에 필요한 프로세스를 생성한다.

 

3. init 프로세스 실행 (PID=1)

- /etc/inittab 파일을 참고하여 설정된 RunLevel 실행

- 부팅 레벨이 결정되면 /etc/rc.d/rc.sysinit 스크립트 실행

(PATH변수 설정 ,네트워크 설정 ,스왑메모리, 호스트 등등)

- 해당 Runlevel에 맞는 /etc/rc.d/rc#.d/* 디렉토리에 스크립트가 실행

 

S로 시작하는 파일은 해당 부팅 레벨로 부팅시  자동으로 실행되는 파일

K로 시작하는 파일은 자동으로 실행되지 않는 파일

숫자 파일들이 실행되는 우선순위

 

 

RunLevel - 시스템을 어떤 방식으로 부팅할 것인가를 분류해 놓은 것

0 - 시스템 종료

1 - 싱글유저모드(안전 모드)

2 - 네트워크 기능이 없는 다중 사용자 모드

3 - 모든 네트워크 기능을 지원하는 다중 사용자 모드

4 - 사용되지 않음

5 - X-Window

6 - 시스템 재부팅

 

root 패스워드 분실 시

런레벨 1 (싱글 모드)

- timeout 전에 엔터 키 입력 후 , e키 클릭 들어가서 수정

- single or 1 입력 후 부팅

GRUB에 password 설정

#grub

grub >md5crypt

Password :    

$1$/4tmG/$af6lPOuXQnASdyh5TkVol/

qrub > quit 종료

vi /boot/grub/grub.conf

password -md5 $1$/4tmG/$af6lPOuXQnASdyh5TkVol/

 

 


 

#reboot -> grub 부트로더 메뉴로 진입

#chkconfig

-데몬의 실행 레벨 정보를 관리 해주는 프로그램

#chkconfig --list //리스트 확인

#chkconfig --list [데몬이름]

#chkconfig --[add|del] [데몬이름]

#chkconfig --level # [데몬이름] [on|off|reset]

 

런레벨 3에서는 sshd 데몬이 부팅 시 자동으로 실행되지 않도록 설정

# chkconfig --level 3 sshd off

#reboot 후에 Xshell을 이용하여 해당 Server-A 접속 == 안됌

 

 

service sshd start //sshd 데몬 실행

Xshell 접속 시도 //가능


시스템 초기화및 관리 프로세스

-과거 system V init방식으로 시스템 초기화(init -> inittab -> rc.sysinit)

-현재 system V init + Upstart 방식을 함께 사용(init ->rcS.conf ->rc.conf -> rc.local)

-미래 Systemd

 

'리눅스 ' 카테고리의 다른 글

YUM+각 설정  (0) 2017.04.22
RPM  (0) 2017.04.16
압축해제 등등  (0) 2017.04.16
find,xargs  (0) 2017.04.16
find 옵션  (0) 2017.04.16

LVM 구성
스냅샷을 이용하여 초기화 이후에 진행
1GB Disk 2개 추가

VG명 : VG_1
LV명 : LV_1  (500M)
       LV_2  (1000M)
    LV_3  (나머지전부)
   
마운트 포인트
  /LV_TEST1
  /LV_TEST2
  /LV_TEST3
 
CentOS-6.8-x86_64-bin-DVD1.iso (3.6GB) 저장만 http://ftp.kaist.ac.kr/CentOS/6.8/isos/x86_64/


압축 & 아카이브
 압축 유틸리티 종류
  gzip, bzip2, xz, zip
 
 gzip & gunzip
 #gzip [파일명]    // 해당 파일 압축
        // 파일 확장자 FILE.gz
 
 #gunzip [파일명].gz   // 압축해제
 #gzip -d [파일명].gz  // 압축해제

 옵션 -[1~9] -1 압축속도가 가장 빠르며, 압축율은 가장 낮음
             -9 압축속도가 가장 느리며, 압축율은 가장 높음
    ( -6 기본값)


 #mkdir /practice/gzip_test
 #cd /practice/gzip_test
 #cp /usr/lib/locale/locale-archive /practice/gzip_test
 #cp locale-archive file1
 #cp file1 file2
 #cp file1 file3
 
 #gzip file1   //file1 gzip 압축
 
 #gunzip file1  // 압축
 #gzip -d file1   // 해제
 
 file2  -1 압축
 file3  -9 압축
 
 #time gzip -1 file2  // 명령어 실행 시간 확인 (real : 총 수행시간)
 #time gzip -9 file3  // 22~23MB
 
 압축해제

 bzip2 & bunzip2
 - #bzip2  [파일명]  // 압축 
      #bunzip2  [파일명].bz2 // 해제
   #bzip2 -d [파일명].bz2 // 해제
  
   file1 파일 bzip2 압축  // 19~20MB
   file2 파일 bzip2 압축
   file3 파일 bzip2 압축

   bzip2로 압축된 파일 압축해제
  
 xz & unxz
 
  압축   
  xz [파일명]
 
  해제
  unxz [파일명].xz
  xz -d [파일명].xz
 
  file1 ~ 3 xz 압축 후 용량 확인 후 압축 해제 (3.2M)
 
 
아카이브
 tar (Tape ARchive)
 - 여러개의 지정된 파일들을 아카이브로 만든다.
 - 아카이브 파일에는 .tar 을 붙인다.
 
 #tar [옵션] [만들파일의이름] [묶을 파일이름]
  - c 새로운 아카이브 생성
  - x 아카이브 해제
  
  -f tar 아카이브 파일 지정
  -v 진행 과정 출력
  
  -t 아카이브 파일 확인
  
  
  1. 아카이브 생성하기 (cvf)
  #tar cvf [만들파일.tar] [묶을파일]
  #tar cvf file.tar file*  // 아카이브 생성
  
  2. 아카이브 해제 하기
  #tar xvf file.tar
  
  3. 아카이브 파일 추가 (rvf)
              [추가 파일]
  #tar rvf file.tar file1

  
  bzip2를이용하여 아래 파일
  - file.tar
  #bzip2 file.tar
  -> file.tar.bz2
  -> file.tar.gz
  -> file.tar.xz


  #file.tar.bz2
  1. bz2 해제
  2. #tar xvf file.tar 아카이브 해제
 
  아카이브 압축
  -z gzip 유틸리티를 이용하여 아카이브 파일 압축/해제
  -j bzip2
  -J xz
 
  #ls
  file1 file2 file3
 
  기존 압축방법     tar 옵션을 이용
  #tar cvf file.tar file*  #tar cvfj file.tar.bz2 file*
  #bzip2 file.tar    -> file.tar.bz2
   file.tar.bz2
 

  #bunzip2 file.tar.bz2   #tar xvfj file.tar.bz2
  #tar xvf file.tar
 
  옵션   설명  압축율  속도  확장자명
  z   gzip  낮음  빠름  .tar.gz
  j   bzip2  높음  느림  .tar.bz2
  J   xz    높음   빠름   .tar.xz
 
  특정 디렉토리에 아카이브 해제
  #tar xvf [아카이브파일.tar] -C [경로]

 

'리눅스 ' 카테고리의 다른 글

RPM  (0) 2017.04.16
리눅스 부팅 프로세스  (0) 2017.04.16
find,xargs  (0) 2017.04.16
find 옵션  (0) 2017.04.16
LVM  (0) 2017.04.15

#find [경로] [옵션] [액션]

 

size 옵션

현재 시스템에서 50메가 이상인 파일 찾기

#find / -size +50M

 

# mkdir /practice/find_test
# cd /practice/find_test

# touch test{01..10}

 

-delete 검색 결과 삭제

find . -type f -name "test*" -delete

이름이 tset로 시작되는거 다 삭제 해줌

-exec [명령어] \;    검색 결과를 지정한 명령어 처리

-exec [명령어] {} \; 검색 결과를 차례대로 매칭하면서 지정된 명령어 실행

 

# find . -empty -exec ls -l  \;

#find . -empty -exec ls -l {} \;

 

vi find_test.sh

 

#!/bin/bash

for z in $(seq 0 7); do

for i in $(seq 0 7); do

for j in $(seq 0 7); do

for k in $(seq 0 7); do

touch ${z}${i}${j}${k};

chmod ${z}${i}${j}{k} ${z}${i}${j}${k};

done;

done;

done;

done;

# sh find_test.sh //명령어 실행

ex) 퍼미션이 777 파일을 찾아서 화면에 출력

#find . -perm 777    //정확히 허가권이 0777인 파일 검색

./0777

# find . -perm +777 | sort -n | more   

//기준이 되는 허가권에 비트가 하나라도 일치하는 파일

 

#find . -perm -777        //기준이 되는 허가권 이상인 파일

./7777
./0777
./3777
./2777
./5777
./4777
./6777
./1777

 

1.find 명령어로 현재 경로에 이름이 0으로 시작하여 1로 끝나는 파일만 gzip으로 압축 "0??1"

#find -name "0??1" -exec gzip {} \;

#ll *.gz

 

xargs

# mkdir /practice/xargs_test
 # cd /practice/xargs_test
 # vi xargs_test.sh


#!/bin/bash
for z in $(seq 0 10); do
    fallocate -l 10K "$RANDOM.txt"
done;

for z in $(seq 0 10); do
    fallocate -l 15K "$RANDOM.txt"
done;
for z in $(seq 0 10); do
    fallocate -l 20K "$RANDOM.txt"
done;

# sh xargs_test.sh

1.find를 쓰지 않고 크기가 10kb인 파일명만 출력하고 이름의 숫자가 적은순으로 정렬

# ll -h |grep 10K | cut -d " " -f 8 | sort

2. find를 사용하여 크기가 10kb인 파일을 출력하고, 파일의 이름만 출력하여 정렬

# find . -size 10k | cut -d "/" -f 2 | sort -n

3. 현재 경로에서 find를 사용하여 크기가 10kb 파일 삭제, 단 -delete 옵션 사용 금지

 

# find . -size 10k -exec rm {} \;

 

xargs (eXtended Arguments)

- 표준 출력 값(파일이름)을 이용하여 명령을 실행

- find와 사용 시 결과물을 다음 명령어에 인자로 전달하는 역할

- 여러 명령어와 함께 조합하여 사용할 수 있다.

-i 인자로 문자열을 전달

-t 상세한 정보 출력

 

4. find 를 사용하지 않고 크기가 20k 파일을  삭제
#ll -h | grep 20K | cut -d " " -f 8 | xargs rm 

 

ex) find로 원하는 파일찾아서 해당 파일에서 특정 문자열 검색

#find / -name "*" | xargs grep [계정명:암호]

 

ex)/bin 디렉토리에 가장 큰 일반 파일을 찾아 크기를 확인하여

가장큰 파일을 출력

1.#find /bin - type f | xargs du -s

2.#find /bin - type f | xargs du -s | sort -n | tail -1

 

ex) /practice/find_test 이동 후, 현재 디렉토리에 gz으로 압축된 파일 압축해제

#gunzip 0??1.gz

 

현재 디렉토리에 위치한 모든 파일의 이름뒤에 확장자 .perm 붙이기

이름 변경하기

mv [원본] [대상]

 

0000 ~ 7777 -> 0000.perm ~ 7777.perm

# ls | xargs -t -i mv {} {}.perm

 

#du -sh /*

 

#rm -rf ./*

rm -r ./0001 0002 이렇게 아규먼트가 늘어나는방향

 

#ls | xargs rm

rm 0000 

rm 0001 하나하나 다지움 

 

원상복구

#ls | cut -d "." -f 1 | xargs -t -i mv {}.perm {}

 

 

 

 

 

 

'리눅스 ' 카테고리의 다른 글

리눅스 부팅 프로세스  (0) 2017.04.16
압축해제 등등  (0) 2017.04.16
find 옵션  (0) 2017.04.16
LVM  (0) 2017.04.15
LVM명령어  (0) 2017.04.15

find option

-empty : 비어 있는 파일, 단 일반파일 또는 일반 디렉토리에 한함
-uid n : 지정된 n값의 UID를 갖는 파일
-gid n : 지정된 n값의 GID를 갖는 파일
-group 그룹명 : 지정한 그룹명에 소속된 파일
-name : 지정된 형식의 패턴을 가지는 파일
-newer 파일 : 지정한 파일보다 더 최근에 변경된 적이 있는 파일
-used n : 파일이 변경된 이후 최근 n일 이후에 액세스된 적이 있는 파일
-user uname : 지정한 uname의 소유로 된 모든 파일(UID로 지정가능)
-amin n : 최근 n분 이전에 액세스된 적이 있는 파일
-anewer 파일 : 지정한 파일보다 더 최근에 액세스된 적이 있는 파일
-atime n : 최근 n*24 시간 전에 액세스된 적이 있는 파일
-mmin n : 최근 n분 이전에 변경된 적이 있는 파일
-mtime n : 최근 n*24 시간 이전에 변경된 적이 있는 파일
-executable : 실행 가능한 파일
-readable : 읽기 가능한 파일
-writable : 쓰기 가능한 파일
-fstype type : 지정한 파일시스템타입(type)에 존재하는 파일
-nogroup : 소속그룹이 존재하지 않는 파일
-nouser : 소속 사용자(ID)가 존재하지 않는 파일
-path 패턴 : 파일명이 패턴에 매칭되는 파일
-perm 모드 : 모드에서 지정된 퍼미션과 일치하는 퍼미션을 가진 파일만 해당됨.
-perm -mode : 모드에서 지정된 퍼미션을 가진 모든 파일.
-regex 패턴 : 패턴에서 지정한 정규표현식에 매칭되는 파일
-size n[cwbkMG] : 지정된 n 단위의 디스크공간을 사용하는 파일. 디폴트는 b
-type 타입 : 지정한 파일타입에 해당하는 파일. b,c,d,p,f,l,s 등이 있음


[수행할작업(action)]

-delete : 검색된 파일들을 삭제
-exec command ; : 지정한 command 를 실행
-exec command {} + : 검색된 파일들을 차례대로 매칭하면서 지정된 command 를 수행
-ls : 'ls - dils' 를 수행
-ok command ; : -exec 와 같지만 실행하기 전에 먼저 사용자에게 표준입력으로 수행할 command 를 입력 받는다. 만약 입력이 없다면 지정된 command 를 수행한다.
-print : 검색된 파일들에 대하여 전체파일 경로로 파일리스트를 표준출력으로 출력한다.
-printf format : 검색된 파일들에 대하여 지정된 format 형식으로 표준출력으로 출력


[연산자]

( ) : 괄호( )안의 연산이 먼저 행해짐
! expr : expr 이 거짓일때 참, 참일때 거짓이 됨.
-not expr : 위의 ! expr 과 동일함 (POSIX 호환용)
expr1 expr2 : AND 의 의미. expr1 이 거짓일 때에는 expr2 는 평가되지 않음
expr1 -a expr2 : 'expr1 expr2' 와 같음
expr1 -and expr2 : 'expr1 expr2' 와 같음 (POSIX 호환용)
expr1 -o expr2 : OR 의 의미. expr1 이 참일 경우 expr2 는 평가되지 않음.
expr1 -or expr2 : 'expr1 -o expr2' 와 같은 의미

 

'리눅스 ' 카테고리의 다른 글

압축해제 등등  (0) 2017.04.16
find,xargs  (0) 2017.04.16
LVM  (0) 2017.04.15
LVM명령어  (0) 2017.04.15
쿼터명령어  (0) 2017.04.15

LVM

-Disk 파티션 효율적으로 관리하고 사용할 수 있는 방식

-LVM2 (Device Mapper)를 이용

 

1. 초기화 설정

-VMware 스냅샷을 이용하여 초기화

-1GB disk * 3EA 추가

-reboot

2. Fdisk 을 이용하여 추가 확인

#fdisk -l

3.파티션 생성

#fdisk /dev/sdb~sdd

'n'         add a new partition

'p'         primary partition

'1'         partition number

'enter'    Frist cylinder

'enter'    last cylinder

't'              Change a partition's system id

'8e'            Linux LVM(리눅스 문제 필수로나옴)

'w'

 

4. PV생성

#pvcreate [장치명]

 

#pvcreate /dev/sdb1 ~ sdd1

5. VG(Volume Group) 생성

#vgcreate [볼륨그룹명] [PV장치명]...[PV장치명]

 

#vgcreate PracticeVG /dev/sdb1 /dev/sdc1 /dev/sdd1

 

6. VG 구성 확인

#vgdisplay [볼륨그룹명]

#vgdisplay PracticeVG

  --- Volume group ---
  VG Name               PracticeVG
  Cur PV                3            //현재 PV 개수
  Act PV                3            //활성 pv 개수
  VG Size               2.98 GiB    //VG 용량
  PE Size               4.00 MiB    // PE 크기 (4MB)
  Total PE              762
  Alloc PE / Size       0 / 0        //할당된 PE 개수   /용량
  Free  PE / Size       762 / 2.98 GiB    //남은 PE 개수 /용량
 

7. VG의 파티션 LV 생성

#lvcreate --szie [크기] --name [LV이름] [VG이름]

 

#lvcreate --size 500M --name PracticeLV1 PracticeVG

#lvcreate --size 1.5GB --name PracticeLV2 PracticeVG

#lvcreate --extents 100%FREE --name PracticeLV3 PracticeVG

나머지 (FREE) 용량을 전부 PracticeLV3에 할당

 

8. LV 정보 확인

#lvdisplay

  LV Path                /dev/PracticeVG/PracticeLV1
  LV Name                PracticeLV1
  VG Name                PracticeVG
  LV Size                500.00 MiB
  Current LE             125        //LV에 할당된 LE 개수
9. 파일 시스템 생성 및 마운트

#mkfs -t ext4 /dev/PracticeVG/PracticeLV1 

#mkfs -t ext4 /dev/PracticeVG/PracticeLV2

#mkfs -t ext4 /dev/PracticeVG/PracticeLV3

 

#mkdir /LV-{1,2,3}

#mount /dev/PracticeVG/PracticeLV1 /LV-1

#mount /dev/PracticeVG/PracticeLV2 /LV-2

#mount /dev/PracticeVG/PracticeLV3 /LV-3

 

# df -h           //확인

 

LV -1 500M

LV -2 1.5GB

LV -3 나머지전부(1GB)

 

LV 삭제 및 용량 추가

#umount /LV-3        //언마운트

#lvchange -an /dev/PracticeVG/PracticeLV3    //LV 비활성화

//LV 상태를 변화 (-a actice -n no)

-> 해당 LV를 비활성화

 

#lvremove /dev/PracticeVG/PracticeLV3        //LV 제거

 

#lvdisplay     // LV3 삭제 확인

#vgdisplay    //VG 정보 확인

 Cur LV                2
 Open LV               2
 Cur PV                3
 Act PV                3
 VG Size               2.98 GiB
 PE Size               4.00 MiB
 Total PE              762
 Alloc PE / Size       509 / 1.99 GiB
 Free  PE / Size       253 / 1012.00 MiB    여유 PE 253 /1012MB

 

용량 추가

#lvextend --size +512M /dev/PracticeVG/PracticeLV1

//LV-1에 512M 추가

 Size of logical volume PracticeVG/PracticeLV1 changed from 500.00 MiB (125 extents) to 1012.00 MiB (253 extents).
  Logical volume PracticeLV1 successfully resized.
이렇게 뜨면 성공

이번엔 블록 개수로 추가 하는 것

#lvextend --extents +125 /dev/PracticeVG/PracticeLV2

 

 Size of logical volume PracticeVG/PracticeLV2 changed from 1.50 GiB (384 extents) to 1.99 GiB (509 extents).
  Logical volume PracticeLV2 successfully resized

이렇게 뜨면 성공

#vgdisplay 남은 용량 확인

  Free  PE / Size       0 / 0    없다!

 

#df -h

/dev/mapper/PraticeVG-PracticeLV1    477M 2.3M 449M 1%/LV-1

/dev/mapper/PracticeVG-PracticeLV2
                      1.5G  2.3M  1.4G   1% /LV-2

 

#resize2fs /dev/PracticeVG/PracticeLV1 //파일 시스템 크기 재설정

#resize2fs /dev/PracticeVG/PracticeLV2//파일 시스템 크기 재설정

 

#df -h

/dev/mapper/PracticeVG-PracticeLV1
                      973M  2.8M  920M   1% /LV-1
/dev/mapper/PracticeVG-PracticeLV2
                      2.0G  2.3M  1.9G   1% /LV-2

'리눅스 ' 카테고리의 다른 글

find,xargs  (0) 2017.04.16
find 옵션  (0) 2017.04.16
LVM명령어  (0) 2017.04.15
쿼터명령어  (0) 2017.04.15
쿼터  (0) 2017.04.15

3. LVM 관련명령어
 (1) vgscan
   1) 설명: 디스크에 있는 볼륨그룹(VG:Volume Group)를 검색하여 /etc/lvmtab 파일을 생성한다.
           fdisk를 이용하여 파티션을 속성을 LVM으로 지정한 후에 이 명령을 사용한다.
   2) 사용법
     vgscan
 (2) pvcreate
   1) 설명: 물리적 볼륨(PV:Physical Volume)을 생성하는 명령어이다. fdisk를 이용하여 파티션을
           분할하고 LVM 속성으로 지정한 뒤에 해당 파티션을 PV로 만들 때 사용하는 명령이다.
   2) 사용법
     pvcreate 디바이스명
   3) 사용예
     pvcreate /dev/hdb1
 (3) vgcreate
   1) 설명: 볼륨그룹을 생성하는 명령어로 생성된 PV를 지정한 볼륨그룹에 포함시키면서 생성한다.
   2) 사용법
     vgcreate 볼륨그룹명 디바이스명 디바이스명
   3) 사용예
     vgcreate lvm /dev/hda7 /dev/hdb1
      => lvm 이라는 볼륨그룹을 생성하고 /dev/hda7, /dev/hdb1 이라는 PV를 포함시킨다.
 (4) vgdisplay
   1) 설명: 볼륨그룹의 속성과 정보를 보여주는 명령어이다.
   2) 사용법
     vgdisplay [option] [볼륨그룹명]
   3) option
     -v: 좀 더 자세히 보여주는 옵션으로 Volume Group이외에 gical Volume과 Physical Volume도
        같이 보여준다.
   4) 사용예
    ㄱ. [root@www root]# vgdisplay
         => Volume Group의 내용을 보여준다.
    ㄴ. [root@www root]# vgdisplay -v lvm
         => lvm이라는 볼륨그룹의 내용을 자세히 보여준다.
 (5) lvcreate
   1) 설명: 볼륨그룹안에 LV(Logical Volume)을 생성하는 명령이다.
   2) 사용법
     lvcreate 옵션 볼륨그룹명
   3) option
     -L: LV의 사이즈를 지정하는 옵션으로 K(kilobytes), M(megabytes), G(gigabytes), T(terabyt
        es) 단위를 붙여 지정가능하다.
     -l: LV의 사이즈를 지정하는 옵션으로 pe의 개수로 용량을 지정한다. 참고로 보통 1pe당 4MB
        이다.
     -n: LV의 이름을 지정하는 옵션이다.
   4) 사용예
    ㄱ. [root@www root]# lvcreate -L 2000M -n backup lvm
         => lvm이라는 볼륨그룹에 backup라는 이름으로 2Gigabytes 용량으로 LV을 생성한다.
    ㄴ. [root@www root]# lvcreate -l 250 -n data lvm
         => lvm이라는 볼륨그룹에 data라는 이름으로 250pe(약 1GB)용량으로 LV을 생성한다.
 (6) lvscan
   1) 설명: 디스크에 있는 Logical Volume을 찾아준다.
   2) 사용법
     lvscan [option]
   3) option
     -v: 정보를 자세히 보여준다.
   4) 사용예
     lvscan
 (7) lvdisplay
   1) 설명: Logical Volume의 정보를 보여준다.
   2) 사용법
     lvdisplay [option] LV명
   3) option
     -v: 정보를 자세히 보여준다.
   4) 사용예
     [root@www root]# lvdisplay -v /dev/lvm/data
       => /dev/lvm/data라는 LV의 정보를 자세히 보여준다.
 (8) vgextend
   1) 설명: 미리 생성된 Volume Group에 추가로 Phycical Volume을 추가할 때 사용한다.
   2) 사용법
     vgextend 볼륨그룹명 새PV명
   3) 사용예
     [root@www root]# vgextend lvm /dev/hdc1
       => lvm이라는 볼륨그룹에 /dev/hdc1을 추가한다.
 (9) vgreduce
   1) 설명: 볼륨그룹에 있는 Physical Volume을 삭제하는 명령이다.
   2) 사용법
     vgreduce 볼륨그룹명 PV명
   3) 사용예
     [root@www root]# vgreduce lvm /dev/hdc1
       => lvm이라는 볼륨그룹에서 /dev/hdc1을 삭제한다.
 (10) lvextend
   1) 설명: Logical Volume의 용량을 확장하는 명령이다.
   2) 사용법
     lvextend 옵션 [볼륨그룹명] LV명
   3) option
     -l +사이즈: 지정한 PE수만큼 용량을 늘린다.
     -L +사이즈[kmgt]: 지정한 사이즈만큼 용량을 늘린다. 단위를 표시하지 않으면 기본 Megabytes
                      단위이다.
   4) 사용예
     [root@www root]# lvextend -L +200M /dev/lvm/data
       => 기존의 용량에 추가로 200MB를 할당한다.
 (11) lvreduce
   1) 설명: Logical Volume의 용량을 줄이는 명령이다.
   2) 사용법
    lvreduce 옵션 [볼륨그룹병] LV명
   3) option
     -l -사이즈: 지정한 PE수만큼 용량을 줄인다.
     -L -사이즈: 지정한 사이즈만큼 용량을 줄인다. 단위를 표시하지 않으면 기본 단위는 Megabytes
                이다.
   4) 사용예
     [root@www root]# lvreduce -L -500 /dev/lvm/data
      => /dev/lvm/data의 용량을 500MB 줄인다.
 (12) vgchange
   1) 설명: 볼륨그룹을 속성을 변경하는 명령으로 볼륨그룹을 사용가능여부, 최대 LV 갯수등을 변경
           할 수 있다.
   2) 사용법
     vgchange 옵션 볼륨그룹명
   3) option
     -a y|n : 볼륨그룹의 사용여부를 지정한다.
     -l 갯수: 해당 볼륨그룹에 생성할 수 있는 최대 Logical Volume수를 지정한다.
   4) 사용예
    ㄱ. [root@www root]# vgchange -a y lvm
         => lvm이라는 볼륨그룹을 활성화시킨다.
    ㄴ. [root@www root]# vgchange -a n lvm
         => lvm이라는 볼륨그룹을 비활성화시킨다.
    ㄷ. [root@www root]# vgchange -l 100 lvm
         => lvm이라는 볼륨그룹을 최대 Logical Volume수를 100개로 지정한다.
 (13) vgremove
   1) 설명: 볼륨그룹을 제거하는 명령이다.
   2) 사용법
     vgremove 볼륨그룹명
   3) 사용예
     [root@www root]# vgremove lvm
      => lvm이라는 볼륨그룹을 삭제한다.

'리눅스 ' 카테고리의 다른 글

find 옵션  (0) 2017.04.16
LVM  (0) 2017.04.15
쿼터명령어  (0) 2017.04.15
쿼터  (0) 2017.04.15
RAID종류와설정  (0) 2017.04.15

쿼터 제한 영역
 
 1. 사용자별 하드 제한 영역 (User Hard limit)
 - 사용자가 파일시스템에서 사용 할 수 있는 최대 공간
 
 - 만약, 사용자가 자신의 쿼터 제한 크기에 도달하면 사용자는
   더이상 디스크에 파일을 생성할 수 없다.
 
 2. 사용자별 소프트 제한 영역(User Soft limit)
 - 사용자가 소프트 제한 여역에 도달할 때까지 데이터를 자유롭게
   저장할 수 있다.
  
 - 소프트 제한 영역은 일종의 경고로써, 아직 작업 공간에 여유가
   있을때 불필요한 파일을 정리하도록 알려주는 역할을 한다.
  
 3. 그룹별 하드 제한 영역 (Group Hard limit)
 - 쿼터 시스템에 의해 그룹을 저장하는 최종 제한 영역이다.
   해당 영역을 초과하면 사용자의 쿼터를 초기화 하지 않는 경우라도
   해당 그룹에 속하는 어떠한 사용자는 파일을 쓸 수 없다.
  
 4. 그룹별 소프트 제한 영역(Group Soft limit)
 - 사용자별 소프트 재한영역과 동일하게 작용하며, 개인 소유 파일이아닌
   그룹 소유 파일에 적용된다.
 
 5. 유예기간 (Grace)
 - 소프트 제한 영역을 넘어서면 사용자나 그룹은 유예기간(Grace period)
   에 접어들게 된다. 유예기간이 끝나면 쿼터 제한을 초과하는 상황이
   벌어지지 않도록 충분히 파일을 삭제하지 않을 경우 소프트 제한영역은
   하드 제한영역으로 바뀐다. 유예기간은 월, 주, 일, 시, 분, 초를 나타내는
   숫자료 표시할 수 잇으며 기본 값은 7일이다.
  
  
quotacheck : quota설정파일이 존재하는지 설정은 이상없는지 등의 quota설정 체크
edquota : 디스크사용량제한(quota) 설정하기
quota : 현재 설정된 quota내용확인하기
quotaon : 설정된 quota 가동하기
quotaoff :  가동중인 quota 중지하기
repquota : 현재 사용중인 quota설정 및 용량제한내역 보기


------------------------------------------------------------------------------------------
quota [-u] [옵션] [사용자]
quota [-g] [옵션] [그룹]
- 사용자나 그룹의 제한량을 표시한다
- root만 -u 옵션을 통해 다른 사용자의 할당량을 확인 할 수 있다.
옵션 -q : 제한량의 설정값을 초과한 경우에만 간단한 메세지 출력
       -v : 자세한 모드로 저장 공간이 할당되지 않은 경우에도 제한량의
            정보를 보여준다.

   ex) quota -uv [사용자] //해당 사용자의 모든 제한량을 점검
------------------------------------------------------------------------------------------   
quotaon - 하나 이상의 파일시스템에 대해 설정된 제한량을 적용
quotaon [옵션] [파일시스템]

 옵션 -a : /etc/fstab에 등록되고 읽기와 쓰기 쿼터 사용으로 표시된
             모든 파일 시스템에대해 쿼터를 적용한다.
    
    -g : 그룹 쿼터를 적용한다. -a 옵션을 사용할 경우 그룹 쿼터를
         동시에 적용하므로 해당 옵션은 불필요하다.
     
    -u : 기본 옵션으로, 사용자에게 쿼터를 적용한다.
    -v : 상세하게 출력
   
   ex) quotaon -av #/etc/fstab에 정의된 것에 쿼터를 모두 적용
     quotaon -gv  /home   #파일시스템 /home 사용자에
                                          쿼터 적용
------------------------------------------------------------------------------------------
quotaoff - 하나 이상의 파일시스템에 적용된 쿼터 사용을 중지
quotaoff [옵션] [파일시스템]
  옵션 -a : /etc/fstab에 정의된 모든 파일시스템 대한 쿼터 적용을
              중지 한다.
        -g : 그룹에 적용된 쿼터 사용을 중지
     -a : 사용자 쿼터 적용을 중지
     -v : 쿼터 적용이 중지되는 각 파일시스템에 대해 자세히 표시
    
   ex) quotaoff -av   #모든 쿼터 적용을 중지
------------------------------------------------------------------------------------------  
quotacheck [옵션] [파일시스템]
- 파일시스템을 점검하고 쿼터 설정에 대한 데이터베이스를 컴파일
* cron을 이용해서 주단위로 'quotacheck -a' 옵션 실행을 권장함
  
  옵션 -a : /etc/fstab에 정의된 모든 쿼터 파일시스템을점검
  usrqouta와 grpqouta 적용 시 모두 점검 가능
  
     -g : 그룹에 대한 쿼터 정보만 컴파일한다.
     -u : 기본값, 사용자에 쿼터 정보만 컴파일 한다.
     -v : 실행결과를 자세하게 표시
     -n :복제 된 구조체의 첫 번째 사본을 사용합니다.
     -m: 파일 시스템을 읽기 전용으로 다시 마운트하지 않는다.
   
------------------------------------------------------------------------------------------    
edquota - 사용자와 그룹 쿼터 설정을 수정한다.
  옵션 -g : 그룹쿼터 수정 (-g 사용 시 -u 옵션도 따라와도 모두
                                 그룹명으로 인식한다)
     -t : 유예기간을 변경한다.
     -u : 사용자 쿼터설정을 변경 (-g와 사용시 무시된다.)
    
     ex) edquota -u [사용자]
     해당 사용자의 대한 쿼터 설정 변경
     ex) edquota -tu
     모든 파일 시스템의 사용자에대한 유예기간을 변경한다
   
------------------------------------------------------------------------------------------
repquota - 쿼터 운영 상황을 출력
 -a : 모든 쿼터 파일시스템 정보 출력
 -g : 그룹 설정을 요약
 -u : 사용자 쿼터 설정 요약
 -v : 요약정보를 자세하게 표시하며 출력결과에 머리말을 추가
 
 제한여부
 quota 제한을 받는지 여부를 나타내며  ' - ' 이면 제한에 걸리지
 않았음을 의미하며, ' + ' 이면 제한에 걸려 있음을 의미함
 첫 번째는 Block제한, 두 번째 파일제한을 뜻한다.
 
------------------------------------------------------------------------------------------
setquota [옵션] [이름] [Block soft limit] [Block hard limit]
            [inode soft limit] [inode hard limit] [파티션 명]
   
   -u : 사용자
   -g : 그룹
   -a : 해당 시스템의 모든 설정
------------------------------------------------------------------------------------------

 

'리눅스 ' 카테고리의 다른 글

LVM  (0) 2017.04.15
LVM명령어  (0) 2017.04.15
쿼터  (0) 2017.04.15
RAID종류와설정  (0) 2017.04.15
빠진날 3  (0) 2017.04.15

 

 

쿼터: 사용자별 공간 할당

-파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한 하는 것

 

쿼터 제한 영역

- 1. User Hard Limit

-사용자가 사용할 수 있는 최대 공간

  2. User Soft Limit

- 사용자가 Soft Limit 영역에 도달할 때 까지 데이터를 자유롭게 저장할 수 있다.

  3. Group Hard Limit

  4. Group Soft Limit

  5. Grace (유예기간)

  -소프트 제한 영역을 넘어서면 사용자나 그룹은 유예기간에 접어들게 된다.

  - 설정한 유예기간 시간동안 파일을 삭제하여 용량을 확보하지 않는 경우에는 HardLimit로 변경된다.

 

쿼터 설정

1. 초기화

- VM스냅샷으로 VM초기화 후

- Disk 2개 추가(1GB)

VMware Settings - ADD -> Hard Disk

Disk 추가 적용을 위해 Reboot

2. Disk 추가 확인

#fdisk -l

#fdisk [확인한 장치명]

n        //새로운파티션

p        //주파티션 생성

1        //파티션 번호

enter        //디스크 처음부터

enter        //마지막 까지 파티션 생성

w            //저장 후 종료

3. 파일 시스템 생성

#mkfs -t ext3 /dev/sdb1

 

#mkfs -t ext3 /dev/sdc1

4. 마운트 포인트 생성, 마운트

#mkdir /quota_user_dir

#mkdir /quota_group_dir

#mount /dev/sdb1 /quota_user_dir

#mount /dev/sdc1 /quota_group_dir

5. 마운트 적용 및 fstab 등록

#df -h

/dev/sdb1

/dev/sdc1

#blkid(부팅해도 살아남는 것)

UUID=5c8537e2-c074-42d8-943d-c83eac6c064c

UUID=96a67837-3e1f-4fb9-b33d-dbc3719e6aee

#vi /etc/fstab

UUID=5c8537e2-c074-42d8-943d-c83eac6c064c /quota_user_dir ext3 defaults,usrquota 0 0
UUID=96a67837-3e1f-4fb9-b33d-dbc3719e6aee /quota_group_dir ext3 defaults,grpquota 0 0

사용자 쿼터 옵션 :usrquota
그룹 쿼터 옵션 :grpquota

 

#reboot

#df -h

#mount

/dev/sdb1 on /quota_user_dir type ext3 (rw,usrquota)
/dev/sdc1 on /quota_group_dir type ext3 (rw,grpquota)

참고) 마운트해제

#umount [마운트포인트명]

 

6.쿼터 사용자 계정 및 그룹

#groupadd q-group

#useradd -g q-group q-user1

#useradd -g q-group q-user2

7. 쿼터 적용을 위한 selinux 비활성

#setenforce 0    //selinux 비활성 (일시적)

# vi /etc/sysconfig/selinux

7번재 줄 SELINUX=enforcing --> SELINUX=disabled //selinux 비활성 (영구적) 

8. 쿼터 지원 여부 확인

#rpm -qa | grep quota    //quota 패키지 설치 여부 확인

#yum -y install quota      //auota 설치

#rpm -qa | grep quota    //확인

 

9. 쿼터 설정 파일 생성

#cd /quota_user_dir     //쿼터를 적용시킬 파티션의 최상위 디렉토리로 이동

#quotaoff /dev/sdb1    //쿼터설정을위해 설정 off

 

#quotacheck -u /dev/sdb1

-쿼터 설정파일 확인하여 없으면 생성 있으면 확인

-u    사용자 쿼터 확인

-g    그룹 쿼터 확인

#ls                //aquota.user 생성 확인

#quotaon /dev/sdb1     //쿼터시작

#edquota -u [계정명]    

#edquota -u q-user1    //텍스트 편집기를 이용하여 q-user1 계정의 사용자 쿼터 설정

Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0          0          0          0        0        0
                           용량                            파일갯수

(값 변경)

 Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0        20M        40M          0       10       20

#edquota -t            //유예기간 설정

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/sdb1                     7days                  7days

 

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/sdb1                     2minutes                 
2minutes 

 

#repquota -u /dev/sdb1    /설정된 값 확인

 

#chown q-user1:root /quota_user_dir

세션 추가 후 2번 세션 유저 이동

$cd /quota_user dir

$cp /boot/vm* ./file1

 

$ls     /file1 확인(4.1M)

 

 

soft        hard
(2.0M)    (4.0M)

 

file6

$cp file1 file3

$cp file1 file4

 

$cp file1 file5

$cp file1 file6

 

 

2분 경과 후 (유예기간)

 

$cp file1 file7

 

디스크 할당량 초과

 

 

(1번세션) #repquota -u /dev/sdb1 /설정값 확인

$rm -rf file*    //file 내용 복사한 것 삭제

 

 

그룹 쿼터 적용

쿼터 설정 파일 생성

#cd /quota_group_dir

#quotacheck -g /dev/sdc1

#ls

aquota.group //확인완료

 

쿼터 적용 방법

(1) #edquota    //텍스트 편집기 이용

(2) #setquota    //명령어를 이용한 설정 변경

 

#setquota -g [그룹명] [인자값] [장치명]

 

인자값

[Block Soft Limit] [Block hard limit] [File Soft Limit] [File Hard Limit]

ex) setquota -g q-group 10M 20M 10 20 /dev/sdc1

 

유예 기간 적용 방법

(1) #edquota -t //텍스트 편집기 이용

(2) #setquota -t //명령어를 이용하여 유예기간 결정

 

ex) #setquota -tg[BLOCK GRACE SEC] [FILE GRACE SEC] [장치명]

#setquota -tg 120 120 /dev/sdc1

확인 : repquota -g /dev/sdc1

quotaon  /dev/sdc1

 

chown root:q-group /quota_group_dir

chmod 770 /quota_group_dir

 

용량 : 10M/20M

파일 : 10/20

 

1번 세션                    2번 세션

q-user1                       q-user2

$파일 19개 생성            $1개 생성가능

$파일 19M 사용             $1m 사용 가능

 

같은 그룹에 속한 사용자들은 쿼터 제한 설정을 공유하므로 q-user1이 자원을 사용하면 q-user2는 사용할 수 없다

  

확인: #repquota -vg /dev/sdc1

'리눅스 ' 카테고리의 다른 글

LVM명령어  (0) 2017.04.15
쿼터명령어  (0) 2017.04.15
RAID종류와설정  (0) 2017.04.15
빠진날 3  (0) 2017.04.15
빠진날 2  (0) 2017.04.15

+ Recent posts