1. openSSL 사이트에 들어가서 원하는 버전을 다운로드

1.1. 다운로드 경로 : https://www.openssl.org/source/

 

[ Downloads ] - /source/index.html

Downloads The master sources are maintained in our git repository, which is accessible over the network and cloned on GitHub, at https://github.com/openssl/openssl. Bugs and pull patches (issues and pull requests) should be filed on the GitHub repo. Please

www.openssl.org

 

1.2. 원하는 버전에 tar.gz 파일이 다운로드

 

 

2. 다운로드 받은 openssl-X.X.X.tar.gz 파일을 압축 해제(openssl-3.0.13)

## openssl 3.0.13 버전 다운로드
## 형식 tar -xvf openssl-X.X.X.tar.gz
$ tar xvfz openssl-3.0.13.tar.gz

 

 

3. 압축 해체 이후, openssl-X.X.X 폴더 진입(openssl-3.0.13)

## 형식 : cd openssl-X.X.X
$ cd openssl-3.0.13;

 

 

4. openssl-X.X.X 폴더로 진입하여 ls 명령어를 입력, config 실행

4.1. 사용 가능한 패키지들 업데이트 및 필수 패키지 설치

$ sudo apt-get update;
$ sudo apt-get install build-essential -y;​

 

4.2. openssl-X.X.X 폴더 내 ls 명령어 확인

$ ~/openssl-3.0.13# ls
ACKNOWLEDGEMENTS.md  demos        ms                 README-FIPS.md
apps                 doc          NEWS.md            README.md
AUTHORS.md           engines      NOTES-ANDROID.md   README-PROVIDERS.md
build.info           e_os.h       NOTES-DJGPP.md     ssl
CHANGES.md           external     NOTES-NONSTOP.md   SUPPORT.md
config               FAQ.md       NOTES-PERL.md      test
config.com           fuzz         NOTES-UNIX.md      tools
configdata.pm        HACKING.md   NOTES-VALGRIND.md  util
configdata.pm.in     include      NOTES-VMS.md       VERSION.dat
Configurations       INSTALL.md   NOTES-WINDOWS.md   VMS
Configure            LICENSE.txt  os-dep             wycheproof
CONTRIBUTING.md      Makefile     providers
crypto               Makefile.in  README-ENGINES.md

 

4.3. openssl-X.X.X 폴더 내 config 명령어 실행

$ ./config
Configuring OpenSSL version 3.0.13 for target linux-x86_64
Using os-specific seed configuration
Created configdata.pm
Running configdata.pm
Created Makefile.in
Created Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL.md file first)      ***
***                                                                ***
**********************************************************************

 

 

5. make 명령어를 사용해 소스를 컴파일

5.1. 컴파일(소스파일을 사용자가 실행 가능한 파일로 만들어 주는 과정) 진행(대략 5분 정도 소요)

$ make
...생략...

 

5.2. 컨파일 완료 후 실행 가능한 파일 생성 확인 → 완료 시 아래와 같이 출력

$ make
...생략...
make[1]: Leaving directory '/home/~/openssl-3.0.13'

 

 

6. 실행 가능한 파일 생성 후 설치 진행

$ make install
...생략...
install doc/html/man7/provider-rand.html -> /usr/local/share/doc/openssl/html/man7/provider-rand.html
install doc/html/man7/provider-signature.html -> /usr/local/share/doc/openssl/html/man7/provider-signature.html
install doc/html/man7/provider-storemgmt.html -> /usr/local/share/doc/openssl/html/man7/provider-storemgmt.html
install doc/html/man7/provider.html -> /usr/local/share/doc/openssl/html/man7/provider.html
install doc/html/man7/proxy-certificates.html -> /usr/local/share/doc/openssl/html/man7/proxy-certificates.html
install doc/html/man7/ssl.html -> /usr/local/share/doc/openssl/html/man7/ssl.html
install doc/html/man7/x509.html -> /usr/local/share/doc/openssl/html/man7/x509.html



