엔터프라이즈 리눅즈 02

AeZan·2023년 9월 13일
1
post-thumbnail

crontab

at
단일성 예약 작업

  • at 작업 설정
    at [option] time-spec

  • at 작업 확인
    atq

at now +2min
2분 뒤 processli 파일 생성 확인

crontab

cron -> 그리스어로 '시간'
tab -> table

'누가 어떤 작업을 몇 시에 하라고 걸었음' 을 정리

crontab 에서 중요한 것

  • 주기적으로 작업 반복
  • 누가 작업을 예약했는지

➡️ crontab 은 주기적으로 예약해 놓은 작업을 수행하는 명령어
(사람이 수동으로 작업하는 것이 아니라 정해진 시간에 시스템이 자동으로 작업)

crontab 구조
분          시        일         월         요일   command
0-59    0-23    0-31    1-12    0-7    command

작업 예약해보기

  1. 매 시간의 35분마다 what_time_is_it.txt 만들기

    crontab -e
    35 * * * * touch what_time_is_it.txt

  2. 매 분(1분)마다 date 명령어 사용한 결과값을 리다이렉션을 이용하여 date.log 라는 파일 생성하기

    crontab -e
    * * * * * date > /home/cronuser/date.log


*2분 간격 `*/2`
*crontab -l 으로 현재 로그인한 사용자가 걸어놓은 작업 볼 수 있음



디스크

*접시같은 모양 = 플래터

cylinder: 여러 개의 플래터의 트랙을 수직적으로 관통하는 부분

track: 플래터 표면에 동심원에 데이터를 저장하는 공간

sector: 트랙을 조각으로 쪼갠 것, 가장 작은 단위 (보통 512byte)

cluser: 섹터의 그룹

sector : 하드에 물리적으로 저장하는 단위
block: 파일 시스템에 저장하는 단위 (OS 가 인지하는 단위)


디스크 연결 인터페이스 방식

  • E-IDE
  • SATA
    가장 많이 사용하는 방식, 호환성 좋음, 서로 다른 규격의 메인보드에 디스크 연결 가능(SATA3 메인보드에 SATA2 디스크 연결 가능)
  • SCSI
  • SA-SCSI

파티션

  • 물리적 디스크를 논리적으로 나누는 단위
  • 하나의 디스크를 나누어 여러 개의 디스크가 있는 것처럼 사용
  • 파티션을 나누면 어떤 파티션에 문제가 생겨도 다른 파티션엔 영향X

*왜 굳이 나눠서 관리 함? 사용자의 목적에 따라 나눠 관리를 용이하게 하기 위해서

파티션 테이블 스키마

파티션에 관한 메타 데이터 저장 방식

MBR

  • 섹터 주소 32bit 파티션 테이블
  • 하드 디스크의 가장 앞부분(첫번째 섹터)에 기억
  • BIOS, UEFI 메인보드 펌웨어에 모두 대응
  • 주요 파티션 3-4개, 확장 파티션 1개 -> 확장 파티션에서 논리 파티션 추가하여 파티션 개수 늘림
  • 최대 사이즈 2TB (3TB 디스크 장착 후 사용시 1TB는 버리는 것)

GPT (최신식?)

  • 섹터 주소 64bit 파티션 테이블
  • 하드 디스크의 처음과 끝에 기억됨 -> 끝 부분에는 장애 복구를 위한 백업 용도로 중요 데이터 복제
  • UEFI 메인보드 펌웨어에만 대응
  • 최대 128개의 파티션 가능
  • 3TB 이상의 디스크 사용시 GPT 방식 사용
  • 최대 사이즈 8ZB

확장 파티션(extended partition)은 데이터 저장은 불가하고, 부족한 파티션 테이블 영역 확장 용도
확장 파티션 영역에 생성되는 논리 파티션은 데이터 저장이 가능하나 OS 설치하여 부팅은 불가


파티셔닝

fdisk [파티셔닝할 디스크]

*m 으로 명령어 확인 가능

n: 새로운 파티션 추가
p: 파티션 타입 - 주요 파티션
w: 파티션 테이블에 기록(저장)

*시작 섹터와 마지막 섹터는 섹터 주소(10485759) or 용량 (+2G)
*5G 중 3G 만 파티셔닝하게되면 나머지 2G 는 죽은 공간이 됨

