[리눅스마스터 1급] 이기적 이론서 5회차 정리 - 파일 시스템 관리3

🏁 이기적 이론서 학습 범위

  • PART 01 리눅스 시스템 관리
    • CHAPTER 01 일반 운영 관리 (SECTION 02 파일 시스템 관리)

파일 시스템 관리

☑️ 스왑(Swap)

스왑

  • 시스템이 물리 메모리를 모두 소모했을 때 스왑을 활용하여 부족한 메모리 공간을 극복할 수 있다.
  • 시스템이 물리 메모리를 모두 소모하고 더 많은 메모리 공간을 필요로 할 때, 메모리상의 비활성화된 메모리를 스왑 공간으로 이동하고 메모리 공간을 확보하는 기술이다.
  • 물리 메모리보다 액세스 속도는 느리나, 가격이 저렴하고 용량이 큰 하드디스크를 사용한다.
  • 스왑 공간은 스왑 파티션이나 스왑 파일 형태로 만든다.
  • 과거에는 스왑의 크기가 RAM의 크기와 비례했다.
    • 요즘은 RAM의 크기가 수십, 수백 기가에 이르러 무작정 스왑 크기를 늘리는 건 무의미하다.
    • 스왑 공간의 크기는 시스템이 실제 사용하는 메모리의 양에 근거해 설정해야 한다.
  • 스왑 공간의 크기는 리눅스 설치 시 결정하지만, 실제 어느 정도 메모리를 소모할 지 예측하기 어려워 아래의 기준으로 스왑 공간을 마련하길 권장된다.

    시스템 물리 메모리 크기권장 스왑 공간
    4GB RAM 이하최소 2GB
    4GB~16GB RAM최소 4GB
    16GB~64GB RAM최소 8GB
    64GB~256GB RAM최소 16GB
    256GB~512GB RAM최소 32GB

스왑 파일 생성하기

  1. 스왑 목적으로 사용할 파일 생성하기
    • dd 를 사용하여 1048576 블록으로 구성된 /swapfile 을 생성한다.
    • 블록 한 개의 크기는 1024바이트이다.

        $ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
      
  2. 스왑 파일의 허가권 설정하기

     ```bash
     $ sudo chmod 600 /swapfile # 루트 사용자만 읽고 쓰기가 가능하도록 허가권 설정
     ```
    
  3. 스왑 파일 초기화

     ```bash
     $ sudo mkswap /swapfile # 스왑 역할을 수행하도록 지정한 파일 초기화
     ```
    
  4. 스왑 파일을 시스템에 인식하기

     ```bash
     $ sudo swapon /swapfile # 시스템에 새로운 스왑 파일 등록
     ```
    
  5. 스왑 상태 확인하기

     ```bash
     $ sudo swapon -s # 스왑 상태 확인
     ```
    
  6. 스왑 파일 설정을 영구적으로 설정하기
    • /etc/fstab 파일에 스왑 설정을 추가한다.
    • 시스템을 리부팅해도 스왑 설정은 유지된다.

        $ /swapfile swap swap defaults 0 0
      

스왑 파일 삭제하기

  1. 스왑 파일 해제

     $ sudo swapoff -v /swapfile # 시스템에서 스왑 파일 해제
    
  2. /etc/fstab 항목 삭제
    • 스왑 파일 설정을 영구적으로 저장하기 위해 사용했던 항목을 삭제한다.
  3. 스왑 파일 삭제
    • 추후 스왑 파일을 다시 활성화할 계획이 없다면 스왑 파일을 삭제한다.

        $ sudo rm /swapfile
      

스왑 파티션 생성하기

  1. 새 파티션 생성하기
    • 디스크의 사용하지 않은 영역이나 새로운 디스크를 추가한 후 파티션을 생성한다.

        $ sudo fdist /dev/sdc # /dev/sdc에 대해 새로운 파티션 설정
      
  2. 파티션 타입 변경하기
    • 파티션 타입을 스왑용으로 변경해야 한다.
    • 스왑용 파티션 코드는 ‘82’ 이고, 설정 순서는 ‘t → 82 → w’ 이다.
  3. 스왑 파티션 초기화하기
    • -L 을 사용하여 레이블이 MySwap이고 -c 를 사용해 배드블록을 검사한 후 스왑 파티션을 초기화한다.

        $ sudo mkswap -L MySwap -c /dev/sdc
      
  4. 스왑 파티션 활성화하기
    • 스왑 파티션 /dev/sdc 를 활성화한다.

        $ sudo swapon /dev/sdc
        $ swapon -s # 정상 수행되었는지 확인
      
  5. 스왑 파티션 설정 영구 적용하기
    • 설정을 영구적으로 적용하려면 /etc/fstab에 다음 항목을 추가한다.

            /dev/sdc       swap          swap     defaults    0 0 
      

