들어가며

안녕하세요. 오픈소스컨설팅 Linux 엔지니어 조철진 입니다.

제가 소속된 Linux 팀은 Linux OS 에 대한 기술 지원 서비스를 제공하는 팀입니다.
다른 것이 아닌 OS에 대해 기술 지원을 해야 하다 보니 남들보다 Linux 에 대한 더 깊고 풍부한 지식이 필요하고, 이에 더하여 다양한 경험이 있어야 높은 수준의 기술 지원 품질을 유지할 수 있다는 팀의 공통된 의견에 따라 Linux 에 대한 전반적인 스터디를 계획하게 되었습니다.

주제는 하드웨어, 커널과 모듈, 스토리지, 부팅 이렇게 4가지로 구성하였고 실제 Linux 기술 지원을 하다 보면 직면할 수 있는 부분과 컴퓨터 시스템에 대한 지식에 대하여 주제 별로 각자가 중요하다고 생각하는 내용의 문제를 출제하는 방식으로 스터디를 진행하였습니다.

문제를 출제하는 방식으로 스터디를 진행해보니 효과적이면서 시간을 아낄 수 있는 방식이라는 부분에 대하여 다들 공감하였고, 그동안 출제한 문제들을 잘 정리해서 모아두고 공유할 수 있으면 좋겠다는 생각으로 블로그까지 작성하게 되었습니다!

여러분들도 한 번 문제를 풀어보며 알고 있는 지식에 대해서 검증해보는 시간을 가져보는 것은 어떨까요?


