RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
Linux  2014/10/15 00:37


사용버전 : modsecurity v2.8 , 아파치 버전 2.2.24(설치 위치  /usr/local/apache2.2)

https://www.modsecurity.org/download.html

 

사용자 삽입 이미지



패키지 설치

yum -y install pcre-devel.x86_64

yum -y install apr-util-devel


그외 필요한 패키지 및 설치 정보는 아래 링크에서 확인
https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Installation_for_Apache

 

modsecurity 설치

tar zxvf modsecurity-2.8.0.tar.gz

cd modsecurity-2.8.0

./configure  --with-apxs=/usr/local/apache2.2/bin/apxs


make

make install




Cor Rule Set 다운

https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

사용자 삽입 이미지


unzip SpiderLabs-owasp-modsecurity-crs-2.2.9-5-gebe8790.zip

mv SpiderLabs-owasp-modsecurity-crs-ebe8790  /usr/local/apache2.2/conf/crs

 

cd  /usr/local/apache2.2/conf/crs

cp  modsecurity_crs_10_setup.conf.example  modsecurity_crs_10_setup.conf

 

ln -s /usr/local/apache2.2/conf/crs/modsecurity_crs_10_setup.conf  activated_rules/modsecurity_crs_10_setup.conf




##아래 명령어는 한줄로 입력

for f in `ls base_rules/` ; do  ln -s /usr/local/apache2.2/conf/crs/base_rules/$f activated_rules/$f ; done

for f in `ls optional_rules/ | grep comment_spam` ; do  ln -s /usr/local/apache2.2/conf/crs/optional_rules/$f activated_rules/$f ; done

 

 

 

httpd.conf 에 아래 내용 추가

LoadModule security2_module modules/mod_security2.so

<IfModule security2_module>