7. 설치한 openssl 명령어 버전 확인 후 조치

7.1. openssl 명령어 버전 조회 시 에러 메시지 발생

$ openssl version
openssl: /lib/x86_64-linux-gnu/libcrypto.so.3: version `OPENSSL_3.0.9' not found (required by openssl)

 

7.2. 조치 사항

$ echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl-3-0-13.conf
$ openssl version
OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)

 

 

참고 자료 : [Linux] OpenSSL을 Ubuntu에서 설치하고 업데이트하는 방법 — hyun 공부 학습 공간 (tistory.com)

 

 

  • Ubuntu에서 /etc/resolv.conf 파일이 초기화되는 현상이 발생 → Ubuntu 기본 세팅
  • /etc/resolv.conf 초기화되지 않도록 하기 위해 조치사항

 

1. apt install 패키지 설치를 위해 /etc/resolve.conf에 nameserver 8.8.8.8 추가

$ vi /etc/resolv.conf
...생략...
nameserver 8.8.8.8

 

 

2. resolvconf 패키지 설치

$ apt install resolvconf -y

 

 

3. resolvconf 확인

  • /etc/resolvconf 디렉토리 확인
  • /run/resolveconf/resolv.conf 파일에 소프트링크
    $ ls -al /etc/resolv.conf
    lrwxrwxrwx 1 root root 29 Apr  1 02:44 /etc/resolv.conf -> ../run/resolvconf/resolv.conf​

 

4. head 파일 수정

  • resolve.conf 파일은 위에서부터 읽어들임
  • nameserver 8.8.8.8이 /etc/resolv.conf 파일의 최하단에 위치하면 다른 nameserver 설정의 IP을 먼저 DNS 서버로 사용하고, 위 DNS가 비정상일 경우에 8.8.8.8을 통해 질의함
    $ vi /etc/resolv.conf
    ...생략...
    nameserver 8.8.8.8

 

5. 서버 재부팅 후 재확인 → 정상적으로 유지 확인

$ vi /etc/resolv.conf
...생략...
nameserver 8.8.8.8

 

 

참고 자료 : [Solved][Ubuntu18.04] 서버 재부팅시 resolv.conf 초기화되는 문제 해결 :: Devader (tistory.com)

 

D state란

  • process 상태(STAT)가 D로 표시되는 process는 "uninterruptible sleep" 상태를 의미
  • 일반적으로 I/O에 대해 대기하는 것으로 다른 어떤 일도 할 수 없는 상태 → I/O operation이 완료되기 전까지는 죽은 상태
  • D 상태인 process들은 operation이 완료되어 R/S(Run/Sleep)에 돌아가기 전까지 보통 작은 시간동안(a fraction of a second)만 거기에 있음
     
  • 서버가 I/O 집약적인 작업(intensive operations)을 수행할 때 프로세스가 "D" 상태로 표시되는 것은 정상 
  • 성능이 문제가 되는 경우 디스크의 상태를 확인 필요
  • 펌웨어 및 커널 디스크 드라이버가 업데이트되었는지 확인필요

 

  • process가 D 상태에 빠지는 경우
    1. 연결될 수 없는 NFS나 다른 원격 파일시스템과 통신하려는 경우
    2. 문제가 있는 하드 드라이브에 접근하려는 경우
    3. 비정상적인 device 드라이버를 이용해 하드웨어를 사용하려고 경우

 

  • D state process는 uninterruptible sleep으로 I/O를 대기 중 상태
    • ps 명령어는 uninterruptible sleep의 process에 대해 "D"를 표시 
    • vmstat 명령어는 "blocked" 상태이거나 "waiting on I/O" process를 표시 
    • "D" state Process는 SIGKILL 또는 kill -9를 사용해도 중단할 수 없음 → 서버를 재부팅하거나 I/O가 응답할 때까지 기다려야만 지울 수 있음

 

  • Uninterruptible sleep 상태는 D state의 process로 아무것도 할 수 없는 상태
    • process는 일반적으로 D State를 오래 유지하지 않음
    • D State process가 쌓여 있으면 시스템의 일부 로직이 중단됨
    • ps 명령어에 l 옵션 추가하여 긴 포맷으로 출력 → 우선순위와 관련된 PRI와 NI값 확인 가능  
    • WCHAN 열에는 process가 sleeping인 커널 함수의 이름이 표시
      $ ps axl | awk '$10 ~ /D/'
      F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
      vass     13478  7.2  0.0   1732   624 pts/1    D+   17:36   0:00 find ./

 

process STAT(프로세스 상태)

  • Linux의 process는 running, sleeping 등 여러 가지 상태가 될 수 있음
  • Running process는 방금 CPU에서 실행 중이고, Sleeping process는 CPU가 켜지거나 다른 이벤트가 발생할 때까지 기다리는 상태를 의미
  • ps 명령어를 사용하면 시스템에서 각 process의 상태에 대한 정보를 얻을 수 있음
     
  • ps 명령어의 STAT 열에 표시
    • 큰 S는 Sleeping을 의미
    • 작은 s는 process이 session leader을 의미 → process가 새로운 session을 생성하면 해당 process는 session leader가 됨(Session Process의 PID = Session ID)
    • 큰 R은 Running을 의미
    • +는 foreground process를 의미
      $ ps a
        PID TTY      STAT   TIME COMMAND
       4975 tty1     Ss+    0:00 /sbin/mingetty tty1
       4976 tty2     Ss+    0:00 /sbin/mingetty tty2
       6202 pts/0    Ss+    0:01 -bash
      10312 pts/1    Ss     0:00 -bash
        639 pts/1    R+     0:00 ps a​

 

참고 자료 : Processes in D state - OpenVZ Virtuozzo Containers Wiki

참고 자료 : [Linux] Uninterruptible sleep 프로세스 상태 D :: TOP GUN (tistory.com)

참고 자료 : Processes in an Uninterruptible Sleep (D) State | Support | SUSE

 

1. Linux 현재 시간 확인 (현재 타임존)

$ date
Mon Mar 25 22:50:28 EDT 2024

 

2. Linux 현재 타임존 확인 → New_York 설정 확인

$ ls -al /etc/localtime
lrwxrwxrwx. 1 root root 38 Mar 21 23:42 /etc/localtime -> ../usr/share/zoneinfo/America/New_York

 

3. 타임존을 한국 표준시(KST)로 변경

$ ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

 

4. 변경된 타임존 확인

$ ls -al /etc/localtime
lrwxrwxrwx 1 root root 30 Mar 26 11:52 /etc/localtime -> /usr/share/zoneinfo/Asia/Seoul

 

5. 현재 시간 확인 (변경된 타임존)

$ date
Tue Mar 26 11:52:57 KST 2024

 

 

  • 리눅스에서 사용하는 파일 시스템 정보를 고정적으로 저장하고 있는 파일
  • 리눅스 파일 시스템 정보와 부팅 시 마운트 정보 보유
    1. 리눅스가 부팅되면서 어떤 파티션들을 어디에 자동으로 마운트하고, 외부 장치들에 대한 마운트를 어떻게 설정하는 파일
    2. 사용 권한 및 복구 등과 관련된 옵션을 어떻게 지정할 것인지에 대해 설정하는 파일

 

  • /etc/fstab 설정 예시 및 설명

 

 

1. 파일 시스템(Filesystem)이란

  • 운영체제(OS)가 파일을 시스템의 디스크에 구성하는 방식
  • 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제
  • 사용자 영역이 아닌 커널 영역에서 동작
  • 파일 시스템은 파일의 읽기, 쓰기, 삭제 등의 기능을 빠르고 원활하게 수행하기 위한 목적
  • 파일 서버 상의 자료로의 접근을 제공하는 방식과 가상의 형태로서 접근 수단만이 존재하는 방식도 파일 시스템의 범위에 포함

  • 파일 시스템의 구조

 

 

2. 파일 시스템(Filesystem) 종류

  • 리눅스 전용 디스크 기반 파일 시스템

 

 

  • 리눅스 전용 디스크 기반 파일 시스템 EXT4의 버전별 비교

 

  • 저널링 파일 시스템
    • 시스템의 비정상적인 종료 시 저널(로그)을 이용해 빠르면서 안정적으로 복구 가능
    • 데이터를 디스크에 쓰기 전에 로그에 데이터를 남겨 시스템의 비정상적인 셧다운에도 로그를 사용해 빠르고 안정적인 복구 기능을 제공하는 기술
    • 저널링 기술이 적용된 파일 시스템 : ext3, ext4, XFS, JFS, ResierFS 등

    • 저널링 파일 시스템 운영 형태
      1. 저널이라는 로그에 시스템 전 상태 저장
      2. 시스템의 비정상적인 종료 시 저널(로그)을 검사
      3. 저널(로그) 정보를 바탕으로 파일 시스템에 수정 내용을 적용

 

  • 추가 파일 시스템 설명

 

  • 네트워크 파일 시스템

 

  • 기타 지원 가능한 파일 시스템

 

 

  • Linux에서 파일 시스템은 atime, mtime, ctime 이라는 세 가지 주요 타임스탬프를 사용
  • 타임스탬프는 파일의 사용 패턴을 추적하고, 백업, 캐싱, 또는 다른 유지 관리 작업을 수행하는 데 유용
  • ls 명령의 -u 옵션을 사용하면 atime을, -c 옵션을 사용하면 ctime을 확인 가능

 

1. atime(access time)

  • 파일 마지막 접근 시간
  • 파일이 어떤 명령어나 스크립트, 프로그램에 의해 열리거나 읽혔을 시 갱신
  • vi 뿐만 아니라 cat, tail 같은 명령어에 의해 읽힌 경우도 갱신
  • 확인 명령어 : ls -lu

 

2. mtime (moditied time)

  • 파일 마지막 수정 시간
  • vi, echo 등으로 내용이 수정될 시 갱신, 보통 mtime이 변경될 시 ctime, atime 값 함께 변경
  • 확인 명령어 : ls -l
    ※ ls 명령어로 출력되는 값은 기본적으로 mtime (ls 명령어의 디폴트 시간)

 

3. ctime (inode changed time)

  • inode(파일의 속성, 권한, 파일 크기 등)가 변경된 시간
  • 상태 변경은 파일의 메타데이터(예: 파일 권한, 소유권 등)가 변경되었음을 의미
  • ctime은 mtime이 변경될 때 갱신되지만, mtime이 변경된다고 ctime이 변경되지 않을 수 있음
  • 확인 명령어 : ls -c
     
  • inode 변경 조건
    1. file permission (chmod 등)
    2. file owner (chown, chgrp 등)
    3. 하드 링크 생성 (ln)
    4. 삭제 (rm 등)

 

4. stat 명령어 → atime, mtime, ctime 확인

  • 파일이나 파일 시스템의 상태 정보 출력 명령어
  • 옵션 없이 stat 명령어 뒤 파일 입력 시 해당 파일의 상세 정보 출력
  • stat 명령어 옵션
     
  • stat 명령어 Fomat Sequence → -c 옵션을 이용해서 사용자 정의를 할 때 필요한 포맷
  • stat 명령어 테스트
    1. stat 명령 사용 시 atime, mtime, ctime 정보 동시 확인 가능
       
    2. vi로 파일 접근한 경우 atime이 9.26 → 10.6으로 갱신
       
    3. vi로 파일 수정한 경우 atime, mtime, ctime 모두 9.26 → 10.6으로 갱신

 

'OS(운영체제) > 리눅스(Linux)' 카테고리의 다른 글

/etc/fstab 파일  (0) 2024.03.16
파일 시스템(Filesystem)  (1) 2024.03.16
파티션(Parition)  (0) 2024.03.10
리눅스 개요  (0) 2024.03.10
작업 예약 스케줄러(cron) 파일  (0) 2022.07.23

1. 파티션 특징 및 종류

  • 하나의 물리적 디스크를 여러 개의 논리적인 디스크로 분할하는 것

  • 다중 파티션 장점
     • 파티션마다 독립적인 파일 시스템이 운영되기 때문에 파일 점검 시간이 줄어들어 부팅 시간 단축
     • 특정 파티션의 파일 시스템이 손상되더라도 다른 파티션에 영향을 주지 않기 때문에 높은 안정성 보장
     • 필요한 파티션만 포맷할 수 있기 때문에 백업과 업그레이드 편리

  • 파티션 종류
    종류 설명
    주 파티션 
    (Primary Partition)
    부팅이 가능한 기본 파티션
    하나의 하드디스크에 최대 4개의 주 파티션 분할 가능
    하드디스크를 4개 이상의 파티션으로 사용할 때 하나의 확장 파티션을 설정하여 확장 파티션 안에 여러 개의 논리 파티션을 분할하여 데이터 저장
    확장 파티션 
    (Extended Partition)
    주 파티션 내에 생성, 하나의 물리적 디스크에 1개만 생성
    파티션 번호는 1~4번 할당
    데이터 저장 영역을 위한 것이 아니라 논리 파티션 생성
    논리 파티션 
    (Logical Partition)
    확장 파티션 안에 생성되는 파티션
    논리 파티션은 12개 이상 생성하지 않는 것을 권고하며 5번 이후의 번호 생성
    스왑 파티션 
    (Swap Partiton)
    하드 디스크의 일부를 메모리처럼 사용하는 영역
    주 파티션 또는 논리 파티션에 생성
    프로그램 실행 시 부족한 메모리 용량을 하드디스크로 대신 사용
    리눅스 설치 시 반드시 설치되어야 하는 영역
    swap 영역의 크기는 메모리의 2배를 설정하도록 권고

 

2. 디스크와 장치명

  • 예시) /dev/sda3
    sd 하드디스크 유형 지정
      1. sd : SCSI 또는 USB 방식 디스크
      2. hd : IDE 또는 ATA 방식 디스크
    a 한 케이블에 묶인 하드디스크의 우선순위
    마스터 또는 슬레이브로 설정
       첫 번째 하드디스크 : a
       두 번째 하드디스크 : b
    3 파티션 번호
      1~4번 : primary 또는 extended
      5번부터 : logical 파티션

 

3. 파일시스템

  • 운영체제가 파일을 시스템의 디스크 파티션 상에 구성하는 방식
  • 유형파일 시스템 유형종류
    시스템 유형 종류
    리눅스 전용 파일 시스템   ext, ext2, ext3, ext4(최대 16TB 지원) 
    저널링 파일 시스템   JFS, XFS(최대 파일 시스템 크기 지원, CentOS 7 버전 기본), ReiseFS
    네트워크 파일 시스템   SMB, CIFS, NFS
    클러스터링 파일 시스템   레드햇 GFS, SGI, cXFS, IBM, GPFS, IBM SanFS 등
    시스템 파일 시스템   ISO9660, UDF
    타 운영체제 지원 파일 시스템   FAT, VFAT. FAT32, NTFS, HPFS, SysV - FAT32
       1. 포맷을 할 경우 지원하는 드라이브의 최대 크기 32GB
       2. 단점 : 개별 파일 하나당 저장할 수 있는 최대 크기 4GB

      NTFS
       1. FAT32 단점을 보완하기 위해 개발된 형식 NFTS 방식으로 포맷할 경우 드라이브 최대 크기 256TB
       2. 개별 파일 하나당 저장할 수 있는 최대 크기 16TB
       3. 단점 : 윈도우 위주 형식, 호환성이 떨어지는 형태

 

4. LVM (Logical Volume Manager)

  • 여러 개의 하드디스크를 합쳐서 사용하는 기술로 한 개의 파일 시스템을 사용
  • 작은 용량의 하드디스크 여러 개를 큰 용량의 하드디스크 한 개처럼 사용
  • 다수의 디스크를 묶어서 사용함으로써 파티션의 크기 조절 가능
    개념 설명
    물리 볼륨 여러 개의 물리적 하드디스크
    볼륨 그룹 물리 볼륨을 합쳐서 하나의 물리적 그룹을 만드는 것
    논리 볼륨 볼륨 그룹을 나눠서 다수의 논리 그룹으로 나누는 것

 

5. RAID

종류
그림
설명
RAID 0
  • 스트라이핑 저장 방식 : 연속된 데이터를 여러 디스크에 나눠서 저장
  • 최소 2개 하드디스크 필요
  • 저장과 읽기 속도가 가장 빠르지만 하나의 디스크 고장 시 모든 데이터 손실
RAID 1
  • 미러링 : 하나의 디스크에 저장하면 다른 디스크에 동일한 내용이 백업되어 저장
  • 데이터 저장 시 두배 용량 필요
  • 결함 허용을 제공하지만 공간 효율성은 떨어지며, 주요한 데이터 저장 시 적합
RAID 2

  • 스트라이핑 저장 방식
  • 기록용 디스크와 데이터 복구용 디스크를 별도로 제공하며, 디스크의 사용 효율성이 낮은 형태
  • 오류 제어 기능이 없는 디스크를 위해 해밍코드 사용
  • 모든 SCSI 디스크에 ECC(에러 검출 기능)를 탑재하고 있기 때문에 실제 사용되지 않음
RAID 3
  • 스트라이핑 저장 방식
  • 오류 검출을 위해 패리티 방식 이용
  • 패리티 정보를 저장하기 위해 전용 디스크를 사용, 최소 3개 이상의 하드디스크 필요
  • 데이터 복구는 패리티 저장 디스크에 기록된 정보의 XOR를 계산하여 수행
  • 대형 레코드가 사용되는 단일 사용자 시스템에 적합
RAID 4
  • RAID 3과 유사한 방식 : 2개 이상의 데이터 디스크와 전용 패리티 디스크 사용
  • RAID 3은 Byte 단위로 데이터를 저장하는 반면 RAID 4는 Block 단위로 저장
RAID 5

  • 디스크마다 패리티 정보를 갖고 있어 패리티 디스크의 병목 현상을 감소
  • 사용 빈도가 높은 레벨이며, 최소 3개 디스크로 구성
  • 1개의 디스크 장애 시 복구가 가능하며, 2개 이상의 디스크 장애 시 복구 불가능
RAID 6
  • RAID 5를 확장한 레벨이며, 최소 4개의 디스크로 구성
  • 제2패리티를 두는 듀얼 패리티를 사용함으로써 안정성을 향상
  • 2개의 디스크 장애 시 복구가 가능하며, 3개 이상 디스크 장애 시 복구 불가능
RAID 0+1
  • RAID 0(스트라이핑 방식)과 RAID 1(미러링)을 조합
  • 디스크 2개씩 RAID 0으로 구성 후 RAID0으로 구성된 하드디스크를 RAID1로 구성
  • 미러링 전 스트라이핑을 진행하며, 속도는 빠르나 데이터 복구 시 시간 소요
RAID 1+0
  • RAID 0+1의 반대 구성
  • 디스크 2개씩 RAID 1로 구성 후 RAID 1로 구성된 하드디스크들을 RAID0으로 구성
  • 미러링 후 스트라이핑을 진행하여 손실된 데이터만 빠른 복원이 가능하므로 RAID 0+1 보다 운영상 유리

 

 

6. 파티션 분할

  • fdisk : 파티션 테이블을 관리하는 명령어로 리눅스의 디스크 파티션을 생성, 수정, 삭제
    명령어 설명
    a 부팅 파티션을 지정
    l 파티션 종류를 선택할 때 리눅스에서 지원하는 파티션 목록
    n 새로운 파티션을 추가
    t 파티션 종류를 변경
    w 파티션 정보를 저장
    p 파티션 정보를 확인
    q 작업 종료

 

 

+ Recent posts