Hello 👋

🧑🏻‍💻 A Developers who create code that changes the world

Infrastructure/Linux 12

[Linux] 디스크 검사

fsck 논리적 파일시스템 결함 검사기본검사fsck.ext4 /dev/sdX 클린해도 다시 검사fsck.ext4 -f /dev/sdX badblocks실제 물리적 손상 검사읽기 전용 검사fsck.ext4 /dev/sdX 읽기, 쓰기 검사 (데이터 삭제 [ -w 옵션 ] )badblocks -wsv /dev/sdX읽기, 쓰기 검사 (데이터 미삭제 [ -n 옵션 ] ) badblocks -nsv /dev/sdX Options-s: 진행상태-v: 상태출력-w: 디스크를 데이터를 삭제하면서 검사 - 상당한 시간 소요-n: 디스크 데이터 미삭제 검사 - -w옵션보다 더 많은 시간 소요

[Linux] 인터넷이 없는 서버에 Python + Poetry 프로젝트를 배포

원래의 Python + Poetry 프로젝트를 배포 방식 인터넷이 연결된 서버에 소스 코드를 배포한 뒤, `poetry install` 명령 하나로 필요한 Python 패키지들을 자동으로 설치 이 과정에서 Poetry는 `pypi.org`에서 패키지를 받아오고, `.cache/virtualenvs` 아래에 가상환경이 구성됨 하지만 서버를 현장에 설치해야하고 현장은 보안 때문에 인터넷을 연결할 수 없음 인터넷이 없는 서버에서 Python + Poetry 프로젝트 배포 가상환경 이 같은 빌드용 리눅스 PC 한 대를 준비하여 빌드를 해서 빌드한 파일을 가져가 서버에 배포 빌드한 가상환경 과 소스코드를 서버에 배포해야하는데가상환경은 /.cache/virtualenvs 경로에, 소스코드는 또 다른 경로에 있어서경..

[Linux] 배포 버전 관리 방법

프로젝트를 하면서 ‘버전 관리’는 그냥 Git commit log를 정리하는 수준이라고 생각 하지만 실제로 서비스를 운영하고, 배포 환경을 다루고, 긴급 상황에서 이전 상태로 롤백하거나 특정 시점의 설정을 되살려야 했던 경험을 겪고 버전 관리의 중요성을 느낌 개발과 배포를 효율적으로 정리하기 위해 X.Y.Z 형식으로 세자리 버전 넘버링 방식 사용 각 숫자의 의미를 다음과 같이 정함X : 서비스의 아키텍처 등이 크게 바뀌는 경우Y : 기능이 새로 추가되거나 UI/UX가 바뀌는 경우Z : 버그 수정, 오타 수정 등이 되는 경우 실제 배포 흐름 (v0.1.4) 1. 프론트엔드 빌드 - 빌드한 파일 압축 후 서버로 전송2. DB 변경 - mongo compass로 컬렉션 import3. 백엔드 배포 - 서버 ..

[Linux] 리눅스 IP 관련 이슈 및 설정 명령어

네트워크 관련 이슈curl로 파일 다운로드가 안 되는 경우curl -o vps.sh "https://samsungaaaaa.com/aaa/bbbb/ccc/ddd/fileDownload.do?vaccineType=1"curl -v "url" 명령어로 로그 확인, 망 연결 안되어있거나, 보안, 인증/세션이 필요한 url일 확률이 높음 DHCP인데 IP가 안 잡힘# /etc/sysconfig/network-scripts/ifcfg-eth0 경로의 설정 파일에서 아래 내용 들어가있는지 확인BOOTPROTO=dhcp ONBOOT=yes 인터페이스 DOWN 상태인지 확인, NetworkManager가 막고 있는지 확인, 랜선/포트/스위치 연결 확인, 방화벽 차단 확인 IP 설정 명령어IP를 수동으로 설정하고 싶을 ..

[Linux] Clonezilla 디스크 매핑 오류 이슈

Clonezilla로 디스크 복제 시 장치명이 바뀌는 문제복제 전 디스크의 /dev/sda는 SSD로, /dev/sdb는 HDD로 잡혀있었지만Clonezilla로 부팅 후에는 /dev/sda가 HDD로 /dev/sda가 SDD로 디스크 인식 순서가 바뀌어 있었음 따라서, Clonezilla로 부팅 후 디스크 복제 시, 잡혀있는 디스크들의 용량 및 모델을 반드시 체크 후 실수 하지 않아야 함(잘못하면 데이터 날아갈 수 있음) 디스크 용량 및 모델명을 lsblk로 확인lsblk -o NAME,SIZE,MODEL,MOUNTPOINT # SSD, HDD구분, 디스크 크기 구분, mount 되어있는지 구분

[Linux] Clonezilla를 사용한 리눅스 백업 및 복구

Clonezilla 부팅 디스크 USB와 백업 이미지 파일 저장 할 USB 필요2가지 USB 모두 꽂고 부팅 시 Clonezilla로 부팅 [중요] 복구 시 복구할 하드웨어는 백업한 하드웨어의 용량보다 크거나 같아야함 이미지 백업 방법> 언어 - 영어 선택 > keymap 설정 화면Don't touch keymap 선택.> Start_Clonezilla 선택> 모드 선택 - 이미지 백업 및 복구 - device-image 선택 > 백업 이미지를 저장하거나 불러올 장소 설정local_dev 선택 - HDD나 USB에 이미지 저장> local_dev 선택 시 저장할 USB 선택 알림Ctrl+C 를 눌러 다음으로 진행> 백업 파일을 저장하거나 불러올 파티션 선택> 백업 파일을 저장하거나 불러올 폴더 선택> B..

