리눅스에서 장비 추가된 것 확인

/dev/sdg~sdn 까지 8개가 추가되었다.

이제 전에 했던 fdisk를 파티션작업

파일시스템 유형을 fd(linux raid autodetect로 설정

/dev/sdn까지 파티션작업완료

RAID 0

위 작업을 끝낸 후 mdadm명령어로 실제 raid를 구성한다.

mdadm --create /dev/md0 --level=0 --raid-device=2 /dev/sdg1 /dev/sdh1

mdadm --detail --scan 명령어로 raid0 구성을 확인한다.

Mkfs.ext3 /dev/md0 포멧하여 사용할수 있게 해준다.

그후 폴더 생성해서 마운트시키면 raid 0 구성이 완료 된다.

RAID 1

mdadm명령어로 /dev/md1을 level1로 생성

확인하고 포멧후 마운트하여 사용

RAID 5

level 5로 주고 devices갯수 4로 설정 후 레이드 구성

mkfs 로 md5포멧후 마운트하여 사용

※mdadm 의 옵션

--create /dev/md0 : md0 장치에 raid를 생성

--level=0 : raid 0을 지정

--raid-devices=2 /dev/sdb1 /dev/sdc1 : 2개의 하드디스크를 사용하며,

이어서 나오는 것은 장치이름

 

출처 : http://keh1j.tistory.com/20

 

지난 포스트에서
Raid 레벨 0~4까지 다루었습니다.
해당내용은 아래의 링크를 아래 참고 하세요.

레이드 ( RAID ) 의 레벨과 구성 ( 1부 : Raid Level 0,1,2,3,4 )

간단하게 정리하자면
Raid Level 0 인 Striping(스트라이핑)은
데이터를 쪼개서 분산 저장 해서 속도향상을 위한 레벨이고
Raid Level 1 의 Mirroring ( 미러링 )은
안전성을 좋지만 드라이브 용량 이용의 비효율성이 있습니다
Raid Level 3,4 는 Parity ( 패리티 : 데이터 오류 체크 기술)
레벨0의 불안전성을 보완한것입니다.


이제 가장 많이 사용하는
Raid Level 5
Level 6 복합구성인 01, 50, 60 등에 관해서 말하겠습니다.



RAID Level 5 ( 레이드 5 ) : 필요 드라이브 최소 3개이상

레벨 5는 레벨 3과 레벨 4의 단점을 보완한 방식으로, 패리티 정보의 저장을 전담하는 하드디스크 대신 모든 하드디스크에 패리티 정보를 분산 저장합니다. 이 방식은 쓰기(Write)에는 패리티 정보가 분산되어 저장되기 때문에 Level 3, 4의 단점이었던 병목을 줄여주지만, 읽기(Read)에서는 사방에 흩어져 있는 패리티 정보를 갱신하며 읽게 되기 때문에 성능 저하가 생길 수밖에 없습니다. 이러한 단점 역시 컨트롤러에 지능형 캐쉬를 내장하여 속도저하를 최소화시키는 역할을 하고 있습니다. 성능면에서 Raid 0 보다 떨어지지만 성능, 안정성, 용량 3 부분을 고려한 형태입니다.


하나의 드라이브가 고장날 경우 다른 드라이브에 별도로 저장된 패리티( Parity ) 정보를 정보를 통해서 복구하고 손상된 드라이브의 패리티 ( Parity ) 정보는 나머지 하드에 있는덷 테이터를 토대로 다시 작성할수 있습니다. 그러나 별도의 패리티 정보를 저장하는 작업을 해야 하기 때문에 RAID Level 1 보다는 쓰기 성능이 떨어집니다.

가끔 전화와서
" 고객님~!" " 계란을 한바구니에 담지마라~!! 그러면서~ 좋은 상품이 있어서~~." 요러 면서 광고 시작하죠?
이 멘트가
적용된 레이드 구성입니다. 각각의 하드에 패리티 정보를 분산 시킨거죠 ^^


RAID 3, 4와 달리 패리티 정보가 저장된 디스크가 따로 없어 패리티 디스크 고장과 같은 문제에서
자유롭고
실제 서버/워크스테이션에서 가장 많이 사용되는 방식입니다.


RAID Level 6 ( 레이드 6 ) : 필요 드라이브 최소 4개이상

레벨 6은 RAID 5와 같은 개념이지만 다른 드라이브들 간에 분포되어 있는 2차 패리티 정보를 넣어 2개의 하드에 문제가 생겨도 데이터를 복구할 수 있습니다. RAID 5보다 더욱 데이터 안정성을 고려하는 시스템에서 사용합니다.


하드를 스트라이핑으로 묶었기 때문에 RAID 0+1이나 RAID 10(1+0)보다 성능은 더 높고 신뢰성도 우수 하지만 패리티 정보를 2중으로 저장하면서 읽기 성능은 RAID 5와 비슷하지만 쓰기 작업 구현이 아주 복잡해서 일반적으로 잘 사용하지 않습니다.

lpshow.php?m_id=11st&a_id=A100340710&p_id=0000&l_id=9999&l_cd1=3&l_cd2=0lpshow.php?m_id=11st&a_id=A100340710&p_id=0000&l_id=9999&l_cd1=3&l_cd2=0

RAID Level 0+1 / 1+0 (레이드 01 / 10 ) : 필요 드라이브 최소 4개

간단히 말하자면 레이드 레벨 0과 레벨 1의 복합 구성입니다.
레벨 0의 Striping과 레벨 1의 Mirroring의 기능이 합쳐진 것으로, 분산 저장을 통한 성능 향상을 꾀할 수 있으면서 데이터의 안정성 또한 보장받을 수 있습니다. 때문에 속도 및 안정성 두 마리의 토끼를 다 잡은 듯 보이지만, 여전히 전체 용량의 50%만 사용할 수 있는 것은 변함이 없으며, 비용이 많이 든다는 문제점이 있습니다.


01과 10의 차이는 어느 쪽을 먼저 구성하느냐의 차이입니다.
4개의 드라이브로 구성한다면 위의 이미지 처럼 그 차이는 없습니다.
그러나 6개의 드라이브로 구성한다면 달라지게 됩니다.(아래 이미지 참고)
드라이브가 6개일때 01의 구성은 3:3 으로 구성되지만
10의 구성은 2:2:2 로 구성되게 됩니다.


드라이브가 6개일때...
RAID 0+1은 RAID 0으로 구성된 드라이브들을
최종적으로 RAID 1로 묶는 것이라 각각 3개씩 하드 가 나눠지며,

RAID 1+0은 2개씩 RAID 1으로 묶여있는 하드들이 RAID 0으로 구성됩니다.

RAID 0+1의 경우 1개의 하드만 고장나서
복구해도 다른 RAID 0 구성에서 나머지 하드까지 데이터 전체를 복구해야 하지만,

RAID 1+0으로 만든 시스템은
고장난 하드가 하드 1개라고 하면 미러링으로 묶인 하드를 통해 데이터만 복구하면 되므로

실제로 운용하는데는 RAID 1+0 이 훨씬 유리합니다.

이외에 Raid 51 / 15 , Raid 05 / 50 , Raid 60 이나 Raid100 등 역시 기존의 레벨의 복합적 구성입니다.


레벨 0 이 들어가면 성능의 향상을 기대할수 있으나 안정성은 불안하게 됩니다.
레벨 1 이 들어 가면 안전성을 확복할수 있으나 용량의 감소 또한 감수 해야 됩니다.
레벨 5나 6의 구성에 최소 3~4개의 드라이이브가 소모되기 때문에
이들의 복합적인 구성은 최소 6개 이상의 드라이가 있어야 가능한 구성입니다.
한마디로 돈 많이 들어간다는 거죠. ^^


마지막으로 나름대로 정리해본 레이드 레벨(RAID Level)에 따른 정리 표 입니다.

all_table1.jpg

< 이미지를 클릭하시면 크게 보실수 있습니다. Image Click~!! >

랜덤 읽기/ 쓰기의 성능의 향상은 체감속도의 향상과 같습니다. 프로그램을 런칭하는 속도가 랜덤 엑세스의 성능과 비례한다고 보시면 됩니다. 그리고 순차 읽기 / 쓰기는 영화파일과 같은 대용량의 파일을 이동할때의 성능 이라고 생각하시면 됩니다. ~ ^^



레벨 5 이상의 복합 구성은(50, 60) 거의 서버용이기 때문에 비용문제와 함께 거의 사용하지 않습니다.
메인보드에서 레이드 5레벨을 지원한다면 5를 추천하지만 일반적으로 많이 사용하는 것이 레이드 레벨 0 과 1의 복합 구성이 01 또는 10 입니다. 인텔의 H57칩셋 또는 P55 칩셋을 탑제한 메인보드는 레이드 5레벨까지 구성을 지원합니다. ~ ^^ 구입하실때 참고하세요.

출처 : http://loversky20.tistory.com/147

레이드(RAID) 라고
누구나 한번쯤은 들어 봤을 듯합니다.

PC를 많이 접하지 않는 분이시라면 바퀴잡는 레이드가 떠오르실 것이고, 게임을 많이 하시는 분이라면 온라인 게임에서의 보스급 몬스터 사냥 레이드~!!

그러나 제가 약간 언급할것은
HDD 구성의 Riad입니다 .^^


PC 부품중에서 ODD (CD/DVD/Multi)를 제외하고
유일하게 아날로그적인 요소 들어간게 HDD 이고
기계적인 동작 구조로 인해 급격한 성능 향상이 쉽지 않기 때문에 PC 부품중에서 가장 느린 부분으로 인식
되어 온 것도 어느정도 사실입니다.


Raid_-pp.jpg

레이드는 이런 HDD의 성능을 유일하게 향상 시킬수 있는 방법이었으나 추가 적인 비용이 많이 들어서 일부 하이엔드 유저나 보다 빠른 게임을위한 몇몇 유저들만이 사용하는 시스템구성이었습니다
.
그러던것이 하드용량의 증가와 함께 HDD의 가격이 하락되는 시점에서 알려질듯 하다가... SSD의 출현이 그 앞을 가로 막고 있지 않나 합니다.

SSD의 레이드 구성~!!!
HDD로 도미노 게임 해보는것 다음으로 꼭 구성해보고 보고 싶은 희망이 있지만... 주머니 사정상 내년을 기약해야 될듯 합니다. 일단 단일 SSD의 성능 만으로도 충분히 만족하니까요 ^^ (일단 케이스가 먼저~ ^^)lpshow.php?m_id=11st&a_id=A100340710&p_id=0000&l_id=9999&l_cd1=3&l_cd2=0


RAID ( Redundant Array of Inexpensive Disks 또는 Redundant Array of Independent Disks )

1988년 버클리 대학의 3명의 과학자가 제안한 이론으로 그 당시에는 하드디스크의 용량이 제한적이었고, 함부로 사용하는 이도 드물 정도로 값도 비쌌기 때문에 보다 저렴하며 용량이 적고, 성능이 낮은 하드디스크를 묶어 중복 구성함으로써, 성능이 좋은 고가의 대용량 하드디스크 장비와 겨뤄 손색이 없도록 하는 것이 주목적이었습니다.

그러나 그들이 열심히 RAID를 연구하는 동안 Storage 기술의 발전으로 용량대비 가격이 지속적으로 하락하였으므로 애초 주목적이었던 가격적인 면보다는 데이터의 안정성과 에러 보정, 그리고 하드디스크의 장애에 의한 데이터의 손실을 막기 위한 측면이 강조되었고, RAID의 의미는 'Inexpensive'에서 'Independent'로의미가 바뀌게 되었습니다.

단순히 구성으로만 보자면 지금 많이들 사용하는partition의 반대 비슷한 개념정도 됩니다.

파티션이 하나의 물리적인 드라이브를 여러개의 논리적 드라이브로 분할한것 이라면..
레이드는 여러개의 물리적 드라이브 하나의 논리적 드라이브로 묶는 방식 입니다.

보다 정확한 파티션의 반대 개념은 단순히 구성을 묶기만 하는 JBOD (Just a Bunch Of Disks 또는 Just a BunchOf Drives) 가 더 가까울듯 합니다. 이것은 여러 개의 물리 드라이브를 논리적인 하나의 커다란 드라이브로 결합해주는 것일 뿐, 각각의 드라이브를 독립적으로 사용하는 것에 비해 어떠한 장점도 없으니까요.

RAID 시스템은 동일한 데이터를 여러 개의 디스크에 중복 저장하면서도, 운영체계에는 하나의 단일 디스크로 인식시킴으로써, 내고장성의 증가와 데이터 접근 효율성을 높여주는 장점이 있습니다.


레이드는 하드디스크가 묶이는 방식에 따라 레벨로 나뉘어지며 효율성과 안정성을 고려하여
레벨을 결정하게 됩니다.
초기 RAID는 6단계의 레벨로 나뉘어졌으나,
현재에는 보다 많은 RAID 레벨이 존재하고 있습니다.
레벨은 성능순이나 중요도순으로 숫자가 정해진 것은 아니므로, RAID 레벨 1이 RAID 레벨 0보다 우수하다거나 하는 등으로 단정지어서는 안됩니다.


RAID Level 0 ( 레이드 0 ) : 필요 드라이브 최소 2개이상
스트리핑 구성시 충족요건은..같은 모델의 하드디스크와 같은 용량이어야 한다는 전제 조건이 있습니다.

레이드 0 구성시 중요데이터는 반드시 Back-up 하셔야 합니다.
레벨 0은 RAID의 가장 기본적인 구현방식으로 Striping(스트라이핑)이라고 합니다.
이것은 하나의 데이터를 여러 드라이브에 분산 저장을 함으로써 빠른 입출력을 가능하게 합니다.

1부터 100까지의 숫자로 이루어진 데이터가 있다면

이것을 1부터 100까지 순서대로 읽게 되는 상황이 일반적인 하드디스크의 구성이고
2개의 하드 디스크로 레벨0 을 구성하면 하나는 1~50 까지만 읽고
다른 하나는 51부터 100까지만 읽고 저장하기 때문에 그 속도는 2배가 됩니다.
즉 3개로 구성되면 속도는 3배가 되고 10개로 구성되면 그 속도는 1/10 로 줄어 들게 됩니다.



레벨 0은 분산 저장에만 초점이 맞춰져 있어 하드디스크의 속도 향상에는 무척 도움이 되지만,
Striping(스트라이핑) 되어 있는 하드디스크 중 1개만 장애를 일으키더라도 데이터를 모두 유실할
위험성이 있습니다.

예 ) "어린이" 라는 단어를 2개의 드라이브(하드 디스크)로 구성된 Raid 0 에 저장한다면
한개의 드라이브는 "ㅇ , ㄹ, ㄴ, ㅇ" 라는 자음만 저장하고
다른 하나는 " ㅓ, ㅣ, ㅣ " 이런 모음만 저장합니다.
따라서 저장하거나 불러오는 속도는 빠르지만 하나의 디스크에서 에러가 발생하면...
완전한 데이터를 불러오지 못하게 되는 것입니다.

