no image
[Linux 명령어] 명령어를 간단하게! (2) alias 영구 적용하기
Alias를 사용하는 이유 이전에 다루었던 alias를 영구 적용하는 방법은 잘못된 방법으로 되어 있어 이렇게 다시 준비하게 되었습니다. 우선 alias를 적용하는 이유는 긴 명령어를 매번 입력하기에는 업무 효율성이 떨어집니다. 특히 그런 명령어를 자주 사용한다면 더더욱 그렇겠죠. 이를 해결하기 위한 방법으로는 명령어를 자동화하는 yaml 파일을 만들거나, 명령어에 별칭을 적용하는 방법이 있습니다. 이외에도 여러 방법이 사용되는 것으로 알고 있지만, 이번 포스팅에는 제목에 맞게 alias를 영구 적용해보겠습니다. 다음 명령어는 농담식으로 만들어졌거나 실제로는 거의 쓰이지 않지만, 예시로 사용하기에 적절하다는 생각으로 가져와보았습니다. pneumonoultramicroscopicsilicovolcanoco..
2023.04.01
[Linux 명령어] systemd에서 target 활용 및 변경 (systemctl)
목차 systemd 주요 기능 Systemd target 선택 systemd에서 target을 활용하기 위한 systemctl 명령어 활용 systemd systemd는 전통적인 System V init 시스템(SysVinit)을 대체하기 위해 많은 Linux 배포판에서 사용되는 초기화 시스템 및 시스템 관리자다. Lennart Poettering과 Kay Sievers가 개발했으며 2010년에 처음 출시되었다. systemd는 현대적인 디자인, 효율적인 프로세스 관리 및 다양한 Linux 구성 요소와의 통합으로 인기를 얻었다. systemd는 시작하는 동안 사용자 공간을 부트스트래핑하고, 시스템 서비스를 관리하고, 시스템 수명 주기 동안 일관된 상태를 유지하는 역할을 한다. 주요 기능 병렬화 syste..
2023.03.25
[Linux 명령어] swap이란? (+ swap 관련 명령어)
SWAP 스왑은 Linux 기반 운영 체제에서 가상 메모리로 작동하는 저장 장치(예: HHD, SSD, 가상 저장 장치)의 전용 공간이다. 시스템의 사용 가능한 메모리가 부족할 때 물리적 RAM(Random Access Memory)을 보충하는 데 사용된다. 스왑 공간을 통해 운영 체제는 덜 자주 사용되는 데이터를 RAM에서 스왑 영역으로 이동하여 더 중요하거나 자주 액세스하는 데이터를 위해 RAM의 공간을 확보할 수 있다. 스왑 공간은 스왑 파티션 또는 스왑 파일의 형태일 수 있다. 스왑 파티션은 저장 장치의 전용 파티션인 반면 스왑 파일은 기존 파일 시스템 내의 파일이다. 둘 다 동일한 목적을 수행한다. SWAP 장점 메모리 부족 상황 시스템의 RAM이 부족할 때 스왑 공간은 덜 중요한 데이터를 일시..
2023.03.24
[Linux 명령어] 파티션과 파티션 분할 (parted)
목차 디스크 파티셔닝 MBR 파티션 체계 GPT 파티션 테이블 파티션 관리 명령어 parted 디스크 파티셔닝 디스크 파티셔닝은 디스크 드라이브를 여러 개의 논리 스토리지 파티션으로 나눈다. 파티션을 사용하면 다양 한 요구 사항에 따라 스토리지를 분할할 수 있으며, 이러한 분할은 다양한 이점을 제공한다. • 애플리케이션 또는 사용자가 사용할 수 있는 공간을 제한한다. • 사용자 파일에서 운영 체제와 프로그램 파일을 구분한다. • 메모리 스왑을 위해 별도 영역을 생성한다. • 디스크 공간 사용을 제한하여 진단 도구 및 백업 이미징의 성능을 향상시킨다. MBR 파티션 체계 MBR(Master Boot Record) 파티셔닝 체계는 BIOS 펌웨어를 실행하는 시스템의 표준이다. 이 스키마는 최 대 네 개의 주..
2023.03.24
[Linux 명령어] 프로세스 우선순위 지정 (nice, renice)
목차 nice/renice Linux 프로세스 스케줄링 프로세스 우선순위 nice 값 nice 값 수정 권한 nice/renice Linux의 nice 및 renice 명령어은 실행 중인 프로세스의 우선 순위를 조정하는 데 사용되므로 시스템 리소스가 다른 작업에 할당되는 방식을 제어할 수 있다. 우선 순위를 조정하여 CPU 시간을 늘리거나 줄이는 프로세스에 영향을 주어 특정 작업이나 시나리오에 대한 시스템 성능을 최적화할 수 있다. 이 명령어를 이해하기 위해 먼저 알아야할 몇가지를 아래에 정리해 놓았다. Linux 프로세스 스케줄링 최신 컴퓨터 시스템은 여러 명령어 스레드를 동시에 실행할 수 있는 멀티 코어, 멀티 스레드 CPU를 사용한다. 가장 큰 고성능 슈퍼 컴퓨터는 CPU당 처리 코어 및 스레드 구..
2023.03.23
[Linux 명령어] 연결 및 소켓 정보 확인 (ss)
ss "socket statistics"를 나타내는 ss 명령어은 네트워크 연결 및 소켓에 대한 정보를 표시하는 데 사용되는 다목적 Linux 유틸리티다. 이전 netstat 명령어를 현대적으로 대체하여 더 나은 성능과 추가 기능을 제공한다. ss 명령어를 사용하면 시스템의 네트워크 연결을 모니터링하고 문제를 해결할 수 있으므로 네트워크 관리자와 시스템 관리자 모두에게 유용한 도구가 된다. 옵션 1. 열려 있는 모든 연결을 표시한다. ss 2. 청취 소켓 표시 ss -l 3. TCP 또는 UDP 연결만 표시 ss -t # for TCP ss -u # for UDP 4. 소켓에 대한 자세한 정보 표시 ss -e 5. 소켓과 관련된 프로세스 정보 표시 ss -p 6. established, syn-sent,..
2023.03.19
반응형
Alias를 사용하는 이유

