기본 콘텐츠로 건너뛰기

8. cp

안녕하세요, MJ 입니다. 리눅스 파일복사 명령어 cp 에 대해 알아보겠습니다. 리눅스 cp 명령어는 윈도우 copy 명령어와 같은 기능을 합니다. 파일이나, 디렉토리를 복사 할 때 사용됩니다. cp 명령어의 도움말을 확인 해 보겠습니다. 펼치기/접기 Usage: cp [OPTION]... [-T] SOURCE DEST   or:  cp [OPTION]... SOURCE... DIRECTORY   or:  cp [OPTION]... -t DIRECTORY SOURCE... Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. Mandatory arguments to long options are mandatory for short options too.   -a, --archive                same as -dR --preserve=all       --attributes-only        don't copy the file data, just the attributes       --backup[=CONTROL]...

1. 리눅스의 buffer와 cache

안녕하세요, MJ 입니다.

리눅스 명령어 free 를 설명하다 보니 buffer 와 cache 에 대한 설명이 필요하게 되었는데, 내용이 짧지 않아 별도 포스트를 작성합니다.

우선 buffer 와 cache 는 I/O 성능 향상을 위한 메모리 영역입니다.

  1. buffer/cache 의 필요성 

    블록 디바이스(하드디스크 등 디스크에 해당하는 저장 장치)에 있는 데이터를 읽거나, 새로운 데이터를 저장하는데, 이런 저장 장치는 다른 장치들(메모리,CPU-cache)에 비해 속도가 느립니다. I/O 가 일어날 때 마다 디스크에 접근하여 파일을 읽고 쓴다면 너무 오래 걸려서 다른 프로세스의 처리에 지장이 생길 수 있습니다. 이러한 문제를 해결하기 위해 캐시가 필요하게 됩니다.

  2. 캐시란

    커널은 디스크를 빠르게 사용하고자 메모리의 일부를 디스크의 캐시로 사용합니다.

  3. 캐시의 동작

    한번 읽은 파일의 내용을 캐시 영역에 저장한 뒤, 다시 해당 파일을 읽으려 시도할 때, 메모리 영역에 아까 저장 해 둔 내용을 바로 처리할 수 있게 하는 것 인데, 바로 이 메모리를 buffer, cache 라고 합니다.

  4. buffer 와 cache의 차이

    buffer 와 cache 의 차이에 대해 설명 하기 위해 부가적인 설명을 추가합니다.

    [unix 파일시스템의 구조]

    → 유닉스의 파일시스템은 디렉토리와 파일을 찾기 쉽도록 유지 및 관리하는 시스템으로 4가지의 블록으로 구성되어있습니다.

    1. Boot block → 부팅에 필요한 정보를 담고 있습니다.
    2. Super block → 파일시스템의 어디부터가 i-node 블록인지, Data 블록인지 등의 정보를 담고 있습니다.
    3. i-node List → 파일 하나에 i-node 하나가 할당이 되는데 i-node 는 파일의 메타 데이터를 갖고 있습니다. 이 i-node 묶음으로 파일의 퍼미션, 소유자, 크기, inode 번호 등의 정보를 갖고있습니다.
    4. Data block 데이터가 저장되는 영역으로 각 데이터 블록은 한번에 하나의 파일만 할당이 될 수 있습니다.

    buffer 와 cache 의 차이를 설명하기에 앞서,
    buffer 는 buffer cache,
    cache 는 page cache
    용어를 정정하고 차이점을 설명 드립니다.

    buffer cache 는 Super Block 과 i-node list 에 해당하는 메타 데이터를 저장합니다. 디렉토리를 읽고자 하는 경우에는 디렉토리에 포함되어있는 파일들의 i-node block 들을 buffer cache 에 저장하고, 다음에 다시 그 파일에 접근하게 되면 buffer cache 에 존재하는 값을 가져다가 바로 보여주게 됩니다. 파일로의 접근을 빠르게 수행하기 위한 캐시라고 볼 수 있고,

    page cache 는 한번 읽었던 파일의 내용을 저장하여 동일한 파일로 I/O 요청이 일어나면, 디스크로부터 다시 파일의 내용을 읽어 올 필요가 없이, page cache 에 저장 된 내용을 보여줄 수 있어 I/O 성능이 향상 될 수 있습니다.

    → buffer (buffer cache)는 파일을 빠르게 접근 하기 위한 캐시, cache (page cache)는 파일의 내용을 빠르게 확인 하기 위한 캐시 가 되겠습니다.

    요청이 read 일때는 이렇습니다.


    write 요청이 일어나게되면, page cache 로 데이터를 작성하게 됩니다.

    아직 디스크에 저장하지 않은 이 데이터는 페이지 테이블이 수정 된 것이라는 의미로 dirty 플래그를 붙이게 되고, 이 플래그가 붙은 페이지를 dirty page 라고 부릅니다.
    dirty page 는 커널의 백그라운드로 처리되어 쓰기 작업에서도 메모리를 활용하여 성능이 향상됩니다.

     

    읽어주신 분들이 이해가 잘 되셨으면 좋겠습니다. 


        문의사항은 댓글을 달아 주시면 성심껏 답변 드리겠습니다.

            감사합니다.

댓글

가장 많이 본 글

2. 버추얼박스(2/2): VM생성