300GB 두개로 레이드0 을 구성하면 600GB의 단일 드라이브로 나타나고 성능 또한 2배이지만
하나의 디스크에서 손실이 발생하면 둘다 사용하지 못하게 됩니다. 안전성이 낮은 구성입니다.


RAID Level 1 ( 레이드 1 ) : 필요 드라이브 최소 2개이상

레벨 1은 2개의 하드디스크가 사용되며, 하나의 하드디스크에 기록되는 모든 데이터가 나머지 하나의 하드디스크에 고스란히 복사되는 방법으로 저장하게 됩니다. 두 개의 하드디스크에는 한치의 오차도 없이 똑같은 데이터가 저장이 되기 때문에 Mirroring(미러링)이라고 합니다. 이 경우 2개의 하드디스크 중 1개가 장애를 일으키더라도 남은 1개의 데이터는 장애를 일으킨 하드디스크의 데이터와 똑같기 때문에 안정성 측면에서 상당히 우수한 구성입니다.


읽기에서는 성능의 향상이 있으나, 쓰기에서의 속도 향상은 별반 차이가 없고, 전체 공간의 50%만 이용할 수 있다는 문제점이 있습니다. 때문에 매우 중요한 파일을 백업 받을 일이 없는 개인 사용자의 경우 하드디스크 두 개로 한 개 용량만 사용해야 한다는 단점이 있습니다.

두 레벨의 용량의 효율성을 비교하면...


레벨0은 속도와 용량의 효율성은 높으나 안정성이 떨어지고...
레벨1은 안전성은 뛰어나나 속도와 효율성이 떨어집니다.
그래서 나온것이 Raid 3과 4 인데...


RAID Level 2
는 기록용 드라이브와 테이터 복구용 드라이브를 별도로 두는데..
4개 하드 디스크에 기록하기 위해서는 3개의 부가 데이터를 기록해야 되기 때문에 효율성 측면에서
거의 사용하지는 않습니다. RAID 2는 RAID 0처럼 스트라이핑 방식이지만 에러 체크와 수정을 할 수 있도록 Hamming Code를 사용하고 있는 것이 특징입니다. 레벨 4가 나오면거 거의 사용하지 않는 기술입니다. 레벨2의 설명은 요정도 패스 ^^




RAID Level 3, 4 ( 레이드 3, 4 ) : 필요 드라이브 최소 3개이상

RAID 3, RAID 4 RAID 0, 1의 문제점을 보완하기 위한 방식으로 3, 4로 나뉘긴 하지만 RAID 구성 방식은 거의 같습니다. RAID 3,4는 기본적으로 RAID 0과 같은 스트라이핑(Striping) 구성을 하고 있어 성능을 보완하고 디스크 용량을 온전히 사용할 수 있게 해주는데, 여기에 추가로 에러 체크 및 수정을 위해서 패리티(Parity) 정보를 별도의 디스크에 따로 저장하게 합니다.