WARNING: Re-reading the partition table failed with error 16: Device or resource busy
-> 사용 중인 디스크 파티션 시도 시에 나오는 문구

partprobe [파티셔닝한 디스크]
위 명령어로 커널에서 변경된 파티션의 정보 인식시킴


파일시스템

파일의 규칙/정리되는 룰 없이 디스크에 데이터가 저장되면 OS 의 많은 자원 낭비
따라서 파일시스템과 같은 파일 관리 체계 필요

파일시스템 종류

-MINIX
-EXT

  • POSIX 표준, ext3 부터 저널링 기능 추가. ext4 는 용량이 커지고 이전 버전과 호환

-XFS

  • POSIX 표준, ext4 보다 더 발전된 파일시스템

-FAT
-ISO9660
-UDFS

*저널링-스토리지에 데이터 변경이 반영되기 전에 journal 영역에 변경 이력을 저장하고 반영

분산 파일시스템
여러 대의 서버를 클러스터로 묶어놓은 것을 외부의 사용자는 하나의 노드인 것처럼 이용

  • NFS: 리눅스에서 파일 공유 목적으로 만든 분산시스템 방식, 네트워크를 통해 공유 장원을 로컬 자원처럼 사용 가능
  • SMB: 윈도우-리눅스 간의 파일 공유 기능 제공, 리눅스에선 Samba 통해 SMB 공유 제공 가능 (CIFS - SMB 확장 버전)

마운트

  • 일대일 논리적 연결
  • 파일시스템에 접근할 수 있는 경로 생성하는 것
  • 본래 마운트 정보는 메모리에 올라가기 때문에 재부팅 시 마운트된 파일시스템 전부 해제됨
  • 파일시스템 테이블에 마운트 정보를 기록해야 부팅때마다 마운트됨
  • /etc/fstab 에서 파일시스템 마운트 정보를 가져와 파일시스템을 마운트

파일시스템 생성

mkfs -t [filesystem-type] [디스크/파티션]

마운트 포인트 지점 생성 mkdir [디렉터리 경로]
마운트 mount [장치 이름] [마운트 포인트]

*df -h 명령어로 마운트된 장치만 확인 가능


마운트 정보 등록하기

/etc/fstab 파일에 다음과 같은 내용 추가

장치이름[/dev/~ or UUID] 마운트 포인트 파일시스템 타입 옵션 덤프유무 체크유무

mount -a 파일시스템 테이블에 등록된 항목 중 마운트 되지 않은 항목 마운트

*만약 파일 수정 후 부팅되지 않으면 문법 오류이니 root 로그인 후 위 파일에 가서 수정 or 제거 하면 됨


쓸데 없는 궁금증

  • 파일시스템 생성을 안해주면?

-> 당연히 마운트 안됨

  • 마운트 할 때 파티션된 2개의 장치를 하나의 디렉토리를 바라보게 하면 어떨까?

-> sd1, sd2 를 시도, 나중에 마운트시킨 sdc2 만 올라오게 됨

sdc1 은 잘못된 argument 라고 한다 -> 마운트 되었다고 인식안하는 듯

  • 위 상황에 이어서 마운트되지 않은 sd1 을 다시 마운트 해주면?

다시 디렉토리를 만들고 마운트 포인트를 다르게 마운트하면 lsblk 에선 제대로 출력됨
sdc2 또한 마지막에 마운트해준 지점으로 변경됨

df -h로 마운트된 장치만 보여주는 명령어 사용 시 sdc2 만 마운트 된, 여전히 이전과 같은 마운트 포인트인것을 볼 수있음

-> 마운트는 덮어 씌워지지만 실제로 마운트가 되지는 않음

  • 위 상황을 유지한 채 마운트 해제를 시켜보았다.

sdc2 의 이전 지점으로만 바뀌고, 실제로는 마운트 해제 안됨.

한번 더 마운트 해제를 해봄

-> mount를 두번하면 덮어씌워지고, umount도 마운트한 만큼 사용해야 마운트가 해제됨


추가로 해봄

(sdc2 마운트 후 sdc1 을 같은 디렉토리에 마운트)
서로 순서를 바꿔서 마운트 해보았으나, 그냥 최근에 마운트한 장치가 마운트되는 것을 확인

0개의 댓글