KR20130104111A - 나스에서 데이터 처리 방법 - Google Patents

나스에서 데이터 처리 방법 Download PDF

Info

Publication number
KR20130104111A
KR20130104111A KR1020120025304A KR20120025304A KR20130104111A KR 20130104111 A KR20130104111 A KR 20130104111A KR 1020120025304 A KR1020120025304 A KR 1020120025304A KR 20120025304 A KR20120025304 A KR 20120025304A KR 20130104111 A KR20130104111 A KR 20130104111A
Authority
KR
South Korea
Prior art keywords
data
buffer
storage
file sharing
nas
Prior art date
Application number
KR1020120025304A
Other languages
English (en)
Inventor
오명원
Original Assignee
주식회사 히타치엘지 데이터 스토리지 코리아
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 히타치엘지 데이터 스토리지 코리아 filed Critical 주식회사 히타치엘지 데이터 스토리지 코리아
Priority to KR1020120025304A priority Critical patent/KR20130104111A/ko
Publication of KR20130104111A publication Critical patent/KR20130104111A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 NAS에서 데이터 처리 방법에 관한 것이다. 본 발명의 일 실시예에서, NAS에서 파일 공유 프로그램에 의해 스토리지와 네트워크에 연결된 IP 기기 사이에 데이터가 전송될 때, 상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터 또는 네트워크를 통해 전송된 또는 전송될 데이터를 임시로 저장하기 위한 커널 레이어의 버퍼에서 상기 파일 공유 프로그램이 동작하는 어플리케이션 레이어의 버퍼로 데이터를 복사하는 과정을 삭제하기 위한 제로 카피 방법이 적용되고, 상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터를 임시로 저장하기 위한 커널 레이어 내의 버퍼와 네트워크 어댑터에 포함된 버퍼 사이에 직접 메모리 접근에 의한 복사 방법이 적용될 수 있다. 또한, 상기 스토리지로부터 데이터를 읽기 위한 명령이나 상기 스토리지에 데이터를 쓰기 위한 입출력 명령을 둘 이상 저장하기 위한 큐 버퍼의 크기가 조절될 수 있다. 따라서, NAS의 파일 공유 성능을 향상시킬 수 있다..

Description