이전에 다루었던 alias를 영구 적용하는 방법은 잘못된 방법으로 되어 있어 이렇게 다시 준비하게 되었습니다. 우선 alias를 적용하는 이유는 긴 명령어를 매번 입력하기에는 업무 효율성이 떨어집니다. 특히 그런 명령어를 자주 사용한다면 더더욱 그렇겠죠.

 

이를 해결하기 위한 방법으로는 명령어를 자동화하는 yaml 파일을 만들거나, 명령어에 별칭을 적용하는 방법이 있습니다. 이외에도 여러 방법이 사용되는 것으로 알고 있지만, 이번 포스팅에는 제목에 맞게 alias를 영구 적용해보겠습니다. 다음 명령어는 농담식으로 만들어졌거나 실제로는 거의 쓰이지 않지만, 예시로 사용하기에 적절하다는 생각으로 가져와보았습니다.

  1. pneumonoultramicroscopicsilicovolcanoconiosis
    이는 실제로는 질병명으로, 석면으로 인한 호흡기계 질환의 일종을 뜻합니다. 하지만 이 단어를 포함한 파일이나 폴더 이름을 만들 수도 있습니다.

  2. antidisestablishmentarianism
    이 단어는 종교와 국가 분리론을 반대하는 것을 뜻합니다. 일반적으로 이 단어를 사용하는 경우는 많지 않지만, 이 단어를 포함한 파일이나 폴더 이름을 만들 수도 있습니다.

  3. honorificabilitudinitatibus
    이는 셰익스피어의 연극 '러브스 레이버스 불시정처'에서 나오는 단어로, "명예로운 능력"을 뜻합니다. 이 단어를 포함한 파일이나 폴더 이름을 만들 수도 있습니다.

  4. floccinaucinihilipilification
    이 단어는 '아주 사소하다', '아주 쓸모없다'는 뜻을 가지고 있습니다. 이 단어를 포함한 파일이나 폴더 이름을 만들 수도 있습니다.

  5. incomprehensibilities
    이 단어는 '이해할 수 없음'을 뜻합니다. 이 단어를 포함한 파일이나 폴더 이름을 만들 수도 있습니다. 위와 같은 긴 단어를 포함한 파일이나 폴더 이름은 주로 농담이나 장난으로 사용될 때가 많습니다. 하지만 이러한 이름을 사용하는 경우, 파일이나 폴더를 찾기 어려워지기 때문에 실제로 사용되는 경우는 드뭅니다.

그럴일은 없겠지만, 이러한 명령어를 자주 써야한다면 손가락이 엄청나게 고생할 것입니다. 따라서 간단하게 만들어 줄 방법이 필요한 것이죠.


alias 영구 적용

alias를 사용하는 방법에 대해서는 다음 페이지에 간단히 정리해 놓았습니다.

 

[Linux 명령어] 어려운 명령어를 간단하게! (alias)

alias는 리눅스에서 사용되는 명령어 중 하나로, 다른 명령어를 대신하여 입력할 수 있는 별칭을 설정하는 명령어다. 즉, 자주 사용하는 명령어나 긴 옵션을 간단하게 대체하여 입력할 수 있게 해

easyitwanner.tistory.com