스왑 명령어 세부 설명

  • mkswap
    • 지정한 디스크나 파티션에 스왑 영역을 설정한다.
    • 형식

        mkswap [option] swap_file OR swap_partition
      
    • 옵션

      옵션설명
      -c, —check스왑 영역을 생성하기 전에 배드블록을 체크한다.
      -l, —label라벨을 지정한다. 이 라벨을 통해 swapon 할 수 있다.
      -f, —force지정한 파일이나 파티션보다 더 큰 스왑 영역을 설정하려 한다면 실패해야 하나 무시하고 수행한다.
    • 예제
      • 스왑 크기는 생략 가능하고, 지정하지 않는 편이 낫다.
        $ sudo /swap-file 10240 # 10240킬로바이트의 스왑 파일 생성
      
  • swapon
    • 지정한 스왑 파일이나 스왑 파티션에 대한 스왑 기능을 활성화한다.
    • 형식

        swapon [option] swap_file OR swap_partition
      
    • 옵션

      옵션설명
      -a, —all- /etc/fstab에 설정된 모든 항목에 대해 스왑 기능 활성화
      - no auto 옵션을 사용한 항목은 제외한다.
      -s, —summary- 스왑 기능이 활성화된 스왑 파일이나 스왑 파티션 목록을 출력한다.
      - cat /proc/swaps와 동일 기능이다.
    • 예제

        $ sudo swapon -a # /etc/fstab 파일의 모든 항목에 대해 스왑 기능 활성화
              
        $ sudo swapon -s # 스왑 기능이 활성화된 항목을 확인
      
  • swapoff
    • 지정한 스왑 파일이나 스왑 파티션에 대한 스왑 기능을 비활성화한다.
    • 형식

        swapoff [option] swap_file OR swap_partition
      
    • 옵션

      옵션설명
      -a, —all/etc/fstab 상의 모든 항목에 대한 스왑 기능 비활성화
    • 예제

        $ sudo swapoff -a # 모든 스왑 기능 비활성화
      
  • free
    • 물리·스왑·커널 메모리의 사용량, 사용 가능한 메모리 양 등 메모리의 사용 상태를 출력한다.
    • 형식

        free [option]
      
    • 옵션

      옵션설명
      -b, —bytes메모리 정보를 바이트 단위로 출력한다.
      -k, —kilo메모리 정보를 킬로바이트 단위로 출력한다.
      -m, —mega메모리 정보를 메가바이트 단위로 출력한다.
      -g, —giga메모리 정보를 기가바이트 단위로 출력한다.
      -h, —human모든 필드 단위를 값에 따라 자동 선택하여 출력한다.
      -s, —seconds지정한 시간(초 단위)마다 출력을 갱신한다.
    • 예제

        $ free -hs 1 # 메모리 사용량을 주어진 값에 맞춰 단위를 자동 선택하여 1초마다 출력
      

☑️ 디스크 쿼터(Disk Quota)

디스크 쿼터 개요 및 설정 방법

  • 디스크 쿼터
    • 다중 사용자 시스템
      • 디스크는 크기가 정해진 자원이라 사용자별 디스크 사용량을 할당할 수 있는 방법을 제공한다.
      • 사용자가 할당량을 모두 사용 시, 관리자에게 알림을 통지할 수 있다.
    • 각 사용자마다, 각 그룹마다 설정할 수 있다.
  • 디스크 쿼터 설정 방법
    • /etc/fstab 파일을 편집하여 디스크 쿼터 기능을 활성화하고 분할된 파티션에 설정을 해야 한다.
    • ex. 별도의 디스크(/etc/sdb5)를 생성하고, 4번째 필드에 usrquotagrpquota를 지정해 사용자 쿼터와 그룹 쿼터를 활성화

        	$ sudo cat /etc/fstab
      
    • /etc/fstab의 수정사항을 반영하기 위해 해당 파일 시스템을 remount한다.

        $ sudo mount -o remount /quota-test
      
    • SELinux를 비활성화한다.

        $ sudo setenforce 0
      
    • 사용자를 위한 쿼터 파일을 생성하고 디스크 사용량을 설정한다.

        $ sudo quotacheck -mf /quota-test
      
    • 그룹을 위한 쿼터 파일을 생성하고 디스크 사용량을 설정한다.

        $ sudo quotacheck -gm /quota-test
      
    • francis 사용자에 대해 쿼터 정책을 설정한다.

        $ sudo edquota francis
      
    • mygroup 그룹에 대해 쿼터 정책을 설정한다.

        $ sudo edquota -g mygroup
      
    • 디스크 쿼터 기능을 시작한다.

        $ sudo quotaon /quota-test
      
    • 사용자 쿼터 기능과 그룹 쿼터 기능이 잘 설정되었는지 확인한다.

        $ sudo repquota /quota-test
        OR
        $ sudo repquota -g /quota-test
      

디스크 쿼터 관련 명령어

  • quotacheck
    • 지정한 파일 시스템에 대한 사용량을 체크해 쿼터 기록 파일을 생성하거나 기존 파일을 갱신한다.
    • 체크할 디렉터리 지정시 독립적으로 분리된 파티션의 마운트지점이어야 한다.
      • 분리된 파티션이 없다면 루트 디렉터리(/)로 지정한다.
    • 쿼터 기록 파일 이름은 aquota.user, aquota.group이다.
      • 기존 파일을 갱신하지 않고 새로 생성 시 -c 옵션을 사용한다.
    • 사용량 체크 시 파일 시스템을 읽기 전용으로 만들기 위해 remount 동작을 수행한다.
      • 이 기능을 사용하지 않으려면 -m 옵션을 사용한다.
      • 읽기 전용 파일의 사용량 체크에 실패한다면 -M 옵션을 통해 읽기 쓰기용으로 다시 remount 한 후 파일 시스템 사용량 체크를 강제해도 된다.
    • 형식

        quoatacheck [option] filesystem-directry
      
    • 옵션

      옵션설명
      -a, -all/etc/mtab 내의 NFS 파일 시스템을 제외한 모든 로컬 파일 시스템의 사용량을 모두 체크한다.
      -M, —try-remount파일 시스템을 읽기 전용으로 remount 한 후 동작 실패 시 읽기 쓰기용으로 다시 remount 하고 동작을 재시도 한다.
      -m, —no-remount파일 시스템을 읽기 전용으로 remount 하는 동작을 수행하지 않는다.
      -f, —force이미 쿼터 기능 활성화 상태에서 사용량을 체크해 새로 쿼터 파일을 생성할 때 사용한다.
      -u, —user사용자용 쿼터 파일을 체크할 때 사용한다.(기본 옵션임)
      -g, —group그룹용 쿼터 파일을 체크할 때 사용한다.
      -c, —create-files존재하는 쿼터 파일을 읽지않고 새롭게 사용량을 검색하고 쿼터 파일을 새로 생성한다.
    • 예제

        $ sudo quotacheck /quota-test # /quota-test 파일 시스템에 대해 사용자 쿼터 체크함
              
        # /etc/mtab에 정의된 모든 로컬 파일 시스템에 대해 사용자 및 그룹 쿼터 체크를 함
        $ sudo quotacheck -aug 
              
        # /quota-test 파일 시스템에 대해 읽기 전용 remount 없이 사용자 쿼터 체크를 함
        $ sudo quotacheck -mf /quota-test 
              
        # 기존 쿼터 파일을 참조하지 않고 다시 검색하여 새로 생성
        $ sudo quotacheck -cf /quota-test
      
  • edquota
    • 사용자 또는 그룹을 위한 쿼터를 편집한다.
    • 기본값으로 지정한 사용자나 그룹에 대한 쿼터 파일이 VI 에디터를 통해 열린다.
    • 설정 변경 후 저장하면 설정값이 변경된다.
    • 형식

        edquota [option] user or group
      
    • 옵션

      옵션설명
      -u지정한 사용자의 사용자 쿼터를 설정하며, 기본값이다.
      -g지정한 그룹의 그룹 쿼터를 설정한다.
      -t각 파일 시스템에 대해 soft time 제한에서 hard time 제한까지 유예시간을 설정한다.
      -p특정 사용자의 쿼터 설정을 다른 사용자에게 복제할 때 사용한다.
    • 예제

        # 지정한 francis 사용자의 쿼터 설정을 변경한다.
        $ sudo edquota francis
        OR
        $ sudo edquota -u francis # -u 옵션은 기본 옵션이므로 특별히 옵션을 주지 않아도 된다.
              
        $ sudo edquota -g mygroup # 지정한 mygroup의 쿼터 설정을 변경
              
        $ sudo edquota -p francis chris # francis의 쿼터설정을 그대로 chris에게 복사한다.
              
        $ sudo edquota -t # 각 파일 시스템의 유예기간을 설정한다.
      
  • repquoata
    • 시스템상 사용자 및 그룹의 파일 시스템 사용량과 쿼터의 정보를 출력한다.
    • 형식

        repquota [option] filesystem-directory
      
    • 옵션

      옵션설명
      -a, —all/etc/mtab상의 모든 파일 시스템의 정보를 출력한다.
      -u, -user사용자 쿼터 정보를 출력하며, 기본값이다.
      -g그룹 쿼터 정보를 출력한다.
    • 예제

        $ sudo repquoata /quota-test # /quota-test 경로의 사용자 쿼터 정보 출력
              
        $ sudo repquota -g mygroup /quota-test # /quota-test 경로의 그룹 쿼터 정보 출력
              
        $ sudo repquota -a # /etc/mtab에 설정된 모든 파일 시스템에 대한 모든 쿼터 정보 출력
      
  • quota
    • 사용자의 디스크 사용량과 쿼터 정보를 출력한다.
    • 형식

        quota [option] user or group
      
    • 옵션

      옵션설명
      -u, —user사용자 쿼터 정보를 출력한다. (기본값)
      -g, —group그룹 쿼터 정보를 출력한다.
    • 예제

        $ sudo quota # 현재 사용자에 대한 파일 시스템 사용량 및 쿼터 정보 출력
              
        $ sudo quota -u francis # 특정 사용자인 francis에 대한 쿼터 정보 출력
      
  • quotaon, quotaoff
    • quotaon : 지정한 파일 시스템의 쿼터 설정 활성화
    • quotaoff : 지정한 파일 시스템의 쿼터 설정 비활성화
    • 형식

        quotaon [option] filesystem-directory
        quotaoff [option] filesystem-directory
      
    • 옵션

      옵션설명
      -u, —user지정한 사용자의 쿼터 기능을 활성화, 비활성화한다.
      -g, —group지정한 그룹의 쿼터 기능을 활성화, 비활성화한다.
      -f, —offquotaon에 이 옵션을 사용하면 quotaoff와 동일한 기능을 수행한다.
    • 예제

        $ quotaon francis # francis 사용자의 쿼터 설정 활성화
        OR
        $ quotaon -u francis
              
        $ quotaon -g mygroup # mygroup 그룹의 쿼터 설정 활성화
              
        $ quotaoff francis # francis 사용자의 쿼터 설정 비활성화
      
  • setquota
    • vi 편집기 대신 명령줄에서 사용자 및 그룹의 쿼터 설정을 수행한다.
    • 형식

        setquoata [option] user or group block-soft block-hard inode-soft inode-hard
        setquota -t block-grace inode-grace filesystem-directory
      
    • 옵션

      옵션설명
      -u, —user사용자를 위한 쿼터 설정을 변경한다.
      -g, —group그룹을 위한 쿼터 설정을 변경한다.
      -t, —edit-period각 파일 시스템에 대해 soft time limit에서 hard time limit에 도달할 때까지 유예기간을 초 단위로 변경한다.
    • 예제

        # bob 사용자가 루트 파일 시스템(/)을 사용할 때 2GB의 사용량 제한과 1000000개의 아이노드 제한을 설정한다.
        $ sudo setquota -u bob 2097152 2097152 1000000 10000000 /
              
        # 루트 파일 시스템(/)에 대해 블록의 유예기간과 아이노드의 유예기간을 8시간으로 설정한다.
        $ sudo setquota -t 28800 28800 /
      

© 2021. All rights reserved.

yaejinkong의 블로그