Raid 3 과 Raid 4의 차이점
Raid 3은 Byte단위로 데이터를 저장하는 반면 Raid 4는 Block단위로 저장합니다.
Block단위로 저장을 할 경우 작은 파일의 경우는 한번의 작업으로 데이터를 읽을 수 있기 때문에 성능상의 장점이 있습니다. 레벨 3은 동기화를 거처야 하기 때문에 3보다는 레벨 4를 많이 사용합니다.



데이터가 저장되어 있는 드라이브에 장애가 발생되었을 경우에는 패리티 정보를 이용하여 복구할 수 있으나, 정작 패리티 정보가 저장되어 있는 하드디스크에 장애가 발생하면 복구가 불가능하다는 단점이 있습니다. 또한 패리티 하드디스크에 병목현상이 생겨 속도가 저하될 수 도 있습니다.
레이드 0의 구성에 백업용 드라이브 하나 더 달아서 안정성을 확보한 구성입니다.
그러나 레벨 3과 레벨 4의 단점을 보완한 레벨 5의 등장으로 저 역시 한번도 구성 해본적은 없습니다.


이쯤 보시면 이제 Raid에 대해서 대충 감이 오시죠?

Raid Level 0
Striping(스트라이핑) : 데이터를 쪼개서 분산 저장 해서 속도향상
Raid Level 1 Mirroring ( 미러링 ) : 안전성을 중요시 하지만 드라이브 용량 이용의 비효율성
Raid Level 3 Parity ( 패리티 ) : 데이터 오류 체크 기술로 레벨0읠 불안전성을 보완

이 3가지를 어떻게 구성하는냐에 따라서 Raid의 레벨이 결정됩니다.

이제 Raid 5 와 Raid 6 그리고
이들의 복합 구성인
Raid 0 +1 또는 1+0 , Raid 5 + 0, Raid 5 + 1 에 관해서는 다음편에... ^^

출처 : http://loversky20.tistory.com/146

 

리눅스의 메모리, CPU, IO 등을 확인할 수 있는 유용한 명령어로 vmstat과 sar가 있다.

1. vmstat 5 와 같이 하면 5초 간격으로 모니터링 정보를 갱신하며 보여준다. 해당 항목들의 의미와 점검점은 다음과 같다.