하지만 이런 방법으로 적용하게 된다면 재부팅 했을 시 적용이 풀려있을 수 있습니다.  때문에 txt 파일을 수정해줄 필요가 있죠. alias 명령어를 영구 적용하는 방법은 다음과 같습니다.

  1. .bashrc 파일 수정하기
    먼저, 사용자의 홈 디렉토리에서 .bashrc 파일을 찾아 열어줍니다.

    $ cd ~
    $ vi .bashrc

  2. alias 추가하기
    .bashrc 파일 맨 아래에 혹은 다음과 같은 형식으로 alias를 추가합니다.

  3. alias [alias_name]='[command]'
    예를 들어, kubectl을 k로 바꾸고 싶다면 다음과 같이 추가합니다.
    alias k='kubectl'

  4. .bashrc 파일 저장 후 적용하기

  5. .bashrc 파일을 저장한 뒤, 다음 명령어를 입력하여 새로운 설정을 적용합니다.
    $ source ~/.bashrc
    이제부터는 터미널을 열 때마다 alias 설정이 적용됩니다.

아래는 실행 예시입니다. 항목과 같이 넣고 싶었지만 왜 인지 모르게 안들어가네요.. 아시는 분들은 댓글 남겨주시면 감사합니다...

홈 디렉토리에서 vi .bashrc 명령으로 들어간 모습
맨 아래 추가해도 좋고, 위처럼 원하는 위치에 설정해도 좋다. 사진에서 볼 수 있듯 다른 명령어 색을 자동으로 지정해 주도록 설정이 되어있다.
k=kubectl이 잘 적용된 모습을 볼 수 있다.

하지만 이렇게 하면 tab키가 작동하지 않는 단점이 있습니다. 때문에 이렇게 하나만 지정하기 보다는 예를 들어

kdpods='kubectl describe pods'

이런 방식으로 긴 명령어를 설정해 이용해 주어도 좋을 것으로 생각됩니다. 이 외에도 tab키를 사용할 수 있게 해주는 방법이 있는 것으로 보이는데 찾게 된다면 포스팅해보도록 하겠습니다.

반응형
반응형

목차

  1. systemd
  2. 주요 기능
  3. Systemd target 선택
  4. systemd에서 target을 활용하기 위한 systemctl 명령어 활용

systemd

systemd는 전통적인 System V init 시스템(SysVinit)을 대체하기 위해 많은 Linux 배포판에서 사용되는 초기화 시스템 및 시스템 관리자다. Lennart Poettering과 Kay Sievers가 개발했으며 2010년에 처음 출시되었다. systemd는 현대적인 디자인, 효율적인 프로세스 관리 및 다양한 Linux 구성 요소와의 통합으로 인기를 얻었다.

systemd는 시작하는 동안 사용자 공간을 부트스트래핑하고, 시스템 서비스를 관리하고, 시스템 수명 주기 동안 일관된 상태를 유지하는 역할을 한다. 


주요 기능
  • 병렬화
    systemd는 서비스를 동시에 시작하여 멀티 코어 프로세서를 활용하여 더 빠른 부팅 시간을 허용한다.

  • 종속성
    systemd는 복잡한 서비스 종속성을 관리하여 서비스가 올바른 순서로 그리고 종속성이 충족될 때만 시작되도록 한다.

  • Cgroups
    systemd는 제어 그룹(cgroups)을 사용하여 각 서비스에 대한 리소스를 관리하고 격리하여 시스템 안정성과 리소스 활용도를 향상시킨다.

  • 서비스 관리
    systemd는 서비스를 모니터링하고 감독하며 장애 또는 충돌이 발생할 경우 자동으로 다시 시작한다. 이는 시스템 안정성을 높이고 다운타임을 줄인다.

  • 로깅
    systemd에는 전체 시스템의 로깅을 처리하는 'journald' 서비스가 포함되어 있다. 인덱싱, 압축, 액세스 제어와 같은 고급 로그 관리 기능을 제공한다.

  • 구성
    systemd는 서비스 관리를 단순화하는 단위 파일로 알려진 서비스에 대한 통합 구성 형식을 사용한다.
    systemd에서 서비스를 관리하려면 systemctl 명령을 사용할 수 있다. 몇 가지 일반적인 작업은 다음과 같다.
  1. 서비스 시작: sudo systemctl start service_name
  2. 서비스 중지: sudo systemctl stop service_name
  3. 서비스 재시작: sudo systemctl restart service_name
  4. 부팅 시 서비스 시작 활성화: sudo systemctl enable service_name

Systemd target 선택

systemd target은 원하는 상태에 도달하기 위해 시작해야 하는 systemd 유닛 집합이다. target 파일은 .target 확장자를 가지며 일반적으로 /lib/systemd/system 또는 /etc/systemd/system에 있다. 다음 테이블에는 가장 중요한 target이 나열되어 있다.

 