[Linux] 서버 RAID 설정

RAID 0스트라이핑 기능(분할 기록) 사용. 빠른 I/O 성능, 고장 대비 능력 XRAID 1두 개 이상의 디스크를 미러링을 통해 하나의 디스크처럼 사용RAID 2ECC(에러 검출 기능) 탑재RAID 3하나의 디스크를 에러검출을 위한 패리티 정보 저장용으로 사용하고 나머지 디스크에 데이터를 균등히 분산 저장 RAID 4RAID 3 방식과 같지만 블록 단위로 분산 저장RAID 5하나의 디스크에 패리티 정보를 저장하지 않고 분산 저장 (회전식 패리티 어레이)RAID 6하나의 패리티 정보를 두 개의 디스크에 분산 저장쓰기 능력은 저하될 수 있지만 고장 대비 능력이 매우 우수함 (두 개의 오류까지 검증 가능)RAID 0+1최소 4개 이상의 디스크를 2쌍씩 스트라이핑(RAID 0) 후 미러링(RAID 1) 방..

[Linux] Filezilla로 파일 복사 시 x권한(실행 비트)가 사라지는 이유

로컬에서 실행 권한(chmod +x)을 부여한 스크립트나 바이너리를 FileZilla로 서버에 전송하면, 업로드된 파일의 실행 비트가 빠져 -rw-r--r-- 형태로만 올라감 복사 과정에서 새로 파일을 “만들기” 때문에 umask 설정에 따라 실행 비트가 제거되는 것이 문제의 원인 SFTP/FTP 프로토콜 동작FileZilla가 사용하는 SFTP(or FTP) 전송은 새 파일 생성(create) 동작임서버 입장에서는 “새로 만든 파일”로 인식되므로, OS의 기본 umask가 적용되어 실행 비트가 제거됨서버 측 umask 설정실행 권한(x)은 원래부터 기본 생성 권한(666)에 포함되지 않으므로, 항상 빠지게 됨ex --> umask 022라면 새 파일 권한은 666-022=644 -> rw-r--r--..

[Linux] 리눅스에서 HDD 마운트 및 자동 마운트 설정

1. 리눅스에서 추가 HDD 마운트리눅스 시스템에 새로운 HDD를 추가했을 때, 디스크를 사용하려면 먼저 파티션을 생성하고 파일 시스템을 만들어야 함 1-1. 파티션 생성새로운 HDD를 확인하고 파티션을 생성하기 위해 fdisk 명령어를 사용sudo fdisk /dev/sdbfdisk가 실행되면 다음 옵션을 사용하여 새로운 파티션을 만듦n: 새 파티션 생성p: Primary 파티션 선택파티션 번호 지정 (예: 1)첫 번째 섹터와 마지막 섹터는 기본값을 사용w: 변경 사항을 저장하고 fdisk를 종료1-2. 파일 시스템 생성새로 생성된 파티션 /dev/sdb1에 파일 시스템을 생성sudo mkfs.ext4 /dev/sdb1 1-3. 마운트 지점 생성 및 마운트마운트할 디렉토리 /storage를 생성하고, ..

[Linux] 리눅스 보안 설정

SSH root 접근 보안일반 계정 생성# root로 원격 접속을 바로 하면 '무작위 대입 공격'으로 패스워드가 탈취될 경우 위험하기 때문에 일반 계정을 생성해서 사용해야함useradd 계정이름passwd 패스워드ROOT 계정의 원격 접속 제한 및 포트 변경# SSH접근을 하기 위한 포트는 기본적으로 22번. 잘 알려진 포트 번호이기 때문에 공격 시도가 많음# 따라서 포트를 별도로 설정vi /etc/ssh/sshd_configPort 1234 # 주석 해제. 원하는 포트 입력하여 그 포트로 접속가능하게PermitRootLogin no # 옵션을 no로 변경하여 root로 원격 접속하지 못하도록 설정systemctl restart sshd # 재부팅계정 패스워드 보안계정 패스워드vi /etc/..

[Linux] 자주 쓰는 리눅스 명령어 정리

방화벽(Firewalld)열린 포트 및 서비스 확인sudo firewall-cmd --get-active-zones # 활성화된 zone 확인sudo firewall-cmd --zone=public --list-ports # 특정 zone에 열린 포트sudo firewall-cmd --zone=public --list-services # 특정 zone에 등록된 서비스sudo firewall-cmd --list-all # 전체 구성 정보포트/서비스 추가 및 삭제# 포트 추가 및 삭제 sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --zone=public --remove-port=8080/tcp --perma..

[Linux] 인프라 설치 스크립트 및 오류 해결

# ------------------------------# 버전 정의 (참고용)# ------------------------------PYTHON_VERSION=3.12.8INFLUXDB_VERSION=1.11.8TELEGRAF_VERSION=1.34.1GRAFANA_VERSION=11.6.0REDIS_VERSION=7.0.11REDIS_CMD_VERSION=0.8.0FLUENTD_VERSION=1.18.0POETRY_VERSION=2.1.2MONGO_VERSION=5.0.31PG_VERSION=14KONG_VERSION=3.9.0KONG_REPO_URL="https://download.konghq.com/gateway-3.x-rhel"KONGA_VERSION=0.1.3# ===============..