안녕하세요, MJ입니다.   VM 생성 후 , OS 설치를 해야 VM 을 사용 해 볼 수 있을텐데 ,   현재 서버용 OS 로 가장 많이 사용되는 Red Hat 리눅스로 하고싶지만 , 라이선스 문제로 커뮤니티 버전의 OS 중에 Red Hat 계열의 Rocky Linux 로 제가 마음대로 결정 해 보았습니다 . ( 버전은 현재 기준으로 최신 9.4 버전 )   현재는 OS 를 설치 하기위한 미디어가 없는줄로 압니다 . 설치 미디어를 다운로드 하는데에 시간이 걸리기때문에 , 설치미디어 다운로드를 먼저 걸어놓고 , VM 생성을 하겠습니다 .   1. Rocky Linux – 9.4 iso 이미지 다운로드 URL: https://rockylinux.org/download   ( " DVD ISO " 버튼을 클릭하면 다운로드가 시작됩니다 . )   2 . VM 생성 2-1) 기본정보입력 버추얼 박스 프로그램 실행 . 새로만들기 버튼 클릭 생성 할 VM 의 이름을 작성 iso 이미지를 다운로드 중이므로 아직 선택하지 않고 넘어갑니다 . OS 종류로 "Linux" 를 선택 OS 배포판으로 "RedHat 9.x (64bit)" 을 선택 ( Rocky Linux 가 래드햇계열인데 , 목록에 Rocky Linux 가 없어서 ) 다음 버튼 클릭   iso 이미지를 넣고 시작하게 되면 , 무인 설치 건너뛰기 옆 체크박스에 체그가 안 된 상태가 확인되는데 , 무인설치를 하지 않도록 체크를 해 주세요 . ( 설치 과정을 봐야하기때문에 무인설치가 안되면 좋겠습니다 .)   2-2) 스펙 : 메모리 용량 , CPU 개수 , BootMode("Legacy"/E...

1. 버추얼박스(1/2): 설치

안녕하세요, MJ입니다. 나의 환경에서 리눅스 머신을 별도로 구동시키고 , 테스트 해 보기위해 가상환경이 필요하게 됩니다 . 가상환경이라고 해서 거창한것처럼 보일 수 있지만 , 가상환경은 가상의 머신을 구동 시킬 수 있는 환경으로 버추얼 박스 , VMWare, Hyper-V, QEMU 정도가 알려진 가상환경 에뮬레이터 라고 볼 수 있겠습니다 .   이 중에서 완전 무료로 사용할 수 있는 것은 Hyper-V 와 QEMU 이지만 , VirtualBox 역시 ExtensionPack 을 설치하지 않는다면 상업용으로도 무료로 사용할 수 있습니다. (비 상업적인 용도로는 ExtensionPack을 설치해도 무료입니다) 조작 및 사용방법이 간단한 VirtualBox 를 이용해 가상 환경 구성을 위한 방법에 대해 소개 하겠습니다 .     1) 버추얼박스 다운로드 - 사이트 : https://virtualbox.org 사이트 접속 후 왼쪽 Downloads 클릭 Windows hosts 클릭 다운로드 된 프로그램을 실행 .   2) 버추얼박스 설치 실패 , 추가 프로그램 확인   버추얼박스 설치 시도 시 "microsoft visual c++ 2019 redistributable package being installed first" 이런 메시지가 확인되었고 , 버추얼박스 설치는 되지 않았습니다 . 구글에서 "microsoft visual c++ 2019 redistributable package being installed first" 이 메시지를 검색해서 첫번째로 확인되는 마이크로소프트 사이트 방문 . 버추얼박스 설치 실패 시 확인된 Redistributable 프로그램을 찾아가 내 OS 의 아키텍처와 일치...

6. OS 설치 후 확인(Rocky Linux - 9.4 )

안녕하세요 MJ 입니다 .   지난번 설치 했던 OS (Rocky Linux - 9.4) 의 부팅 된 화면 입니다 .   번 시간에는 OS 설치 시 설정 했던 내용들에 대해서 하나씩 잘 설정이 적용 되었는지 확인을 해 보도록 하겠습니다 .   [ 설치 시 설정 한 메뉴 ] root 계정 설정 일반유저 생성 타임존 패키지 꾸러미 선택 파티셔닝 네트워크     설정확인 (1/6): root 계정 설정 지정한 패스워드로 로그인을 시도 해 봅니다 . 로그인이 잘 됩니다 . ( 패스워드 설정 확인 )   설정확인 (2/6): 일반유저 생성 로그인 확인 일반유저도 로그인이 잘 됩니다 . ( 패스워드 설정 확인 )   관리자 권한 추가그룹으로 wheel 이 확인됩니다 . ( 관리자 권한 확인 ) : gid 에 표시된 그룹과 , groups 에 표시 된 그룹은 다른 것 입니다 . 계정은 소유자 아이디와 그룹 아이디를 필수로 가져야하고 , 다른 그룹을 가지는 것은 추가그룹 이라고 합니다 . uid 는 여러 개 가질 수 없지만 , 그룹은 여러 개를 가질 수 있습니다 .   Red Hat 계열의 리눅스 기준으로 , ~6 버전까지는 500 번이 일반 유저가 가지는   UID/GID 의 시작이고 , 7~ 버전부터는 1000 번이 시작되며,   기본 관리자 그룹으로 wheel 이 생성 및 설정 됩니다.     설정확인 (3/6): 타임존   설정 한 대로 , 한국시 (Asia/Seoul) 확인이 확인됩니다 .   설정확인 (4/6): 패키지 꾸러미 선택 선택 했던 ...