자주 사용되는 target

  1. graphical.target : 시스템은 멀티 유저, 그래픽 및 텍스트 기반 로그인을 지원
  2. multi-user.target : 시스템이 멀티 유저, 텍스트 기반 로그인만 지원
  3. rescue.target : sulogin 프롬프트, 기본 시스템 초기화
  4. emergency.target sulogin : 프롬프트, initramfs 피벗 완료, /에 읽기 전용으로 마 운트된 시스템 루트에 사용

systemd에서 target은 특정 시스템 상태 또는 실행 수준을 생성하기 위해 다른 장치(서비스, 소켓, 장치 등)를 함께 그룹화하는 장치 구성 파일이다. target은 서로 다른 시스템 상태 간의 시스템 초기화, 종속성 및 전환을 관리하는 데 도움이 된다. 이는 전통적인 System V init 시스템(SysVinit)에서 발견되는 실행 수준의 진화로 간주될 수 있다.


systemd에서 target을 활용하기 위한 systemctl 명령어 활용

1. target 간 전환

예1_ 그래픽 target에서 다중 사용자 target으로 전환(그래픽 인터페이스 비활성화)

sudo systemctl isolate multi-user.target

예2_그래픽 target으로 다시 전환

sudo systemctl isolate graphical.target

2. 기본 target 설정

예_ 기본 target을 multi-user.target으로 설정

sudo systemctl set-default multi-user.target

기본 target을 설정한 후 시스템은 다음 재부팅 시 지정된 target(이 경우 multi-user.target)으로 부팅된다.

3. 맞춤 target 만들기

필요에 따라 특정 서비스 또는 시스템 상태를 그룹화하기 위해 사용자 정의 target을 생성할 수 있다. 사용자 지정 target을 만들려면 다음 단계를 따르십시오.

1_ /etc/systemd/system에서 새 target 파일을 만든다.

sudo nano /etc/systemd/system/my-custom.target

2_ 필요한 구성을 파일에 추가하여 사용자 지정 target을 정의한다. 예를 들어 multi-user.target과 유사하지만 일부 추가 서비스가 있는 사용자 정의 target을 생성하려면 다음 구성을 사용할 수 있다.

[Unit]
Description=My Custom Target
Requires=multi-user.target
After=multi-user.target
Wants=my-additional-service1.service my-additional-service2.service

이 구성에서 사용자 지정 target은 multi-user.target이 필요하고 이후에 시작된다. 또한 사용자 정의 target과 함께 시작되는 my-additional-service1.service 및 my-additional-service2.service 서비스를 원한다는 뜻이다.


4_ 파일을 저장하고 systemd 구성을 다시 로드한다.

sudo systemctl daemon-reload


4. 사용자 지정 target으로 전환

sudo systemctl isolate my-custom.target

 

5. 사용자 정의 target을 시스템이 부팅할 기본 target으로 설정

sudo systemctl set-default my-custom.target

이제 시스템은 다음 재부팅 시 사용자 지정 target으로 부팅된다. 이 사용자 지정 target은 multi-user.target에 필요한 서비스와 함께 구성에 지정된 서비스를 시작한다.

 

6. 현재 지정돼 있는 target 확인

sudo systemctl get-default

실무에서는 server에서 graphical.target 을 거의 사용하지 않는다고 한다. 이 target은 좀 더 가시성을 좋게 만들어주는 것으로 (네트워크를 설정할 때 nmcli가 아닌 nmtui로 보는 느낌) server는 켜져있고 작동만 잘 되면 됨으로 굳이 가시성이 좋을 필요가 없다는 것이다.

반응형
반응형
SWAP

스왑은 Linux 기반 운영 체제에서 가상 메모리로 작동하는 저장 장치(예: HHD, SSD, 가상 저장 장치)의 전용 공간이다. 시스템의 사용 가능한 메모리가 부족할 때 물리적 RAM(Random Access Memory)을 보충하는 데 사용된다. 스왑 공간을 통해 운영 체제는 덜 자주 사용되는 데이터를 RAM에서 스왑 영역으로 이동하여 더 중요하거나 자주 액세스하는 데이터를 위해 RAM의 공간을 확보할 수 있다.

스왑 공간은 스왑 파티션 또는 스왑 파일의 형태일 수 있다. 스왑 파티션은 저장 장치의 전용 파티션인 반면 스왑 파일은 기존 파일 시스템 내의 파일이다. 둘 다 동일한 목적을 수행한다.


SWAP 장점
  • 메모리 부족 상황
    시스템의 RAM이 부족할 때 스왑 공간은 덜 중요한 데이터를 일시적으로 저장하여 더 중요한 데이터를 실제 메모리에 남길 수 있다.

  • 최대 절전 모드
    최대 절전 모드에서 시스템은 RAM의 전체 내용을 스왑 공간에 저장한 다음 전원을 끈다. 시스템이 다시 켜지면 스왑 공간의 내용이 RAM으로 복원되고 시스템은 이전 상태를 재개한다.

스왑 공간의 개념

스왑 공간은 Linux 커널 메모리 관리 하위 시스템에서 제어하는 디스크 영역이다. 커널은 메모리에 비활성 페이지를 보관하여 시스템 RAM을 보완하기 위해 스왑 공간을 사용한다. 시스템의 가상 메모리에는 결합된 시스템 RAM과 스왑 공간이 포함된다.

 

시스템의 메모리 사용량이 정의된 한도를 초과할 경우 커널은 RAM에서 프로세스에 할당된 유휴 메모리 페이 지를 검색한다. 커널은 유휴 페이지를 스왑 영역에 쓰고 RAM 페이지를 다른 프로세스에 다시 할당한다. 프로그램에서 디스크의 페이지에 액세스해야 하는 경우 커널은 메모리의 다른 유휴 페이지를 찾아 디스크에 쓴 다음 스왑 영역에서 필요한 페이지를 불러온다.

 

스왑 영역이 디스크에 상주하므로 스왑은 RAM에 비해 속도가 느리다. 스왑 공간은 시스템 RAM을 늘리는 데 사용되지만, 워크로드에 비해 RAM이 부족한 경우 스왑 공간을 지속 가능한 해결책으로 간주해서는 안 되며, 물리적 메모리를 늘리는 것이 좋다.


스왑 공간 계산

관리자는 시스템의 메모리 워크로드에 따라 스왑 공간의 크기를 조정해야 한다. 애플리케이션 벤더가 스왑 공간 계산에 대한 권장 사항을 제공하는 경우도 있다. 다음 표에는 실제 메모리 총량에 따른 지침이 나와 있다.

RAM SWAP 공간 최대 절전 모드 시 SWAP 공간
2GB 이하 RAM * 2 RAM * 3
2~8 GB RAM과 동일 RAM * 2
8~64GB 4GB 이상 RAM * 1.5
64GB 이상 4GB 이상 권장되지 않음

랩탑 및 데스크탑 최대 절전 모드 기능은 시스템의 전원을 끄기 전에 스왑 공간을 사용하여 RAM 내용을 저장 한다. 시스템을 다시 켜면 커널이 스왑 공간에서 RAM 내용을 복원하므로 완전한 부팅이 필요하지 않다. 해당 시스템의 경우 스왑 공간이 RAM 크기보다 커야 한다.

 

해당 권장 사항은 말 그대로 권장 사항이므로 이렇게 꼭 맞춰서 할 필요는 없다.


스왑 관련 명령어

스왑 공간 활성화 명령어를 시행하기 전에 다음 단계를 수행해야 한다.

 

• 파일 시스템 유형이 linux-swap인 파티션을 생성한다. (parted, fdisk 등 명령어 사용)

• 장치에서 스왑 시그니처를 저장한다. (mkswap 사용)

 

1. SWAP 활설화

sudo swapon /dev/sda5

 

2.  SWAP 비활성화

sudo swapoff /dev/sda5

 

3. 장치 또는 파일에 스왑 영역을 설정

sudo mkswap /dev/sda5


4. 현재 활성화된 스왑 공간을 표시한다.

swapon --show


5. 시스템에서 사용 가능한 물리적 메모리와 스왑 메모리의 총량을 표시

free -h

이 예는 사람이 읽을 수 있는 형식(예: MB, GB)의 메모리 및 스왑 사용량을 보여준다.


6. 지정된 크기로 미리 할당된 스왑 파일 생성

sudo fallocate -l 2G /swapfile

이 예에서는 /swapfile이라는 2GB 스왑 파일을 만든다.

 

7. dd: 이 명령은 지정된 입력 파일을 복사하고 변환하여 스왑 파일을 만들 수도 있다.

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

이 예는 /dev/zero에서 데이터를 복사하여 /swapfile이라는 이름의 2GB 스왑 파일을 생성한다.


8. 스왑 파일의 권한을 변경

sudo chmod 600 /swapfile

이 예제는 /swapfile의 권한을 루트 사용자만 읽고 쓸 수 있도록 설정한다.


9. 시스템이 스왑 공간을 얼마나 적극적으로 사용하는지 결정하는 swappiness 값과 같은 런타임 시 커널 매개변수 구성

sudo sysctl vm.swappiness=10

이 예에서는 swappiness 값을 10으로 설정한다. 즉, 시스템이 덜 적극적으로 스왑 공간을 사용한다.


스왑 공간으로 작업할 때 원하는 결과를 얻으려면 위 예시에서 설명한 명령어들 중 일부를 조합하여 사용해야 할 수도 있다.

반응형
반응형

목차

  1. 디스크 파티셔닝
  2. MBR 파티션 체계
  3. GPT 파티션 테이블
  4. 파티션 관리 명령어 parted

디스크 파티셔닝

디스크 파티셔닝은 디스크 드라이브를 여러 개의 논리 스토리지 파티션으로 나눈다. 파티션을 사용하면 다양 한 요구 사항에 따라 스토리지를 분할할 수 있으며, 이러한 분할은 다양한 이점을 제공한다.

 

• 애플리케이션 또는 사용자가 사용할 수 있는 공간을 제한한다.

• 사용자 파일에서 운영 체제와 프로그램 파일을 구분한다.

• 메모리 스왑을 위해 별도 영역을 생성한다.

• 디스크 공간 사용을 제한하여 진단 도구 및 백업 이미징의 성능을 향상시킨다.


MBR 파티션 체계

MBR(Master Boot Record) 파티셔닝 체계는 BIOS 펌웨어를 실행하는 시스템의 표준이다. 이 스키마는 최 대 네 개의 주 파티션을 지원한다. Linux 시스템에서는 확장 및 논리 파티션을 사용하여 최대 15개의 파티 션을 생성할 수 있다. 파티션 크기가 32비트인 경우 MBR로 파티셔닝되는 디스크 크기는 최대 2TiB일 수 있다.

 

2TiB의 디스크 및 파티션 크기는 이제 일반적으로 초과되기 때문에 결과적으로 레거시 MBR 체계가 GPT(GUID Partition Table) 파티셔닝 체계로 대체되었다.


GPT 파티션 테이블

UEFI(Unified Extensible Firmware Interface) 펌웨어를 실행하는 시스템의 경우 GPT는 디스크 파티셔닝의 표준이며 MBR 체계의 제한 사항을 처리한다. GPT는 최대 128개의 파티션을 제공한다. GPT 체계는 논 리 블록 주소에 64비트를 할당하여 최대 8제비바이트(ZiB) 또는 80억 테비바이트(TiB)의 파티션 및 디스크를 지원한다.

 

GPT 파티셔닝은 MBR에 비해 더 많은 기능과 이점을 제공한다. GPT는 GUID(전역 고유 식별자)를 사용하 여 각 디스크와 파티션을 식별한다. GPT는 기본 GPT를 디스크 헤드에, 백업 보조 GPT를 디스크 끝부분에 배치하여 파티션 테이블을 이중화한다. GPT는 체크섬을 사용하여 GPT 헤더와 파티션 테이블에서 오류를 감지한다.


파티션 관리 명령어 parted

parted 명령어는 Linux 시스템에서 디스크 파티션을 관리하는 데 사용되는 강력한 유틸리티다. HDD 및 SSD와 같은 다양한 유형의 저장 장치에서 파티션을 생성, 크기 조정, 삭제 및 조작할 수 있다. MBR(마스터 부트 레코드) 및 GPT(GUID 파티션 테이블)를 포함한 다양한 파티셔닝 체계와 ext2, ext3, ext4, FAT 및 NTFS와 같은 다양한 파일 시스템을 지원한다.

1. 파티션 정보 표시

parted /dev/sda print

/dev/sda를 확인하려는 장치로 바꾸십시오. 이 명령어는 크기, 파티션 테이블 유형 및 파티션 목록을 포함하여 장치에 대한 정보를 표시한다.

2. 새 파티션 생성

parted /dev/sda

다음으로 mklabel 명령어를 사용하여 파티션 테이블 유형(아직 설정되지 않은 경우)을 설정한다.

(parted) mklabel gpt

이제 mkpart 명령어를 사용하여 새 파티션을 만든다.

(parted) mkpart primary ext4 0% 50%

이 명령어는 ext4 파일 시스템을 사용하여 사용 가능한 디스크 공간의 0%에서 시작하여 50%에서 끝나는 새 기본 파티션을 만든다.

3. 파티션 크기 조정

parted /dev/sda

다음으로 resizepart 명령어를 사용하여 파티션 크기를 조정한다.

(parted) resizepart 1 75%

이 명령어는 사용 가능한 디스크 공간의 75%에서 끝나도록 파티션 번호 1의 크기를 조정한다. 파티션 크기를 조정하면 데이터가 손실될 수 있으므로 이 작업을 수행하기 전에 항상 데이터를 백업하는 것이 좋다

4. 파티션 삭제

parted /dev/sda

그런 다음 rm 명령어를 사용하여 파티션을 제거한다.

(parted) rm 1
이 명령어는 파티션 번호 1을 삭제한다.

5. parted 종료