나스에서 데이터 처리 방법 {Method for processing data in NAS}
본 발명은 NAS에서 데이터 처리 방법에 관한 것으로, 구체적으로는 NAS에서 파일 공유를 위한 프로그램을 사용할 때 리드(read) 및 라이트(write)의 성능을 향상시키기 위한 방법에 관한 것이다.
최근 태블릿 PC, 노트북 PC, 스마트 폰과 같은 휴대용 컴퓨터를 사용하는 사람들이 많이 늘어나고, 잘 갖춰진 인터넷 인프라 덕에 카페나 지하철에서는 물론이고 집안에서조차 고정된 데스크톱 PC에 만족하지 못하고 이동하며 휴대용 컴퓨터를 사용하곤 한다. 또한, 자신이 보유한 많은 양의 데이터를 인터넷을 통해 가져와 쓰고자 하는 욕구가 늘어, 인터넷만 연결되면 언제 어디서나 자신의 데이터를 이용할 수 있도록 하는 장치인 나스(NAS: Network Attached Storage)가 인기를 끌게 된다.
나스는 네트워크에 연결돼 있는 스토리지라고 간단히 정의할 수 있는데, 컴퓨터에 장착돼 의존적으로 실행되지 않고 독립적인 전원과 IP 주소를 가지고 있어 굳이 컴퓨터의 전원을 켜놓지 않아도 적은 소비 전력으로 오랫동안 사용할 수 있다.
가상 서버라 불리는 클라우드 시장이 성장함에 따라 NAS 시장은 위축될 것이라는 말이 많은데, 이는 네트워크를 이용하여 사용자가 원하는 파일을 넣고 빼는 기능들이 클라우드와 거의 흡사하기 때문이다. 하지만, NAS 시장은 위축되지 않고 꾸준히 성장하고 있는데, 이는 일반 소비자들에게 아직 클라우드에 대한 개념이 자리잡지 않았고, 아직 안정화되지 않은 클라우드를 이용하기에는 심적 부담감이 있고, 더욱이 보안에 대해 극도로 민감해진 사용자들이 개인용 클라우드이자 개인용 네트워크 HDD로 볼 수 있는 NAS를 더 선호하기 때문이다.
이와 같이 NAS가 주로 개인용 클라우드 또는 개인용 네트워크 HDD 용도로 사용되고 있기 때문에, 파일 공유를 위한 프로그램 중 하나인 삼바(Samba) 프로토콜을 사용한 파일 읽기 및/또는 쓰기의 퍼포먼스(performance)가 NAS의 성능 척도로 사용되고 있다.
따라서, 본 발명은 이러한 상황을 반영하여 창작된 것으로서, 본 발명의 목적은 NAS에서 파일 공유 프로그램을 통한 파일 읽기 또는 쓰기의 성능을 향상시키는 데이터 처리 방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시예에 따른 NAS에서 데이터 처리 방법은, NAS에서 파일 공유 프로그램에 의해 스토리지와 네트워크에 연결된 IP 기기 사이에 데이터를 전송할 때, 상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터 또는 네트워크를 통해 전송된 또는 전송될 데이터를 임시로 저장하기 위한 커널 레이어의 버퍼에서 상기 파일 공유 프로그램이 동작하는 어플리케이션 레이어의 버퍼로 데이터를 복사하는 과정을 삭제하기 위한 제로 카피 방법을 적용하고, 상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터를 임시로 저장하기 위한 커널 레이어 내의 버퍼와 네트워크 어댑터에 포함된 버퍼 사이에 직접 메모리 접근에 의한 복사 방법을 적용하는 것을 특징으로 한다.
일 실시예에서, 상기 파일 공유 프로그램은 삼바이고, 상기 삼바는 상기 커널 레이어에서 동작하는 VFS를 통해 상기 스토리지에 데이터를 쓰거나 상기 스토리지로부터 데이터를 읽거나 상기 네트워크 어댑터의 버퍼에 데이터를 쓰거나 상기 네트워크 어댑터의 버퍼로부터 데이터를 읽을 수 있다.
일 실시예에서, 상기 스토리지로부터 데이터를 읽기 위한 명령이나 상기 스토리지에 데이터를 쓰기 위한 입출력 명령을 둘 이상 저장하기 위한 큐 버퍼의 크기가 조절될 수 있다.
일 실시예에서, 상기 큐 버퍼에 저장된 둘 이상의 입출력 명령이 한꺼번에 처리될 수 있다.
일 실시예에서, 상기 파일 공유 프로그램이 상기 VFS을 통해 발행하는 명령의 내용과 명령의 빈도를 근거로 상기 큐 버퍼의 크기가 조절될 수 있다.
일 실시예에서, 상기 파일 공유 프로그램이 상기 VFS을 통해 발행하는 명령의 내용과 명령의 빈도를 모니터링 하고 상기 큐 버퍼의 크기를 조절하는 동작이 데몬 형태로 상기 파일 공유 프로그램과 별개로 백그라운드로 실행될 수 있다.
본 발명의 다른 실시예에 따른 NAS는, 운영 체제의 커널을 적재하고 응용 프로그램의 실행 과정에서 생성되는 데이터를 임시로 저장하기 위한 메모리; 상기 메모리에 적재된 커널이나 응용 프로그램을 실행시키고 그에 따른 제어 신호를 출력하고 상기 응용 프로그램의 실행 과정에서 생성되는 데이터를 상기 메모리에 저장시키는 중앙 처리 장치; 상기 운영 체제, 응용 프로그램, 데이터 파일 중 적어도 하나 이상을 저장하기 위한 스토리지; 및 IP 연결을 위한 네트워크 인터페이스를 포함하여 구성되고, 상기 응용 프로그램이 상기 중앙 처리 장치에 의해 실행되어, 상기 중앙 처리 장치에 의해 실행되는 파일 공유 프로그램에 의해 상기 스토리지와 상기 네트워크 인터페이스에 연결된 IP 기기 사이에 데이터를 전송할 때, 상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터 또는 네트워크를 통해 전송된 또는 전송될 데이터를 임시로 저장하기 위해 상기 메모리에 마련된 커널 레이어의 버퍼에서 어플리케이션 레이어에서 동작하는 상기 파일 공유 프로그램을 위해 상기 메모리에 마련된 어플리케이션 레이어의 버퍼로 데이터를 복사하는 과정을 삭제하기 위한 제로 카피 방법을 적용하고, 상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터를 임시로 저장하기 위한 커널 레이어 내의 버퍼와 네트워크 어댑터에 포함된 버퍼 사이에 직접 메모리 접근에 의한 복사 방법을 적용하는 것을 특징으로 한다.
일 실시예에서, 상기 스토리지로부터 데이터를 읽기 위한 명령이나 상기 스토리지에 데이터를 쓰기 위한 입출력 명령을 둘 이상 저장하기 위한 큐 버퍼가 상기 메모리에 마련되고, 상기 응용 프로그램은 파일 공유 프로그램이 발행하는 명령의 내용과 명령의 빈도를 근거로 상기 큐 버퍼의 크기를 조절할 수 있다.
일 실시예에서, 상기 응용 프로그램은 상기 큐 버퍼에 저장된 둘 이상의 입출력 명령을 한꺼번에 처리할 수 있다.
일 실시예에서, 상기 응용 프로그램은 데몬 형태로 상기 파일 공유 프로그램과 별개로 백그라운드로 실행될 수 있다.
따라서, 파일 전송, 하드 디스크에 데이터 기록 등의 NAS 성능이 향상될 수 있다.
도 1은 리눅스 운영 체제의 NAS에서 파일 공유 프로그램인 삼바를 이용하여 외부로부터 네트워크를 통해 파일을 전송 받아 하드 디스크에 기록하거나 하드 디스크에 기록된 파일을 네트워크를 통해 외부에 전송할 때 데이터의 흐름을 도시한 것이고,
도 2는 도 1에 제로 카피 방법을 적용한 경우 데이터의 흐름을 도시한 것이고,
도 3은 도 1의 데이터 기록을 위한 데이터 흐름에서 제로 카피 방법과 DMA 카피 방법을 적용한 경우 데이터의 흐름을 도시한 것이고,
도 4는 본 발명의 일 실시예에 따른 데이터 처리 방법이 적용되는 NAS에 대한 구성을 도시한 것이다.
이하, 본 발명에 따른 NAS에서 데이터 처리 방법에 대한 실시예를 첨부하는 도면에 의거하여 상세히 설명한다.
도 1은 리눅스 운영 체제의 NAS에서 파일 공유 프로그램인 삼바(Samba)를 이용하여 외부로부터 네트워크를 통해 파일을 전송 받아 하드 디스크에 기록하거나 하드 디스크에 기록된 파일을 네트워크를 통해 외부에 전송할 때 데이터의 흐름을 도시한 것이다.
도 1은 인터넷으로 연결된 원격 기기의 데이터를 네트워크 어댑터를 통해 전송 받아 하드 디스크에 기록하는 동작을 위한 또는 반대 방향의 동작을 위한 구성을 계층 별로 도시하고 있는데, 물리적 하드웨어에는 네트워크 어댑터(NIC: Network interface card)와 하드 디스크가 포함되고, 리눅스 어플리케이션 레이어(Linux application layer)에서는 파일 공유 프로그램인 삼바가 실행되고, 리눅스 커널 레이어(Linux kernel layer)에는 데이터 입출력을 위해 상위 계층인 애플리케이션에 표준 인터페이스를 제공하는 VFS(Virtual File System), 데이터를 임시로 저장하기 위한 버퍼로 네트워크 어댑터를 통해 연결된 소켓 데이터를 저장하기 위한 소켓 버퍼(Socket buffer)와 하드 디스크에 기록할 데이터 또는 하드 디스크에서 읽은 데이터를 저장하기 위한 블록 버퍼(Read/write buffer)를 포함한다.
하드 디스크, 광 디스크처럼 블록 단위로 데이터를 읽고 쓰는 장치인 블록 디바이스의 데이터 처리 속도는 프로세서의 속도보다 현저히 떨어지기 때문에 커널 레이어 내부에서 블록 버퍼링을 통해 데이터를 처리하는데, 블록 버퍼와 물리적 블록 디바이스, 예를 들어 하드 디스크 사이에는 블록 디바이스 드라이버(미도시)가 있어 데이터를 블록 단위로 처리하는 하드 디스크와 같은 기억 장치를 다룬다.
블록 디바이스와 블록 디바이스 드라이버에 대해 간단하게 설명한다.
블록 디바이스는 플로피 디스크, 하드 디스크, 시디롬처럼 블록 단위로 데이터를 읽고 쓰는 장치이다. 보통 우리가 PC에 운영 체제를 설치하기 위해 가장 먼저 해야 하는 작업은 파티션을 나누고 포맷을 하는 일이다. 포맷을 한다는 것은 물리적인 디스크를 운영 체제가 사용할 수 있도록 파일 시스템을 설치하는 작업을 말하는데 파일 시스템을 설치해야 하는 이유는 바로 물리적인 디스크와 운영 체제가 사용하는 가장 작은 데이터의 단위가 다르기 때문이다. 디스크는 최소 단위가 섹터로 512Byte로 디스크의 동심원을 따라 일정하게 배열되어 있는 반면, 운영 체제의 최소 단위는 파일이고 파일은 제각각 크기가 다르다. 따라서 운영 체제는 물리적인 디스크를 블록 단위로 나누고 각 블록에 주소를 부여하여 디스크를 관리하게 되는데, 블록 디바이스의 블록은 파일 시스템에서의 블록을 의미한다고 할 수 있다.
일반 파일 시스템은 디스크를 파티셔닝 한 후 운영 체제에 맞게 포맷 한다. 그러면서 파일 시스템을 정의하는데, windows라면 FAT32나 NTFS 등이 있고 리눅스라면 ext3,4 등이 있다. 파일 시스템을 정의하여 포맷을 하면, 디스크 위에 파일 시스템 버퍼 영역이 생기고, 해당 버퍼 영역을 통하여 I/O가 일어난다
각 디스크는 보통 파티션이 나누어져 있어서 각 파티션은 논리 블록 디바이스로 여겨진다. 블록 디바이스 드라이버는 블록 디바이스와 연결된 디바이스 파일에서 발생하는 모든 VFS 시스템 콜을 처리하고, 각 블록 장치는 블록 디바이스 스크립터로 표시된다.
도 1에서 삼바는 리눅스 어플리케이션 레이어에서 실행되어, 리눅스 커널 레이어의 VFS를 통해 네트워크 인터페이스 카드에(로부터) 데이터를 전송하거나(전송 받거나) 하드 디스크로부터(에) 데이터를 읽는다(기록한다).
삼바와 VFS에 대해서 간단히 설명한다.
삼바는, 유닉스 서버에서 동작하면서 마이크로 소프트사의 랜 관리자 기능을 흉내 내는 소프트웨어로, 서버 메시지 블록(SMB: server Message Block) 프로토콜을 통해 지역 네트워크(LAN) 환경에서 유닉스(UNIX) 서버와 윈도우 클라이언트 사이 파일이나 프린터의 공유를 가능하게 해주는데, 삼바를 통해 리눅스 서버를 다른 운영 체제와 파일을 공유할 수 있는 파일 서버로도 사용할 수 있다. 여기서, SMB는 마이크로소프트 사와 인텔이 윈도우 시스템이 다른 시스템의 디스크나 프린터와 같은 자원을 공유할 있도록 하기 위해 개발된 프로토콜이다. TCP/IP 기반하의 NetBIOS 프로토콜을 이용하기 때문에 이 프로토콜은 NFS, NIS, lpd와 같은 유닉스의 분산 인증 구조와 유사하여, 윈도우 중심의 네트워크 환경에서는 리눅스를 이용한 공유 시스템에서는 SMB가 필수적이다.
리눅스 파일 시스템에는 인터페이스 세트가 추상화되어 있으며 그 결과 유연성과 확장성이 지원되는데, 이러한 인터페이스 세트의 핵심이 VFS(Virtual File System)이다.
VFS는 파일 시스템 중에 하나이다. 파일 시스템이란 것은 저장을 위한 장치에 파일의 정보와 데이터를 체계적으로 기록하여 파일을 읽고, 쓰고, 지울 때 편리하도록 하기 위해 존재한다. 윈도우는 FAT or NTFS라는 파일 시스템을 사용하고, 리눅스에도 RFS, NFS, JFFS 등 여러 가지의 파일 시스템이 존재하며, 또한 광 디스크에는 ISO9660, UDF, UDF 등의 파일 시스템이 존재하여, 각각의 파일 시스템은 파일 시스템을 얹을 장치나 운영 체제에 따라 달라지게 된다.
VFS는 다양한 파일 시스템 세트에서 데이터 입출력(I/O: Input/output)을 실행할 수 있도록 상위 계층 애플리케이션에 표준 인터페이스 세트를 제공하는 역할을 하여, 여러 파일 시스템의 저장 장치를 하나의 명령어로 제어할 수 있도록 합니다. 즉, VFS는 하나 이상의 기본 장치에서 동시에 다수의 파일 시스템을 지원하는 방식으로 인터페이스를 제공하므로, VFS를 이용하면 Windows, 유닉스, 리눅스 등의 운영 체제와 상관없이 파일 및 폴더에 대한 접근이 용이해진다. 이때, 파일 시스템은 정적일 필요가 없으며 스토리지 장치의 일시적 특성에 따라 변화할 수 있다.
따라서, 파일 공유 프로그램인 삼바는 리눅스 커널 레이어에서 동작하는 VFS를 통해 하드 디스크의 파일 시스템에 구애 받지 않고 파일이나 폴더에 접근하고 데이터를 읽거나 쓸 수 있다.
도 1에서 원격 기기에서 네트워크를 통해 전송되는 데이터를 하드 디스크에 기록하는 흐름에 대해 설명하는데, 반대의 경우도 크게 다르지 않다.
삼바 어플리케이션은 원격 기기에서 전송하는 데이터를 랜 카드와 같은 네트워크 어댑터인 NIC(Network Interface Card)의 버퍼에서 읽어 디스크에 기록하는데, 이러한 처리는 상대적으로 CPU를 거의 사용하지 않을 것 같지만 다소 비효율적이다. 즉, 먼저 커널이 NIC 버퍼에서 해당 데이터를 읽어(1) 커널과 사용자 사이의 경계를 넘어 삼바 어플리케이션으로 밀어내고(2), 삼바는 해당 데이터를 I/O 블록 버퍼에 써 넣기 위해 다시 커널-사용자 사이 경계를 넘어 커널로 밀어 넣고(3) 커널이 I/O 블록 버퍼에 저장된 데이터를 하드 디스크에 기록한다(4). 사용자-커널 사이 경계를 넘나들려면 데이터를 매번 복사를 해야 하는데, 이때 CPU 사이클과 메모리 대역폭이 소모된다.
이러한 데이터의 이동 흐름이 개념적으로는 단순할지 몰라도 내부적으로 이 복사 작업 동안 사용자 모드와 커널 모드 간에 맥락 전환(context switching)이 네 차례 필요하다. 맥락 전환에 대해서 간단하게 살펴본다.
멀티 프로세스 운영 체제에서, 실행중인 프로세스(또는 작업(task))가 변경되면 CPU에 올라와있던 레지스터들의 값이 다음 변경될 프로세스의 정보로 변경되어야 하는데, 먼저 실행 중이던 프로세스가 끝나지 않았다면 그 정보를 어딘가에 저장할 필요가 있다. 그래서 먼저 실행중인 프로세스의 정보를 메인 메모리에 저장하고, 메인 메모리에 저장되어있던 다른 프로세스의 정보를 CPU의 레지스터로 불러 들이는 작업을 맥락 전환(Context switching)이라고 한다. CPU에 올라온 프로세스는 Running 상태가 되고, 메모리에 저장된 프로세스는 Ready 상태가 되어, 맥락 전환을 지속하면서 멀티 프로세스 운영 체제가 돌아가게 된다. 여기서 context는 프로세서가 사용하는 CPU 레지스터들의 값을 가리키므로, running 상태의 프로세서가 사용하던 context를 메모리 특정 영역에 저장한 후 새로이 수행될 프로세서의 context를 TCB 또는 스택(Stack)에서 CPU의 레지스터 영역으로 복사하여 새로운 프로세서가 수행되도록 하는 작업이 맥락 전환이다.
어차피 프로그램 실행 시간의 대부분은 I/O가 잡아 먹는다고 하므로, 입력을 대기할 시간 동안 맥락 전환을 통해 멀티 프로세싱을 구현하는 것은 상당히 효율적이긴 하다. 하지만 맥락 전환이 너무 자주 일어나면 그만큼 성능 저하의 원인이 될 수 밖에 없다. 당연히 메모리와 CPU 사이의 데이터 전환에도 비용이 들 것이고, 이것이 빈번해지면 당연한 결과이다.
도 1에서 데이터 복사 과정을 네 차례의 맥락 전환이 일어나는데, 삼바가 read()를 호출하여 사용자 모드에서 커널 모드로 맥락 전환을 일으키고, 내부적으로는 VFS가 NIC 버퍼에서 데이터를 읽기 위해 sys_read()(또는 같은 기능을 하는 시스템 호출)를 호출하는데, 첫 번째 복사(1)는 직접 메모리 접근(DMA: Direct Memory Access) 엔진이 하고, NIC 버퍼에서 읽은 데이터를 커널 주소 공간 내 소켓 버퍼(Socket buffer)에 저장한다. 요청한 분량만큼의 데이터가 1의 소켓 버퍼에서 사용자 주소 공간 내 사용자 버퍼(application buffer)로 복사되고(2), read() 호출에서 리턴 하는데, 이러한 두 번째 복사는 CPU에 의해 이루어진다. 이 리턴으로 인해 커널에서 다시 사용자 모드로 또 다른 맥락 전환이 일어난다. 이후, send() 호출로 인해 사용자 모드에서 커널 모드로 맥락 전환이 일어나고, 해당 데이터를 다시 커널 주소 공간의 버퍼에 넣기 위해 세 번째 복사가 일어난다. 하지만 이번에는 데이터가 목적 소켓에 연관된 다른 버퍼인 I/O 블록 버퍼(Read/Write buffer)로 복사되고, send() 시스템 호출이 리턴 하고 네 번째 맥락 전환이 일어난다. 그와 무관하며 비동기적으로 DMA 엔진이 데이터를 커널의 블록 버퍼에서 하드 디스크로 넘길 때 네 번째 복사가 일어난다. 참고로 DMA 복사(전송)는 메모리와 I/O 하드웨어 간에 이루어지고, source address, destination address, data size 항목이 모여 하나의 채널을 구성한다
중간에 커널 버퍼(Read/write buffer, socket buffer)를 사용하는 것이 해당 데이터를 직접 사용자 버퍼로 보내는 것보다 비효율적으로 보일 수도 있다. 하지만 중간 커널 버퍼는 사실 성능을 향상시키기 위해 사용한 것이다. 읽는 쪽에서 중간 버퍼를 사용하면, 애플리케이션이 커널 버퍼에 담을 수 있는 양보다 적은 데이터를 요청했을 경우, 커널 버퍼가 일종의 다음 데이터를 미리 읽어 두는 캐시(read ahead cache)처럼 동작할 수 있게 해 준다. 이렇게 하면 요청한 데이터의 양이 커널 버퍼 크기보다 작은 경우 성능이 많이 향상된다. 또한 중간 버퍼를 쓰는 쪽에서 사용하면 데이터를 비동기적으로 써 넣을 수 있다. 불행히 요청된 데이터의 크기가 커널 버퍼보다 큰 경우에는 이 접근법 자체가 성능 병목이 될 수 있다. 그런 경우 데이터가 애플리케이션에 최종적으로 전달되기까지 디스크, 커널 버퍼, 사용자 버퍼 간에 복사가 여러 번 일어난다.
데이터를 기록할 때 가장 많이 사용하는 함수인 copytouser는, 도 1을 참고하여 설명한 것과 같이, 어플리케이션 계층과 커널 계층 사이의 문맥 전환을 여러 차례 일으키므로, 성능 향상을 위하여 이러한 문맥 전환을 줄이고 불필요한 데이터 복사를 없애기 위해 제로 카피(zero copy) 방법을 적용할 수 있다.
도 2는 도 1에 제로 카피 방법을 적용한 경우 데이터의 흐름을 도시한 것이다.
파일 공유 프로그램인 삼바는, 예를 들어 transferTo()와 같은 메서드(method)를 발행하여 사용자 모드에서 커널 모드로 맥락 전환을 일으키고, 발행된 메서드에 따라 커널 레이어에서 DMA 엔진을 통해 NIC 버퍼의 데이터가 커널 공간의 소켓 버퍼로 복사되고(1), 다음 커널(CPU)은 해당 데이터를 I/O 블록 버퍼(Read/write buffer)로 복사하고(2), DMA 엔진이 블록 버퍼의 데이터를 하드 디스크로 넘겨 세 번째 복사(3)가 일어나고, 이때 다음 데이터의 복사를 위해 커널 모드에서 사용자 모드로 맥락 전환이 다시 일어난다. 이와 같이 맥락 전환 횟수가 네 번에서 두 번으로 줄었고, 데이터 복사 횟수도 네 번에서 세 번으로 줄었고 더욱이 단 한 번만 CPU가 사용된다.
도 2와 같이 제로 카피 방법을 적용하더라도 소켓 버퍼의 데이터를 블록 버퍼로 넘길 때 CPU를 사용하여 메모리 카피가 빈번하게 일어나므로, CPU 카피 대신 DMA 메모리 카피를 사용하여 CPU 사용량을 줄일 수 있다.
도 3은 도 1의 데이터 기록을 위한 데이터 흐름에서 제로 카피 방법과 DMA 카피 방법을 적용한 경우 데이터의 흐름을 도시한 것이다.
도 3에서, 리눅스 어플리케이션 레이어에서 실행되는 파일 공유 프로그램인 삼바가 소정의 명령을 발행하여 사용자 모드에서 커널 모드로 맥락 전환이 일어나고, 상기 소정의 명령에 따라 커널 레이어에서 DMA 엔진을 통해 NIC 버퍼에 저장되어 있던 데이터가 커널 공간의 소켓 버퍼가 아닌 I/O 블록 버퍼로 곧바로 복사되고(1), DMA 엔진이 다시 블록 버퍼의 데이터를 하드 디스크로 넘겨 두 번째 복사(2)가 일어난다. 이때 다음 데이터의 복사를 위해 커널 모드에서 사용자 모드로 맥락 전환이 다시 일어난다. 이와 같이 CPU에 의한 복사가 생략되어 메모리 카피 횟수를 줄일 수 있다.
한편, 디스크에서 I/O 요청을 처리하는 속도는 요청의 크기, 즉 I/O 요청에 포함된 데이터의 용량에 영향을 받지만, 요청의 개수에도 영향을 받는다. 다시 말해, 8KB를 한번 읽는 것보다, 4KB를 두 번 읽는 게 훨씬 느리다. 실제로 디스크가 플래터에서 정보를 읽어내는 시간에 비해 그 외의 준비하는 데에도 시간이 적잖게 걸리기 때문이다. 이와 같이, 대부분의 블록 디바이스는 처리 속도가 프로세서 속도보다 현저히 떨어지기 때문에 리눅스 커널은 블록 디바이스를 효율적으로 처리하기 위해 커널 내부에서 버퍼링을 통해 큐를 이용한다. 즉, 블록 디바이스 드라이버와 커널 사이의 데이터 전달은 요구 큐(Request que)라는 데이터 구조와 처리 함수를 이용하게 된다. 큐에 모아 두었다가 일정 시간이 지나거나 임계치에 도달하면 블록 디바이스 드라이버에 처리를 요구한다.
예를 들어, 어플리케이션이 읽기 요청을 하면 커널 내부 블록 버퍼를 확인하여 해당 데이터가 있으면 목적지에 전달하고 없으면 해당 블록 디바이스 드라이버에 요청하는데, 이러한 동작이 즉시 일어나지 않는다. 이는 다중 프로세스이기 때문에 읽고 쓰기가 많이 일어나고, 접근 위치가 제 각각이면 처리 속도가 느려져 비효율적이기 때문이다. 그래서 처리 내용을 큐에 모아 두었다가 일정 시간 경과 후나 임계치에 도달할 때 처리하는 것이 유리하다.
또한, I/O 스케줄러는, 인접한 요청을 결합할 책임이 있는데, 새로운 I/O 요청이 넘어오면 인접한 섹터와 연관이 있는 요청을 찾기 위해 큐를 검색하고, 만일 해당 요청을 발견하고 결과로 만든 요청이 너무 크지 않다면 둘 이상의 요청을 하나로 합쳐 처리하도록 한다.
도 2와 도 3과 같이 제로 카피와 DMA 카피를 동시에 적용하면, CPU 관여 없이 데이터의 전송이 이루어지므로, 더 많은 복사 명령을 처리할 수 있다. 이는 블록 버퍼와 하드 디스크 사이의 블록 디바이스 드라이버에 더 많은 I/O 명령을 내릴 수 있는 것을 의미하므로, I/O 요청(또는 명령)을 저장하는 블록 레이어 큐의 크기를 조절함으로써 HDD에의 데이터 쓰기 또는 데이터 읽기 성능을 높일 수 있다.
하드 디스크에 데이터를 기록하거나 하드 디스크로부터 데이터를 읽기 위한 I/O 요청에 따라 처리된 데이터는 제로 카피와 DMA 카피에 의해 전송 또는 복사가 빠르게 이루어지지만, I/O 요청에 따른 처리, 즉 블록 버퍼, 블록 디바이스 드라이버, 블록 디바이스에서의 데이터 처리(읽기/쓰기)는 개별적으로 이루어지는 것보다 여러 I/O 요청을 한 번에 처리하는 것이 효율적일 수 있기 때문에, 관련되는 I/O 요청끼리 묶어 처리할 수 있도록 I/O 요청을 저장할 수 있는 큐의 크기를 키우는 것이 유리하다.
NAS는 어느 장치에서 어느 장치로 데이터의 복사나 전송이 얼마나 많은 데이터가 얼마나 자주 일어나는지 모니터링 하고 분석하여 최적의 큐 크기를 조절하는 동작을 데몬(daemon) 어플리케이션을 통해 수행할 수 있다. 이러한 동작을 하는 데몬 어플리케이션은 어플리케이션 레이어의 파일 공유 프로그램인 삼바가 커널 레이어의 VFS에 내리는 I/O 명령의 간격, 소오스 장치, 목적지 장치, 데이터 크기 등을 감지하고 이를 기초로 실시간으로 그리고 적응적으로 I/O 요청을 저장하는 큐 크기를 조절할 수 있다.
데몬은 유닉스와 같은 멀티태스킹 운영 체제에서 사용자가 직접 제어하지 않고 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. 시스템이 시작할 때 데몬을 시작하는 경우가 많으며, 이런 데몬들은 네트워크 요청, 하드웨어 동작, 여타 프로그램에 반응하는 기능을 담당하는데, 하드웨어 설정이나 주기적인 작업을 실행하는 등 다양한 목적으로 사용된다.
이러한 큐 크기를 조절하는 기능을 수행하는 소프트웨어 모듈인 어플리케이션은 데몬 형태로 백그라운드로 동작하고 시스템이 시동할 때 시작할 수 있다.
도 4는 본 발명의 일 실시예에 따른 데이터 처리 방법이 적용되는 NAS에 대한 구성을 도시한 것이다.
본 발명의 일 실시예에 따른 NAS(100)는 메모리(Memory)(110), 중앙 처리 장치(CPU: Central Processing Unit)(120), 스토리지(Storage)(130), 및 네트워크 인터페이스(150)를 포함하여 구성될 수 있고, USB 인터페이스(140)를 더 포함할 수도 있다.
상기 메모리(110)는, 램(RAM: Random Access Memory)과 롬(Read Only Memory)을 포함하여 구성될 수 있고, 롬은 NAS(100)가 최초로 구동될 때 실행되어야 하는 메모리 테스트와 같은 부팅 프로그램을 저장하고, 램은 운영 체제(OS: Operating System)의 커널과 응응 프로그램을 적재하고 프로그램의 실행 과정에서 생성되는 명령이나 데이터를 임시로 저장한다.
상기 메모리(110)는, 도 1 내지 3에 도시된 어플리케이션 버퍼, 블록 버퍼(Read/write buffer), 소켓 버퍼(socket buffer)를 위한 공간을 마련하고, 또한 I/O 요청을 저장하기 위한 큐 버퍼를 위한 공간을 마련한다.
상기 중앙 처리 장치(120)는 상기 메모리(110)에 적재된 커널이나 응용 프로그램을 실행시키거나 상기 스토리지(130)에 저장된 소프트웨어를 실행시키고 그에 따른 제어 신호를 출력하고, 프로그램 실행 과정에서 생성되는 명령, 데이터나 결과 데이터를 상기 메모리(110)에 저장시킨다.
상기 스토리지(130)는, 운영 체제, 응용 프로그램, 콘텐츠 데이터, 사용자 데이터 등의 대용량의 데이터를 보관하기 위한 하드 디스크 드라이브(HDD)나 SSD(Solid State Disk)와 같은 저장 장치로, 대용량의 데이터를 저장하기 위한 물리적 저장 매체(하드 디스크 또는 플래시 메모리)와 상기 중앙 처리 장치(120)의 제어에 따라 저장 매체를 제어하는 디스크 컨트롤러를 포함할 수 있다. 상기 스토리지(130)는 SD(Security Digital), 메모리 스틱과 같은 착탈식 플래시 메모리가 장착된 메모리 인터페이스가 될 수도 있다.
상기 USB 인터페이스(140)는 NAS(100)와 주변 기기를 연결하기 위한 입출력 수단으로 USB 컨트롤러와 USB 포트로 구성될 수 있고, 유사한 고성능 직렬 버스로 디지털 기기 사이의 정보 전송 수단인 IEEE 1394(Firewire) 인터페이스로 대체될 수도 있다.
상기 네트워크 인터페이스(150)는 외부 기기와 IP(Internet Protocol)를 통해 연결하여 데이터를 주고 받기 위한 수단으로 네트워크 컨트롤러와 네트워크 포트로 구성될 수 있다.
파일 공유 프로그램의 하나인 삼바는, 상기 스토리지(130)에 저장되고 상기 중앙 처리 장치(120)에 의해 실행되어 상기 메모리(110)에 상주하여, 커널 레이어에서 동작하는 VFS를 통해, 상기 스토리지(130)에 저장된 파일을 상기 네트워크 인터페이스(150)를 통해 전송하거나 상기 네트워크 인터페이스(150)를 통해 전송되는 데이터를 상기 저장부(130)에 저장하는 동작을 수행한다.
본 발명의 일 실시예에 따른 성능 향상 어플리케이션은, 상기 메모리(110)에 적재되어 상기 중앙 처리 장치(120)에 의해 실행되는데, 데몬 형태로 다른 어플리케이션과 별개로 백그라운드로 동작하고 NAS 시스템이 시작할 때 그 동작을 시작할 수 있다.
상기 중앙 처리 장치(120)에 의해 실행되는 성능 향상 어플리케이션은, 어플리케이션 레이어와 커널 레이어 사이의 문맥 변경을 최소화할 수 있도록 커널 레이어의 I/O 블록 버퍼와 소켓 버퍼 사이에 데이터를 직접 복사할 수 있고, 또한 데이터 복사에 중앙 처리 장치(120)가 관여하는 CPU 카피를 막을 수 있도록 I/O 블록 버퍼와 네트워크 어댑터 버퍼 사이에 DMA 카피를 적용하고, 또한 커널 레이어의 VFS를 통해서 삼바와 같은 파일 공유 프로그램이 발행하는 데이터 입출력 명령의 내용(소오스 장치, 목적지 장치, 데이터 양 등)과 명령의 빈도 등을 모니터링 하고 이를 기초로 상기 메모리(110)에 할당되는 큐 버퍼를 위한 공간을 조절할 수 있다.
상기 성능 향상 어플리케이션은, 같은 소오스 장치와 같은 목적지 장치를 갖는 I/O 명령(읽기 명령 또는 쓰기 명령)이 단위 시간 내에 소정 회수 이상 반복되면 상기 메모리(110)의 큐 버퍼에 많은 공간을 할당할 수 있는데, 예를 들어 평상시에는 큐 버퍼가 128개의 I/O 명령을 저장할 수 있는 저장 공간을 갖는 경우, I/O 명령이 지속되면 256 또는 512개의 명령을 저장할 수 있도록 큐 버퍼의 저장 공간을 키울 수 있다.
상기 메모리(110)의 용량은 한계가 있기 때문에 큐 버퍼, I/O 블록 버퍼, 소켓 버퍼 등은 서로 상보적일 수 있어서, 큐 버퍼의 저장 공간을 키우면 I/O 블록 버퍼 또는 소켓 버퍼의 저장 공간이 줄어들 수 있다. 하지만, 큐 버퍼의 저장 공간이 늘어나고 여러 I/O 명령을 저장하는 경우, 목적지 또는 소오스의 주소가 연속인 둘 이상의 I/O 명령을 한꺼번에 처리하여 HDD와 같은 스토리지(130)에서 데이터를 읽거나 쓸 때 최대한 많은 양의 데이터를 읽거나 쓸 수 할 수 있게 되어, 삼바와 같은 파일 공유 프로그램에 의한 데이터 전송 효율이 향상될 수 있다.
이상 전술한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서, 다양한 다른 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.
100: NAS 110: 메모리
120: 중앙 처리 장치 130: 스토리지
140: USB 인터페이스 150: 네트워크 인터페이스

