ioerror

sync 사용법 및 옵션 - 버퍼 캐시의 변경된 데이터를 디스크로 강제 동기화하는 명령 본문

OS

sync 사용법 및 옵션 - 버퍼 캐시의 변경된 데이터를 디스크로 강제 동기화하는 명령

반응형

sync - Synchronize cached writes to persistent storage

메모리(RAM)의 버퍼 캐시(Buffer Cache)에 임시 저장되어 있는 변경된 파일 시스템 데이터(Dirty Buffer)를 실제 물리적 디스크 저장소로 즉시 강제 기록(Flush)하는 유닉스 및 리눅스 기본 명령어이다. 시스템이 갑작스럽게 종료되거나 전원이 차단될 때 발생할 수 있는 데이터 손실 및 파일 시스템 손상을 방지하기 위해 사용된다. 과거 유닉스 시절부터 시스템 종료 전 필수적인 안전 조치로 활용되어 왔다.

1. sync 용도

  • USB 메모리, 외장 하드 등 이동식 저장 장치를 시스템에서 마운트 해제(Unmount)하거나 물리적으로 뽑기 직전에 데이터 완전 기록을 보장하기 위해 사용된다.
  • 시스템 재부팅, 셧다운 또는 커널 업데이트 작업 전 미저장된 파일 시스템 변경 사항을 디스크에 동기화할 때 사용된다.

2. sync 서식

sync [OPTION] [FILE]...

3. sync 옵션

옵션 설명 사용가능 OS 및 쉘
FILE 전체 파일 시스템이 아닌 지정한 특정 파일 또는 디렉터리가 속한 파일 시스템만 동기화한다. POSIX GNU Coreutils Linux
-f, --file-system 지정한 파일이 포함된 전체 파일 시스템의 동기화를 강제한다. GNU Coreutils Linux
-d, --data 메타데이터를 제외한 파일 데이터 부분만 디스크로 동기화한다. GNU Coreutils Linux
--help 명령어 사용법 및 도움말을 출력한다. GNU Coreutils Linux
--version 버전 정보를 출력한다. GNU Coreutils Linux
 
# 전체 파일 시스템의 버퍼 캐시 데이터를 디스크로 강제 동기화
sync

# 특정 이동식 드라이브 디렉터리의 데이터만 동기화 수행
sync /mnt/usb/data.tar.gz

# 데이터 동기화 완료 후 안전하게 장치 마운트 해제
sync && umount /mnt/usb
# (오류 없이 정상 반환되면 안전하게 장치 제거 가능)
  • sync: 별도의 표준 출력을 반환하지 않으며, 백그라운드 버퍼 플러시 작업이 완료되면 다음 프롬프트를 반환한다.
  • sync && umount /mnt/usb: 동기화 작업이 성공적으로 종료된 후 마운트 해제 명령을 연이어 안전하게 실행한다.

4. sync 특이사항(유의사항)

  • 현대의 최신 유닉스/리눅스 커널 및 systemd 기반 프로세스는 reboot나 shutdown 명령 실행 시 내부적으로 sync를 자동 호출한다. 그러나 예기치 못한 전원 차단이나 강제 종료(reboot -f 등) 시에는 수동 실행이 필요하다.
  • 대용량 파일 복사 직후 sync를 실행하면 I/O 병목으로 인해 명령 수행이 수 초에서 수 분간 대기(Blocking) 상태로 멈춘 것처럼 보일 수 있으나, 이는 캐시 데이터를 저장소에 쓰는 정상적인 과정이다.
  • 과기 유닉스 전통적인 관습으로 관리자들 사이에 sync; sync; sync처럼 명령을 세 번 연속 입력하는 습관이 존재했다. 이는 과거 비동기 디스크 I/O 처리 완료 시간을 벌어주기 위한 레거시 방식이었으나, 현대 OS에서는 단 일회의 sync 실행만으로 충분하다.

관련 명령어들

  • fsync: C 프로그래밍 및 스크립트 레벨에서 특정 파일 디스크립터의 캐시를 디스크로 동기화한다.
  • umount: 파일 시스템의 마운트 상태를 해제하기 전 내부적으로 버퍼 동기화를 진행한다.
  • dd: 데이터를 블록 단위로 복사하며 oflag=sync 옵션으로 실시간 동기화 쓰기를 지원한다.
  • drop_caches: /proc/sys/vm/drop_caches 설정을 통해 메모리 캐시를 강제로 비운다. Linux

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

 

반응형
Comments