구분
설명
proc r CPU에서 대기 중인 프로세스의 수를 의미한다. 이 값이 증가하거나 r 개수/cpu 개수의 값이 항상 2 이상 나온다면 CPU의 성능을 높여주어야 한다.
b 동작하는 블럭 프로세스의 수
이 값이 높다면 블럭 디바이스의 속도를 높여야 한다.
w swap out되는 프로세서의 수이다.w에 값이 증가하면 메모리가 매우 부족하다는 의미이므로 메모리를 늘려야 한다.
memory(KB) swapd 현대 메모리가 부족해 swap을 사용하고 있는 양을 의미한다.평소에 이 값이 높다고 해도 free 메모리의 여유가 있다면 메모리가 부족한 것이 아니다. 한번 swap으로 떨어진 프로레스는 메모리의 여유가 생기더라도 CPU에서 다시 호풀하지 않는 한 메모리로 넘어 오지 않는다.
free 현재 사용하지 않고 남아 있는 메모리
buffer 버퍼로 사용되고 있는 메모리 양(퍼포먼스에 관련)
cache 현재 캐시로 사용되고 있는 메모리 양(퍼포먼스에 관련)
swap(KB/s) si 디스크에서 메모리로 swap in 되는 양을 의미하며, swap 공간에 있는 데이터를 실제 메모리로호출한다.
so 메모리에서 디스크로 swap out 되는 양을 의미하며, 이는 곧 메모리가 부족해 실제 메모리에 있는 데이터를 swap 공간으로 보내는 것이다.
io(blocks/s) bi/bo bi는 초당 블럭 디바이스로 보내는 블럭 수이며 bo는 블럭 디바이스로부터 받은 블럭 수이다. 이 두 값이 높다는 것은 I/O 즉 하드디스크에 읽고 쓴느 값이 많다는 것이다.
system in 초당 인터럽트되는 양이다. 여기에는 time clock과 이더넷의 패킷도 포함되는데 즉 인터럽트의 수가 많다면 네트워크 쪽을 점검해볼필요가 있다.
cs 초당 context switch되는 양이다. CPU에사 실행하는 명령들이 자신의 우선순위보다 높은 명령이 오거나 혹은 자신에게 할당된 CPU 점유 시간이 만료되면 우선순위에서 밀리게 되고 이때context switch가 발생하게 된다.
cpu us 유저 프로세스가 CPU를 사용하는 시간
sy 시스템 프로세스가 CPU를 사용하는 시간
id CPU가 아무 일도 하지 않고 여유 있는 시간

출처 : Tong - 낯선남자님의 Linux통

스 왑아웃이 지속적으로 발생한다면 메모리가 부족한 것이다. w필드의 값이 증가하면 메모리가 부족하다는 의미이므로 메모리를 늘려야한다. so필드(swap out)는 0에 가까워야 한다. 평소에 swpd필드의 값이 높다고 해도 free 메모리에 여유가 있다면 메모리가 부족한 것이 아니다.

sy필드의 값이 지나치게 높으면 디스크 I/O에 문제가 있을 가능성이 크다.
그 리고 시스템 전체의 부하가 높은데 id필드의 값이 일반적으로 10%를 넘는다면 I/O나 메모리에 문제가 있을 가능성이 있다.I/O에 문제점이 있다는 것을 발견하면 iostat 등의 명령어를 추가로 사용하여 세부사항을 분석할 수 있다.

id필 드의 값이 항상 0이라면 CPU를 100% 사용하고 있다는 것을 의미한다. 그러나 항상 100%로 사용하고 있다면 어떤 작업이 계속 축적되고 있으며 CPU가 과부하를 가진다는 것을 의미한다. 이 때는 top, ps, sar등의 명령어를 사용하여 CPU를 계속 사용하고 있는 프로세스를 찾아 적절하게 대응해야 한다.

2. sar 명령 : 시스템에서 10분간격으로 성능 모니터링 한 내용을 /var/log/sa 에 저장해 둔 내용을 보여준다.

그냥 sar를 치면 오늘 현재 내용을 보여주고, sar -f /var/log/sa/sa15 와 같이 하여 특정일의 내용을 볼 수 있다.
sar명령의 여러 옵션(-b, -B, -d, -n 등)을 통해 세부적인 내용 확인도 가능하다.

DB서버나 서버단 프로세스가 많은 서버에서 성능개선을 위해 참고하면 좋은 명령어

'OS > LINUX' 카테고리의 다른 글

우분투 서버 한글 설정  (0) 2012.07.10
apt & dpkg 사용법  (0) 2012.07.10
iostat  (0) 2012.06.01
리눅스 사양 확인  (0) 2012.05.29
리눅스 NFS 설정하기  (0) 2012.05.18

iostat

disk에 받는 로드 측정, disk 입출력, 활용도, Queue크기, transaction율, 서비스 시간등

-> disk에 i/o 시 속도 측정가능한데 이 속도를 이용하여 데이터이관시 걸리는시간 측정가능

사용법

#iostat -xtc 3 200 : 3초간격, 200번 찍기 -> 가장 기본적이며 많이 사용됨, 속도 측정

 

 

ssd2 device에서 현재 쓰기가 이루어지고 있다. 속도는 1초당 244410kbyte, 즉 24mbyte/s.

만약 write 되고 있는 file이 10g라면 걸리는시간은?

10000 / 24 = 416.66 즉 417초정도 -> 6분 57초

옵션

.-x : 추가된 모든 disk들의 상태 표시

.-c : user mode, system mode, i/o를 위한 waiting, idle등에 사용된 시간의 백분율

.-t : 초당 터미널에서 사용된 read, write의 character수

.-D : 초당 disk의 read, write와 utilization에 대한 백분율

#iostat -D 3

-> util 값이 65% 이상이면 문제 발생

[출처] iostat|작성자 modric

'OS > LINUX' 카테고리의 다른 글

apt & dpkg 사용법  (0) 2012.07.10
vmstat 과 sar 명령  (0) 2012.06.01
리눅스 사양 확인  (0) 2012.05.29
리눅스 NFS 설정하기  (0) 2012.05.18
locate 명령어 사용법  (0) 2011.06.29

리눅스 OS 버전

cat /proc/sys/kernel/osrelease

cat /etc/redhat-release

cat /proc/version

uname -옵션

-a : 모든정보

-m : 하드웨어종류

-n : 호스트이름

-p : 소유자 이름

-r : 현재 버전

cpu정보

cat /proc/cpuinfo

dmesg | grep CPU
CPU: Intel(R) Xeon(TM) CPU 3.00GHz (2992.51-MHz K8-class CPU)
Hyperthreading: 2 logical CPUs
cpu0: <ACPI CPU> on acpi0
acpi_throttle0: <ACPI CPU Throttling> on cpu0

메모리 정보

cat /proc/meminfo

dmesg | grep memory

운영체제 확인

cat /etc/issue.net

HDD 용량 확인

df -h

HDD 확인

dmesg | grep SCSI

하드 디스크 정보(scsi)
cat /proc/scsi/scsi
ide일 경우(모델보기)
cat /proc/ide/hda/model (첫번째 하드 hda인경우)
/proc/ide/ 아래에는 하드 갯수 확인
/proc/ide/hda/ 아래에는 하드 정보
raid를 사용시

cat /proc/mdstat
네트워크 정보
cat /proc/net/netlink

출처 :

http://sjunious.egloos.com/980953

http://knight76.tistory.com/1134

http://the7dayz.tistory.com/2

'OS > LINUX' 카테고리의 다른 글

vmstat 과 sar 명령  (0) 2012.06.01
iostat  (0) 2012.06.01
리눅스 NFS 설정하기  (0) 2012.05.18
locate 명령어 사용법  (0) 2011.06.29
부팅시 자동실행 서비스 관리 ( ntsysv, chkconfig )  (0) 2011.06.21

NSF는 네트워크를 통해 서버간에 파일을 공유할 수 있도록 해줍니다.

처음으로 NFS 설정을 해보는데 정말 애를 먹었습니다.

내용 함께 공유하니 저처럼 리눅스 NFS 설정하시는 분들 참고하시길 바래요.

저는 CentOS를 사용하고 있습니다.



서버측 설정

portmap과 NFS를 실행해야 합니다. 그리고 nsflock도 실행해주세요.

설치가 되어있지 않다면 설치해주세요.

CentOS는 기본적으로 설치가 되어있으니 설치과정은 넘어갑니다.


# /etc/init.d/portmap start
portmap (을)를 시작 중: [  OK  ]


# /etc/init.d/nfs start
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]


# /etc/init.d/nfslock start




# rpcinfo -p

로 확인하면 아래와 같이 포트번호와 사용중인 목록이 나옵니다.

nfs랑 portmap이 보이면 잘 실행되고 있는것 입니다.

100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100011    1   udp    625  rquotad
100011    2   udp    625  rquotad
100011    1   tcp    628  rquotad
100011    2   tcp    628  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100021    1   udp  54868  nlockmgr
100021    3   udp  54868  nlockmgr
100021    4   udp  54868  nlockmgr
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   tcp  36016  nlockmgr
100021    3   tcp  36016  nlockmgr
100021    4   tcp  36016  nlockmgr
100005    1   udp    654  mountd
100005    1   tcp    657  mountd
100005    2   udp    654  mountd
100005    2   tcp    657  mountd
100005    3   udp    654  mountd
100005    3   tcp    657  mountd




마운트할 디렉토리를 설정하기 위해 /etc/exports 파일을 열어 아래의 내용을 추가합니다.


# vi /etc/exports
/home/nfs 192.168.5.123(rw)



/home/nfs 폴더에 대해서 192.168.5.123 아이피에 rw(읽기쓰기)권한을 준다는 설정입니다.

nfs 재실행합니다.


# /etc/init.d/nfs restart
NFS mountd를 종료 중: [  OK  ]
NFS 데몬을 종료 중: [  OK  ]
NFS quota를 종료 중: [  OK  ]
NFS 서비스를 종료 중:  [  OK  ]
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]



서버측 설정이 끝났습니다.


NSF 설정을 확인하고자 할때는

# showmount -e

이 명령어로 확인이 가능합니다.



클라이언트측


portmap과 nfs를 실행합니다.



# /etc/init.d/portmap start
portmap (을)를 시작 중: [  OK  ]


# /etc/init.d/nfs start
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]




마운트를 실행합니다
 
# mount -t nfs 192.168.5.123:/home/nfs /home/nfs


192.168.5.123서버의 /home/nfs 폴더를 /home/nfs 폴더에 마운트 하는 명령어 입니다.

명령이 잘 실행되었다면 NFS설정이 완료된 것입니다.



마운트한 폴더를 삭제할때는 먼저 마운트를 해제해주세요.

# umount /home/nfs




서버나 클라이언트 쪽에서 부팅시 자동으로 올라오도록 설정하기 위해서는 아래의 명령어를 실행하면 됩니다.

# chkconfig --level 3 nfs on
# chkconfig --level 3 portmap on





여기까진 어렵지 않은데 방화벽이 있을경우가 설정이 복잡해집니다.

NFS 사용할때 랜덤방식으로 포트번호가 변경되기 때문에 포트를 고정시켜주는 작업이 필요하고

이 고정된 포트에 대해서 방화벽을 해제해주셔야 합니다.

서버측에서 방화벽이 있는 경우 아래의 작업을 추가로 진행해주어야 합니다.


# rpcinfo -p

로 사용중인 포트를 다시 확인해봅시다.

100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100011    1   udp    625  rquotad
100011    2   udp    625  rquotad
100011    1   tcp    628  rquotad
100011    2   tcp    628  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100021    1   udp  54868  nlockmgr
100021    3   udp  54868  nlockmgr
100021    4   udp  54868  nlockmgr
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   tcp  36016  nlockmgr
100021    3   tcp  36016  nlockmgr
100021    4   tcp  36016  nlockmgr
100005    1   udp    654  mountd
100005    1   tcp    657  mountd
100005    2   udp    654  mountd
100005    2   tcp    657  mountd
100005    3   udp    654  mountd
100005    3   tcp    657  mountd



111 포트와 2049번 포트를 제외하고 나머지 포트는 NFS가 실행될때마다 변경되는데요 포트를 고정시켜야 합니다.


# vi /etc/init.d/nfslock

start() {
    if [ ! -f /var/lock/subsys/nfslock ]; then
        # Start daemons.
        if [ "$USERLAND_LOCKD" ]; then
          echo -n $"Starting NFS locking: "
          daemon rpc.lockd -p 4000



/etc/init.d/nfslock을 열어 daemon rpc.lockd -p 4000 로 수정해주세요.


# vi /etc/sysconfig/nfs
LOCKD_TCPPORT=4001
LOCKD_UDPPORT=4001
MOUNTD_PORT=4002


/etc/sysconfig/nfs에서 TCP, UDP, MOUNTD 포트번호를 고정합니다.



# vi /etc/services


# pxc-splr-ft  4003/tcp                   # pxc-splr-ft
# pxc-splr-ft 4003/udp                   # pxc-splr-ft
rquotad         4003/tcp                        # rpc.rquotad tcp port
rquotad         4003/udp                        # rpc.rquotad udp port




/etc/services를 열어 4003번 포트에 대한 내용을 추가해야합니다. 기존 4003번 포트는 주석처리해주세요.

자 이제 수정한 값을 적용하기 위해 NFS를 재실행합니다.


# /etc/rc.d/init.d/nfslock restart
# /etc/rc.d/init.d/nfs restart



포트가 잘 변경되었는지 확인해봅시다.



# rpcinfo -p
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp    614  status
100024    1   tcp    617  status
100011    1   udp    668  rquotad
100011    2   udp    668  rquotad
100011    1   tcp    671  rquotad
100011    2   tcp    671  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   udp   4001  nlockmgr
100021    3   udp   4001  nlockmgr
100021    4   udp   4001  nlockmgr
100021    1   tcp   4001  nlockmgr
100021    3   tcp   4001  nlockmgr
100021    4   tcp   4001  nlockmgr
100005    1   udp   4002  mountd
100005    1   tcp   4002  mountd
100005    2   udp   4002  mountd
100005    2   tcp   4002  mountd
100005    3   udp   4002  mountd
100005    3   tcp   4002  mountd



4001번 4002번 포트를 잘 사용하고 있네요.

이제 NFS에 사용되는 포트들에 대해서 방화벽을 해제합니다.


# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4000:4004 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 4000:4004 -j ACCEPT



그리고 iptables를 재실행합니다.
 
# /etc/rc.d/init.d/iptables restart




서버측의 hosts.allow 또는 hosts.deny에 클라이언트측 서버에 대한 접근을 허용 또는 막아놓았다면 이에 대한 허용처리도 해주어야 합니다.


# vi /etc/hosts.allow
portmap : 192.168.5.123
mountd : 192.168.5.123





nfs가 실행이 되지 않았거나, 방화벽이 열리지 않았거나, host가 막혀있다면

authentication error
RPC Error: Program not registered.

클라이언트측에서 mount 명령어를 실행할때 이런 종류의 에러메시지를 받을 수 있습니다.

이런 메시지가 나타난다면, 서버측과 클라이언트 측의 nfs 관련 서비스가 잘 실행되고 있는지 확인해주시고,

방화벽이나 특정 ip에 대해서 접근을 막아놓지 않았는지 확인해보세요.

구글링을 통해 보니 이런 오류메시지가 나왔을때

다른 분들의 경험에서는 hosts.allow, hosts.deny파일의 퍼미션이 604이상이 되어야 한다고도 하네요.




※ NFS 참조링크
http://www.yongbok.net/blog/?p=75
http://theeye.pe.kr/entry/%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC-%EB%A6%AC%EB%88%85%EC%8A%A4-NFS-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
http://mdoli.com/tatter/entry/Linux-NFS-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95-2%EB%B0%A9%ED%99%94%EB%B2%BD-%EC%82%AC%EC%9A%A9-%EC%8B%9C



추가(2012.5.15 업데이트됨)


NFS로 공유된 디렉토리는 서버가 부팅될때 자동으로 마운트 되지 않습니다.

자동으로 마운트되도록 하기 위해서는 /etc/fstab 에 마운트 포인트를 추가하고 netfs 데몬을 활성화해야합니다.
(서버측이 아닌 클라이언트측에서 설정합니다.)


1. /etc/fstab 에 마운트 포인트 추가

# cat /etc/fstab


를 입력하면 아래와 유사한  결과를 볼 수 있습니다.


현재 설정된 마운트 포인트들입니다.

바로 여기에 NFS 설정한 마운트 포인트를 추가해주어야 합니다.

각 값의 순서는 다음과 같습니다.


[파일시스템 장치명] [마운트 포인트] [파일시스템 종류] [옵션] [dump관련설정] [파일점검 옵션]


-파일시스템 장치명 : 장치명을 지정
-마운트 포인트 : 장치가 연결된 마운트 지점
-파일시스템 종류 : 파티션이 사용하는 파일시스템 지정
-옵션 : 파일시스템의 속성을 설정하는 옵션
defaults (rw, nouser,auto,exec suid 속성을 모두 가지는 옵션)
auto : 부팅시 자동 마운트
noauto : 부팅시 자동마운트 안함
exec : 실행파일이 실행되는 것을 허용
no exec : 실행파일이 실행되는 것을 허용 안함
suid : setuid, setgid의 사용을 허용하는 옵션
nosuid : setuid, setgid의 사용을 거부
ro (read only) : 읽기 전용
rw (ead write) : 읽고 쓰기 가능
user : 일반 계정 사용자들도 마운트 할 수 있는 옵션
nouser : root만 mount 가능
usrquota : 일반 사용자 quota적용
grpquota : 그룹 quota 적용
 
-dump 관련 설정
0 : 덤프되지 않은 파일시스템
1 : 데이터 백업을 위해 dump가능
 
-파일점검 옵션
0 : 부팅시 fsck를 사용하지 않음
1 : 루트 파일시스템을 의미
2 : 루트 파일시스템 이외의 파일시스템을 의미



/etc/fstab 파일을 열어 맨아래에 아래와 같이 NFS 설정했던 마운트 포인트를 추가로 입력해주시면 됩니다.

192.168.5.123:/home/nfs /home/nfs nfs defaults 0 0



2. netfs 데몬 활성화


netfs 데몬을 활성화 합니다.


 

# chkconfig --level 35 netfs on


 


값을 확인해보도록 하지요.

#chkconfig --list | grep netfs


 

아래의 그림처럼 3번과 5번이 활성 또는 on 이라고 나오면 됩니다.


 


이렇게 설정이 되면 서버가 부팅될때 NFS 설정한 폴더가 자동으로 마운트 됩니다.

출처 : http://trend21c.tistory.com/1285

'OS > LINUX' 카테고리의 다른 글

iostat  (0) 2012.06.01
리눅스 사양 확인  (0) 2012.05.29
locate 명령어 사용법  (0) 2011.06.29
부팅시 자동실행 서비스 관리 ( ntsysv, chkconfig )  (0) 2011.06.21
chkconfig  (0) 2011.06.21
>MS_Bing_Translator_API빙번역기 사용법

-MS Bing 번역기는 월 2,00,000자까지는 무료로 사용가능한 open source라 나름 유용하나, 번역도 안되어있고 사용 설명도 직관적이지 못해서 활용이 버겨워 기왕 고생한 김에 MindMap을 제작해 올린다.
※매우 주관적인 번역과 순서로 제작되었으니 각자 능력껏 볼 것
※보고 욕하진 말아주세요.. 허접해도 파악하느라 X빠지는 줄 알았슴..OTL







MindMap
-MindMap 원본 파일을 참조하니 필요할 경우 다운받을 것
MS Translator
MS translator 사용신청
>하단에 적힌 Request Page의 URL에 들어가면 우측에 버튼 형식으로 서비스 신청을 할 수 있다. 필요에 따라서 선택 후 약관에 따라 신청해주면 된다. 하단에 적힌 Comfirm Page에서 확인 가능하다.

-Request Page: https://datamarket.azure.com/dataset/1899a118-d202-492c-aa16-ba21c33c06cb
-Confirm Page: https://datamarket.azure.com/account/datasets

※MS Translator API는 월 2,000,000글자까지 무료 사용이 가능함(※글자 단위이므로 생각보다 많지 않음)
※MS Developer 메인 URL: http://www.microsofttranslator.com/dev/

MS translator 적용 방법
※사용 가능한 웹 언어: C#,PHP,script

~Server-side 부분
1) Server-side에서 사용할 Access-Token을 제공 받는다.(굳이 Server-side일 필욘 없지만, 유출 방지를 위해..)

2)accessToken 생성
-https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/에 POST 방식으로 아래 파라미터를 넘겨주면 accessToken을 Return한다.
※accessToken은 수시로 변경되므로 한번 불러온 값을 반복하여 쓰는 건 불가

>client_id: 사용자 ID로, https://datamarket.azure.com/developer/applications에서 확인 가능함
>client_secret: ID의 고유키로, https://datamarket.azure.com/developer/applications에서 확인 가능함
>scope: 지정된 값으로 "http://api.microsofttranslator.com"를 입력하면 됨(※ "를 제외하고 입력할 것)
>grant_type: 지정된 값으로 "client_credentials"를 입력하면 됨(※ "를 제외하고 입력할 것)

~Client-side 부분
3)javas-ript의 AJAX를 이용하여 적용 - 파라미터 입력
아래 URL 상에 적힌 javascript 부분을 그대로 사용하되 window.accessToken은 2)에서 생성한 값을 입력
※URL: http://msdn.microsoft.com/en-us/library/ff512385.aspx

-WindowAccessToken: 2)의 값
-from: 번역할 언어(입력 안할 경우 언어를 자동검색하므로 오히려 편리함)
-to: 번역될 언어
-text: 번역할 문장
-oncomplete: 입력된 값과 동일한 function을 호출하며 파라미터로 결과값이 들어옴

※고정 URL: http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId=Bearer(※이부분은 바뀌지 않습니다.)

※문장이 아니라 단어 단위의 검색이라면 Dictionary API가 더 좋겠지만, Dictionary API가 translator API보다 더 정보 찾기가 힘들다.

+ Recent posts