Claims (10)

  1. NAS에서 파일 공유 프로그램에 의해 스토리지와 네트워크에 연결된 IP 기기 사이에 데이터를 전송할 때,
    상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터 또는 네트워크를 통해 전송된 또는 전송될 데이터를 임시로 저장하기 위한 커널 레이어의 버퍼에서 상기 파일 공유 프로그램이 동작하는 어플리케이션 레이어의 버퍼로 데이터를 복사하는 과정을 삭제하기 위한 제로 카피 방법을 적용하고,
    상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터를 임시로 저장하기 위한 커널 레이어 내의 버퍼와 네트워크 어댑터에 포함된 버퍼 사이에 직접 메모리 접근에 의한 복사 방법을 적용하는 것을 특징으로 하는 NAS에서 데이터 처리 방법.
  2. 제 1항에 있어서,
    상기 파일 공유 프로그램은 삼바이고, 상기 삼바는 상기 커널 레이어에서 동작하는 VFS를 통해 상기 스토리지에 데이터를 쓰거나 상기 스토리지로부터 데이터를 읽거나 상기 네트워크 어댑터의 버퍼에 데이터를 쓰거나 상기 네트워크 어댑터의 버퍼로부터 데이터를 읽는 것을 특징으로 하는 NAS에서 데이터 처리 방법.
  3. 제 2항에 있어서,
    상기 스토리지로부터 데이터를 읽기 위한 명령이나 상기 스토리지에 데이터를 쓰기 위한 입출력 명령을 둘 이상 저장하기 위한 큐 버퍼의 크기를 조절하는 것을 특징으로 하는 NAS에서 데이터 처리 방법.
  4. 제 3항에 있어서,
    상기 큐 버퍼에 저장된 둘 이상의 입출력 명령을 한꺼번에 처리하는 것을 특징으로 하는 NAS에서 데이터 처리 방법.
  5. 제 3항에 있어서,
    상기 파일 공유 프로그램이 상기 VFS을 통해 발행하는 명령의 내용과 명령의 빈도를 근거로 상기 큐 버퍼의 크기를 조절하는 것을 특징으로 하는 NAS에서 데이터 처리 방법.
  6. 제 5항에 있어서,
    상기 파일 공유 프로그램이 상기 VFS을 통해 발행하는 명령의 내용과 명령의 빈도를 모니터링 하고 상기 큐 버퍼의 크기를 조절하는 동작이 데몬 형태로 상기 파일 공유 프로그램과 별개로 백그라운드로 실행되는 것을 특징으로 하는 NAS에서 데이터 처리 방법.
  7. 운영 체제의 커널을 적재하고 응용 프로그램의 실행 과정에서 생성되는 데이터를 임시로 저장하기 위한 메모리;
    상기 메모리에 적재된 커널이나 응용 프로그램을 실행시키고 그에 따른 제어 신호를 출력하고 상기 응용 프로그램의 실행 과정에서 생성되는 데이터를 상기 메모리에 저장시키는 중앙 처리 장치;
    상기 운영 체제, 응용 프로그램, 데이터 파일 중 적어도 하나 이상을 저장하기 위한 스토리지; 및
    IP 연결을 위한 네트워크 인터페이스를 포함하여 구성되고,
    상기 응용 프로그램이 상기 중앙 처리 장치에 의해 실행되어,
    상기 중앙 처리 장치에 의해 실행되는 파일 공유 프로그램에 의해 상기 스토리지와 상기 네트워크 인터페이스에 연결된 IP 기기 사이에 데이터를 전송할 때, 상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터 또는 네트워크를 통해 전송된 또는 전송될 데이터를 임시로 저장하기 위해 상기 메모리에 마련된 커널 레이어의 버퍼에서 어플리케이션 레이어에서 동작하는 상기 파일 공유 프로그램을 위해 상기 메모리에 마련된 어플리케이션 레이어의 버퍼로 데이터를 복사하는 과정을 삭제하기 위한 제로 카피 방법을 적용하고, 상기 스토리지로부터 읽거나 상기 스토리지에 기록할 데이터를 임시로 저장하기 위한 커널 레이어 내의 버퍼와 네트워크 어댑터에 포함된 버퍼 사이에 직접 메모리 접근에 의한 복사 방법을 적용하는 것을 특징으로 하는 NAS.
  8. 제 7항에 있어서,
    상기 스토리지로부터 데이터를 읽기 위한 명령이나 상기 스토리지에 데이터를 쓰기 위한 입출력 명령을 둘 이상 저장하기 위한 큐 버퍼가 상기 메모리에 마련되고, 상기 응용 프로그램은 파일 공유 프로그램이 발행하는 명령의 내용과 명령의 빈도를 근거로 상기 큐 버퍼의 크기를 조절하는 것을 특징으로 하는 NAS.
  9. 제 8항에 있어서,
    상기 응용 프로그램은 상기 큐 버퍼에 저장된 둘 이상의 입출력 명령을 한꺼번에 처리하는 것을 특징으로 하는 NAS.
  10. 제 8항에 있어서,
    상기 응용 프로그램은 데몬 형태로 상기 파일 공유 프로그램과 별개로 백그라운드로 실행되는 것을 특징으로 하는 NAS.
KR1020120025304A 2012-03-13 2012-03-13 나스에서 데이터 처리 방법 KR20130104111A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120025304A KR20130104111A (ko) 2012-03-13 2012-03-13 나스에서 데이터 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120025304A KR20130104111A (ko) 2012-03-13 2012-03-13 나스에서 데이터 처리 방법

Publications (1)

Publication Number Publication Date
KR20130104111A true KR20130104111A (ko) 2013-09-25

Family

ID=49453011

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120025304A KR20130104111A (ko) 2012-03-13 2012-03-13 나스에서 데이터 처리 방법

Country Status (1)

Country Link
KR (1) KR20130104111A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101973353B1 (ko) * 2019-03-11 2019-04-26 주식회사 엘지유플러스 클라우드 스토리지에 설치된 애플리케이션의 가속 실행 장치 및 방법
KR101973293B1 (ko) * 2017-12-13 2019-07-26 주식회사 엘지유플러스 클라우드 스토리지에 설치된 애플리케이션의 가속 실행 장치 및 방법
CN111770054A (zh) * 2020-05-28 2020-10-13 苏州浪潮智能科技有限公司 一种针对smb协议读请求的交互加速方法与系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101973293B1 (ko) * 2017-12-13 2019-07-26 주식회사 엘지유플러스 클라우드 스토리지에 설치된 애플리케이션의 가속 실행 장치 및 방법
KR101973353B1 (ko) * 2019-03-11 2019-04-26 주식회사 엘지유플러스 클라우드 스토리지에 설치된 애플리케이션의 가속 실행 장치 및 방법
CN111770054A (zh) * 2020-05-28 2020-10-13 苏州浪潮智能科技有限公司 一种针对smb协议读请求的交互加速方法与系统

