본문 바로가기

Tech

(8)
ChatGPT 시대, 기술 블로그는 죽지 않았다 예전에는 프로그래밍 문제나 기술 이슈를 해결하려면 구글에 검색하고, 블로그를 뒤지고, Stack Overflow를 참고하는 게 일상이었습니다.하지만 요즘은 ChatGPT 같은 AI에게 질문 하나만 던지면, 꽤 괜찮은 답을 바로 얻을 수 있습니다.심지어 예제 코드까지 덤으로 받을 수 있죠.이런 상황에서 문득 이런 생각이 들었습니다."이제 사람들이 굳이 블로그를 찾아올 일이 있을까?"그리고 저 역시 요즘은 블로그를 ‘정보 검색용’이 아니라 내가 ChatGPT나 직접 해결한 문제를 기록하는 용도로만 쓰고 있습니다.그렇다면,ChatGPT 시대에 기술 블로그를 쓴다는 건 어떤 의미가 있을까요?그리고, 다른 개발자들은 이 변화에 대해 어떻게 생각하고 있을까요?이 질문에 대해 스스로 정리해보고, 영어권 개발자 커뮤니..
OVS Kernel Datapath에서 TC Flower HW Offload 활용하기 SR-IOV VF를 VM에 직결하면서 Open vSwitch(OVS) 로 테넌트 스위칭을, TC Flower 하드웨어 오프로드(Intel E810)로 ACL을 처리하면 OVS에 도달하기 전 패킷을 NIC에서 바로 거를 수 있다. 이 글은왜 hw-offload=true 한 줄로 가능해지는지VXLAN·다중 브리지 구조에서 실제로 오프로드가 일어나는 조건OVS-DPDK와 비교해 얻거나 잃는 것을 다룬다.1. OVS Kernel Datapath + TC Flower 오프로드 흐름OpenFlow 룰 추가사용자는 평소처럼 ovs-ofctl add-flow … 로 정책을 넣는다.OVS가 커널 플로우 생성커널 모듈 openvswitch.ko 가 datapath 룰을 캐싱한다.HW-offload가 켜져 있으면 (othe..
CMake에서 소스 파일 추가·삭제가 자동으로 반영되지 않을 때, 이렇게 해결하세요! CMake 프로젝트를 관리하다 보면, 어느 날 갑자기 새로 만든 .c 파일이 빌드 목록에 안 올라가거나, 삭제한 파일을 여전히 컴파일하려고 하는 상황을 겪게 됩니다. “왜 이게 안 되지…?” 하며 cmake .를 다시 치거나 캐시를 지우는 일에 지치셨다면, 다음 단계를 따라 한 번만 설정해 보세요. 이후부터는 파일 추가·삭제가 있을 때마다 오직 make 만으로 알아서 따라와 줍니다.1. Out-of-Source 빌드를 기본으로왜 이게 중요한가요?소스 트리(프로젝트 루트) 안에 CMake 캐시와 빌드 아티팩트가 뒤섞이면, 변경 감지가 엉키기 쉽습니다.소스와 빌드는 분리할수록 깔끔하고 안전합니다.어떻게 쓰나요?터미널에서 이 두 줄만 기억하세요!cmake -S . -B build # 소스(.)와 ..
OVS와 UNIX 도메인 소켓 연결 삽질기 얼마 전, Open vSwitch(이하 OVS)를 UNIX 도메인 소켓으로 OpenFlow 컨트롤러에 붙이려다 꽤 고생을 했습니다.어디서부터 잘못된 걸까, 로그도 안 나오고, is_connected: false만 덜렁… 결국 원인을 파헤치고 나니 해결책은 의외로 단순했는데요. 저처럼 같은 문제로 헤매시는 분들을 위해 과정을 그대로 공유합니다.🚀 문제 상황자체 epoll 기반 컨트롤러를 UNIX 소켓(/var/run/openflow_controller.sock)으로 리슨OVS 브리지(br0, br1) 설정도 똑같이ovs-vsctl set-controller br0 unix:/var/run/openflow_controller.sock ovs-vsctl set-controller br1 unix:/var/r..
LVM 볼륨 미러링 개요 LVM 에도 RAID(Redundant Array of Indepent Disks) 처럼 LV(Logical Volume) 을 묶는 방법이 있다. 오늘은 RAID 1 처럼 병렬로 묶어서 복사본을 만들 수 있는 방법에 대해서 알아보자. VG(Volume Group)에서 두 개 이상의 PV(Physical Volume)을 하나의 LV로 만드는 기술이다. 1개의 PV 는 원본 역할을 하고, 나머지 PV 들은 사본 역할을 한다. 그래서 원본이나 사본이 장애가 났을 때, 데이터를 유지하고, 장애가 난 디스크만 교체하면 데이터를 잃지 않기 때문에 중요한 데이터들은 미러링을 해서 보관하는 편이다. 대신 단점으로는 사본 개수를 늘리면 안정성이 올라가지만 원본 LV의 크기*사본 수 만큼 추가로 볼륨 쓰기에 용량적인..
Linux 디스크 포맷과 마운트 이번 포스팅은 디스크 포맷과 마운트를 하는 방법에 대해서 알아본다. 이 부분은 딱히 LVM과 관련이 없지만 이전 포스트인 "LVM을 활용해 논리적 볼륨을 구성해보자" 에 이어서 진행한다. 개요 우리가 이전에 만든 LV 는 그저 블록 디바이스 이다. 블록 디바이스는 그저 뭉태기(블록)단위로 쪼개 놓은 메모리(RAM 을 말하는게 아니다)에 불과하다. 물론 그냥 이 자체로 써도 상관은 없지만 그러면 너무 비효율적이라서 우리는 파일 시스템 이라는 개념을 사용해서 쉽게 사용할 수 있게 한다. 파일 시스템은 여러가지 종류가 있지만 오늘은 LV 를 ext4 로 포맷해서 마운트 하는 방법에 대해 알아본다. 포맷 fdisk 를 사용해서 format 하는 방법도 있지만 mkfs.xxx 같은 유틸을 통해서 좀 더 쉽게 사용..
LVM을 활용해 논리적 볼륨을 구성해보자 이번 포스팅은 예제와 같이 LVM 을 활용해서 논리적 볼륨을 구성하는 방법을 알아본다. 물리적 디스크 찾기 먼저 PV 로 등록할 물리적 디스크를 찾아야한다. lvmdiskscan 을 활용하면 /dev/ 나 fdisk -l 등을 사용하지 않고 쉽게 현재 사용가능한 디스크 목록을 보여준다. $ sudo lvmdiskscan /dev/loop0 [
LVM (Logical Volume Manager) 개념 LVM 이란 LVM은 서버의 스토리지를 관리하는 방법중 하나다. 여러개의 물리적 디스크를 Pool로 관리할 수 있게 스토리지를 추상화해서 사용자는 필요에 따라서 동적으로 가상화된 논리적 볼륨을 쉽게 만들고/지우고/변경 할 수 있게 된다. 이게 LVM을 사용하는 가장 큰 장점이 된다. 또한 RAID 같은 기능도 제공해줘서 mirroring/striping 등도 쉽게 할 수 있다. 주요 요소 LVM 은 3가지의 레이어를 가지고 있다. 아래에서 각 레이어에 대해 설명한다. Physical Volume 물리적인 볼륨과 똑같다고 보면 된다. Volume Group과 Logcal Volume을 생성하기 위해서 먼저 Physical Volume 에 등록되어있어야한다. PV 로 등록은 그저 디스크에 특정 헤더를 써둬서..