(parted) quit
반응형
반응형

목차

  1. nice/renice
  2. Linux 프로세스 스케줄링
  3. 프로세스 우선순위
  4. nice 값
  5. nice 값 수정 권한

nice/renice

Linux의 nice 및 renice 명령어은 실행 중인 프로세스의 우선 순위를 조정하는 데 사용되므로 시스템 리소스가 다른 작업에 할당되는 방식을 제어할 수 있다. 우선 순위를 조정하여 CPU 시간을 늘리거나 줄이는 프로세스에 영향을 주어 특정 작업이나 시나리오에 대한 시스템 성능을 최적화할 수 있다. 이 명령어를 이해하기 위해 먼저 알아야할 몇가지를 아래에 정리해 놓았다.


Linux 프로세스 스케줄링

최신 컴퓨터 시스템은 여러 명령어 스레드를 동시에 실행할 수 있는 멀티 코어, 멀티 스레드 CPU를 사용한다. 가장 큰 고성능 슈퍼 컴퓨터는 CPU당 처리 코어 및 스레드 구조가 수백 개인 CPU를 수백 또는 수천 개 포함 할 수 있으며, 수백만 개의 명령어 스레드를 병렬로 처리할 수 있다.

 

단일 사용자가 여러 애플리케이션을 실 행하는 경우 일반적인 데스크탑 시스템이나 개인용 워크스테이션은 CPU 활동으로 포화 상태가 될 수 있지 만, 적절한 규모로 적절하게 구성된 워크스테이션은 사용자가 의도한 워크로드에 맞게 설계된다.

그러나 일반적인 엔터프라이즈 또는 인터넷 서버는 사용자 및 애플리케이션의 요청을 초당 수백 또는 수천 개씩 처리 하므로 CPU가 쉽게 포화 상태가 될 수 있다.

 

CPU 부하가 있는 모든 시스템은 스레드를 즉시 예약하는 데 필요한 CPU 처리 장치보다 더 많은 프로세스 스레드를 처리해야 하는 시나리오를 경험한다. Linux 및 기타 운영 체제는 타임 슬라이싱 또는 멀티태스킹이라는 기술을 사용하여 프로세스를 관리한다.

 

운영 체제의 프로세스 스케줄러는 사용 가능한 각 CPU 코어의 프로세스 스레드를 빠르게 전환한다. 이 동 작은 상당한 수의 프로세스가 동시에 실행되고 있다는 인상을 준다.


프로세스 우선순위

각 프로세스에는 이전에 프로세스 우선순위로 알려진 다양한 중요도 측정치가 있다. Linux에서는 CPU 처리 시간을 확보하기 위해 프로세스 구성 및 우선순위 지정 규칙을 정의하는 스케줄링 정책을 구현한다.

 

Linux에는 대화형 애플리케이션 요청, 비 대화형 배치 애플리케이션 처리, 실시간 애플리케이션 요구 사항을 처리하도록 설계된 다양한 스케줄링 정책이 있다. 실시간 스케줄링 정책에서는 여전히 프로세스 우선순 위와 대기열을 사용하지만, 최근의 비 실시간(일반) 스케줄링 정책에서는 CPU 시간을 기다리는 프로세스를 바이너리 검색 트리로 구성하는 CFS(완전 공정 스케줄러)를 사용한다. 이 프로세스 우선순위 소개에서는 SCHED_NORMAL 또는 SCHED_OTHER라는 기본 스케줄링 정책을 설명한다.

 

모든 시스템 실시간 프로세스에 일반 프로세스보다 높은 우선순위가 지정되도록 SCHED_NORMAL 정책하에 실행 중인 프로세스에는 정적 실시간 우선순위 0이 할당된다. 그러나 이 정적 우선순위 값은 CPU 스케줄링 을 위해 일반 프로세스 스레드를 구성할 때 포함되지 않는다. 대신 CFS 스케줄링 알고리즘에서 일반 프로 세스 스레드를 이전에 사용한 CPU 시간이 가장 짧은 첫 번째 항목부터 누적 CPU 시간이 가장 긴 마지막 항목 까지 시간가중 바이너리 트리로 정렬한다.


nice 값

바이너리 트리의 순서는 사용자가 수정할 수 있는 프로세스별 nice 값에 따라 추가로 영향을 받는다. 해당 값은 범위가 -20(우선순위 증가)에서 19(우선순위 감소)까지이고 기본값은 0이다. 프로세스는 해당 상위 프 로세스에서 시작 nice 값을 상속한다. nice 값이 클수록 프로세스 우선순위가 기본값에서 감소했음을 나타내며, 해당 프로세스가 다른 프로세스보 다 더 적합한 것으로 기억될 수 있다.

 

nice 값이 적을수록 프로세스 우선순위가 기본값에서 증가했음을 나타내며, 해당 프로세스가 다른 프로세스보다 덜 적합한 것으로 기억될 수 있다. 프로세스에서 nice 값을 수정하면 바이너리 트리에서 프로세스 스레드의 위치가 높아지거나 낮아진다. nice 값을 늘리면 스레드의 위치가 낮아지고, 값을 줄이면 스레드의 위치가 높아진다


nice 값 수정 권한

권한 있는 사용자는 프로세스의 nice 값을 줄여 프로세스 적합도를 낮출 수 있다. 그러면 프로세스가 바 이너리 트리에서 반복적으로 더 높은 위치에 배치되어 더 자주 예약된다. 포화된 시스템에서는 다른 프로세 스에서 사용할 수 있는 전체 CPU 시간이 줄어든다. 권한이 없는 사용자는 자신의 프로세스에서 nice 값을 늘릴 수만 있다. 그러면 자신의 프로세스 적합도가 높아져 프로세스가 바이너리 트리에서 더 낮은 위치에 배치된다. 권한이 없는 사용자는 중요도를 높이기 위 해 프로세스의 nice 값을 줄일 수 없으며 다른 사용자의 프로세스에 해당하는 nice 값을 조정할 수도 없습니 다.


명령어 사용예

1. nice 명령어

nice 명령어은 지정된 우선 순위("niceness" 값이라고도 함)로 새 프로세스를 시작하는 데 사용된다. 우선 순위 수준의 범위는 -20(가장 높은 우선 순위)에서 19(가장 낮은 우선 순위)까지다. 기본적으로 새 프로세스는 일반적으로 niceness 값이 0인 부모 프로세스의 우선 순위를 상속한다.

nice 명령어의 구문

nice [OPTION] [COMMAND [ARG]...]


예를 들어 우선 순위가 낮은(높은 niceness 값) 프로세스를 시작하려면 다음을 사용한다.

nice -n 10 command_name

2. renice 명령어

renice 명령어은 이미 실행 중인 프로세스의 우선 순위를 수정하는 데 사용된다. 프로세스 ID(PID), 프로세스 그룹 ID(PGID) 또는 사용자 ID(UID)를 지정하여 프로세스의 우선 순위를 조정할 수 있다.

renice 명령어의 구문은 다음과 같다.

renice [-n] PRIORITY [-g|-p|-u] IDENTIFIER...

옵션

-n: 새로운 우선순위(niceness) 값을 지정한다.
-g: 주어진 IDENTIFIER는 PGID다.
-p: 주어진 IDENTIFIER는 PID다(옵션이 제공되지 않은 경우 기본 동작).
-u: 주어진 IDENTIFIER는 UID다.

예를 들어 PID가 12345인 프로세스의 우선 순위를 niceness 값 5로 변경하려면 다음을 사용한다.

renice -n 5 -p 12345

특정 사용자가 소유한 모든 프로세스의 우선 순위를 조정하려면 사용자의 UID와 함께 -u 옵션을 사용한다.

renice -n 5 -u 1001
반응형
반응형
ss

"socket statistics"를 나타내는 ss 명령어은 네트워크 연결 및 소켓에 대한 정보를 표시하는 데 사용되는 다목적 Linux 유틸리티다. 이전 netstat 명령어를 현대적으로 대체하여 더 나은 성능과 추가 기능을 제공한다. ss 명령어를 사용하면 시스템의 네트워크 연결을 모니터링하고 문제를 해결할 수 있으므로 네트워크 관리자와 시스템 관리자 모두에게 유용한 도구가 된다.


옵션

1. 열려 있는 모든 연결을 표시한다.

ss


2. 청취 소켓 표시

ss -l

3. TCP 또는 UDP 연결만 표시

ss -t  # for TCP
ss -u  # for UDP

4. 소켓에 대한 자세한 정보 표시

ss -e

5. 소켓과 관련된 프로세스 정보 표시

ss -p

6. established, syn-sent, closed 등과 같은 상태별로 소켓을 필터링

ss state established

7. 특정 프로토콜(TCP 또는 UDP)에 대한 모든 청취 소켓을 표시

ss -lt  # for TCP
ss -lu  # for UDP

8. 로컬 또는 원격 주소 및 포트로 연결 필터링

ss '( dport = :80 or sport = :80 )'

9. 각 프로토콜에 대한 요약 통계 표시

ss -s

10. 모든 IPv4 또는 IPv6 연결 표시

ss -4  # for IPv4
ss -6  # for IPv6

이외에도 ss 명령어 및 다양한 옵션 이 존재하니 더 자세한 내용은 매뉴얼 페이지(man ss) 또는 내장 도움말(ss --help)을 참조하는 것을 추천한다.

반응형