기본 콘텐츠로 건너뛰기

Linux RAID

Linux RAID:

구현 방식은 대강 Hardward RAID, Fake RAID, Software RAID로 나눌 수 있다.
하드웨어 방식은 Adaptec 같이 이름만 대면 알 수 있는 브랜드에서 자체 컨트롤러를 심어 외부에서 봤을 때는 디스크 하나로만 보이는 것이다.
페이크(dmriaid) Raid:https://wiki.archlinux.org/index.php/Installing_with_Fake_RAID
소프트웨어(mdadm) Raid

하드웨어 RAID 대 소프트웨어 RAID의 차이점은 다음과 같습니다.

하드웨어 RAID : 하드웨어-기반 시스템은 호스트에서 RAID 하부 시스템을 독립적으로 관리하며, 호스트에는 RAID 어레이를 하나의 디스크로 나타냅니다.

하드웨어 RAID 장치의 한 예로서 SCSI 제어 장치에 연결되어 RAID 어레이를 단독 SCSI 드라이브처럼 나타내는 장치가 있습니다. 외부 RAID 시스템은 데이터를 저장하는 모든 RAID를 외부 디스크 하부 시스템에 위치한 한개의 컨트롤러로 이동시킵니다. 따라서 일반 SCSI 컨트롤러를 통해 호스트로 연결된 전체 하부 시스템은 호스트에서 하나의 디스크로 보여집니다.
RAID 컨트롤러는 카드 형식으로도 판매되며, 이 카드는 운영 체제에서는 SCSI 컨트롤러처럼 작동하지만 실제로는 스스로 모든 드라이브 통신을 처리합니다. 이러한 카드를 구입하신 경우, 여러분은 SCSI 컨트롤러와 마찬가지로 드라이브를 RAID 컨트롤러에 꽂으신 후 드라이브를 RAID 컨트롤러의 설정에 추가시키면, 운영 체제는 그 차이를 절대로 인식하지 못합니다.

소프트웨어 RAID : 소프트웨어 RAID는 커널 디스크 (블록 장치) 코드로 다양한 RAID 레벨을 실현합니다. 소프트웨어 RAID는 비싼 디스크 컨트롤러 카드나 핫-스왑 새시 (hot-swap chassis)[1]를 사용하지 않기 때문에 가장 저렴한 솔루션을 제공합니다. 최신 CPU의 성능이 점점 빨라지면서, 소프트웨어 RAID의 성능이 하드웨어 RAID의 성능을 능가하게 되었습니다.

Linux 커널에 있는 MD 드라이버는 완전히 하드웨어 독립적인 RAID 솔루션의 한 예입니다. 소프트웨어 기반 어레이의 성능은 서버 CPU의 성능과 로드에 의해 좌우됩니다.

소프트웨어 RAID의 기능 :

스레드 재설정 프로세스
커널 기반 설정
Linux 시스템 간에 어레이를 재설정할 필요가 없이 이동할 수 있는 기능
유휴 시스템 자원을 사용한 백그라운드 어레이 재생
즉시 백업 가능한 (Hot-swappable) 드라이브 지원
특정 CPU 최적화를 위한 자동 CPU 감지 기능

댓글

이 블로그의 인기 게시물

[Java] Http File Download 이어받기

Http 서버로부터 다운로드 받는 파일을 이어받기 위해서는 Http Header에 아래 두가지 정보를 추가해 주면 된다. URLConnection conn = url.openConnection(); conn.setRequestProperty("Accept-Ranges", "bytes"); conn.setRequestProperty("Range", "bytes=" + mOffset + "-"); 그러면 서버에서는 해당 Offset으로부터 File을 다운로드 시켜준다. 클라이언트가 요청헤더에 Range 필드를 포함 시켜서 보내면, 서버는 그 정보를 가지고 어디서 부터 파일을 보낼지 판단을 합니다. 하지만 클라이언트가(브라우저) Range 필드를 포함 시켜야 할지를 판단하는 기준은 최초 다운로드 요청시 서버의 응답헤더에 따라 다음 요청헤더에 Range 헤더를 생성할지 않할지 판단하게 됩니다. 그걸 당락짓는 응답 헤더 필드는 다음과 같습니다. Accept-Ranges , ETag, Last-Modified 반드시 위 필드를 응답 헤더에 같이 보내줘야 클라이언트는 다음 요청시 Range헤더를 포함시켜 보내게 됩니다. 참고로 말씀 드리면 위 필드를 포함 시켜서 보내더라도 value는 반드시 " " 로 묶어서 보내야 합니다. 안그러면 브라우저는 죽어도 Range 필드를 생성시키지 않습니다. HTTP 1.1 스펙은 따옴표를 강제적으로 해줘라 이런 내용 없습니다. 자바기준 40byte의 파일이라치면 클리이언트 요청을 두번으로 나누었다치면 이케 connection.setRequestProperty("Range", "bytes=0-20"); connection.setRequestProperty("Range", "bytes=20-40"); 단 co...

java 특정 디렉토리에 있는 파일 목록을 읽어내기, 정렬해서 가져오기

폴더 리스트 가져오기 String path="C:\"; File dirFile=new File(path); File []fileList=dirFile.listFiles(); for(File tempFile : fileList) {   if(tempFile.isFile()) {     String tempPath=tempFile.getParent();     String tempFileName=tempFile.getName();     System.out.println("Path="+tempPath);     System.out.println("FileName="+tempFileName);     /*** Do something withd tempPath and temp FileName ^^; ***/   } } 정렬해서 가져오기 import java.io.FileFilter; import java.io.IOException; import java.util.Arrays; import java.util.Date; import org.apache.commons.io.comparator.LastModifiedFileComparator; import org.apache.commons.io.filefilter.FileFileFilter; public class LastModifiedFileComparatorTest { public static void main(String[] args) throws IOException { File directory = new File("."); // get just files, not directories File[] files = directory.listFiles((FileFilter) FileFileFilter.FILE); System.out.println("Defaul...