#                Include conf/crs/modsecurity_crs_10_setup.conf

                Include conf/crs/activated_rules/*.conf

</IfModule>


주석되어 있는 mod_unique_id.so 는 주석을 해제 한다
# LoadModule unique_id_module modules/mod_unique_id.so

 



modsecurity_crs_10_setup.conf  에서 아래 내역을 변경한다, 아래 처럼 auditlog 를 추가
(아래 기본 환경설정 및 지시자 의 2번 을 참조)


원본
SecDefaultAction "phase:1,deny,log"
SecDefaultAction "phase:2,deny,log"


수정내역
SecDefaultAction "phase:1,deny,log,auditlog"
SecDefaultAction "phase:2,deny,log,auditlog"

 


아래 4개 옵션을 넣어준다.

SecRuleEngine On
SecAuditEngine On
SecAuditLog /usr/local/apache2.2/logs/modsec_audit.log
SecAuditLogParts ABCFHZ
SecDataDir /tmp

 

아파치 기동 후 정상적으로 로그가 쌓이는지 차단되는지를 확인 한다.

 

 

[추가 정보 ] 기본 환경설정 및 지시자(mod_security.conf)

1) SecRuleEngine On | Off | DetectionOnly

ModSecurity 기능을 활성화(enable) 시킨다.

o On : ModSecurity 기능 활성화

o Off : ModSecurity 기능 비활성화

o DetectionOnly : 활성화는 하지만 차단하지 않고 탐지만 한다.

 

2) SecAuditEngine On | Off | RelevantOnly

감사 로깅에 대한 설정을 구성한다.

o On : 모든 트랜젝션 로깅

o Off : 모든 트랜젝션 로깅하지 않음

o RelevantOnly : Error 또는, Warning 의 트랜젝션, 그리고 SecAuditLogRelevantStatus에 정의

된 상태코드와 일치하는 트랜젝션만 로깅

 

3) SecAuditLog logs/modsec_audit.log

감사 로그 파일의 경로를 정의한다.

) SecAuditLog /usr/local/apache2/logs/modsec_audit.log

 

4) SecAuditLogParts

로그 파일에 기록할 항목을 정의한다.   예) SecAuditLogParts ABCFHZ


         A audit log header (필수)
    
       B
request header

    
       C request body (request body가 존재하고 modsecurity request body를 검사하도록 설정되어 있는 경우에만)
           
       D보류중, response header의 중개 (현재 지원 안 됨)

  E response body 중간 단계(현재 modsecurity response body를 검사하며 감사로깅 엔진이
               이를 저장하게끔 설정되어 있는 경우에만)

        
F최종 response header
          
(마지막 컨텐츠 전달 과정에서 아파치에 의해 매번 추가 되는 날짜와 서버 헤더를 제외한)

       G
실제 response body(현재 지원 안됨)

         H감사 로그 트레일러


       I
  이 옵션은 C를 대체하는 옵션이다. multipart/form-data 인코딩이 사용되었을때를 제외한
             모든 경우엔 C와 같은 데이터를 기록한다.


        J보류중, multipart/form-data 인코딩을 사용하는 파일 업로드에 대한 정보를 포함할 때 효과가 있다.
     
        Z로그의 끝을 의미한다. (필수)

 


5) SecAuditLogRelevantStatus REGEX]

감사로깅의 목적과 관련된 response 상태코드의 값을 설정한다.

o 매개변수에는 정규표현식이 들어간다.

) SecAuditLogRelevantStatus ^[45]

 

 

6) SecAuditLogType Serial | Concurrent
        
감사로깅 구조의 타입을 설정한다.

         o Serial - 모든 로그는 메인 로그파일에 저장된다. 일시적으로 편리할 순 있지만
              하나의 파일에만 기록되기 때문에 느려질 수 있다.
        
o Concurrent - 로그가 각 트랜잭션 별로 나누어 저장된다.

            
이 방식은 로그파일을 원격 ModSecurity Console host로 보낼 때 사용하는 방식이다.

 

7) SecDefaultAction "log, auditlog, deny, status:403, phase:2, t:lowercase"

룰이 매칭되면 기본적으로 취할 행동을 정의한다 룰이 특정 액션들에 대한 개별 룰을

적용하거나 다른 SecDefaultAction이 정의되어있지 않다면 최초 지정된 SecDefaultAction의 설정을 따른다.
위의 예는 룰이 매칭 되었을 때 차단하며 로그를 남기고, 403 상태코드 페이페이지를 보여주며 필터링 단계는 “2”이다.
기본적으로 대문자는 모두 소문자로 바뀌어 필터링 된다.

 

 8) SecRequestBodyAccess On | Off

Request 값에서 Body 부분에 대한 처리를 어떻게 할 것인지 구성한다.

o On : RequestBody 접근을 시도한다.

o Off : RequestBody 접근시도를 하지 않는다.

이 지시자는 Request 값에서의 POST_PAYLOAD를 검사할 때 필요하다. POST값을 필터링하기 위해서는
phase:2
REQUESET_BODY 변수/로케이션, 3가지가 모두 구성되어야만 처리가 가능

 

 

9) SecReponseBodyAccess On | Off

Response 값에서 Body 부분에 대한 처리를 어떻게 할 것인지 구성한다.

o On : ResponseBody 접근을 시도한다. (그러나 MIME 타입과 일치해야만 한다.)

o Off : ResponseBody 접근시도를 하지 않는다.

이 지시자는 html 응답을 조사하기 위해 필요하다. "phase:4"의 처리 단계와 RESPONSE_BODY 변수/로케이션,
3
가지가 설정되어 있지 않으면, response body를 검사할 수 없다.

 

 10) SecResponseBodyLimit

ModSecurity Response Body 크기로 할당할 수 있는 메모리 최대 크기를 설정한다.

o SecRequestBodyLimit 524228

이 값을 넘어가면 서버는 500 내부 서버 오류 메시지만 표시할 것이다.

 

11) SecReponseBodyMimeType mime/type

Response 값에서 Body 값을 버퍼링할 MIME 타입을 설정한다.

o SecResponseBodyMimeType text/plain text/html // 기본값

Mime 타입은 복수로 추가할 수 있다.

 

12) SecReponseBodyMimeTypesClear

ResponseBody의 버퍼링을 위해 Mime 타입의 목록을 지우며, 처음에 위치시킨다.

o SecResponseBodyMimeType




페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2014/10/15 00:37 2014/10/15 00:37

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/126


PHP 5.3.28 을 source 버전으로 컴파일(make) 시 아래와 같이
zend_language_parser.h 파일의 317 줄에서 에러가 난다면 zend_language_parser.h  파일을 수정 후
다시 컴파일을 한다.


TRANT  -I/usr/include -g -O2 -fvisibility=hidden -pthread -DZTS   -c /root/php-5.3.28/ext/standard/basic_functions.c -o ext/standard/basic_functions.lo
In file included from /root/php-5.3.28/ext/standard/basic_functions.c:49:
/root/php-5.3.28/Zend/zend_language_parser.h:317: error: conflicting types for 'zendparse'
/root/php-5.3.28/Zend/zend_globals_macros.h:35: error: previous declaration of 'zendparse' was here
make: *** [ext/standard/basic_functions.lo] Error 1


zend_language_parser.h  의 317 줄에서

int zendparse (void);  을 

int zendparse (void *compiler_globals); 

로 변경 한후 make 한다





페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2014/08/07 23:27 2014/08/07 23:27

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/123

Linux nmon 설치 및 구성

 

 

다음은 nmon 툴이 실행되는 플랫폼이다.

AIX® 4.1.5, 4.2.0 , 4.3.2, 4.3.3 (nmon Version 9a: 본 버전은 기능적으로 안정화 되었고, 추가 개발 계획은 없다.)

AIX 5.1, 5.2, 5.3 (nmon Version 10: 본 버전은 SMT와 공유 CPU 마이크로 파티션을 갖춘 AIX 5.3

POWER5™ 프로세서 기반 머신을 지원한다.)

    Linux® SUSE SLES 9, Red Hat EL 3 and 4, Debian on pSeries® p5, OpenPower™

    Linux SUSE, Red Hat, x86 기반 최신 배포판들 (32-bit 모드의 Intel AMD)

    zSeries® 또는 메인프레임 기반 Linux SUSE Red Hat

 

 

mon 툴은 AIX와 리눅스 성능 전문가들이 다음과 같은 성능 데이터의
모니터링과 분석에 사용할 수 있도록 고안된 툴이다.

·         CPU 사용

·         메모리 사용

·         커널 통계와 실행 큐 정보

·         디스크 I/O 비율, 트랜스퍼, 읽기/쓰기 비율

·         파일 시스템의 여유 공간

·         디스크 어댑터

·         네트워크 I/O 비율, 트랜스퍼, 읽기/쓰기 비율

·         페이징 공간과 페이징 비율

·         CPU AIX 스팩

·         탑 프로세서

·         IBM HTTP 웹 캐시(cache)

·         사용자 정의 디스크 그룹

·         머신 상세와 리소스

·         비동기식 I/O -- AIX 전용

·         워크로드 매니저(WLM) -- AIX 전용

·         IBM TotalStorage® Enterprise Storage Server® (ESS) 디스크 -- AIX 전용

·         네트워크 파일 시스템(NFS)

·         Dynamic LPAR (DLPAR) 변경 -- AIX 또는 리눅스용 pSeries p5 OpenPower 전용

 

 

IBM AIX 운영체제에는 NMON이라는 유틸이 있다.
nmon
top보다 다양한 정보를 보여주기때문에 시스템 모니터링시에 유용하게 쓸 수 있다.


리눅스 사용자들은 모니터링을 할때 top을 사용하는데, nmon을 사용하면 다양한 자료를 선택해서 볼 수 있다.

AIX
전용 프로그램인줄로만 알았는데, IBM 홈페이지에서 Linux용 실행파일을 다운로드 받을 수 있다.

다운로드 받은 압축 파일을 풀어보면 Debian 3.1, Fedora 5,
Knoppix 5, RHEL 2~4, SLES 9~10
에서 실행할 수 있는 파일들이 있다.



실행화면

사용자 삽입 이미지
리눅스용 실행 초기 화면. 단축키에 대한 설명이 표시된다.


 

 

사용예

사용자 삽입 이미지

필요한 내용만 골라서 위의 화면처럼 사용할 수 있다.

 

 

1. 설치 방법

 

다운로드 : http://nmon.sourceforge.net/pmwiki.php

 

다운로드 사이트에서 해당 리눅스 배포판 버전에 맞는 바이너리 파일을 다운받는다.

 

) RHEL 5.4 일 경우    nmon_x86_64_rhel5  을 선택하여 다운로드

현재 운영중인 서버가 fedora(RHEL계열) 이기에 위의 링크에서 다운받아서 사용중이다

 

 

2. 다운로드 받은 파일을 운영위치로 복사

mv  nmon_x86_64_rhel5  /usr/local/bin/nmon

chmod  755  /usr/local/bin/nmon


- 실행
nmon

 

 

3. 로깅

 

# nmon -ft -s 300 -c 288 -m /nmon/log                  
//
300초 간격으로 288 (300*288=24시간) 로깅 데이터를 /nmon/log 로 저장

 

* 위 명령어를 crontab에 등록하여 일일 데이터를 로깅하는것이 유용하다.

 

 

 

4. 분석

 

nmon 데이터를 먼저 가공한다.

# sort result.nmon > result.csv

 

다운로드 사이트에서 nmon analyzer를 이용하여 result.csv 파일을 import 하면 정리된 보고서를 볼 수 있다.

 




페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2014/08/06 23:32 2014/08/06 23:32

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/122

Hash 암호화는 일방향 암호로써 암호화로부터 복호화가 불가능합니다

하지만 hash 암호의 특징은 MD5을 사용하여 예를들어 1234를 입력하면

abcd 라는 hash 값이 나왔다면 그다음에도 그다음에도 항상 1234를 입력하면 abcd

가 나옵니다 이런원리를 이용하여 MD5도 복호화가 가능한 상태까지 이르렀습니다

 

고비트의 HASH알고리즘을 적용을 해야 하는데요

페도라10에서 확인해본바로는 sha512을 사용중입니다

11과 12에서도 sha512을 사용합니다

 

하지만 centos 5.4의 경우는 특별히 지정하지않앗다면

Default는 MD5로 되어있는것을 확인하였고

시스템사항에 따라 복화화되는 시간은 다르지만

John the Ripper 로 복호화 되는걸 확인했습니다

 

 

물론 shadow 파일이 읽혔거나 탈취되었을때 입니다

 

 

탈취 나 외부로 새나가도 복호화 되지않도록 할 필요성은 있겠죠

 

페도라 몇버전부터 hash알고리즘이 변경이 되었는지 확인은 불가능 합니다만

MD5로 적용되어있다면 변경이 필요할듯 합니다

 

 

현재 시스템 의 hash 알고리즘 확인법입니다

# authconfig --test | grep hashing

 

하게되면

password hashing algorithm is md5

혹은

password hashing algorithm is sha512

 

이런식으로 무슨 알고리즘을사용하는지 알수 있습니다

 

만약 MD5를 사용중인데 sha512로 변경 하길 원한다면

# authconfig --passalgo=sha512 --update

 

을 하면 됩니다 RHEL, centos , fedora 공통적으로 사용가능하다고 합니다

 

 

이전에 MD5때 생성된 유저의 비밀번호를 sha512로 변경 하려 할때는 아래와 같이 실행 합니다.

# chage -d 0 유저네임






페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2010/04/19 20:51 2010/04/19 20:51

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/85
Linux  2010/04/17 15:25

Fedora Linux 12버전에서 작업했으며
apache 가 설치되어있다는 가정하에 Tomcat대신 Glassfish 를 설치후
apache 와 연동하는 문서입니다


원문: 페도라한국사용자모임







페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2010/04/17 15:25 2010/04/17 15:25

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/82
 

설치 환경 및 버전

OS

Fedora12

Apache2.2

httpd-2.2.13-4.fc12.i686

Webmin

webmin-1.500-1.noarch.rpm

 

 

Webmin은 솔라리스, 리눅스와 다른 유닉스 시스템 구성 도구시스템과
마찬가지로  웹 기반 시스템관리도구로

사용자의 디스크 할당량, 서비스, 구성 파일 등과 같은 운영 체제의
내부에 관리 뿐만 아니라 많은
OpenSource 애플 리케이션,
아파치 HTTP 서버로, PHP, MySQL 등의 수정 및 제어가 가능합니다

 

 

다운로드

http://webmin.com/

** 사진이 작으면 클릭하세요**


주황색 으로 박스쳐져있는곳에서 원하는 형태를 다운받습니다
저는 RPM으로 설치를 하겠습니다

 

설치

# rpm -Uvh webmin-1.500-1.noarch.rpm

 

 

설치하고 나서 브라우저로 http://주소:10000  으로 접속합니다

최초계정정보는  아이디는 root   패스워드는 시스템 root비밀번호 입니다  

접속해보면 아래와 같이 화면을 볼수있습니다



일단 한글로 변경하겠습니다



Webmin을 누르고 세부메뉴인 Webmin Configuration 을 누릅니다

메뉴중 Language를 누릅니다





Korean 맞춰주고  Use language specified by browser? 에서 Yes선택후  
Change Language
를 누릅니다

그다음에 F5(새로고침) 한번 눌러주면 모든 메뉴가 한글화 된걸 볼수있습니다





위와같이 모듈갱신 을 한번 클릭해주고 갱신하기까지 기달려줍니다
다되었다면
아래와 같은 결과를 볼수있습니다




 

 

저는 webmin의 자체 웹서버를 사용하여 10000 번 포트를 사용하는 것이
아닌 기본
아파치의 80포트로의 접속을 위해서 작업을 해주겠습니다

 

 

버추얼호스트도 가능하고 alias를 전 사용하겠습니다

관련 공식 매뉴얼은 http://www.webmin.com/apache.html를 참조하면 됩니다

 

 

 

일단 RPM으로 설치를 하면 /usr/libexec/webmin  입니다

아파치 설정파일은 httpd.conf파일을 열어서

 

 

#AddHandler cgi-script .cgi 찾아서 주석을 제거해서 활성화를 시킵니다

 

 

 

Alias /webmin "/usr/libexec/webmin"

<Directory "/usr/libexec/webmin">

AllowOverride None

Options ExecCGI FollowSymLinks

DirectoryIndex index.cgi

AuthName "Authentication Login Field"

Authtype basic

AuthUserFile /etc/webmin/htusers

require valid-user

order deny,allow

Allow from all

</Directory>

 

위와같이 디렉토리 지시자를 만들어줍니다

그밑에쪽에 아래 SetEnv 내용을 추가 합니다

 

 

SetEnv WEBMIN_CONFIG /etc/webmin

SetEnv WEBMIN_VAR /var/webmin

SetEnv SERVER_ROOT /usr/libexec/webmin

SetEnv MINISERV_CONFIG /etc/webmin/miniserv.conf

 

 

사용자 인증파일을 만듭니다 아파치의 alias를 이용하면
webmin
자체의 인증이 아닌
apache 인증을 이용해야 합니다


# htpasswd -c /etc/webmin/htusers
아이디명

New password :  비밀번호입력

Re-type new password : 다시한번 입력

 

vi /etc/webmin/config   파일을 열어서    webprefix=/webmin    
을 맽민줄에 추가해줍니다

 


파일 생성 및 소유권 및 권한 부여

# touch /etc/webmin/webmin/oscache

# chown root:bin /etc/webmin/webmin/oscache

 

# cd /etc/webmin    디렉토리로 이동후

# chmod -R 757 *  권한을 줍니다

 

 

그리고 아래그대로 작업을 한번더 해줍니다

# chown -R root:apache /usr/libexec/webmin

# chmod -R 6755 /usr/libexec/webmin

 

위의 소유권에서 그룹은 아파치 실행 그룹입니다 아파치가
루트그룹으로 실행되고 있다면
root로 해주면 됩니다

 


cd /usr/libexec/webmin   
디렉토리로 이동후 아래내용을
복사해서 붙여서 실행합니다


find . -name "*.cgi" -o -name "*.pl" | perl perlpath.pl "/usr/bin/perl -U" -


 

참고로 위의 내용을 실행해도 아무런 반응은 없습니다
내용은 .cgi 파일과 .pl 파일에 perl 뒤에 -U 을붙여주는
것입니다
여러 번하면 뒤에  -U가 여러 개 붙기에 한번만 해줍니다


실행후 아무 cgi pl파일열어서 맨위에 #! /usr/bin/perl -U 라고 되어있다면
위의 실행이 잘된것입니다
위의 명령은 perl위치가 /usr/bin/perl 에 있다는
상황에서 입니다 다른곳에있다면 경로수정을 해줘야 합니다

 

 

설정이 끝났다면

service webmin restart  webmin재시작 및 아파치를 재시작후
http://주소/webmin  으로 접속해보세요

 

 포스팅 내용 다운받기


 
  




페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2009/12/22 18:43 2009/12/22 18:43

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/77
Linux  2009/12/17 20:58



페도라 한국 사용자 모임의 소브 님의 작성글입니다
http://www.fedoralinux.or.kr/article/bbs4/126457207619102





 




페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2009/12/17 20:58 2009/12/17 20:58

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/76

// 2011년 2월 26일 한줄 수정됨 //

LVM 에 대해서 먼저 간략 하게 애기하자면

Logical Volume Manager 약자로서, 저장장치들을좀더효율적이고 
유연하게관리할있는커널의부분과프로그램을말한다
.

처음에는 IBM에서개발되었는데, 후에

OSF(
현재는 OpenGroup http://www.opengroup.org)에서 차용을하여

OSF/1 operating system
에서쓰였다
.

지금은 HP-UX, Digital Unix operating system, AIX 등의상용유닉스에서쓰고있다
.
리눅스버전은현재 HP-UX것을모델로하여

Sistina Software
(http://www.sistina.com)에서 open source개발하고있다
.

 

좀더 받아들이기 쉽게 밑의 그림을 보면서 설명을 드리겠습니다


Physical Volume 이란 하나의 디스크 혹은 파티션입니다

쉽게 디스크라고 생각하면 위의 그림은 디스크 3개를 1개의  그룹으로 묶습니다
그 그룹을 Volume Group 이라고 부르구요 raid 0  을 사용해보신분이라면
조금 이해가 빠르실겁니다

그렇게 3개의 디스크를 하나의 볼륨 그룹으로 만들고 2개의 논리적 볼륨으로 나눕니다

논리적 볼륨은 쉽게 파티션이라고 생각하시면 됩니다

 

만약 위의 2개의 LV(로지컬 볼륨)에 / 과 /home  파티션을 잡아서 사용하게 되면

/ 와 /home  파티션에 해당되는 곳에 I/O는 3개의 디스크에서 Striping 이 되게 됩니다

그러니까 /home  에 유저가 파일을 읽거나 쓸때   => 파티션을 access 할때

3개의 디스크가  I/O를 나눠서 처리한다는 것이죠

 

물론 파일이 쓰일때도 3개의 디스크에 나뉘어져서(striping) 쓰이게 됩니다

 

access 가 많은 파일이나 특정 블록에서 Hot block 이나 contention(경합) 이
발생될 확율이 줄어들며 Disk I/O이 분산되기에 그만큼 각각 디스크 I/O를 좀더
효율적으로 사용가능합니다

또하나의 장점 위에서 설명햇드시 / 와 /home 을 만들어놓고 운용중에 / 용량은
남는 /home 의 용량이 부족할때 / 용량을 줄이고 /home을 늘릴수 있습니다

또한 하드나 파티션을 VG(볼륨그룹) 에 추가후에 / 와 /home  과 같은
LV 를 늘릴수도 있습니다

기존의 파티션에서 용량부족시 하던 해결법과 다른면을 볼수있는부분이죠

이정도만 알고 설치시 LVM설정으로 설치하는법과 설치후 운용법에 대해서
말씀드리겠습니다

 

스크린샷 및 디스크 숫자 부족으로 버추얼박스로 진행 하도록하며

디스크는 초기에 8기가 짜리 3개로 설치후 3기가짜리 하나를 더 달아서 한다는 시나리오로 진행하겠습니다


설치법은 동일하니 파티션 설정만 설명하겠습니다 
사용자 레이아웃 으로 맞춰놓고 작업하겠습니다




 
위의 설명처럼 8기가짜리 3개를 달아놓은 상황입니다



파티셔닝은 /  6기가  swap 1기가  로 잡고 나머지는 3개의 PV로 잡은후
1개의 VG로 잡고
다시 3개의 LV 를 만들어서 /home  /data  /var 로
만들겠습니다
일단 sda(첫번재하드) 에 / 파티션에 6기가를 주고 만듭니다


 

/dev/sdb(2번째디스크) 에다가 swap 을 1기가 생성 합니다

 

/dev/sda 와 sdb, sdc  에 위와같이 PV로 잡아주고 최대가능한
용량으로 채움으로 해서
3개의 PV를 만들어 줍니다


PV 3개를 생성후 화면의 우측에 있는 LVM(L) 버튼을 누르면 화면과
같이 나타납니다 볼륨 그룹은 VG의 이름이며 사용할 물리적 볼륨 에
보면 3개만들어준 PV를 볼수있습니다

 

추가(A) 를 누른후 마운트 지점과 용량을 지정하고 OK를 누릅니다
저는 /home /data /var 로 만들어주었습니다

 

위와같이 3개의 LV가 보이네요

 

현재 파티셔닝은 위의 그림과 같이 됩니다

/dev/sda1 에는 / 파티션이

/dev/sdb2 에는 swap 파티션이   일반적은 파티셔닝으로 만들어져있으며

 

나머지 공간에 3개의 디스크에서 PV를 3개를 생성 해서 하나의
VG으로 생성한후
3개의 LV를 만든것입니다

꼭이렇게 해야하는것은 아니며 예시 입니다 이런식으로 설치시에
LVM으로 설치가 가능합니다

 

여러개의 디스크가 있을시 Access 가 많을만한 파티션을 LV에
만들어주는것도 좋을듯하고
용량이 부족할수도 있는 파티션은 LV로 만들어서
차후에 변경이 용이하게 하는것도 좋을듯합니다



 

시스템-> 관리 -> 논리적 볼륨 관리 를 실행해서 본 화면 입니다 설면한것처럼 구성이 되어있습니다

 

 

 

그다음은 디스크를 하나 장착후 VG에 추가한후 새로운 LV를 생성 하는것과

생성된 LV를 줄이고 다른쪽을 늘리는 테스트를 해보겠습니다

 

터미널에서

 

[root@fedora12 oracle]# vgdisplay -v

를하면 vg에 관한 정보를 상세히 볼수 있습니다

 

 

[root@fedora12 oracle]# lvscan

  ACTIVE            '/dev/vg_fedora12/LogVol01' [9.77 GB] inherit

  ACTIVE            '/dev/vg_fedora12/LogVol00' [3.91 GB] inherit

  ACTIVE            '/dev/vg_fedora12/LogVol02' [3.46 GB] inherit

 

lvscan 을치면 현재 LV상태를 알수있습니다

 

 

[root@fedora12 oracle]# fdisk -l

Disk /dev/sdd: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x00000000

 

fdisk -l   를해서보면 중간에 /dev/sdd  라고 4번째 디스크가 보이네요 파티션도 않되어있고요

 

파티션을 잡아보겠습니다

 

[root@fedora12 oracle]# fdisk /dev/sdd

 

Command (m for help): n

Command action

   e  extended

   p  primary partition (1-4)

p 

Partition number (1-4): 1

First cylinder (1-391, default 1): (엔터)

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-391, default 391): (엔터)

Using default value 391

 

Command (m for help): w  

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

 

 

 

파티션이 생성 되었고 생성된 파티션 타입을 변경 하겠습니다

 

[root@fedora12 oracle]# fdisk /dev/sdd

 

Command (m for help): t  

Selected partition 1

Hex code (type L to list codes): 8e

Changed system type of partition 1 to 8e (Linux LVM)

 

Command (m for help): p

 

Disk /dev/sdd: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x11d06658

 

   Device Boot      Start         End      Blocks  Id  System

/dev/sdd1               1         391    3140676   8e  Linux LVM

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

 

8e Linux LVM 타입의 ID입니다

 

 

[root@fedora12 oracle]# pvcreate /dev/sdd1

  Physical volume "/dev/sdd1" successfully created

 

pvcreate PV를 생성 합니다

 

 

[root@fedora12 oracle]# vgextend vg_fedora12 /dev/sdd1

  Volume group "vg_fedora12" successfully extended

 

vgextend 로 기존 vg 에 새로훈 pv 를 추가합니다

 

vgextend 기존vg명 추가할pv  입니다

 

LV를 만들어야 하는데요 용량지정에는 2가지가 있습니다 용량으로 지정하는것과

PE로 지정할수 있는데요

 

[root@fedora12 ~]# vgdisplay -v | grep "PE Size"
    Finding all volume groups
    Finding volume group "vg_fedora12"
  PE Size               4.00 MB

 

를 해보면 PE Size 4메가씩 활당 되었다는걸 알수있으며

 

vgdisplay -v 를 해서 보면

밑에쪽에 새로추가한 /dev/sdd1 의 정보중에


  Total PE / Free PE    766 / 766

 

PE의 갯수를 알수있습니다

 

일단 용량은 지정은 PE사이즈 * 갯수 입니다

 

766 * 4 = 3064

 

[root@fedora12 oracle]# lvcreate -L 3064M vg_fedora12 -n LogVol03

로 만들수 있습니다

lvcreate   -L(용량지정용량MB 기존VG -n 생성할LV이름

 

 

PE지정법은 갯수로 지정하는것입니다 사이즈는 4MB 임으로 위의 용량이 알아서 계산되서 생성됩니다

[root@fedora12 oracle]# lvcreate -l 766 vg_fedora12 -n LogVol03

-l(소문자 엘) PE갯수   입니다

 

 

[root@fedora12 oracle]# lvscan

  ACTIVE            '/dev/vg_fedora12/LogVol01' [9.77 GB] inherit

  ACTIVE            '/dev/vg_fedora12/LogVol00' [3.91 GB] inherit

  ACTIVE            '/dev/vg_fedora12/LogVol02' [3.46 GB] inherit

  ACTIVE            '/dev/vg_fedora12/LogVol03' [2.99 GB] inherit

 

LogVol03 3기가 용량이 LV로 추가 된것을 확인할수 있습니다

 

이제 원하는 파일시스템으로 만든후 마운팅할 디렉토리 생성한다음 마운트 하겠습니다

 

 

[root@fedora12 oracle]# mkfs.ext4 /dev/vg_fedora12/LogVol03

[root@fedora12 oracle]# mkdir /data2

[root@fedora12 oracle]# mount /dev/vg_fedora12/LogVol03 /data2

 

다음부팅때도 마운팅되도록 fstab에 기록하겠습니다 현재 시스템에서 마운트 된 정보는 /etc 아래에 있는 mtab

에 기록되어 있습니다

 

cat /etc/mtab | grep data2 >> /etc/fstab

위와같이 리다이렉션 을 이용해서 추가해도 되고

 

mtab의 마운트 된 정보를 그대로 복사해서 fstab에 추가 해도 됩니다

 

 

[root@fedora12 ~]# df -h

/dev/mapper/vg_fedora12-LogVol03

                      2.0G   69M  1.99G   4% /data2

 

df -h 로 확인해보면 /data2 에 마운트가 되어있는걸 확인할수 있습니다

 

 

이제는 /data2 에 해당하는 LV를 용량을 줄이고 /home을 늘리도록 하겠습니다

1200MB로 줄이고 800MB정도를 다시 VG에 반납합니다.

 

[root@fedora12 oracle]# umount /data2

 

[root@fedora12 oracle]# e2fsck -f /dev/vg_fedora12/LogVol03

 

[root@fedora12 ~]# resize2fs /dev/vg_fedora12/LogVol03 1200M

 

[root@fedora12 ~]# lvreduce -L 1200M /dev/vg_fedora12/LogVol03

WARNING: Reducing active logical volume to 1.17 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
  Do you really want to reduce LogVol03? [y/n]:
y
  Reducing logical volume LogVol03 to 1.17 GB
  Logical volume LogVol03 successfully resized

 

-l 옵션을 사용시에는 PE 개수를 써주시면 됩니다.

 

-L ?l 둘다 반환할 만큼의 용량(PE개수)이 아닌 원하는 줄여진 용량(PE개수)를 써주셔야 합니다.

2000MB에서 1500으로 변경하고자 할 때 ?L 500M 하게 되면 2000-500 해서 1500 이 아닌

500MB로 줄어듭니다.

줄일때는 resize2fs 에서 MB 용량으로 줄이게 되니 lvreduce 에서도 동일하게 ?L MB용량을 지정하여 줄이는 것이 좋을 듯 합니다.

 

 

진행 과정은 반드시 umount -> e2fsck -> resize2fs->  lvreduce 순으로 해야합니다.

 

온라인으로 줄이고 남은 1.81G /home에 붙이겠습니다

 

 

 

[root@fedora12 oracle]# umount /home

 

  [root@fedora12 ~]# lvextend -L +1.81G /dev/vg_fedora12/LogVol00

+ 는 해당용량만큼 이라는 의미이며, +없이 ?L 1.81G 를 쓰면 1.81GB 로 늘려라 라는 의미입니다.

여기 까지 진행하면 LV는 늘어났지만 실제 파일시스템은 늘어나지 않았기에 resize2fs 로 파일시스템을 늘려주겠습니다.

 

RHEL기준으로 3버전은 LVM 버전1 을 사용함으로서 온라인 파일시스템 증가가 불가하고

4부터는 가능하며, RHEL4ext2online 명령어를 사용하면 되며, RHEL5 resize2fs 를 사용하면 됩니다.

 

사용방법은 resize2fs 와 동일합니다.

# ext2online /dev/vg_fedora12/LogVol00

 

[root@fedora12 ~]# resize2fs /dev/vg_fedora12/LogVol00

 

lvscan 으로 확인해보면 /LogVol03 은 줄어들고 /LogVol00 은 늘어났음을 알수있습니다

 

[root@fedora12 ~]#  lvscan
  ACTIVE           '/dev/vg_fedora12/LogVol01' [9.77 GB] inherit
  ACTIVE           '/dev/vg_fedora12/LogVol00' [5.72 GB] inherit
  ACTIVE           '/dev/vg_fedora12/LogVol02' [3.46 GB] inherit
  ACTIVE           '/dev/vg_fedora12/LogVol03' [1.17 GB] inherit

 

 

unmount 2개의 LV를 마운트하고 df -h 를 하면

 

[root@fedora12 ~]# mount /dev/vg_fedora12/LogVol00 /home/

[root@fedora12 ~]# mount /dev/vg_fedora12/LogVol03 /data2/

 

 

[root@fedora12 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda1             5.8G  3.0G  2.6G  54% /
tmpfs                 293M     0  293M   0% /dev/shm
/dev/mapper/vg_fedora12-LogVol01
                    9.7G  150M  9.0G   2% /data
/dev/mapper/vg_fedora12-LogVol02
                    3.5G  338M  2.9G  11% /var
/dev/mapper/vg_fedora12-LogVol00
                    5.7G   74M  5.3G   2% /home
/dev/mapper/vg_fedora12-LogVol03
                    1.2G   34M  1.1G   4% /data2

 

/home 은 늘어나고 /data2는 줄어든것을 확인할수 있습니다

 

 

Redhat 에서는 왠만하면 파일시스템을 umount 한 후에 정상적인 상황에서 resize하는 것을 권장하는 부분이 있으며,

Redhat 문서를 몇 개를 살펴보더라도 umount resize하는 부분이 많이 보이며 온라인중 증가후에도 umount 한후에

e2fsck등으로 파일시스템을 체크 하는 부분이 나옵니다. 

 

순서는 umount => lvextend => e2fsck ?f  => resize2fs  로 하면 되겠습니다.

 


이상으로 포스팅을 맞치며 

시나리오상 나오지않았던 VG 조정부분은 따로 올려드리겠습니다

 

 

# vgcreate -s 16m new_vg /dev/hda /dev/hdb
 
위의 명령은 두 개의 스크를 합쳐서 new_vg라는 VG를 만든다는 것이다
 
옵션 ‘-s 16m’ PE(Physical Extent)의 크기를 16MB로 정하는 것인데,  

만약 옵션 ‘-s’가 생략되면 기본적으로 PE의 크기는 4MB가 된다.

VG  만들어지면 /dev/VolumeGroupName라는 형식으로 디렉토리가 생기게 된다.
위의 예에서는 /dev/new_vg 가 될 것이다.

 
VG(Volume Group)
명 변경 또는 삭제방법 
1.
변경방법
  # vgrename new_vg vg00  

  2. 삭제방법
  VG
LV가 남아있지 않고 비활성화되어 있으면 vgremove로 지울 수 있다
 
비활성화시키는 방법은  vgchange -a n vg_name 이고, 다음의 명령을 통해 지워진다.
  # vgremove vg00  

 
VG(Volume Group)
확장방법
  VG
의 확장과 축소는 PV의 추가, 제거로 이루어진다.
  VG
PV를 추가하는 명령은 vgextend인데, vg00이라는 VG PV 
  /dev/hda2
를 추가하려면 다음과 같이 실행해야 한다.
  # vgextend vg00 /dev/hda2  

 
VG(Volume Group)
축소방법
  PV
VG에서 제거하는 명령은 vgreduce이다. 그러나 PVPE가 사용되어지고 있다면 
 
있으면 제거되지 않는다. 그 할당된 PE를 다른 PV로 옮겨야 제거될 것이다.

 PE를 옴길때는  pvmove 를 사용한다.

 

# pvmove ?n /dev/vg00/data  /dev/sda2  /dev/sdc1

   -n /경로/볼륨그룹명/LV  제거하고자하는PV  옴겨질PV

   위 명령어는 data라는 LV  /dev/sdb1에 해당하는 PE /dev/sdc1로 옴기라는 의미이다.

 


 
비어있는 PV(혹은 pvmove로 비워진 PV) /dev/hda2 vg00에서 제거하려면,
  # vgreduce vg00 /dev/hda2

PV 삭제

위에서 /dev/hda2 VG상에서 제외시켰다 해당 hda2 를 일반파티션이나 다른용도로 상용하려면 PV를 지워야 할 것이다.

  # pvremove /dev/hda2

 

LV 변경방법
  # lvrename /dev/vg00/data  /dev/vg00/db  

   LV
삭제방법
  # lvremove /dev/vg00/db

 

 


포스트 내용 다운


 




페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2009/12/13 04:06 2009/12/13 04:06

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/75


많은 리눅스 커뮤니티중 페도라 커뮤니티가 없다는것에 많은 아쉬움이 있어서
올해초부터 계획을 했던 일을 이번에서야 실행으로 옴기게 되었습니다

많이 부족하지만 많은 방문 글 남겨주세요

http://www.fedoralinux.or.kr
  


페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2009/11/13 16:21 2009/11/13 16:21

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/71

이 표 하나로 표현가능합니다



페도라 한국 사용자 모임

페도라 한국 사용자 모임 태랑의 포스팅글입니다
  파이어폭스에 최적화 되어있습니다
2009/10/10 18:46 2009/10/10 18:46

이 포스트가 유용하셨다면 구독하세요

http://www.commit.co.kr/trackback/68
태랑:Extreme Performance DBA 를 꿈꾼다
admin@commit.co.kr / 
purityboy83@gmail.com
Extreme Performance DBA 를 꿈꾼다 admin@commit.co.kr / purityboy83@gmail.com
전체보기 (112)
Solaris (14)
Linux (45)
DATABASE (32)
Enterprise Manager (4)
Virtualization (0)
JAVA / C / 그외 개발언어 (3)
넓은 세상의 이야기들 (14)

Tag List