하드웨어

  1. Linux 시스템의 커널 메시지에 대한 설명으로 옳지 않은 것을 고르시오.
    1. RHEL8 시스템은 커널 메시지를 /var/log/dmesg 에 기록합니다.
    2. 커널 메시지는 dmesg라는 미리 할당된 링버퍼에 기록됩니다. 시간이 지남에 따라 최신 메시지가 버퍼를 채우고 원래 메시지를 덮어쓰지만 버퍼 크기는 늘어나지 않습니다.
    3. journalctl -k 를 사용하여 dmesg를 확인할 수 있습니다.
    4. dmesg | grep ‘Huge’ 를 통해 대용량 메모리 페이지를 할당하는 메커니즘을 초기화하는 로그를 확인할 수 있습니다.
    5. PCI 드라이버를 로드하여 네트워크 카드를 검색한 로그를 확인할 수 있습니다.

    ▸ 정답 보기정답
    1번

    해설
    RHEL7에서 시스템 저널이 도입되면서 /var/log/dmsg 파일은 선택사항이고, RHEL8,9에서는 더 이상 자동으로 생성되지 않습니다. /etc/systemd/system/dmesg.service를 다시 생성하고 활성화하면 이 파일을 다시 복원할 수 있습니다. 또는 journalctl -k 를 통해서도 커널 메시지를 확인할 수 있습니다.
    https://access.redhat.com/solutions/3748981

  2. 본문에서 요구 하는 정보를 쓰시오.
    다음은 Linux 시스템에서 lscpu 명령어를 통해 확인된 CPU 정보 입니다.

    총 CPU core 수:
    실제 소켓수:

    ▸ 정답 보기정답
    총 CPU core 수: 16
    실제 소켓 수: 2

  3. 빈 칸에 알맞은 답과 동일한 제공 정보는 어디서 확인할 수 있는지 쓰시오.
    dmidecode 유틸리티는 SMBIOS(시스템 관리 BIOS) 및 DMI(데스크탑 관리 인터페이스) 데이터 구조를 조사 하고 중요한 로컬 하드웨어 정보를 표시합니다.
    dmidecode 명령의 데이터는 _______ 파일 시스템을 통해 가져옵니다.

    ▸ 정답 보기정답
    sysfs
    /sys/class/dmi/id/*

    해설
    dmidecode는 DMI(Desktop Management Interface) 테이블에 있는 정보를 decode하여 보여주는 명령어입니다.

  4. 다음의 하드웨어 정보를 확인하는 방법을 쓰시오.
    1. Hardware Vendor , Model , SerialNumber 를 확인할 수 있는 명령어 및 경로
    2. CPU 스펙 확인
    3. 설치된 MEMORY 갯수와 각 SIZE
    4. RAID CONTROLLER Model
    5. HBA Vendor 및 driver
    6. NIC Model 및 driver , connector type
    7. GPU Chipset 및 driver

    ▸ 정답 보기정답
    1. dmidecode 또는 /sys/class/dmi/id
    2. lscpu 또는 dmidecode -t processor
    3. dmidecode (dmidecode -t memory | grep -e MB -e GB )
    4. lspci | grep -i raid ; lspci -s <bus no>:<device no> -vv
    5. lspci | grep -i -e “host bus” -e “fibre” -e “fc” ; lspci -s <bus no>:<device no> -vv
    6. lspci | grep -i -e “ethernet” ; lspci -s <bus no>:<device no> -vv
    7. lspci | grep -i -e “vga” -e “graphic” | lspci -s <bus no>:<device no> -vv

  5. Linux 시스템의 하드웨어와 연결된 드라이버를 한번에 찾으려면 다음 중 어떤 명령어를 수행해야 하는지 쓰시오.

    ▸ 정답 보기정답
    lspci -vv

  6. 다음에서 설명하는 가상화 기술을 쓰시오.
    1. Host의 NIC 를 Guest 에게 직접 전용으로 할당하는 방법
    2. Host 의 CPU 를 Guest 에게 직접 전용으로 할당하는 방법

    ▸ 정답 보기정답
    1. PCI Passthrough
    2. CPU Pinning

  7. 하드웨어에서 CPU에게 어떠한 이벤트가 발생했음을 알리고, 처리를 요청하는 신호가 무엇인지 쓰시오.

    ▸ 정답 보기정답
    INT, IRQ, 인터럽트(Interrupt)

    해설
    주변 기기가 CPU에게 어떤 사실을 알리는 일을 Interrupt라고 하며 이러한 요청을 IRQ라고 합니다. CPU가 어떠한 작업을 하다가 주변 기기 에셔 인터럽트 요청이 들어 오면 우선순위에 따라서 하던 일을 중단하고 그 요청을 받아 다른 일을 하게 됩니다.

  8. 멀티 프로세서 환경에서 적용되는 메모리 접근 방식으로서 CPU 별로 독립적인 메모리 공간을 할당함으로서 처리 속도를 향상 시키는 구조를 무엇이라고 합니까?

    ▸ 정답 보기정답
    NUMA(Non-Uniform Memory Access)

    해설
    전통적인 방식인 SMP(Symmetric Multi Proccessor)는 하나의 메모리에 대하여 여러 CPU가 공유하여 접근하는 방식이기 때문에, 하나의 CPU가 사용 중이면 나머지 CPU는 대기해야 하는 병목 현상이 발생합니다.

    NUMA는 각 CPU가 독립적인 지역메모리(Local Memory)공간을 가지고 있어 빠른 접근이 가능합니다. 하지만, 지역메모리가 아닌 다른 프로세서가 가진 원격 메모리(Remote Memory)에 접근이 필요할 경우 시간이 소요되어 성능 저하가 발생할 수도 있습니다.
    https://brunch.co.kr/@dreaminz/4

  9. 빈 칸에 알맞은 답을 쓰시오.
    KVM은 호스트 시스템에서 CPU 가상화 기능의 활성화가 필요합니다.
    Linux OS를 호스트로 사용시, CPU 벤더별로 Intel은 ___ AMD는 ___ 가 /proc/cpuinfo의 flags 에서 확인되어야 합니다.

    ▸ 정답 보기정답
    vmx
    svm


커널과 모듈

  1. 커널 파라미터를 수정하는 방법으로 옳지 않은 것을 고르시오.
    1. command line에서 /proc/sys 이하의 파일을 수정하여 커널 튜닝 항목을 변경할 경우, 실행 중인 커널에 즉시 적용되며 재부팅 시 유지되지 않습니다. (ex. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all)
    2. sysctl -n 명령을 사용하면 튜닝 가능 항목의 값을 출력할 수 있습니다.
    3. sysctl -w 명령을 사용하여 수정할 경우 수정한 값이 재부팅 시 유지되지 않습니다.
    4. 커널은 /etc/sysctl.d 아래에 있는 파일에서 튜닝 가능 항목 설정을 로드할 때 파일 이름이 .conf 로 끝나지 않으면 설정을 로드 하지 않습니다.
    5. /etc/sysctl.d, /run/sysctl.d, /usr/lib/sysctl.d 의 각 디렉터리 아래에 동일한 이름을 가진 파일이 있다면 /usr/lib/sysctl.d 에 있는 설정 파일이 밴더 패키지 배포에 설정한 구성이 포함되어 있기 때문에 가장 우선 적용됩니다.

    ▸ 정답 보기정답
    5번

    해설
    /etc/sysctl.d, /run/sysctl.d 및 /usr/lib/sysctl.d 에 동일한 설정 파일 이름이 존재한다면 /etc/sysctl.d 경로에 있는 설정 파일이 우선 적용됩니다.

  2. (A)와 (B)에 알맞은 답을 넣으시오.
    4.18.0-305.el8.x86_64 버전의 커널을 사용 중인 시스템에서 튜닝 가능한 항목을 확인하려고 할 때, 시스템 내에서 해당 커널 버전의 튜닝 가능 항목이 무엇인지 확인하기 위해서는 ( A ) 파일에서 확인할 수 있습니다. 해당 파일은 ( B ) 패키지에 포함되어 있어 해당 패키지를 설치하여 확인이 가능합니다.

    ▸ 정답 보기정답
    (A): /usr/share/doc/kernel-doc-4.18.0/Documentation/sysctl/kernel.txt
    (B): kernel-doc


  3. 커널 파라미터를 수정하는 방법에 대한 내용입니다. 빈칸에 알맞은 답을 넣으시오.
    편집기 또는 리디렉션을 사용하여 ________ 디렉터리 하위의 파일을 수정합니다.
    ______ 명령을 사용하여 이름으로 매개 변수를 설정합니다.
    __________ 디렉터리의 구성 파일에 매개 변수 항목을 생성합니다.

    ▸ 정답 보기정답
    /proc/sys
    sysctl
    /etc/sysctl.d

  4. 다음 중 옳지 않은 설명을 고르시오.
    1. /proc/sys에 있는 파일을 수정하면 실행 중인 시스템이 즉시 변경됩니다.
    2. 모든 /proc/sys 파일의 변경 사항은 메모리의 커널에 직접 기록되므로 재부팅시 변경 사항이 유지됩니다.
    3. /proc/sys의 모든 파일이 쓰기 가능한 것은 아닙니다.
    4. /proc/sys/kernel 에는 커널 튜닝 가능 항목이 포함되어 있습니다.

    ▸ 정답 보기정답
    2번

    해설
    모든 /proc/sys 파일의 변경 사항은 메모리의 커널에 직접 기록되므로 재부팅 시 변경 사항이 유지되지 않습니다. 영구적으로 구성하지 않으면 커널 튜닝 가능 설정이 커널 모듈의 기본 설정으로 돌아갑니다.

  5. 다음 /sys 에서 일반적으로 사용되는 하위 디렉토리 경로를 적으시오.
    1. 현재 커널에 로드된 커널 모듈에 대한 정보가 포함되어 있는 디렉토리
    2. 시스템에 연결된 장치 특성에 대한 정보가 포함되어 있는 디렉토리
    3. 커널의 다양한 버스 유형에 대한 정보가 포함되어 있는 디렉토리
    4. 시스템의 블록 및 문자 장치에 대한 정보가 포함되어 있는 디렉토리

    ▸ 정답 보기정답
    1. /sys/module/
    2. /sys/devices/
    3. /sys/bus/
    4. /sys/dev/

  6. 빈칸에 알맞은 답을 넣으시오.
    현재 로드된 모듈을 나열하는 명령어를 쓰시오. __________
    모듈을 로드 및 언로드하는 명령어 ________ 및 _________ 하지만, 관리자에게 권장되는 명령어는 __________ 입니다.

    ▸ 정답 보기정답
    lsmod
    insmod, rmmod, modprobe

    해설
    insmod는 /lib/modules/kernel-version 의 디렉토리를 탐색해 해당 모듈이 있으면 로드합니다.
    modprobe는 depmod에 의해 생성된 modules.dep에서 모듈을 찾아 로드합니다. 그리고 모듈에 의존성이 있거나 먼저 로드 되어야 하는 모듈이 있으면 모듈도 같이 로드 시켜줍니다. 이 부분이 insmod와 가장 큰 차이가 있습니다.

  7. 본문에서 제시하는 파일에 어떤 내용을 기록해야 하는지 쓰시오.
    커널 모듈 kvm_intel 에 대하여 nested 파라미터의 값을 1로 수정하였습니다.
    재부팅 후에도 영구적으로 해당 옵션을 적용하고 싶어 /etc/modprobe.d/kvm.conf 파일을 생성하였습니다.

    ▸ 정답 보기정답
    options kvm_intel nested=1

    해설
    위와 반대로 재부팅 시 모듈을 올라오게 하지 않으려면 아래와 같이 적용합니다.
    blacklist kvm_intel
    참고로, nested는 가상화된 CPU 위에서 한 번 더 가상화를 수행하려는 목적으로 활성화합니다.

  8. 본문의 내용을 해결하기 위해 어떤 작업을 수행해야 할지 적으시오.
    modprobe -r pcc_cpufreq 명령을 사용하여 pcc_cpufreq 모듈을 언로드 하였으나 재부팅시 모듈이 로드됩니다.
    재부팅 후 모듈을 로드하지 않기 위한 작업이 필요합니다.

    ▸ 정답 보기정답
    1. blacklist 파일 작성
    # vi /etc/modprobe.d/<파일명>.conf
    blacklist <MODULE-NAME>
    install /bin/false <MODULE-NAME>

    2. 기존 ramdisk 백업
    # cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak

    3. initramdisk 를 새로 생성하여 변경 사항 적용
    # dracut -f -v

    해설
    blacklist 에 더하여 다른 커널 모듈의 종속성으로 인해 로드 되지 않도록 하려면 install 도 정의해야 합니다. 이 경우 시스템은 /bin/false 를 실행하도록 지정합니다.
    https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/preventing-kernel-modules-from-being-automatically-loaded-at-system-boot-time_managing-kernel-modules

  9. 본문의 내용을 보고 어떤 명령을 통해 확인할 수 있는지 쓰시오.
    qla2xxx QLogic HBA module 버전을 업데이트 했습니다.
    이후 모듈이 정상적으로 업데이트 되었는지 확인하고자 합니다.

    ▸ 정답 보기정답
    cat /sys/module/qla2xxx/version
    modinfo qla2xxx
    dmesg
    journalctl -k

  10. 최대 성능의 처리량이 필요한 상황에 적용하기 적절한 tuned 프로필을 쓰시오.

    ▸ 정답 보기정답
    throughput-performance
    network-throughput

    해설
    두 가지의 profile은 최대 성능의 처리량을 필요로 할 때 사용 가능하며 아래와 같이 적용합니다.
    # tuned-adm profile throughput-performance

  11. 디스크와 메모리에 쓰여진 내용이 불일치 하는 dirty 상황일 때 설정한 백분율에 따라 디스크에 메모리의 내용을 기록하게 하는 커널 파라미터를 쓰시오.

    ▸ 정답 보기정답
    vm.dirty_ratio
    vm.dirty_background_ratio

    해설
    위의 파라미터를 사용해 메모리의 내용을 디스크에 얼마나 자주 기록할지 조절할 수 있습니다.
    만약, 값을 30으로 설정하면 전체 메모리의 30% 크기가 dirty page 일 때 동작합니다.
    위에 부가적으로 존재하는 dirty 관련 파라미터는 다음과 같습니다.

    vm.dirty_writeback_centisecs: 설정한 초마다 disk에 flush, 500 = 5초
    vm.dirty_expire_centisecs: disk 에 flush 되기 전에dirty_page에 머무를 수 있는 시간,  3000 = 30초

  12. 중복되는 메모리 페이지를 단일 페이지로 줄여서 사용량을 압축하는 메모리 가상화 overcommit 기술은?

    ▸ 정답 보기정답
    KSM(Kernel Samepage Merging)

    해설
    Memory can be overcommitted, and virtual machine memory can be swapped out to disk, or usage can be compressed by Kernel Samepage Merging (KSM), where duplicate memory pages are reduced to a single page and split again with Copy-on-Write (COW) when one VM writes to that page.


스토리지

  1. 스토리지 성능 튜닝을 위해 고려해야 할 점으로 바르지 않은 것을 고르시오.
    1. 파일시스템에 쓰기 작업을 할 때 RAID 레이아웃과 일치하지 않으면 성능이 느려질 수 있습니다.
    2. 디스크의 종류에 따라 성능 튜닝 방법이 달라질 수 있습니다.
    3. udev rules 로 정의한 블록 디바이스는 I/O 스케줄러를 설정할 수 없습니다.
    4. 블록 디바이스 단위로 I/O 스케줄러를 설정할 수 있습니다.

    ▸ 정답 보기정답
    3번

    해설
    파일 시스템의 쓰기 동작이 RAID 레이아웃과 일치하도록 튜닝 되지 않은 경우 I/O 요청에 디스크 당 한 번이 아니라 두 번의 쓰기가 필요하거나 모든 메타데이터가 한 디스크에서 종료되어 해당 디스크가 핫스팟이 될 수 있습니다. 이 문제를 방지하려면 파일 시스템을 생성하는 동안 파일 시스템이 있는 RAID 배열의 레이아웃과 일치하도록 설정해야 합니다.

    /etc/udev/rules.d/ 파일에서 스케줄러 설정이 가능합니다.
    1. udev 설정 파일 수정
    # cat /etc/udev/rules.d/99-scheduler.rules
    ACTION==”add|change”, SUBSYSTEM==”block”, ENV{IDNAME}==”device system unique id”, ATTR{queue/scheduler}=”selected-scheduler”

    2. 변경사항 적용
    # udevadm control –reload-rules
    # udevadm trigger –type=devices –action=change

    3. 확인
    # cat /sys/block/device/queue/scheduler

    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/managing_storage_devices/index#setting-the-disk-scheduler-using-udev-rules_setting-the-disk-scheduler

  2. RAID에 대한 설명 중 옳은 설명을 고르시오.
    1. RAID 0 : 스트라이핑, 중복 없음. 처리량이 감소합니다.
    2. RAID 1 : 데이터 미러링. 중복된 이중 쓰기는 빠른 처리량을 나타냅니다.
    3. RAID 5 : 분산 패리티를 사용하는 블록 레벨 스트라이핑으로 한 개의 디스크 손실을 허용합니다.
    4. RAID 6 : 스트라이핑된 미러 세트. 여러 손실에도 지속됩니다. 충분한 성능을 제공합니다.

    ▸ 정답 보기정답
    3번

    해설
    RAID 0: 데이터 스트라이핑
    – 데이터를 여러 디스크에 분산하여 저장합니다.
    – 성능은 향상되지만, 하나의 디스크에 문제가 생기면 모든 데이터가 손실될 수 있습니다. 데이터 보호 기능 없음.

    RAID 1: 미러링
    – 데이터를 두 개의 디스크에 동시에 복제하여 저장합니다.
    – 높은 데이터 보호 기능을 제공하지만, 저장 공간의 효율성이 낮을 수 있습니다.

    RAID 5: 분산 패리티
    – 데이터와 패리티 정보를 여러 디스크에 분산하여 저장합니다.
    – 하나의 디스크가 손상되어도 패리티 정보를 사용하여 데이터를 복구할 수 있습니다.

    RAID 6: 이중 분산 패리티
    – RAID 5와 유사하게 동작하지만, 두 개의 패리티 정보를 사용하여 여러 디스크의 손상을 처리할 수 있습니다.

    RAID 10: 미러링 및 데이터 스트라이핑 결합
    – RAID 1과 RAID 0을 결합한 구조로, 높은 성능과 데이터 보호를 제공합니다.
    – 최소 4개의 디스크가 필요하며, 디스크의 절반 이상이 정상 동작해야 합니다.

  3. RHEL 8에서 제공되는 네 가지 다중 대기열 I/O 스케줄러 설정이 아닌 것을 고르시오.
    1. fifo_batch
    2. none
    3. mq-deadline
    4. kyber

    ▸ 정답 보기정답
    1번

    해설
    mq-deadline
    mq-deadline 스케줄러는 레거시 데드라인 I/O 스케줄러의 다중 대기열 버전을 구현합니다. 이 스케줄러는 I/O 작업(쓰기 또는 읽기)이 만료되기 전에 실행되도록 하기 위해 만료 시간 순으로 정렬된 두 개의 대기열(쓰기 대기열과 읽기 대기열)을 사용하여 I/O 작업 고갈을 완화합니다. 만료 시간이 임박하지 않은 경우 섹터별로 요청을 정렬하는 세 번째 대기열에서 I/O 작업이 실행됩니다. mq-deadline 스케줄러는 RHEL 8의 기본값으로, 다른 다중 대기열 스케줄러에서 아직 지원하지 않는 쓰기 작업의 도착 순서에 따른 처리 기능을 제공합니다.

    kyber
    kyber는 두 개의 대기열, 즉 동기(읽기) 요청 대기열과 비동기(쓰기) 요청 대기열을 사용하여 빠른 장치를 지원합니다. 이러한 대기열은 대기열로 전송되는 요청 작업 수를 엄격하게 제한하여 요청별 대기 시간을 관리합니다. 이렇게 하면 요청이 전달될 때까지 기다리는 시간이 제한되며, 높은 우선 순위의 요청이 빠르게 완료됩니다. kyber 스케줄러는 특히 SSD에서 처리량이 중요한 서버 부하에 선호되는데, 더 간단한 스케줄러 여서 요청이 더 빠르게 처리되기 때문입니다.

    bfq
    BFQ는 공평 공유가 시간 슬라이스가 아닌 요청된 섹터 수와 추론을 기반으로 하는 CFQ(Completely
    Fair Queuing) 스케줄러가 개선된 것입니다. BFQ는 특히 느린 장치 하드 디스크 장치에서 일관된 대화형 응답을 제공합니다. BFQ는 작업당 상대적으로 높은 오버헤드가 발생하므로, I/O 작업이 느리고 비용이 많이 드는 경우에 선택해야 합니다. BFQ는 느린 CPU와 같이 I/O 작업 비용이 낮고 처리량이 중요한 경우에는 적합하지 않습니다. 서버 워크로드에 SSD를 사용하는 경우 kyber와 같은 간단한 스케줄러를 사용하는 것이 좋습니다. 대화형 시스템 응답에 관심이 있고 느린 장치를 사용하는 사용자는 BFQ을 선택할 것입니다.

    none
    이 설정은 I/O 요청을 다시 정렬하지 않고 NVMe 디스크처럼 빠른 임의 I/O 장치를 지원합니다. 이 I/O 스케줄러는 noop 단일 대기열 기반의 I/O 스케줄러를 교체합니다.

    https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/8/html/monitoring_and_managing_system_status_and_performance/setting-the-disk-scheduler_monitoring-and-managing-system-status-and-performance

  4. 현재 디스크 sdc 의 I/O 스케줄러를 kyber로 변경할 수 있는 방법을 적으시오.

    ▸ 정답 보기정답
    echo “kyber” > /sys/block/sdc/queue/scheduler

  5. 아래 빈칸에 알맞은 답을 쓰시오.
    /dev/sdc 디스크에 대한 I/O 스케줄러를 재부팅 시에도 동일하게 적용 가능하도록 tuned profile을 생성해 구성하려고 합니다.

    # vi /etc/tuned/myprofile/tuned.conf
    [disk]
    devices=___
    ________=_____

    ▸ 정답 보기정답
    devices=sdc
    elevator=kyber

  6. 다음 /dev/sdc1 디바이스에 대해 아래 상황별 알맞은 명령어를 쓰시오.
    xfs 파일시스템 검사
    xfs 파일시스템 복구

    ▸ 정답 보기정답
    xfs_repair -n /dev/sdc1
    xfs_repair /dev/sdc1

  7. /dev/sdd1 파일 시스템 내의 배드블록이 있다는 가정하에, 배드블록 아이노드에 마킹하여 사용하지 않게 설정하는 e2fsck 명령어는?

    ▸ 정답 보기정답
    e2fsck -cv /dev/sdd1

  8. Linux 시스템의 리소스 확인 시, CPU가 디스크 I/O 작업의 완료를 대기하고 있는 시간을 의미하는 지표가 무엇인지 쓰시오.

    ▸ 정답 보기정답
    wa, iowait, wait

  9. 아래 빈칸에 알맞은 답을 쓰시오.
    Linux 시스템의 파일시스템인 XFS와 ext4 는 ___ 파일시스템으로서, 쓰기를 반영하기 전에 __이라는 공간에 먼저 변경 사항을 기록해 시스템이 전원을 잃거나 트랜잭션 완료가 불가능한 경우,
    저장되지 않은 정보를 복구하고 손상을 피할 수 있습니다.

    ▸ 정답 보기정답
    저널링, 저널

  10. 다음에서 설명하는 캐시의 이름을 적으시오.
    파일시스템 메타데이터와 관련된 블록들을 저장하고 있는 캐시 : _____
    파일의 내용을 저장하고 있는 캐시 : ______

    ▸ 정답 보기정답
    버퍼 캐시
    페이지 캐시

    해설
    버퍼 캐시는 블록 디바이스에 대한 캐시로 페이지 캐시와 유사한 용도로 사용되었지만 동일한 데이터 내용이 캐시되는 문제로 인해 커널 2.4 이후 페이지캐시로 대부분 통합되었고, 현재는 inode 블록과 같은 파일시스템의 메타데이터와 관련된 블록들을 캐싱하게 되었습니다.
    https://brunch.co.kr/@alden/25

  11. 아래 빈칸에 알맞은 답을 쓰시오.
    데이터베이스와 같은 어플리케이션은 직접 캐싱을 구현하며, 운영체제의 페이지 캐시를 우회하는 __ I/O 방식을 사용해 디스크로 직접 접근한다.

    ▸ 정답 보기정답
    direct

    해설
    캐시를 통하지 않고 디스크에 직접 쓰는 방식을 direct io 라고 하며, 이 반대는 buffered io 라고 합니다.


부팅

  1. 다음 중 UEFI 부팅에 대한 설명으로 옳은 설명을 고르시오.
    1. 부팅 단계에서 linux16, initrd16 명령으로 kernel과 ramdisk를 로드 합니다.
    2. UEFI 시스템은 MBR 파티셔닝을 사용할 수 없습니다.
    3. UEFI 파티션은 /boot 디렉토리에 마운트 됩니다.
    4. 기본으로 부팅되는 커널을 설정할 때 grub2-set-default 또는 grubby –set-default 명령으로 설정할 수 있습니다.

    ▸ 정답 보기정답
    4번

  2. (A)와 (B)에 알맞은 답을 넣으시오.
    systemd 서비스를 기동하였으나 몇 시간 후에도 완료 되지 않아 systemd가 현재 실행 중인 모든 작업을 확인하고자 합니다. 이때 사용할 수 있는 명령어는 systemctl ( A ) 입니다.

    ▸ 정답 보기정답
    list-jobs

  3. 빈칸에 알맞은 내용을 쓰시오.
    루트 암호를 재설정 하는 순서
    1. grub 설정에 rd.break를 추가하여 부팅
    2. switch_root:/# ___________
    3. switch_root:/# ___________
    4. sh-4.2# echo “root:newpassword” | chpasswd
    5. sh-4.2# ___________
    6. sh-4.2# reboot

    ▸ 정답 보기정답
    mount -o remount,rw /sysroot
    chroot /sysroot
    touch /.autorelabel

  4. 커널과 램디스크 이미지가 있는 디렉토리 경로를 쓰시오.

    ▸ 정답 보기정답
    /boot

  5. UEFI 가 부팅할 때 찾는 파티션과 해당 파티션이 파일시스템 타입을 쓰시오.

    ▸ 정답 보기정답
    ESP(EFI System Partition) , fat32

  6. /etc/default/grub 수정 후, 설정 파일에 반영하는 명령어를 쓰시오.

    ▸ 정답 보기정답
    grub2-mkconfig -o /boot/grub2/grub.cfg

  7. 제시된 정보를 보고 grubby 명령을 사용해서 3.10.0-1160.88.1.el7.x86_64 를 기본 부팅 커널로 수정하시오.


    ▸ 정답 보기정답
    grubby –set-default=/boot/vmlinuz-3.10.0-1160.88.1.el7.x86_64
    또는
    grubby –set-default-index=2

  8. 다음과 같이 특정 서비스의 의존성을 확인하기 위해 빈칸에 들어가야 할 옵션이 무엇인지 쓰시오.


    ▸ 정답 보기정답
    list-dependencies

  9. 빈칸에 들어갈 알맞은 답을 쓰시오.
    다음은 Linux 시스템의 부팅 관련 파일에 대한 설명입니다.
    BIOS 기준 부팅 과정에서 사용되는 GRUB 설정 파일의 경로는 ___________이며,
    GRUB 설정 파일에 사용하는 변수를___________ 경로에서 설정하고 변경할 수 있습니다.
    GRUB 변경은 ___________ 명령을 통해서 GRUB 설정 파일을 재 생성하여 적용됩니다.

    ▸ 정답 보기정답
    /boot/grub2/grub.cfg
    /etc/default/grub
    grub2-mkconfig

  10. 빈칸에 들어갈 알맞은 답을 쓰시오.
    Linux 시스템의 부팅 순서의 초기 단계
    시스템에 전원이 들어오면 BIOS 혹은 UEFI 펌웨어가 ____ 을 실행하여 하드웨어에 이상이 없는지 테스트합니다.
    펌웨어는 부팅 가능한 장치를 디스크에서 ____ 레코드가 존재하는지 여부를 통해 찾습니다.
    펌웨어는 부팅 가능한 장치에서 ____ 를 검색해 로드하고 제어를 전달합니다.
    부트 로더는 ____ 과 ____ 를 파일 시스템에서 메모리로 로드합니다.

    ▸ 정답 보기정답
    POST
    MBR, GPT
    부트로더, GRUB, GRUB2
    커널
    Initramfs


마무리

지금까지 오픈소스컨설팅 Linux 팀이 스터디한 내용을 알아보았습니다.

팀원들과 약 8주 간의 스터디를 회고해보면서 느낀 점은 같은 주제로 스터디를 하더라도 개개인이 알고 있는 지식과 중요하다고 생각되는 포인트가 모두 달라서 내가 부족하거나 몰랐던 부분은 다른 사람을 통해 보충 되었고, 남들에게 문제를 해설하면서 정보를 전달하는 입장이 되었을 때는 애매하게 알고 있던 지식을 더 명확하게 정립할 수 있었습니다.

사실 출제한 문제들은 그냥 공부를 해서 나온 문제도 있지만, 실제 고객사에서 발생하는 케이스들이 담겨있는 경험과 팁이 녹아있기도 합니다. 이 번 포스팅이 여러분들에게 도움이 되길 바라면서 글을 마치겠습니다.

감사합니다!

오픈소스를 다루는 것을 좋아하는 Linux팀의 엔지니어 조철진이라고 합니다. 기왕 일을 시작했다면 긍정적인 마인드를 가지려고 노력하며 다양한 IT기술에 관심이 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *