오랜만에 다시 쓰는 글이 이 글이 될 줄은 몰랐네요..

현재 Windows 11을 사용하는 중이고, 하나의 1TB짜리 SSD를 C드라이브와 D드라이브로 분할해 사용하고 있는 중입니다.

그러나 언제부터 C드라이브의 용량이 거의 꽉 차다시피 차게되고, 더이상 프로그램을 C드라이브에 설치하는 것이 불가능해져 이후부터 설치하게 되는 프로그램들은 D드라이브에 설치했습니다.. 그런데! 분명 C드라이브에 어떠한 파일을 추가한것도 아닌데 자꾸 C드라이브 용량이 없다는 알림이 뜨는 것입니다,, 아래는 당시 C드라이브 상황입니다.. (그나마 원래 100MB 남았다고 하는 상황에서 안쓰는 프로그램들 최대한 삭제해서 만든 용량이 저정도...)

하지만 이 용량도 다시 금방 차올라 결국 D 드라이브 용량 중 140GB를 C드라이브에 연결하는 선택을 하게 됩니다.... 이 선택으로 얼마간은 버틸 수 있겠거니 생각하고 컴퓨터를 다시시작 하는데..?

왠걸 140GB 이상은 남아있어야 할 C드라이브가 49GB밖에 남아있지 않는 것입니다. 아무리 생각해도 이건 내가 설치한 프로그램의 잘못이 아니다 라는 생각에 원인을 찾기 시작합니다. 당시 아래 블로그를 참고했고, 여기서 시도한 방법들은 거의 다 해본 것 같습니다.

 

C 드라이브 용량 부족!!! (잡았다, 요놈! 범인은...)

얼마 전까지는 『 갤럭시 S8 배터리 교체 』가 블로그를 먹여 살렸다면, 최근에는 이 글이 블로그를 먹여 살리고 있습니다. 블로그 방문자의 절반 이상이 이 글을 보러 오고 계시지요. 하지만 1년

pohangsteelers.tistory.com

구라 제거기, Wise머시기 프로그램도 사용해봤지만 5GB 정도의 용량만 확보할 수 있었고, 제가 찾던 140기가 이상의 용량은 얻지 못했습니다. 결국 직접 문제의 파일을 찾고자 위 블로그 글 중 TreeSize 라는 프로그램을 설치하였고 그 원인을 찾을 수 있었습니다.

 

TreeSize Free | JAM Software

We know, we know. It annoys us, too. So let's do it quickly: We use only a few cookies to ensure the functioning of our website. Besides that, we need a few cookies for our search engine ads. We don't have any other cookies, we don't collect personalized d

www.jam-software.com

TreeSize 프로그램을 실행하면 아래와 같은 화면이 나오는데, 이 리스트 중 C드라이브를 가장 많이 잡아먹고 있던 파일이 무엇인가??? 찾아보니 pagefile.sys가 혼자서 무려 260GB 가량을 차지하고 있었던 것이었습니다ㅡㅡ 이 파일은 가상메모리 페이징에 사용되는 파일인데, 현재 시스템에서 이 파일의 사이즈를 제한해두지 않아 프로그램 사용 시 마다 계속 페이징된 부분들이 쌓였던 것 같습니다..

실제로 [시스템 속성] - [고급] - [성능 설정] - [고급] 탭에 들어가보면 가상 메모리 파트가 나오는데 여기서 바로 그 문제의 현상을 목격할 수 있었습니다. 262GB.....한숨 나오네요...

손 좀 봐주기 위해 [변경] 에 들어가보니 페이징 파일의 크기가 권장 크기에 비해 말도 안되게 커져있는 것을 확인할 수 있었습니다.

이렇게 만든 원인은 "모든 드라이브에 대한 페이징 파일 크기 자동 관리"  체크 박스가 해제되어 있는 상태였는데.. 이를 체크해두는게 권장사항이라고 합니다.. 별도로 페이징 파일 크기를 커스텀 해주고 싶을 경우 이 체크박스를 풀고 원하는 크기를 설정해주면 됩니다. 이러한 부분은 (https://hkebi.tistory.com/1321) 블로그를 참고했습니다.

이렇게 체크박스를 체크하고 컴퓨터를 재시작하면 아래와 같이 정상으로 보이는 상태의 볼륨 사용량을 볼 수 있습니다....

대게는 저 체크박스가 활성화되어있을텐데 저의 경우 어쩌다 해제가 되었던건지 모르겠네요,, 뭔가 툴 만지다가 건드렸나 싶은데 추후에 다시 이러한 상황이 목격되면 이 부분도 조사해봐야겠습니다.. 

'Etc' 카테고리의 다른 글

뉴스레터 발행 후기  (0) 2022.03.07
[MAC] terminal - user/group 관련 작업 정리  (0) 2021.09.09
[MAC] 사용 중인 프로세스 확인, 종료  (0) 2021.08.28
[Ubuntu] apt-get update 오류  (0) 2021.06.01

Tracert/Traceroute

목적지까지의 경로를 추적하기 위해 사용하는 프로그램

  • Tracert: Windows용 도구
  • Traceroute: Unix, Linux, MacOS 등의 Unix 기반 운영체제용 도구

 

TTL(Time-to-Live)

  • Tracert와 Traceroute에 사용되는 핵심 개념
  • 해당 패킷이 몇 번의 홉(hop) 동안 유효한지 명시하는 ICMP 헤더 필드
  • TTL값은 한 라우터를 거칠 때마다 1 씩 감소한다.
  • 목적지에 도달하기 전에 TTL값이 0이 될 경우 해당 패킷 송신자에게 “시간 초과” ICMP 메시지를 보내고 해당 패킷을 폐기한다.

 

TTL을 이용한 Tracert/Traceroute 동작 원리

  1. <목적지 설정> 명령어 실행 시 목적지 IP 주소나 도메인 이름을 지정한다.
  2. <초기 TTL값 설정> 프로그램 시작 시 첫 패킷의 초기 TTL값을 1로 설정한다.
  3. <첫번째 패킷 전송> 첫번째 패킷을 전송한다. 이 패킷은 첫번째 라우터에 도달하고 TTL값이 1 감소한다.
  4. 첫번째 라우터에서 TTL값이 0이 된 패킷은 폐기되고 송신자에게 시간 초과 ICMP 메시지를 전송한다.
  5. 송신자는 3번에서 받은 ICMP 메시지를 통해 첫번째 라우터의 IP 주소와 응답 시간을 기록한다.
  6. <두번째 패킷 전송> TTL값이 2로 설정된 두번째 패킷을 전송한다. TTL값이 2가 된 패킷은 두번째 라우터에서 TTL값이 0이 되어 폐기되고, 송신자에게 시간 초과 ICMP 메시지를 전송한다.
  7. 송신자는 6번에서 받은 ICMP 메시지를 통해 두번째 라우터의 IP 주소와 응답 시간을 기록한다.
  8. TTL값을 1 씩 증가시키며 패킷을 목적지로 전송하는 과정을 반복한다. 패킷이 목적지에 도달하거나, 사용자가 설정한 최대 TTL값에 도달하면 반복을 종료한다.

 

Tracert와 Traceroute의 차이점

  Tracert Traceroute
운영체제 Windows Unix, Linux, MacOS
사용 프로토콜 ICMP 송신 : UDP, 수신: ICMP
기능 8가지 옵션 제공(아래 사진 참고) 20가지 이상의 옵션 제공(아래 사진 참고)
  • Tracert 메뉴얼

Windows 11

  • Traceroute 메뉴얼

Ubuntu 18.06

 

Tracert/Traceroute 사용 목적

  • 목적지까지의 경로 추적 가능
  • 네트워크 상 각 라우터의 지연 시간 파악 후 네트워크 경로 문제 식별 가능

 

Tracert/Traceroute 실습

  • Tracert 실습
    • OS: Windows 11
    • Host IP address: 192.168.35.167
    • Destination IP address: 142.250.207.110

 

<첫번째 패킷(TTL=1) 전송>

<두번째 패킷(TTL=2) 전송>

→ 각 라우터에 대해 총 3번의 패킷을 전송하고, 각각의 소요시간을 측정한다.

 

  • Traceroute 실습
    • OS: macOS
    • Host IP address: 192.168.0.50
    • Destination IP address: 74.125.203.102

 

<첫번째 패킷(TTL=1) 전송>

<두번째 패킷(TTL=2) 전송>

→ 각 라우터에 대해 총 3번의 패킷을 전송하고, 각각의 소요시간을 측정한다.
⇒ tracert와는 다르게 송신할때와 수신할때 사용하는 프로토콜이 다르다.

'Network' 카테고리의 다른 글

콘텐츠 분배 네트워크(CDN)  (0) 2022.03.28
DNS(Domain Name System)  (0) 2022.03.28
Network 개요  (0) 2022.03.01

 

간단한 도구 개발 시 Python을 종종 사용하는데, 이때 자주 사용하는 함수인 sort는 어떤 알고리즘으로 정렬을 하는지 궁금해졌다. 그래서 마침 진행중이던 알고리즘 스터디에서 이를 발표하고자 자료를 만들었다.

본 포스팅은 시간이 지나 잊어버릴지도 모를 스스로를 위해 메모용으로 업로드하는 글이다.

새벽에 급하게 만든 자료라 인터넷 상의 자료를 많이 가져다가 사용하였으며, 각각의 출처는 이미지 하단에 기록해두었다.

 

 

 

 

0204_.pdf

 

drive.google.com

 

참고 자료

https://d2.naver.com/helloworld/0315536

 

정렬 - 삽입정렬

삽입정렬 (Insertion Sort) 삽입정렬은 손안의 카드를 정렬하는 방법과 유사합니다. 즉, 새로운 카드를 기존의 정렬된 카드 사이의 올바른 자리를 찾아 삽입함으로써 정렬이 유지되게 합니다. - 새로

wonjayk.tistory.com

 

[알고리즘] 병합 정렬 (Merge Sort) 기본 개념과 코드 구현, 설명

병합정렬 (Merge Sort) 기본 개념병합 정렬을 알기 전에 우선 Devide and Conquer에 관한 개념을 알고 있어야 합니다. 아니, 몰라도 됩니다. 이제부터 배울꺼거든요. 간단히 말해 어떤 문제를 우선 작은

reakwon.tistory.com

 

 

2022년 11월 3일, 삼성동 코엑스에서 진행된 AWS Industry Week에 다녀왔다.

클라우드에 관심이 생긴 이후 오프라인으로 진행되는 큰 행사에 참석해본 것이 처음이었기에 설레는 마음으로 다녀왔던 것 같다. 낮까지 학교 수업이 있었기 때문에 앞 타임 강연에는 참석하지 못했지만, 중간 휴식시간쯤에는 도착해서 파트너 부스랑 그 이후 진행되었던 강연들은 볼 수 있었다.

 

AWS Industry Week

리테일 및 이커머스, 미디어 및 엔터테인먼트, 제조, 여행 및 관광, 금융 및 핀테크 및 게임 산업 분야에 계신 모든 분들이 참여 대상입니다. 클라우드에 대한 전문가가 아니어도 각 산업 분야 별

aws.amazon.com

AWS Industry Week는 각 산업 분야별로 AWS를 이용하고 있는 기업의 담당자에게 기업 내 클라우드 적용 사례를 직접 전해 들을 수 있었던 행사였다.
클라우드에 대한 개념을 공부하며 늘 궁금해했던 부분이 이러한 개념 및 서비스들을 많은 양의 트래픽이 오가는 실제 서비스에 어떤 식으로 적용할 수 있을지에 대한 부분이었는데, 이에 대해 들을 수 있어 재밌었다. 또한 최근 기업에서의 클라우스 사용 동향에 대해서도 들을 수 있어서 유익했던 것 같다.

뿐만 아니라 그밖에 AWS 솔루션 및 파트너 부스들의 클라우드 솔루션들을 구경하면서 요즘 시장에서 어떠한 부분이 필요하고 중요하게 여겨지는지에 대해 알 수 있었다.

진행되었던 강연 목록은 아래와 같다. 각 산업분야별로 서로 다른 룸에서 강연이 진행되었기 때문에 중간에 자리를 옮길 것이 아니라면 사실상 한두 개 정도의 분야를 골라서 들어야 했다. 나는 개인적으로 현대화나 인프라 구축 쪽으로 관심이 있었기 때문에 금융 및 핀테크 분야를 선택했었다. 레벨 200으로 표시된 강연들 뿐이었지만, 생각보다 공부했던 개념들이 많이 들렸고 어려웠다기보다는 적용사례에 대해서 흥미롭게 잘 보고 왔던 것 같다.

 


이후 내용은 강연 중 메모했던 것을 기록용으로 다시 정리해 적어둔 것이다.

 

<1> 모더나이제이션(현대화) 여정

모더나이제이션 접근방법

  1. (Relocation/Rehost) : 그냥 단순 마이그레이션. 통째로 올리는 것
  2. 경량화된 아키텍처 (Replatform) : 서비스 코드는 건드리지 않은 채 컨테이너화 시켜 AWS 서비스에 올리는 것 (ECS, Fargate, EKS)
  3. 최적화 아키텍처 (Refactor/Rewrite) : 비용, 속도 면에서 효율을 높이기 위해 서비스 코드 부분까지 건드리는 것 (3rd party -> open source, 높은 성능 및 확장성을 위해 서비스 특성에 따른 DB 선택 등)
  • 손쉬운 모더나이제이션을 위해 관리형 서비스나 서버리스를 사용할 수 있다.
  • 기술적인 부분에서 여력이 된다면 마이크로서비스(MSA)로 설계하는 것이 좋다. (비즈니스 경량화를 위해)

 

기업에서 실제로 모더나이제이션 시 고려한 부분

  1. 서비스 특성에 따라 서로 다른 아키텍처로 구성
    • 모놀리식이 아닌 MSA로 설계
    • 컨테이너 활용, k8s 기반 MSA 적용, Framework 변경
  2. 자원 최적화
    • EFS, EC2, DynamoDB 등에서 버스트 모드로 동작하는 서비스에 대한 이해 필요
    • 적용 사례 : EFS의 버스트크레딧 모드 사용 중 Lambda를 이용하여 사용량 증가 시 Provisioned 모드로 전환
  3. 성능 회적화
    • AWS Cloudfront 도입
  4. 비용 최적화
    • 탄력적 리소스 운영 : 리소스 사용량 조정/최소화
      • 트래픽/리소스 사용량이 적은 시간대의 운영대수 축소
      • 일시적 트래픽 증가에 대해 Auto-Scaling 활용
    • 아키텍처 개선
      • 로그 적재 방식 변경(RDB -> DDB -> S3)
      • matlab 통계 정보를 이용하여 리소스 사이즈 조정, 비용이 큰 리소스 대체
      • SQL 쿼리 튜닝, 배치 시간 단축
    • 약정기간 할인 : RI, SP 할인
      • 필수 리소스 약정 적용
      • 신규 리소스 적용 및 갱신 재적용

 

모더나이제이션 효과

  1. 온프레미스의 유량제어 시스템 제거 가능
  2. MSA로 독립성을 보장하여 부담 없는 배포 가능
  3. 속도 개선

 

<2> 금융 클라우드, 네트워크 인프라 구축

금융 분야 클라우드 컴퓨팅 도입 고려 사항

  1. 전자금융감독규정
  2. 망분리
  3. 보안 및 컴플라이언스
  4. 금융감독원 클라우드 이용 보고
  5. CSP 안정성 평가

 

금융 클라우드, 네트워크 인프라 구축 시 고려 사항

  1. 망분리 및 접근 통제
    • Amazon VPC
      • AWS 클라우드에서 다른 가상의 네트워크와 논리적 분리 구성
      • 목적에 맞는 별도의 VPC 환경 구축
    • Subnet & Route table
      • Network Segmentation을 위한 Subnet, Route Table 설정
    • Network access control list (NACL)
      • 서브넷 외부와 내부 트래픽을 제어하기 위한 방화벽 역할
    • Firewall
      • 네트워크 경계 보안을 위한 Network Firewall, IDS, IPS 사용
  2. 외부 인터페이스 연계
    • AWS Direct Connect : AWS로 전용 네트워크 연결
    • AWS Site-to-Site VPN : VPC와 온프레미스를 인터넷을 통한 IPSEC VPN으로 연결
    • AWS PrivateLink : 외부에 노출되지 않는 Private 연결 제공

 

인프라 구축 사례

1. 개발/운영 환경의 분리

  • 선택지 1. Subnet Isolation
    • 장점 : 빠르고 쉽게 구현 가능
    • 단점 : 보안 요건을 충족하기 위해 복잡한 NACL 및 Security Group 적용 필요 (완전 분리는 아니기 때문에 실수로라도 두 환경 간 통신이 이루어질 가능성이 여전히 있다..)
  • 선택지 2. VPC Isolation
    • 장점 : 복잡한 NACL 및 Security Group 없이 보안 요건 충족 가능
    • 단점 : 개발/운영 환경이 하나의 계정(account)에 존재하기 때문에 실수로라도 보안적인 리스크 발생 가능
  • 선택지 3. Account Isolation
    • 개발/운영 환경이 아예 다른 계정에서 구성되어 있기 때문에 보안 리스크 최소화 가능
    • 복잡하고 IAM Assuming 개념에 대한 이해 필요
선택지 3 채택! Account 분리
구성 : User -> Security account -> dev account / prod account

Security account : 로그인을 위한 계정
 IAM 사용자 외에 다른 어떠한 리소스도 없다. 따라서 IAM 사용자 계정이 탈취되어도 할 수 있는 게 없다.

dev, prod account : 개발, 운영 환경을 위한 계정
IAM 사용자로 로그인할 수 없다. security의 IAM 사용자로 역할 전환을 하던지, 루트 사용자를 이용하여 로그인하는 방법으로만 로그인을 할 수 있다.

 

2. 서버 접근

  • 선택지 1. SSH
    • 장점 : 사용이 편하고 익숙한 도구
    • 단점 : SSH 접근을 위한 키 관리 필요
  • 선택지 2. AWS Session Manager
    • 장점 : AWS에서 제공하며, Bastion 없이 사설 IP 인스턴스에 접근 가능
    • 단점 : X
  • 선택지 3. AWS Partner Solution
    • 장점 : 보안적으로 더 많은 기능 제공
    • 단점 : 도구 자체에 대한 설치 및 운영 리소스 필요
선택지 3 채택! AWS Partner Solution
이유 : Teleport의 session recording 기능 (session 사용하는 모습 녹화.. 오타 치는 거까지 전부 녹화됨)

단점 보안책 : Teleport Client 설치 자동화 (AWS Lambda와 SSH Run Command 이용)

 

3. 모니터링 시스템 구성

  • 이상 징후 감지 : CloudWatch (+ Terraform)
  • 필요 정보 전파 : Chatbot
구성 : CloudWatch -> SNS -> Chatbot -> Slack

 

4. 외부와의 연동

  • 선택지 1. Site-to-Site VPN
    • 사용 사례 : 상대방의 환경이 On-Premise 혹은 Cloud 이면서 VPN 사용이 가능할 경우
    • VPN 벤더별로 configuration을 제공하기 때문에 이 configuration만 전달하면 된다. (간편함)
  • 선택지 2. Direct Connect
    • 사용 사례 : 상대방의 환경이 On-Premise 이면서 VPN 사용이 불가능할 경우
    • 제 3자의 IDC를 거쳐서 전달하는 방식.
      • Direct Connect를 지원하는 업체와 계약을 해야만 한다. (현재 한국 내 지원 업체 : KINX, LG U+)
  • 선택지 3. Private Link
    • 사용 사례 : 상대방의 환경이 AWS 일 경우
    • NLB(network loadbalancer)만 사용 가능
    • 초기 구축 시 기술적으로 조금 더 어렵고, NLB와 Route53에 대한 추가적인 설정 필요
    • 장점!! 통신이 필요한 구간만 연결되도록 할 수 있기 때문에 안전한 네트워크 구성 가능 (private IP로 통신 가능)
      • 그냥 peering을 할 경우 두 대상 간 통신이 완전 open 되기 때문에 이에 비해 안전하다.
선택지 3 채택! Private Link
앱 서비스와 페이 서비스 간에 필요한 경우에만 연결되도록 하고 이외에는 통신할 수 없도록 할 수 있다.

 

향후...

  • TGW 도입 : 네트워크 연동이 필요한 부분에 Hub & Spoke 구조로 개선
  • firewall 등을 이용하여 아웃바운드 접근제어 강화
  • 비용 최적화 : Savings Plan, Reserved Instance, Graviton, S3 Storage Class

 

 

Hub & Spoke System

Hub and Spoke(H&S) system은 외곽지점을 hub로 구성하여 이를 중심으로 일련의 Spoke로서 경로를...

blog.naver.com

 

directory 정보 관련 structure

struct dirent {
	/* Always zero */
	long d_ino;

	/* Position of next file in a directory stream */
	long d_off;

	/* Structure size */
	unsigned short d_reclen;

	/* Length of name without \0 */
	size_t d_namlen;

	/* File type */
	int d_type;

	/* File name */
	char d_name[PATH_MAX+1];
};
typedef struct dirent dirent;
struct DIR {
	struct dirent ent;
	struct _WDIR *wdirp;
};
typedef struct DIR DIR;

 

주로 사용되는 systemcall prototype

static DIR *opendir(const char *dirname);

static struct dirent *readdir(DIR *dirp);

static int closedir(DIR *dirp);

static void rewinddir(DIR *dirp);
//directory라는 파일을 읽기 위해 사용하는 파일 포인터를 맨 앞으로 이동

 

 

 

GitHub - tronkko/dirent: C/C++ library for retrieving information on files and directories

C/C++ library for retrieving information on files and directories - GitHub - tronkko/dirent: C/C++ library for retrieving information on files and directories

github.com

 

 

Google에서 진행하는 Cloud Study Jam을 하게 되었다.

네트워크 공부를 하면서 클라우드를 접해보고 싶었는데 좋은 기회라고 생각되어 동아리원들을 모아 신청하였다.

배우는 내용은 Google Cloud Platform 사용법과 Kubernetes 이론적 개념, 그리고 Google Kubernetes Engine 정도인데

이론은 강의 형태로 제공하며, 강의에서 배운 내용을 GCP에서 실습해볼 수 있는 환경도 제공한다.

스터디 기간이 딱 개강하기 전까지어서 남은 방학동안 해보려고 한다.

아래는 공부하면서 정리해둔 내용들이다.기록용으로 올리려고 하고 생각해보니 스터디잼에 참여하지 않으면 유료로 제공되는 강의인 것으로 기억해서 다시 지운다..

대신 수강 완료 후 얻은 수료증 업로드로 대체한다.

 

+ Recent posts