Similar Documents

Publication Publication Date Title
US10241709B2 (en) Elastic temporary filesystem
US9645764B2 (en) Techniques for migrating active I/O connections with migrating servers and clients
Nanavati et al. Decibel: Isolation and sharing in disaggregated {Rack-Scale} storage
US7882136B2 (en) Foresight data transfer type hierarchical storage system
US8966476B2 (en) Providing object-level input/output requests between virtual machines to access a storage subsystem
US9928091B2 (en) Techniques for streaming virtual machines from a server to a host
US9146766B2 (en) Consistent unmapping of application data in presence of concurrent, unquiesced writers and readers
US20130311429A1 (en) Method for controlling backup and restoration, and storage system using the same
US9092426B1 (en) Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
US8966188B1 (en) RAM utilization in a virtual environment
US8271559B2 (en) Storage system and method of controlling same
US11194727B2 (en) Increased parallelization efficiency in tiering environments
JP2013542486A (ja) 仮想マシンのオンデマンド型イメージ・ストリーミング
JP2014513338A (ja) 仮想ディスクの最適圧縮
US20150199147A1 (en) Storage thin provisioning and space reclamation
US10387051B2 (en) Acquisition of IOPS and MBPS limits independently at a scheduler in a scheduler hierarchy
US9110591B2 (en) Memory resource provisioning using SAS zoning
JP2012133772A (ja) リモートストレージシステムのためのデータ処理方法及び装置
US10678431B1 (en) System and method for intelligent data movements between non-deduplicated and deduplicated tiers in a primary storage array
KR20130104111A (ko) 나스에서 데이터 처리 방법
US20230136522A1 (en) Method and system for implementing metadata compression in a virtualization environment
US8631111B2 (en) Method and apparatus of selection interface by queue and workload for storage operation
US11301156B2 (en) Virtual disk container and NVMe storage management system and method
Ruiu et al. Automatic dynamic allocation of cloud storage for scientific applications
Shafer A storage architecture for data-intensive computing

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination