2. 리눅스의 설치

2.1 리눅스 설치 및 유형

2.1.1 리눅스 설치 유형

  • Minimum: 필수 패키지만 설치
  • Desktop: 개인용 컴퓨터에 적합한 패키지 설치
  • Server
    • Basic: 서버 운영 관련 필수 패키지 설치
    • Web: 아파치 서버 관련 패키지 설치
    • FTP: 파일 전송 서버 관련 패키지 설치
    • DB: 데이터베이스 서버 관련 패키지 설치
  • Laptop: 노트북 PC 관련 패키지 설치
  • Virtual Host: 가상화 시스템 관련 패키지 설치
  • Software Development Workstation: 소프트웨어 관리를 위한 도구를 포함한 패키지 설치

2.1.2 배포판 설치

사용자 지정 설치를 제외한 다른 설치 유형은 설치 과정에서 자동으로 하드디스크💾를 재구성하므로 기존 자료는 모두 삭제된다.

2.2 리눅스 부트

2.2.1 부트 매니저

사용자의 PC에 다양한 운영체제를 설치할 경우, 부팅 시 필요로 하는 운영체제를 선택하여 부팅할 수 있게 하는 기능이다.

2.2.2 리눅스 부팅 과정

ROM-BIOS 실행 → 부트 로더 실행 → 스와퍼 스로세스 실행 → ‘init’ 프로세스 실행 → 부트 레벨 결정 → ‘rc.sysinit’ 스크립트 실행 → ‘rcx.d’ 스크립트 실행 → X 윈도 실행

2.2.3 부트 로더 (Boot Loader)

컴퓨터를 사용자가 사용할 수 있도록 하드디스크에 저장된 운영체제를 주기억장치에 적재해 주는 프로그램이다.

  • LILO: 리눅스 운영체제에서만 사용 가능
  • GRUB: 리눅스 운영체제 외에도 사용 가능, 대화형
    • GRUB 환경설정 파일 내용:
      • default: 초기 부팅화면에서 메뉴 미선택시 기본 부팅 메뉴 선택
      • timeout: 초기 부팅화면에서 대기 시간을 초단위로 설정
      • splashimage: 초기 부팅화면 배경 설정
      • password: GRUB 모드로 들어가기 위한 암호화된 패스워드
      • title: 초기 부팅화면의 메뉴에 나타나는 제목을 설정
      • root: 해당 메뉴로 부팅 시 사용할 루트 장치를 설정
      • kernel: 커널 이미지 파일의 경로를 설정
      • initrd: SCSI 하드디스크를 사용하는 경우 반드시 지정해야 함
    [root@localhost ~]# cat /boot/grub/grub.conf
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE: You hava a /boot partition. This means that
    #     all kernel and initrd paths are relative to /boot/, eg.
    #     root (hd0,0)
    #     kernel /vmlinuz0version ro root=/dev/sda3
    #     initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=0
    splashimage=(hd0,0)/grub/splash.xpm.gz
    password --md5 $1$6h8Y01$HIA5xjCDV9VznbBAZw05o1
    hiddenmenu
    title CentOS (2.6.18-308el5)
          root (hd0,0)
          kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/
          initrd /initrd-2.6.18-308.el5.img 
    

2.2.4 👟런 레벨

런 레벨 실행 스크립트 파일:

[root@localhost ~]# pwd
/etc/rc.d
[root@localhost ~]# ls -l
drwxr-xr-x. 2 root root 70  10월 16일 2019 init.d
-rw-r--r--. 1 root root 473 10월 31 2018 rc.local
drwxr-xr-x. 2 root root 45  10월 16일 2019 rx0.d
drwxr-xr-x. 2 root root 45  10월 16일 2019 rx1.d
drwxr-xr-x. 2 root root 45  10월 16일 2019 rx2.d
drwxr-xr-x. 2 root root 45  10월 16일 2019 rx3.d
drwxr-xr-x. 2 root root 45  10월 16일 2019 rx4.d
drwxr-xr-x. 2 root root 45  10월 16일 2019 rx5.d
drwxr-xr-x. 2 root root 45  10월 16일 2019 rx6.d
  • init.d: 여러 가지 서비스 데몬들을 시작, 종료, 재시작하는 스크립트 파일들이 저장됨
  • rc.local: 부팅 시 자동으로 명령어 스크립트를 수행하며, 일반적으로 시스템 부팅 시 자동으로 실행될 명령어를 추가하여 사용하는 스크립트 파일
  • rc0.d ~ rc6.d: 🏃🏿런 레벨별로 실행해야 하는 서비스들의 디렉터리

런 레벨 설정:

[root@localhost ~]# cat /etc/inittab
id:runlevels:action:process

런 레벨 운영 모드:

런 레벨 운영 모드
0 Halt
1 Single User Mode
2 Multi User Mode (Without Networking)
3 Multi User Mode (Only Console Login)
4 Not Used
5 Multi User Mode With Display Manager
6 Reboot

2.2.5 로그인 및 로그아웃

  • 로그인 과정: 프롬프트에서 ID와 PASSWORD를 입력 → 입력한 패스워드와 ‘/etc/passwd’ 파일 비교 후 일치하면 로그인을 허용👍
  • 프롬프트의 종류:
    • root: [root@localhost ~]#
    • 일반 사용자: [test@localhost ~]$
  • 로그인 메시지 출력:

    출력 파일 설명 상태
    /etc/issue 로컬 접속 시 메시지 출력 로그인 전
    /etc/issue.net 원격 접속 시 메시지 출력 로그인 전
    /etc/motd 로컬, 원격 접속 시 로그인 성공 후 메시지 출력 로그인 후
  • 로그아웃
    • 명령어: logout, exit, Ctrl + D
    • 자동 로그아웃 설정

        [root@localhost ~]# cat /etc/profile
        .....
        # 300초 후에 자동 로그아웃
        export TMOUT=300
        .....
      

2.2.6 시스템 종료 명령어

  • [root@localhost ~]# shutdown [options] [time] [warning message]
    • --help
    • -H --halt 시스템을 안전하게 종료
    • -P --poweroff 시스템 강제 종료
    • -r --reboot 시스템 재시작
    • -h equivalent to –poweroff, override by –halt
    • -k don’t halt/power-off/reboot, just send warnings
    • --no-wall don’t send wall message before halt/power-off/reboot
    • -c Cencel a pending shutdown
    • -t 지정 시간에 시스템을 종료하거나 재시작
    • -m ’m’분 후에 시스템을 종료
  • [root@localhost ~]# init [run-level]
  • [root@localhost ~]# halt [option]
    • -f --force Force immediate halt/power-off/reboot
  • [root@localhost ~]# poweroff

2.2.7 시스템 재시작 명령어

  • [root@localhost ~]# reboot [option]
    • -f --force Force immediate halt/power-off/reboot

2.3 📁파일 시스템과 파티션

2.3.1 파일 시스템

파일 시스템은 하드디스크의 데이터를 읽고, 쓰고, 검색하기 위한 준비의 규칙을 정리한 것으로 파일에 이름을 붙이고 저장이나 검색을 위해 파일을 어디에 둘 것인지 나타내는 모든 조직체계이다.

  • 파일 시스템의 기능:
    • 파일에 대한 다양한 종류의 접근제어 방법 제공
    • 파일의 생성, 수정, 삭제 등을 관리
    • 파일의 무결성 유지 및 보안 유지
    • 데이터의 백업 및 복구기능 제공
    • 데이터의 효율적 저장과 관리 방법 제공
  • 파일 시스템 종류:
종류 유형
리눅스 ext, ext2, ext3, ext4 (EXTended file system)
저널링 JFS, XFS, ReiserFS
네트워크 SMB, CIFS, NFS
윈도우 FAT, FAT32, VFAT, NTFS (File Allocation Table)
CD-ROM iso9660
유닉스 HPFS, SysV
클러스터링 Redhat GFS, IBM GPFS, IBM SanFS, Compaq CFS, Oracle OCFS2

2.3.2 파티션

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

  • 종류:
    • Primary Partition: 주 영역 파티션, 최대 4개까지 만들 수 있음
    • Extend partition: 확장 영역 파티션, 최대 1개까지 만들 수 있음
    • Logical Partition: 논리 영역 파티션, Extend Partition 안에 만들 수 있고 최대 12개까지 만들 수 있음
    • Swap Partition: 하드디스크 일부를 주기억장치처럼 사용하는 가상기억장치
  • 장점: 부팅시간 단축, 안정성, 백업 및 업그레이드 편리
  • [root@localhost ~]# fdisk [options] [disk]
    • -a 부팅 가능한 플래그로 지정
    • -l --list display partitions and exit
    • -m print this Menu
    • -n add a New partition
    • -t change a partition Type
    • -w Write table to disk and exit
    • -p Print the partition table
    • -q Quit without saving changes
  • 디스크와 장치명:

    플로피 디스크 첫 번째 플로피 디스크 /dev/fd0
      두 번째 플로피 디스크 /dev/fd1
    IDE 유형 디스크 Primary Master /dev/hda
      Primary Slave /dev/hdb
      Secondary Master /dev/hdc
      Secondary Slave /dev/hdd
    SCSI 유형 디스크 첫 번째 드라이브 /dev/sda
      두 번째 드라이브 /dev/sdb
    CD-ROM SCSI CD-ROM /dev/scd0 또는 /dev/sr0

2.3.3 디렉터리

최상위 디렉터리(/) 아래로 계층적 트리🌲 구조

/ 최상위 디렉터리 (루트)
/bin System Binary의 약어로 이진 파일이며, 리눅스 기본 명령어가 저장
/usr 시스템에 사용되는 각종 프로그램이 설치
/etc 리눅스 시스템의 각종 환경설정 파일과 디렉터리가 저장
/sbin 시스템 관리를 위한 명령어가 저장
/lib 프로그램의 각종 라이브러리 파일이 저장된 디렉터리로 유틸리티, 패키지 등이 포함
/var 시스템에서 사용되는 동적 파일들을 저장 각종 시스템 로그파일, 사용자 로그인 로그 기록 메일서버 운영 시 사용자에게 전송된 메일을 임지 저장
/tmp 임시 디렉터리로 스티키 비트가 설정
/root 시스템 관리자의 홈 디렉터리
/proc 시스템의 각좀 프로세서, 프로그램 정보, 하드웨어 정보가 저장 가상 파일 시스템으로 하드디스크에 물리적인 용량을 가지지 않음
/dev 시스템의 각좀 장치에 접근하기 위한 장치 드라이버가 저장
/home 일반 사용자의 홈 디렉터리

2.3.4 LVM (Logical Volume manager)

  • 여러 개의 물리적인 하드디스크를 하나의 논리적인 대용량 파일 시스템으로 만듦
  • 디스크를 유연하게 관리할 수 있도록 도움

2.3.5 RAID (Redundant Array of Independent Disks)

  • 여러 개의 무리적인 하드디스크를 하나늬 논리적인 디스크로 인식하게 만드는 기술
하드웨어 RAID ‘RAID’ 기능을 하드웨어로 구현 안정적이지만 고가
소프트웨어 RAID ‘RAID’ 기능을 소프트웨어로 구현 하드웨어 구성에 비해 성능향상이 적고 안정성이 떨어짐
  1. RAID 0: 빠른 데이터의 입출력을 위해 스트라이핑(Striping)을 사용 하나의 💿디스크에 오류 발생 시 모든 데이터를 잃을 수 있음
  2. RAID 1: 두 개 이상의 디스크를 🪞미러링(Mirroring)을 통해 하나의 디스크처럼 사용 용량이 절반밖에 되지 않지만, 오류가 발생하면 미러링 디스크로 복구가 가능
  3. RAID 0 + 1: 최소 4개 이상의 디스크에서 먼저 2개씩 ‘RAID 0’으로 묶고 이것을 다시 ‘RAID 1’로 결합하는 방식
  4. RAID 2: 오류 정정을 위해 해밍 코드(Hamming code)를 사용하는 방식 최근 디스크 드라이브에는 기본적으로 오류 검출 기능이 있어 거의 사용하지 않음❌
  5. RAID 3/4: 하나의 디스크를 패리티 정보를 위해 사용하고, 나머지 디스크에 데이터를 균등하게 분산 저장하는 방식 읽기 성능은 ‘RAID 0’과 비슷하나, 쓰기는 패리티 처리로 인해 일부 성능 저하가 발생 하나의 디스크에 오류가 발생하면 패리티 디스크를 통해 복구가 가능 병목 현상이 발생하면 성능 저하가 발생할 수 있음
  6. RAID 5: 3개 이상의 디스크를 사용하여 하나의 디스크처럼 사용하고, 각각의 디스크에 패리티 정보를 저장하는 방식 패리티 디스크를 별도로 사용하지 않아 병목 현상이 발생하지 않는다.
  7. RAID 6: 하나의 패리티를 두 개의 디스크에 분산 저장하는 방식 패리티를 이중으로 저장하기 때문에 두 개의 디스크에 오류가 발생해도 복구 가능