미새문지

크래프톤 정글 week09, day71 - Journaling(저널링), Protection(보호) & Isolation(격리), 시스템 콜 순항 중 본문

크래프톤 정글/TIL

크래프톤 정글 week09, day71 - Journaling(저널링), Protection(보호) & Isolation(격리), 시스템 콜 순항 중

문미새 2024. 3. 19. 01:07
728x90

Journaling(저널링)

  • 파일 시스템이나 데이터베이스에서 데이터의 변경 사항을 안전하게 관리하기 위해 사용하는 Crash Consistent에 대한 기술 중 하나
  • 이 접근 방식에서는 데이터를 실제로 수정하기 전에, 모든 변경 사항을 ‘저널’이라고 하는 별도의 공간에 기록하며, 이 정보를 이용해 시스템이 충돌한 후에도 데이터를 안전하게 복구할 수 있다.

 

저널링의 주요 구성 요소

  • 저널(Journal)
    • 변경 사항이나 트랜잭션의 로그가 기록되는 공간
    • 데이터를 수정하기 전에 예비 기록을 하는 곳으로, 시스템 충돌 시 복구의 근거가 된다.
  • 메타데이터(Metadata)
    • 파일의 이름, 크기, 위치 등 파일에 대한 정보를 수정할 때, 이 메타데이터 변경 사항도 저널에 기록된다.
  • 데이터(Data)
    • 사용자 또는 응용 프로그램에 의해 생성되고 수정되는 실제 내용이며, 저널링을 사용하는 시스템에서는 데이터 변경 전에 해당 변경 사항을 저널에 기록한다.

 

저널링의 작동 과정

  • 변경 사항 기록
    • 파일 시스템이나 데이터베이스에 수정이 필요한 경우, 해당 변경 사항을 먼저 저널에 기록한다.
  • 변경 사항 적용
    • 저널에 안전하게 기록된 후, 실제 데이터 또는 메타데이터에 변경 사항을 적용한다.
  • 저널 업데이트
    • 변경 사항이 성공적으로 적용되면, 저널에 이를 반영해 업데이트 하는데, 이는 해당 변경 사항이 완료되었음을 의미한다.

 

저널링의 장점

  • 데이터 무결성 보장
    • 시스템 충돌이나 갑작스러운 전원 손실과 같은 예외 상황에서도 데이터의 일관성과 무결성을 유지할 수 있다.
  • 복구 시간 단축
    • 예외 상황 발생 시, 저널에 기록된 최근 변경 사항을 참조해 빠르게 시스템을 복구할 수 있다.
  • 성능 향상
    • 일부 저널링 시스템에서는 변경 사항을 효율적으로 관리하며, 성능 저하를 최소화하는 방법으로 저널링을 구현한다.

 

저널링 모드

Linux의 Ext3 파일 시스템은 다음 세 가지 저널링 모드를 지원한다.

  • Journal
    • 메타데이터와 데이터 모두를 저널에 기록한다.
    • 가장 안전하지만 성능이 제일 느리다.
  • Ordered
    • 기본 모드로, 메타데이터만 저널에 기록하고 데이터는 일정 순서대로 디스크에 쓰인다.
  • Writeback
    • 메타데이터에 대한 변경만 로그를 남긴다.
    • 데이터와 메타데이터간의 쓰기 순서는 보장되지 않아 성능이 가장 빠르다.

Protection(보호)

  • 시스템 내의 자원들(하드웨어, 소프트웨어, 데이터 등)이 무단 접근, 변경, 파괴로부터 안전하게 보호될 수 있도록 하는 메커니즘을 의미한다.
  • 시스템 보호의 주요 목적은 사용자나 프로세스가 시스템 자원을 안정적이고 정당하게 사용하도록 보장하는 것이다.

 

주요 보호 메커니즘

  • 인증(Authentication)
    • 사용자나 프로세스의 신원을 확인하는 과정이며, 비밀번호, 생체 인식 등 다양한 방법이 있다.
  • 권한 부여(Authorization)
    • 인증된 사용자나 프로세스가 특정 자원에 접근할 수 있는 권한을 부여하는 과정이다.
    • 예를 들어, 파일 시스템에서 특정 파일에 대한 읽기/쓰기 권한을 설정할 수 있다.
  • 접근 제어(Access Control)
    • 시스템 자원에 대한 접근을 제어하는 정책과 절차이다.
    • ACL(Access Control List)이나 RBAC(Role-Based Access Control) 같은 메커니즘이 사용된다.

 

Isolation(격리)

  • 시스템 내의 프로세스나 애플리케이션이 서로 독립적으로 실행될 수 있도록 보장하는 메커니즘이다.
  • 격리는 서로 다른 프로세스 간의 부정적인 상호 작용을 방지하고, 시스템의 안정성과 보안을 향상시키는데 중요하다.

 

주요 격리 기술

  • 프로세스 격리
    • 운영체제는 각 프로세스에 대해 독립된 메모리 공간을 할당하여 실행한다.
    • 이를 통해 한 프로세스가 다른 프로세스의 메모리 영역에 접근하는 것을 방지한다.
  • 가상화(Virtualization)
    • 하나의 물리적 시스템 위에서 여러 개의 가상 시스템을 생성하고 실행할 수 있다.
    • 각 가상 시스템은 서로 독립적으로 작동하며, 시스템 자원을 격리하여 사용한다.
  • 컨테이너(Containerization)
    • 애플리케이션을 실행하는 데 필요한 코드와 종속성을 함께 묶어, 다른 애플리케이션과 격리된 환경에서 실행할 수 있도록 한다.
    • Docker가 이러한 컨테이너 기술을 대표적으로 사용하는 예시이다.

ProtectionIsolation은 모두 시스템의 안정성을 유지하고, 사용자 및 애플리케이션 간의 충돌을 방지하기 위한 필수적인 요소이다. 이러한 메커니즘을 통해 시스템은 안정적으로 운영될 수 있으며, 데이터와 자원의 보안을 강화할 수 있다.


이론 마스터 강민님이 치명적인 에러를 해결해 준 후 코드를 이해해가면서 순항 중이다. 비록 메인 시스템콜인 fork와 exec , write가 남았지만 진전도 있고 막혔던 부분이 뚫렸기 때문에 의욕이 생겨 열심히 하고 있다.

내일은 퀴즈가 있어 강민님한테 키워드 질문을 받으며 야무지게 혼났다.

728x90