-
서비스 작동안됨
서론이제 ZFS 시스템을 구축 하였으니 요놈을 활용해볼 터인데필자의 경우 웹 서비스를 운영하는데 사용한다.실제 운영 시에는 대게 시스템이 껐다 켜져도 운영하는 서비스가 자동으로 작동되게 하고싶은 마음에 servie를 등록해둘 것이다.근데 문제가 발생한다. 마운트 문제zpool 디스크에 어떠한 실행하고 싶은 서비스 파일이 존재한다고 가정하자.이전 게시글에서의 기준으로 설명하며, zpool 마운트 지점은 raidz 이다.bash sudo ln s raidzprojtest.service etcsystemdsystem sudo systemctl daemonreload sudo systemctl enable test.service sudo systemctl restart test.service자 이렇게 서비스를 등록을 하였는데 당연히 지금은 문제가 없다.하지만 시스템이 어떠한 이유로 인해 재부팅이 되는 상황일 때 문제가 발생한다.과정은 이러하다.시스템이 재 가동이 되면, zpool 또한 소프트퉤어적으로 이루어지기 때문에 systemctl service를 로드 하는 순위보다 밀리게 되어 실제 등록된 서비스를 가동 시킬 때 시점에서는 zpool 로드가 안되어 있어 등록한 test.service 파일의 존재를 알 수 없는 상태가 된다.고로 서비스를 시작할 수 없는 상태가 된다.물론 해당 이슈는 해결하는데 다양한 방법이 있겠지만 필자가 편하게 생각된 방법을 알려주려 한다. 해결첫 번째로 service 를 하는데 있어 옵션이 하나 있다.Unit 파트의 RequiresMountsFor 라는 것이 있는데 뜻 그대로 마운트 포인트가 생성될 때 까지 기다렸다 실행한다는 것이다.bashUnit...RequiresMountsForraidz...언뜻 보기엔 벌써 해결이 된듯 하다.하지만 위에서 설명 했듯이 백날 위처럼 설정 해봐야 의도적으로 작동을 안된다.이유는 결국엔 service들이 가동되는 시점엔 실제 test.service 파일이 존재하지 않기 때문이다.그래서 필자가 선택한 방법은 메인 디스크에 zpool 에 들어가 있는 서비스를 관리하는 마스터 개념의 서비스를 등록한 것이다.bashUnitDescriptionzpool 서비스 관리 서비스Afternetwork.targetRequiresMountsForraidzInstallWantedBymultiuser.targetServiceUseruser1PermissionsStartOnlytrueWorkingDirectoryhomeuser1zpoolprojectstartExecStartsh zpoolprojectstart.shRestartonfailureRestartSec60RuntimeDirectoryMode755자 메인 디스크에 해상 서비스를 등록한다. 당연하게도 해당 서비스는 메인 디스크에 존재하므로 로드시 항상 존재하므로 정상적으로 작동이 될 것이며,RequiresMountsFor 옵션에 의해 zpool 디스크가 마운트 될 때까지 기다린다.이후 zpoolprojectstart.sh 파일을 가동한다..sh 파일의 내용은 다음과 같다.bashbinshecho 비밀번호 sudo S systemctl enable test.serviceecho 비밀번호 sudo S systemctl restart test.servicezpool이 마운트 된 이후는 실제 test.service 파일이 존재하는 시점일 테고다시 서비스를 등록하고 재시작해주는 .sh 를 작성하여 자동 시작이 되게 만들었다.결론 잘된다. 끝
2024-08-19 12:55:19
Public
-
스냅샷 남기기
서론스냅샷은 서버를 관리해본 양반이라면 한번쯤 아님말고 들어본 단어 일테다.스냅샷이란, 사진 촬영 같은거 하면 스냅샷 촬영 이라고 들어 봤을 터인데 이거랑 같다.즉 현재 상태를 마치 사진 찍는것과 같이 순간을 저장하는 것이라고 생각하면 된다. Snapshot 스냅샷사실 필자는 딱히 스냅샷을 꾸준히 하지는 않는다.물론 스크립트 짜서 자동 실행 해둬도 되긴하는데 서버돌리고 다운로드 받고 딱히 굉장히 중요한 데이터는 없어서 굳이 하지는 않는다.그럼에도 혹시나 귀찮은 일이 발생 할까 하여 가끔은 하는데 당연히 zfs 에 스냅샷기능을 사용해 볼 것이다.링크httpsdocs.oracle.comcdE2692501htmlE25825gbciq.html를 참고하면 간단한 사용법을 만나 볼 수 있다.그중 실제로 자주 쓰는 것만 테스트 해볼 것이다.bash sudo zfs snapshot testsnap1너무나 간단하다. snapshot을 만들거니까 snapshot 명령을 쓰면 그만이다.bash zfs list t snapshot zfs list t snapshot r zfs list t snapshot r testNAME USED AVAIL REFER MOUNTPOINTtestsnap1 0B140K 3개 명령어 모두 같은 결과를 보여준다.삭제도 너무 간단하다.bash sudo zfs destroy testsnap1이러면 삭제다 너무 간단하다. 복구그럼 이제 스냅샷을 만들었으니 실제 파일이 손상되었을 때 이전 시점으로 복구를 해보자.bash ls ltotal 1rwrr 1 root root 5 Aug 19 0322 temptemp 라는 내용만 들어 있는 temp 파일을 하나 생성하였다.bash sudo zfs snapshot testsnaptemp zfs list t snapshotNAME USED AVAIL REFER MOUNTPOINTtestsnaptemp 0B151K temp 라는 파일이 있는 시점에서 스냅샷을 남겼고, temp 라는 파일을 삭제해보자.bash sudo rm temp ls ltotal 0이제 파일이 삭제되었으니 파일이 있던 시점으로 한번 되돌려보자.bash sudo zfs rollback testsnaptemp ls ltotal 1rwrr 1 root root 5 Aug 19 0322 temp마법처럼 삭제했던 파일이 다시 등장하였다.롤백 하는데 걸리는 시간은 파일의 양에 따라 상이할 것이다.
2024-08-19 12:45:45
Public
-
zpool 디스크 경로 문제점
문제점이전 단계에서 zpool를 구성하기 위해 fdisk l 로 부터 정보를 가져와 장치를 입력했는데 문제가 발생 한다.bypath 기준인 devsdc 형식은 하드웨어가 장치를 언제 읽는가에 따라 언제든이 바뀔 수 있다는게 문제이다.예를 들어 4개의 동일한 디스크를 계속 사용 중이다.이때 경로bypath가 바뀌든 말든 상관이 없다. 하지만 1개의 추가 디스크를 장착 하였다. 이때 경로가 바뀌어 버리면 zpool 구성이 깨져버린다. 깨져버린다 해서 걱정 말라, 그냥 원래 있던 구성대로 추가 디스크 없이 부팅하면 정상적으로 조회 가능하다.물론 안깨질수도 있다. 정상적으로 추가 디스크가 마지막 경로로 잡히면 다행이다.이런 방법은 너무 복불복이라 그닥 추천 하지 않는다.고로 다음 방법을 사용한다. bybash cd devdisk로 이동하면 다음과 같은 결과를 볼 수 있다.bash ls ldrwxrxrx 2 root root 680 Aug 15 0756 byiddrwxrxrx 2 root root 100 Aug 15 0756 bylabeldrwxrxrx 2 root root 120 Aug 15 0756 bypartlabeldrwxrxrx 2 root root 260 Aug 15 0756 bypartuuiddrwxrxrx 2 root root 360 Aug 15 0756 bypathdrwxrxrx 2 root root 100 Aug 15 0756 byuuid자 이제 우리는 불변하지 않을 장치의 정보를 입력하여 zpool을 구성할 것이다.path 의 경우 하드웨어의 순서에 따라 변할 가능 성이 있다.partlabel , partuuid 의 경우 최초 디스크를 포멧하고 장치를 할당하면 존재 하지만,zpool 구성 시 디스크가 초기화 되면서 정보가 바뀌기에 위 두 개 정보를 입력하여 구성할 수가 없다.결국 한개의 결론으로 도달하게 된다. 암튼 그럼, 나머지 정보는 검색하면 쉽게 나온다.바로 id 값을 이용하는 것이다.id 값의 경우 2가지 종류가 있는데wwn 과 모델 이 있으며, wwn 은 뜻을 해석해보면,World Wide Name이란다.근데 뜻과는 다르게 레이드 카드 종류에 따라 저 정보 또한 변할 수 있다는 것을 확인하였다. 아니 찾아보면 불변하는 정보라는데 실제로는 바뀌니까 좀 짜증난다. 레이드카드가 단일이라면 딱히 바뀔일이 없어 보이는데 2개 이상을 사용하는 경우라면 wwn 은 안쓰는게 좋을 듯 하다.여러 실험 결과 모델 를 기준으로 zpool 를 구성하면 이런 모든 스트레스가 해소된다. zpool그렇다면 어떻게 id기준으로 구성을 하느냐방법은 똑같다. 다만 구성하는 디스크를 어떻게 입력을 했냐 차이이다.bashlrwxrwxrwx 1 root root 9 8월 11 1813 ataST16000NM000J2T03ZR563D ....sdalrwxrwxrwx 1 root root 10 8월 11 1813 ataST16000NM000J2T03ZR563Dpart1 ....sda1lrwxrwxrwx 1 root root 9 8월 11 1813 ataST2000DM00111645QVGB ....sdglrwxrwxrwx 1 root root 10 8월 11 1813 ataST2000DM00111645QVGBpart1 ....sdg1...byid 에서 위처럼 생긴 친구들을 찾는다.bash sudo zpool create test raidz m raidz ataST16000NM000J2T03ZR563D ataST2000DM00111645QVGB ...이렇게 입력하면 끝이다.필자의 경우 VM으로 테스트 하는 환경임으로bashlrwxrwxrwx 1 root root 9 Aug 15 0756 googledisk1 ....sdblrwxrwxrwx 1 root root 10 Aug 15 0756 googledisk1part1 ....sdb1lrwxrwxrwx 1 root root 10 Aug 15 0756 googledisk1part9 ....sdb9lrwxrwxrwx 1 root root 9 Aug 15 0756 googledisk2 ....sdclrwxrwxrwx 1 root root 10 Aug 15 0756 googledisk2part1 ....sdc1lrwxrwxrwx 1 root root 10 Aug 15 0756 googledisk2part9 ....sdc9lrwxrwxrwx 1 root root 9 Aug 15 0756 googledisk3 ....sddlrwxrwxrwx 1 root root 10 Aug 15 0756 googledisk3part1 ....sdd1lrwxrwxrwx 1 root root 10 Aug 15 0756 googledisk3part9 ....sdd9lrwxrwxrwx 1 root root 9 Aug 15 0756 googledisk4 ....sdelrwxrwxrwx 1 root root 10 Aug 15 0756 googledisk4part1 ....sde1lrwxrwxrwx 1 root root 10 Aug 15 0756 googledisk4part9 ....sde9lrwxrwxrwx 1 root root 9 Aug 15 0723 googletestserver ....sdalrwxrwxrwx 1 root root 10 Aug 15 0723 googletestserverpart1 ....sda1lrwxrwxrwx 1 root root 11 Aug 15 0723 googletestserverpart14 ....sda14lrwxrwxrwx 1 root root 11 Aug 15 0723 googletestserverpart15 ....sda15lrwxrwxrwx 1 root root 9 Aug 15 0756 scsi0GooglePersistentDiskdisk1 ....sdblrwxrwxrwx 1 root root 10 Aug 15 0756 scsi0GooglePersistentDiskdisk1part1 ....sdb1lrwxrwxrwx 1 root root 10 Aug 15 0756 scsi0GooglePersistentDiskdisk1part9 ....sdb9lrwxrwxrwx 1 root root 9 Aug 15 0756 scsi0GooglePersistentDiskdisk2 ....sdclrwxrwxrwx 1 root root 10 Aug 15 0756 scsi0GooglePersistentDiskdisk2part1 ....sdc1lrwxrwxrwx 1 root root 10 Aug 15 0756 scsi0GooglePersistentDiskdisk2part9 ....sdc9lrwxrwxrwx 1 root root 9 Aug 15 0756 scsi0GooglePersistentDiskdisk3 ....sddlrwxrwxrwx 1 root root 10 Aug 15 0756 scsi0GooglePersistentDiskdisk3part1 ....sdd1lrwxrwxrwx 1 root root 10 Aug 15 0756 scsi0GooglePersistentDiskdisk3part9 ....sdd9lrwxrwxrwx 1 root root 9 Aug 15 0756 scsi0GooglePersistentDiskdisk4 ....sdelrwxrwxrwx 1 root root 10 Aug 15 0756 scsi0GooglePersistentDiskdisk4part1 ....sde1lrwxrwxrwx 1 root root 10 Aug 15 0756 scsi0GooglePersistentDiskdisk4part9 ....sde9lrwxrwxrwx 1 root root 9 Aug 15 0723 scsi0GooglePersistentDisktestserver ....sdalrwxrwxrwx 1 root root 10 Aug 15 0723 scsi0GooglePersistentDisktestserverpart1 ....sda1lrwxrwxrwx 1 root root 11 Aug 15 0723 scsi0GooglePersistentDisktestserverpart14 ....sda14lrwxrwxrwx 1 root root 11 Aug 15 0723 scsi0GooglePersistentDisktestserverpart15 ....sda15bash sudo zpool create test raidz m raidz googledisk1 googledisk2 googledisk3 googledisk4위처럼 진행 하였다.이후 상태를 확인해보면 다른점이 하나 있는데bash sudo zpool status pool test state ONLINEconfigNAME STATE READ WRITE CKSUMtest ONLINE 0 0 0 raidz10 ONLINE 0 0 0googledisk1 ONLINE 0 0 0googledisk2 ONLINE 0 0 0googledisk3 ONLINE 0 0 0googledisk4 ONLINE 0 0 0경로가 아니라 장치명이 주최가 되어 구성이 잘 된 것으로 볼 수 있다.
2024-08-19 12:46:15
Public
-
저장소 pool 만들기
디스크 확인필자의 테스트 환경에서 10GB 디스크를 4개로 구성 하였다.자 디스크 목록을 확인해보자 sudo fdisk l결과를 한번 확인해 보면Disk devsdb 10 GiB, 10737418240 bytes, 20971520 sectorsDisk model PersistentDiskUnits sectors of 1 512 512 bytesSector size logicalphysical 512 bytes 4096 bytesIO size minimumoptimal 4096 bytes 4096 bytesDisk devsdc 10 GiB, 10737418240 bytes, 20971520 sectorsDisk model PersistentDiskUnits sectors of 1 512 512 bytesSector size logicalphysical 512 bytes 4096 bytesIO size minimumoptimal 4096 bytes 4096 bytesDisk devsdd 10 GiB, 10737418240 bytes, 20971520 sectorsDisk model PersistentDiskUnits sectors of 1 512 512 bytesSector size logicalphysical 512 bytes 4096 bytesIO size minimumoptimal 4096 bytes 4096 bytesDisk devsde 10 GiB, 10737418240 bytes, 20971520 sectorsDisk model PersistentDiskUnits sectors of 1 512 512 bytesSector size logicalphysical 512 bytes 4096 bytesIO size minimumoptimal 4096 bytes 4096 bytes총 4개의 디스크가 정상적으로 연결되어 있는 모습이다. ZPOOL먼저 미러링을 한번 해보자디스크 두 개를 가지고 활용해볼 것이다. sudo zpool create test mirror devsdb devsdc정말로 심플하다. sudo zpool listNAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAGCAP DEDUPHEALTH ALTROOTtest 9.50G 492K 9.50G 0 0 1.00xONLINE 아무런 이슈 없이 정상적으로 바로 미러링 된 디스크로 재 탄생 하였다.한번 디스크 상태를 다시 살펴보자Disk devsdb 10 GiB, 10737418240 bytes, 20971520 sectorsDisk model PersistentDiskUnits sectors of 1 512 512 bytesSector size logicalphysical 512 bytes 4096 bytesIO size minimumoptimal 4096 bytes 4096 bytesDisklabel type gptDisk identifier B3C13E9D69341547B4B42A4FD8FD9F6CDeviceStart End Sectors Size Typedevsdb1 2048 20953087 20951040 10G Solaris usr Apple ZFSdevsdb9 20953088 2096947116384 8M Solaris reserved 1Disk devsdc 10 GiB, 10737418240 bytes, 20971520 sectorsDisk model PersistentDiskUnits sectors of 1 512 512 bytesSector size logicalphysical 512 bytes 4096 bytesIO size minimumoptimal 4096 bytes 4096 bytesDisklabel type gptDisk identifier EE69E9F64DD90942AB6EBD3C09A5299DDeviceStart End Sectors Size Typedevsdc1 2048 20953087 20951040 10G Solaris usr Apple ZFSdevsdc9 20953088 2096947116384 8M Solaris reserved 1Disk devsdd 10 GiB, 10737418240 bytes, 20971520 sectorsDisk model PersistentDiskUnits sectors of 1 512 512 bytesSector size logicalphysical 512 bytes 4096 bytesIO size minimumoptimal 4096 bytes 4096 bytesDisk devsde 10 GiB, 10737418240 bytes, 20971520 sectorsDisk model PersistentDiskUnits sectors of 1 512 512 bytesSector size logicalphysical 512 bytes 4096 bytesIO size minimumoptimal 4096 bytes 4096 bytes연결한 devsdb, devsdc 장치의 상태가 Solaris reserved 1 디스크 형태로 변경된 것을 확인 할 수 있다.근데 만들긴 만들었는데 대체 어떻게 접근 한다는 말인가 sudo zfs listNAME USED AVAIL REFER MOUNTPOINTtest 396K 9.20G 96K test해당 이름명으로 자동으로 test 에 마운트 된것을 확인 할 수 있다.물론 당연하게도 zpool 을 구성 할 떄 동시에 마운트 포인트도 지정이 가능하다.먼저 기존에 생성한 zpool 을 삭제해보자 sudo zpool destroy test만약 아무런 경고 없다면 정상이지만 해당 zpool 경로를 사용하고 있는 서비스 등이 존재 하면 삭제가 불가 하다.해당 마운트 지점을 조회하고 있는 모든 서비스를 종료 한 후 삭제를 권한다.설명에 의하면 r 옵션을 추가 하여 강제적으로 삭제 하면 된다는데죽어도 r 옵션이 먹는걸 본적이 없어서 일일히 확인 후 destroy 하는 것을 권한다. sudo zpool create test mirror m raidz devsdb devsdc단순하게 m 옵션을 주어 마운트 지점을 지정하면 끝이다. 해당 경로로 자동적 폴더가 생성되며 바로 사용가능한 상태로 준비가 된다.이외도 마찬가지 규칙으로 만들 수 있다. sudo zpool create test raidz m raidz devsdb devsdc sudo zpool create test raidz1 m raidz devsdb devsdc devsdd devsde sudo zpool create test raidz2 m raidz devsdb devsdc devsdd devsde sudo zpool create test raidz3 m raidz devsdb devsdc devsdd devsde자 이제 zpool를 만들고 삭제하는 방법을 알았다.해당 zpool의 상태를 한번 살펴보자 sudo zpool statuspool teststate ONLINEconfigNAMESTATE READ WRITE CKSUMtestONLINE 0 0 0 raidz30 ONLINE 0 0 0sdb ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0errors No known data errors zpool iostat v capacity operations bandwidthpoolalloc free read write read writetest1.73M 39.5G 0 4 45.9K 61.5K raidz30 1.73M 39.5G 0 4 45.9K 61.5Ksdb 0 1 11.5K 15.4Ksdc 0 1 11.5K 15.4Ksdd 0 1 11.5K 15.4Ksde 0 1 11.5K 15.4K뭐 당연하겠지만 방금만들었으니 딱히 별다른 이슈가 없을 테다.이외도 상태를 조회 해보는 명령은 많은데이를 다 외우긴 힘들테니 링크httpsdocs.oracle.comcdE2484601htmlE23284gaynp.html를 참고 해보자.
2024-08-15 17:03:09
Public
-
ZFS 란 무엇인가?
서론ZFS란 이전에 RAID에 대해서 다뤘는데 RAID를 소프트웨어적으로 구성을 할 수 있게 해주는 친구이다.ZFS를 검색하면 수많은 정보가 나온다. 그 내용들을 보고 있자면, 불안해서 못쓴다. 하나 고장나면 다 날라간다. 그냥 하드 하나씩 따로 쓰는걸 추천한다.등등 부정적인 내용도 심심치 않게 볼 수 있다. 하지만 고장나면 원래 그냥 다 날라가는건 매한가지인데참고로 필자는 거진 2년을 사용했지만 딱히 RAID가 풀리는 현상도 없고, 에러나는 경우도 없었다.대규모 서비스는 할일도 없고 개인수준에서 쓰긴 최적인듯 싶다. 하드웨어메인보드의 SATA로 연결해도 되고 SATA 확장을 써도 되고 RAID CARD를 사용해도 된다.다만 대게는 RAID를 구성 한다면 많은 수의 HDD를 사용할 예정이기에 요즘 마더보드의 내장 SATA포트를 쓰기엔 개수가 부족할 수 있다.예전에는 SATA 포트에 대역폭을 많이 할당해줬는데 요즘은 nvme 로 대역폭을 많이 빼서 내장 SATA 개수가 좀 적은 경우가 많다.RAID CARD를 사용한다면 주의할 점이 있는데, LSI사에서 만들었다던 개념인 IR, IT 두 가지 모드 펌웨어가 있는데IR은 RAID CARD가 컨트롤 하여 하드웨어적으로 컨트롤 하고, IT는 대충 SATA 확장 해주는 개념 정도로 이해하면 좋을 듯 하다.고로 ZFS는 소프트웨어 컨트롤이기에 IT 모드가 적용된 RAID CARD 펌웨어가 필요하다. 설치필자는 ubuntu 22.04 LTS 버전을 사용하며, ZFS를 설치하는 방법은 링크httpsubuntu.comtutorialssetupzfsstoragepool2installingzfs에 간단히 설명되어 있다.bashsudo apt install zfsutilslinuxubuntu zfs 를 검색하면 필자가 이용하는 zfsutilslinux 말고도 zfsfuse 라는 친구도 있는데 목적 자체는 동일하다.open zfs이냐 solaris 용으로 나온 zfs 이냐의 차이 정도로 알면 될 듯 하다. 종류ZFS는 5개의 레이드를 지원 한다고 한다. 미러링 Raid1 스트라이프 또는 Raidz0 Riad0 Raidz1 Raid5 하나의 패리티를 사용해 디스크 한개의 고장을 허용 Raidz2 Raid6 두개의 패리티를 사용해 디스크 두개의 고장을 허용 Raidz3 세 개의 패리티를 사용해 3개의 디스크 고장을 허용. 10개 이상의 디스크를 레이드로 묶을 때 리실버링 중에 다른 디스크가 고장나도 레이드가 파괴되는 것을 방지하기 위해 사용됨 참조링크 링크httpsadmion.netwhatiszfs다음 단계에서는 각각의 설정을 한번 진행해본다.
2024-08-19 12:46:31
Public
-
RAID 란 무엇인가?
서론ZFS 를 사용하기전에 먼저 RAID 라는 걸 이해해야한다.물론 모든 구조를 알 필요는 없다. 쓸꺼만 알면 된다. PC 하드웨어에 관심이 많은 사람이라면 한번 쯤은 RAID 라는 용어를 들어 봤을 것이다. 아님말고여러개의 HDD 를 마치 한개인거마냥 쓰는 기술이다.RAID 는 크게 소프트웨어, 하드웨어 방식 두 종류로 나눌 수 있다.말그대로 물리적인 방식으로 RAID를 구성하는 방법과OS 상에서 소프트웨어 방식으로 RAID를 구성하는 방식이 있다.두 가지 방식의 장단점이 있긴 한데 개인적으로는 두 방식 중 뭐든 상관 없다고 보인다.어차피 하드 고장나면 망가지는건 매한가지니 말이다.주의할 점은 어떤 RAID 구성 시 용량이 서로 다른 HDD를 사용할 경우 그중 용량이 가장 작은 HDD 기준의 용량으로 구성된다.1TB 와 2TB 의 두 개의 HDD가 있다면, 1TB HDD는 그대로 2TB HDD는 1TB 취급 된다. RAID 0여러개의 HDD 를 단순히 이어 용량과 속도를 추가한 n 개 곱한 만큼 상승한 성능을 얻을 수 있다.용량은 n 개 만큼 늘어나는건 맞는데 속도는 이론상만 그렇지 실제로는 드라마틱하게 늘어나지는 않는다.용량이야 당연히 추가한 개수 만큼 늘어나는건 이해 되지만,속도는 왜 빨라지냐면예 2개의 HDD 를 RAID 0 으로 구성 하였다. A, B, C, D 라는 데이터를 저장 하려 한다. 1번 HDD A, C 2번 HDD B, D 이렇게 데이터들이 각 하드에 분산 되어 저장 된다. 고로 1놈이 일할 껄 여러명이 일하니 속도가 증가.구조는 아래 이미지와 같다. 최소 2개의 HDD 부터 구성이가능하다. 구성된 HDD 중 단 한개라도 고장나면 모든 데이터 작살난다. Striping 구성이라고도 부른다. RAID 1raid 0과 달리 용량이 늘어 나지 않는 구성이다.1000 개를 묶더라도 1개의 용량 만큼만 활용 가능하다.모든 데이터가 구성된 모든 HDD에 똑같이 저장된다.n 개의 HDD 만큼의 읽기 성능이 증가한다.쓰기 성능은 좀 떨어진다고 한다.구성된 전체 HDD 중 단 한개의 용량만 사용가능하기에 경제적으로 너무 별로다.대신 모든 RAID 방식 중에 제일 안정 적이다.예 2개의 HDD 를 RAID 1 로 구성 하였다. A, B, C, D 라는 데이터를 저장 하려 한다. 1번 HDD A, B, C, D 2번 HDD A, B, C, D 동일한 데이터를 n 개 만큼의 HDD에 모두 저장하려니 쪼끔 쓰기성능이 떨어진다. 대신 데이터를 읽을 때는 구성된 HDD 모두에게서 읽어 내느라 읽기 성능은 증가한다.구조는 아래 이미지와 같다. 최소 2개의 HDD 부터 구성이가능하다. 구성된 HDD 중 단 한개라도 살아 있으면 데이터 복구가 가능하다. Mirroring 구성이라고도 부른다. RAID 5RAID 0, RAID 1의 장점을 합친 방식이다.하나라도 고장나면 작살나는 RAID 0 이지만 구성된 HDD 들의 용량을 모두 사용하는 장점제일 안전한 방식인 RAID 1 이지만 용량을 효율적으로 못쓰는 단점이 둘의 장점만 합친 버전이라고 생각 하면 될 듯 하다.대신 장점을 합치다 보니 포기해야하는 것이 있는데 구성된 n 개의 HDD 1 개 만큼의 용량은 포기해야한다.1 된 용량인 만큼 한개의 HDD 가 고장이 나더라도 데이터를 복구하는데는 문제가 없다.복구를 할 수 있는 이유는 각 HDD마다 순차적으로 복구가 가능한 Parity 정보를 추가로 담기에저장하려는 원래 데이터 크기보다 더 많은 용량을 요구하므로 1 개의 HDD를 희생 시켜야한다.대신 2개 이상의 HDD가 손상이 되면 작살나는건 매한가지다.예 1TB HDD3개로RAID 5 을 구성 하였다. 각 HDD 마다 복구 가능한 Parity 를 추가 저장 해야하느라 1개 분의 HDD를 사용해야한다. 그리하여 2TB 용량을 사용할 수 있다. 최소 3개의 HDD부터 구성이 가능하다. 기타이외도 더 많은 종류의 RAID 구성 방법이 있는데 굳이 딱히 다 알아야 할 필요는 없다 생각든다.
2024-07-29 17:15:58
Public