KR20140014139A - 이전 버전과 호환 가능한 종합 파일 시스템 동작 성능 향상을 위한 방법, 및 각각의 장치 - Google Patents

이전 버전과 호환 가능한 종합 파일 시스템 동작 성능 향상을 위한 방법, 및 각각의 장치 Download PDF

Info

Publication number
KR20140014139A
KR20140014139A KR1020137021965A KR20137021965A KR20140014139A KR 20140014139 A KR20140014139 A KR 20140014139A KR 1020137021965 A KR1020137021965 A KR 1020137021965A KR 20137021965 A KR20137021965 A KR 20137021965A KR 20140014139 A KR20140014139 A KR 20140014139A
Authority
KR
South Korea
Prior art keywords
file
directory
virtual
file system
files
Prior art date
Application number
KR1020137021965A
Other languages
English (en)
Other versions
KR101925651B1 (ko
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 톰슨 라이센싱
Publication of KR20140014139A publication Critical patent/KR20140014139A/ko
Application granted granted Critical
Publication of KR101925651B1 publication Critical patent/KR101925651B1/ko

Links

Images

Classifications

    • 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/188Virtual file systems
    • 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/188Virtual file systems
    • G06F16/192Implementing virtual folder structures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

파일 시스템을 운영하는 방법은 다수의 시스템 호출들이 요구되는 파일 디렉토리로부터의 결과를 제공하도록 가상 파일을 설계하는 단계, 가상 파일을 고유 이름에 의해 파일 디렉토리의 실제 파일들과 구별하는 단계, 및 가상 파일을 열고 가상 파일의 콘텐츠를 판독함으로써 파일 디렉토리로부터의 결과를 검색하는 단계를 포함한다. 가상 파일은 특히 파일 시스템 동작을 위해 설계된다.

Description

이전 버전과 호환 가능한 종합 파일 시스템 동작 성능 향상을 위한 방법, 및 각각의 장치{METHOD FOR BACKWARD-COMPATIBLE AGGREGATE FILE SYSTEM OPERATION PERFORMANCE IMPROVEMENT, AND RESPECTIVE APPARATUS}
본 발명은 파일 디렉토리를 포함하는 파일 시스템을 운영하는 방법, 및 그 방법을 사용하는 장치, 특히, 가정용 게이트웨이에 관한 것이다.
최종 사용자의 가정용 네트워크(residential network)를 인터넷에 연결하는 가정용 게이트웨이들이 어쩌다 보니 널리 사용되고 있다. 가정용 게이트웨이는 통상 디지털 가입자 라인(DSL)을 통해 광대역 서비스들 및 POTS(plain old telephone service)라고 공지된 전화 통신을 제공하고, 추가로, 가정용 네트워크를 위한, 유선 송신, 예를 들어, 이더넷, 및 무선 송신(Wi-Fi)을 포함한다. 서비스들을 제공하기 위해, 가정용 게이트웨이는 유닉스 유형(Unix-like) 운영 체제에서 실행하는 마이크로프로세서 시스템(CPU)을 포함한다.
운영 체제는 마스터 제어 프로그램인 커널과 함께 애플리케이션들 및 유틸리티들을 포함한다. 커널은 프로그램들을 시작하고 종료하는 서비스들을 제공하고, 대부분의 애플리케이션들이 공유하는 파일 시스템들 및 다른 공통 "저수준" 태스크들을 처리하며, 애플리케이션들 간의 충돌을 방지하기 위해 액세스를 스케줄링한다. 이러한 액세스를 조정하기 위해, 커널은 사용자 공간과 시스템 공간 간의 그의 가상 메모리의 분리에 반영된, 특별 권리들을 갖는다. 시스템 공간은 커널, 커널 확장들, 및 대부분의 디바이스 드라이버들을 실행하기 위해 엄격히 비축된다. 대조적으로, 사용자 공간은 모든 사용자 모드 애플리케이션들이 작업하는 메모리 영역이며, 이 메모리는 필요할 때 옮겨 비워질 수 있다.
파일 시스템들의 주요 개념은, 이들이 상이한 종류들의 파일 시스템들을 상호 운용 가능하게 하는, 고정된 애플리케이션 프로그래밍 인터페이스(API)를 갖는다는 것이다. 파일 시스템을 사용하는 애플리케이션의 경우, 파일 시스템의 포맷, 예를 들어, FAT32, NTFS, Ext3, ...은 차이가 없으며, 애플리케이션은 이에 신경 쓰지도 않을 것이다. 유닉스 유형 운영 체제의 경우, 파일 시스템의 API는, IEEE에 의해 명시된 표준들의 계통인, POSIX(Portable Operating System Interface) 표준에 순응한다.
파일 시스템 API는 파일 시스템들 간의 상호 운용 가능성을 하찮게 만들고, 이는 실제 이점이기는 하지만, 이는 일부 애플리케이션들에게는 약점일 수도 있다. 일부 매우 기본적인 동작들은 직접 가능하지 않으며, API의 유효한 기능들로 에뮬레이트되어야만 하기에, 리소스들의 면에서 매우 비용이 많이 들 수 있다.
파일 시스템들은 운영 체제의 일부이고, 따라서, 이들은 시스템 공간에서 동작한다. 한편, 애플리케이션들은 특권이 덜한 사용자 공간에서 동작한다. 사용자 공간과 시스템 공간 간의 경계를 가로지르기 위해, 도 1에 도시된 바와 같이, 운영 체제는 시스템 호출 인터페이스를 제공한다. 시스템 호출은 애플리케이션이 운영 체제의 커널에 서비스를 요청하는 방법이다. 일반적으로, 운영 체제에 의해 사용된 시스템 호출들을 함수들에 의해 사용자 공간이 액세스할 수 있게 하는 중간 라이브러리, 예를 들어, 표준 C 라이브러리가 있다.
애플리케이션이 시스템 호출을 직접 야기하거나, 또는 시스템 호출을 야기할 함수를 라이브러리로부터 호출할 때, 사용자 공간과 시스템 공간 간의 전이가 요구된다. 사용자 공간으로부터 시스템 공간으로 전이하는 한 가지 흔한 방법은 소프트웨어 인터럽트들을 사용하는 것이지만, 다른 구현들도 존재한다. 소프트웨어 인터럽트 구현의 경우, 시스템 호출의 수가 마이크로프로세서의 레지스터에 로드되어야만 하고, 커널에 제어를 넘겨주기 위해 소프트웨어 인터럽트가 실행된다.
파일 시스템들이 특권 시스템 공간에 존재하기에, 이들은 어떠한 라이브러리도 사용할 수 없다. 따라서, 파일 시스템의 구현은 매우 복잡하다. 예를 들어, 메모리 관리는 사용자 공간에서보다 시스템 공간에서 훨씬 더 힘들다. 이러한 한계를 극복하기 위해, 파일 시스템들이 사용자 공간에서도 구현될 수 있다. 사용자 공간에서 파일 시스템 구현을 가능케 하는 구현의 한 일례는 FUSE(Filesystem in Userspace)이다. FUSE는 유닉스 유형 컴퓨터 운영 체제들을 위한 로드 가능한 커널 모듈이다. 이것은, 도 2에 도시된 바와 같이, 통상의 파일 시스템(5)과 유사하게 동작하는 FUSE 커널 드라이버(4), 및 사용자 공간의 파일 시스템(3)과 FUSE 커널 드라이버(4) 간의 통신을 위한 FUSE 라이브러리(6)를 포함한다. 사용자 공간에 상주하는, 파일 시스템 구현은 파일 시스템의 인터페이스를 구현할 책임이 있다. 따라서, FUSE는 사용자 공간에서의 파일 시스템 코드의 실행을 가능케 하며, FUSE 커널 드라이버(4)는 운영 체제의 커널로의 브리지를 제공한다.
애플리케이션이 사용자 공간에서 구현되는 파일 시스템(3)과 상호 작용할 때, 시스템 공간에 상주하는 임의의 파일 시스템과 마찬가지로 각각의 시스템 호출들이 개시된다. 커널 내에서, 시스템 호출들은 FUSE 커널 드라이버(4)에 의해 처리된다. FUSE 커널 드라이버(4)는 시스템 호출을 직렬화하고 이를 FUSE 문자 디바이스를 통해 다시 사용자 공간으로 전파하며, 이 사용자 공간에서 FUSE 라이브러리(6)는 사용자 공간에서 파일 시스템(3)에 의해 구현된 대응 함수들을 불러온다. 리턴 경로는 역 순서로 동일한 경로를 따른다.
FUSE는 사용자 공간에서 파일 시스템들을 구현하는 것을 가능케 하는 구현의 일례일 뿐이며, 본 명세서에서 강조되어야 하는 것은, 사용자 공간의 모든 종류들의 파일 시스템들이 문맥 전환들을 요구한다는 점이다. 문맥 전환(context switch)은 차후에 동일한 지점으로부터 실행이 재개될 수 있도록 마이크로프로세서의 상태를 저장 및 복원하는 컴퓨팅 프로세스이다. 이는 다수의 프로세스들이 단일 CPU를 공유할 수 있게 하며, 문맥 전환은 멀티태스킹 운영 체제의 필수적인 특징이다. 문맥 전환들은 통상 계산적으로 집약적이며, 운영 체제들의 설계의 대부분은 문맥 전환들의 사용을 최적화하는 것이다. 문맥 전환은 레지스터 문맥 전환, 태스크 문맥 전환, 스레드 문맥 전환, 또는 프로세스 문맥 전환일 수 있다.
프로세스 문맥 전환은 한 프로세스로부터 다른 프로세스로의 제어의 전이이다. 이러한 문맥 전환의 수행은, 차후에 재개될 수 있도록, 제1 프로세스의 상태를 저장하고, 제2 프로세스의 상태를 개시하는 것을 수반한다. 사용자 공간의 파일 시스템(3)의 구현에 있어서, 시스템 호출들 각각은 두 문맥 전환들을 야기한다: 시스템 호출을 수행하는 애플리케이션은 다른 프로세스로서 구현되는 파일 시스템이 호출을 처리할 수 있도록 중단되고, 호출이 리턴할 때, 호출 애플리케이션이 재개된다.
사용자 공간에서 구현된 파일 시스템들의 범위에서, 가장 큰 오버헤드는 필요로 하는 엄청난 수의 문맥 전환들에 의해 도입된다. 도 2의 큰 화살표들(1, 2)은 가로질러야 하는 경계들을 나타낸다. 수직 화살표(1)는, 시스템 공간에서 구현되든 또는 사용자 공간에서 구현되든 관계없이, 모든 파일 시스템 호출들에 대해 가로질러야 하는, 사용자 공간과 시스템 공간 간의 경계들을 나타낸다. 수평 화살표(2)는, 파일 시스템이 사용자 공간에서 구현될 때 도입된 추가의 오버헤드인, 프로세스들 간의 경계를 나타낸다.
다수의 시스템 호출들을 야기할, 파일 시스템 사용의 3가지 설명 예들이 이제 기술된다. 이 예들이 사용자 공간에 상주하는 파일 시스템(3)에 적용되면, 이는 실행 불가능한 수의 문맥 전환들을 야기할 것이다:
b.1) 디렉토리의 요소들의 카운트:
이하의 의사 코드는 디렉토리 /foo/bar의 요소들의 수가 어떻게 카운트될 수 있는지를 보여준다. 시스템 호출을 야기하는 함수들은 볼드체로 표시된다.
count := 0
dir_handle := opendir('/foo/bar')
while (readdir(dir_handle))
{
count := count + 1
}
closedir(dir_handle)
디렉토리 /foo/bar에 n개의 요소들이 있으면, 이 코드 단편에 의해 야기되는 시스템 호출들의 수는 2+n이다. /foo/bar가 사용자 공간에서 구현되는 파일 시스템 내의 디렉토리이면, 이는 2(2+n) 문맥 전환들을 야기한다.
b.2) 디렉토리의 모든 다이렉트 서브-디렉토리들의 요소들의 카운트:
이 예는 이전 예의 직접적인 결과로서 보일 수 있지만, 섹션 d.2에서 설명되는 바와 같이, 약간 상이하게 해결될 것이다. 이는 인위적인 문제로 보일 수 있지만, 이 예는 실제 사용 사례(예를 들어, UPnP AV BrowseDirectChildren 액션)를 갖는다.
function dirsize(path)
{
count := 0
dir_handle := opendir(path)
while (readdir(dir_handle))
{
count := count + 1
}
closedir(dir_handle)
return count
}
...
dir_handle := opendir('/foo/bar')
while (dir_entry := readdir(dir_handle))
{
if (is_dir(dir_entry ))
{
count := dirsize(dir_entry->name)
print "Directory", dir_entry->name, "has
", count, "elements"
}
}
closedir(dir_handle)
/foo/bar가 n 서브디렉토리들을 가지면 - 각각의 서브디렉토리 m은 mi 요소들을 가짐 -, 이 의사 코드 조각은 2+n+∑n i =1[2+mi] 시스템 호출들을 야기한다. /foo/bar가 다시 사용자 공간 파일 시스템에 상주하면, 이는 2(2+n+∑n i =1[2+mi]) 문맥 전환들을 야기할 것이다.
b.3) 오프셋으로부터의 디렉토리 요소들의 판독/덩어리로의 완전한 디렉토리 판독
function readdir_offset_limit(path, skip, items)
{
done = true
skip_count := 0
dir_handle := opendir('/foo/bar')
while (readdir(dir_handle) && skip_count < skip)
{
skip_count := skip_count + 1
}
items_count := 0
while (readdir(dir_handle) && items_count < items)
{
items_count := items_count + 1
... /* do something with the result */
done := false
}
closedir(dir_handle)
return done
}
...
skip := 0
while (readdir_offset_limit('/foo/bar', skip, N))
{
skip := skip + N
}
POSIX 파일 시스템 API는, 파일 핸들의 경우와 같이, 디렉토리 핸들 내에서 찾는 유사한 방법을 제공하지 않는다. 파일들의 경우, 파일의 임의의 위치에 위치 표시자를 설정할 수 있다. 디렉토리 핸들들에 대해 제공된 탐색(seek) 함수는 더 일찍 저장된 위치로 복귀할 수만 있다. 이 때문에, 디렉토리 항목들의 스킵은 항목들을 무시함으로써만 달성될 수 있다.
애플리케이션이 다수의 항목들을 갖는 디렉토리의 부분 집합을 판독할 필요가 있다고 가정하고, 이 애플리케이션이 디렉토리 핸들을 열린 상태로 유지할 수 없다고 가정하자. 예를 들어, 웹 페이지는, 한 번에 N개의 요소들만을 디스플레이할 수 있는, 스크롤 박스에 디렉토리의 콘텐츠를 디스플레이할 필요가 있다. 스크롤 바의 위치에 따라, 웹 서비스는 특정 오프셋에서 N개의 항목들을 판독해야만 한다. 처음 N개의 항목들을 디스플레이하기 위한, 문맥 전환들의 수는 2(N+2)이다. 다음 N개의 항목들을 판독해서, N개의 항목들을 스킵한 후 N개의 항목들을 판독하는 것은 2(2N+2)을 수반한다. 통틀어, 이 2N개의 디렉토리 항목들을 판독하기 위한 문맥 전환들의 수는 2(3N+4)이다.
일반적으로, 디렉토리가 m×N개의 항목들을 포함하면, 한 번에 N개의 항목들을 갖는 완전한 디렉토리를 판독하기 위한 문맥 전환들의 수는 디렉토리의 요소들의 수에 대해 2차 오더(quadratic order)이다. 본질적으로 선형 연산인 디렉토리의 요소들의 카운팅의 경우, 이는 엄청난 비용이 드는 연산이다. 이는 이하의 계산으로 설명된다:
Figure pct00001
US6389427 B1은 컴퓨터 파일 시스템의 판독 전용 동작들의 성능을 강화하는 방법 및 장치를 기술한다. 방법은 초기 셋업이 완료된 후에 운영 체제에서 투명하게 실행될 수 있다. 초기 셋업은 이러한 파일들에 대한 액세스 요청들을 가로채고 강화된 성능으로 이 요청들에 응답하기 위해 어떤 디렉토리들 또는 파일들이 모니터되어야 할지를 식별하는 것을 수반한다. 시스템 관리자가 어떤 디렉토리들 또는 파일들이 모니터되어야 할지를 명시할 수 있다. 모니터된 파일이 열릴 때, 파일 식별자가 사용되고, 이로써 임의의 디렉토리 메타 데이터 정보의 액세스를 우회한다. 일 실시예에서, 모니터된 파일들로의 액세스는 파일 시스템 캐시 관리자에 의해 유지된 데이터 캐시에 파일들을 고정시킴으로써 강화된다.
실제 파일들을 갖는 파일 디렉토리를 포함하는 파일 시스템을 운영하는 방법은 최소 수의 시스템 호출들로 파일 시스템으로부터 정보를 검색할 수 있게 한다. 이를 달성하기 위해, 본 방법은 다수의 시스템 호출들이 요구되는 파일 디렉토리로부터의 결과를 제공하도록 가상 파일을 설계하는 단계, 가상 파일을 고유 이름에 의해 파일 디렉토리의 실제 파일들과 구별하는 단계, 및 가상 파일을 열고 가상 파일의 콘텐츠를 판독함으로써 파일 디렉토리로부터의 결과를 검색하는 단계를 포함한다. 가상 파일은 특히 파일 시스템 동작을 위해 설계된다.
본 발명의 다른 양상에서, 본 방법은, 파일 디렉토리의 콘텐츠가 변경되었을 때, 가상 파일의 결과를 갱신하는 단계를 포함한다. 가상 파일은 고유 파일 확장자에 의해 파일 디렉토리의 실제 파일들과 유리하게 구별되고, 가상 파일은 파일 디렉토리 내에 배열된다.
제1 양호한 실시예에서, 본 방법은 상기 파일 디렉토리의 요소들을 카운트하는, 파일 시스템 동작을 위해 가상 파일을 설계하는 단계를 포함한다. 제2 양호한 실시예에서, 본 방법은 상기 파일 디렉토리의 모든 다이렉트 서브-디렉토리들의 요소들을 카운트하는, 파일 시스템 동작을 위해 가상 파일을 설계하는 단계를 포함한다. 제3 양호한 실시예에서, 본 방법은 오프셋으로부터 상기 파일 디렉토리의 디렉토리 요소들을 판독하는, 파일 시스템 동작을 위해 가상 파일을 설계하는 단계를 포함한다. 제4 양호한 실시예에서, 본 방법은 덩어리로 완전한 파일 디렉토리를 판독하는, 파일 시스템 동작을 위해 가상 파일을 설계하는 단계를 포함한다.
본 발명은 또한 파일 시스템을 운영하는 방법을 사용하는 장치에 관한 것이다. 장치는 특히 애플리케이션들, 유틸리티들 및 파일 시스템을 처리하는 제어 프로그램을 포함하는 운영 체제를 실행하는 마이크로프로세서 시스템을 포함한다. 장치는, 예를 들어, 가정용 게이트웨이, DSL 모뎀 또는 셋톱박스이다.
본 발명의 양호한 실시예들은 개략도들을 참조하여 예로서 더 상세히 후술된다.
도 1은 마이크로프로세서 시스템에서 실행되는, 운영 체제 및 애플리케이션들을 포함하는 파일 시스템이다.
도 2는, 사용자 공간에서 파일 시스템을 제공하기 위한 FUSE 커널 모듈 및 FUSE 라이브러리를 추가로 포함하는, 도 1의 파일 시스템이다.
본 발명의 양호한 실시예는, 예를 들어, 유닉스 유형 컴퓨터 운영 체제로 실행되는, ROM 및 RAM 메모리를 포함하는 마이크로프로세서 시스템을 포함하는 가정용 게이트웨이에서 사용된다. 운영 체제는, 마스터 제어 프로그램인 커널과 함께, 실제 파일들을 나타내는 애플리케이션들 및 유틸리티들을 포함한다. 본 발명의 방법은 요구된 결과들에 매칭하도록 특별 가상 파일들을 설계하고, 이 파일들이 파일 시스템 이름 공간을 오염시키지 않고 파일 시스템 내의 실제 파일들과 간섭하지 않도록, 이 파일들을 파일 시스템에서 이용 가능하게 하는 것을 제안한다. 가상 파일들의 콘텐츠는 사용자들의 요구 사항들에 좌우되고, 따라서, 콘텐츠는 쌍방 간에 규약이 합의되어야만 하는 프로토콜로서 생각될 수 있다.
따라서, 본 발명은 파일 시스템을 사용하는 애플리케이션들이 이용 가능한 애플리케이션 프로그래밍 인터페이스(API)로 손실된 기능을 에뮬레이트해야 하는 것을 방지하기 위해 파일 시스템 구현들에서 사용될 수 있는 일반적인 방법을 기술한다. 본 발명은 최소 수의 시스템 호출들로 파일 시스템으로부터 정보를 검색할 수 있게 해주며, 본 발명 없이 동일한 성과를 달성하기 위해서는 다수의 시스템 호출들이 요구된다. 섹션 b에 사례들로서 설명된 바와 같이, 표준 API를 사용해서 다수의 시스템 호출들을 야기할 수 있다. 사용자 공간에서 구현된 파일 시스템들의 경우, 이러한 시스템 호출들로부터 야기된 문맥 전환들은 파일 시스템을 사용할 수 없게 만들 수 있다. 본 발명은 사용자 공간과 시스템 공간 간의 경계들, 및 사용자 공간의 프로세스들 간의 경계들을 가로지름으로써 야기된 오버헤드를 최소로 감소시킨다. 상호 운용 가능성을 깨지 않기 위해, 본 발명은 표준화된 파일 시스템 API를 따른다.
앞서 섹션 b에 열거된 사례들의 경우, 가능한 규약이 본 섹션에 기술된다:
d.1) 디렉토리의 요소들의 카운트
가능한 규약은, 콘텐츠, 디렉토리 요소들(서브디렉토리들, 파일들, 기호 연결들)의 수와 마찬가지로, 가상 파일 시스템의 모든 디렉토리가 파일을 이용 가능하게 한다는 것이다. 이러한 파일의 논리적 이름은 "size", "childcount", "dirsize", ... 일 수 있다. 섹션 b.1에 기술된 문제점은 이하의 의사 코드 조각으로 해결될 수 있다:
file_handle := open('/foo/bar@size')
count := read(file_handle)
close(file_handle)
이는, 디렉토리 내의 요소들의 수와 무관하게, 문제점이 이제 오직 3번의 시스템 호출들로 해결될 수 있음을 보여준다. 빅 오(big-o) 표기법에서, 문제점은 시스템 호출들의 수에 관해 O(n)으로부터 O(1)로 감소됐다고 말할 수 있다. 파일 시스템 구현이 이 정보, 즉, /foo/bar의 요소들의 수를 그의 재량대로 갖는다고 가정하면, 제안은 일반적으로 복잡도 O(1)이다.
d.2) 디렉토리의 모든 다이렉트 서브-디렉토리들의 요소들의 카운트:
디렉토리의 모든 다이렉트 서브-디렉토리들의 요소들을 카운트하기 위한 가능한 규약은, 각각의 라인에 서브디렉토리의 이름, 구획 문자 시퀀스 및 서브디렉토리의 요소들의 수를 포함하는 파일이다. 이러한 파일의 논리적 이름은 "content", "dircontent", "data", "subsize", ... 일 수 있다.
file_handle := open('/foo/bar@content')
content := read(file_handle)
close(file_handle)
parse(content)
디렉토리 /foo/bar가, 3, 2, 및 5 디렉토리 요소들을 각각 갖는, 3개의 서브디렉토리들, dir_a, dir_b 및 dir_c를 갖는다고 가정하자. 그러면, 파일 /foo/bar@content는, 예를 들어, 이하의 콘텐츠를 가질 수 있다:
dir_a = 3
dir_b = 2
dir_c = 5
섹션 b.2의 원래의 문제점에 비해, 문제점은 다시 O(n)으로부터 O(1)로 감소되었다. 이는, 섹션 b.2에 기술된 바와 같이, 이 문제점이 이전과 상이한 이유를 설명한다. @content 파일이 없다면, 문제점은 더 간단하겠지만, 다음 의사 코드 조각으로 설명된 바와 같이, 여전히 복잡도 O(n)일 것이다:
dir_handle := opendir('/foo/bar')
while (dir_entry := readdir(dir_handle))
{
if (is_dir(dir_entry ))
{
file_handle := open(dir_entry + "@content")
count := read(file_handle)
close(file_handle)
print "Directory", dir_entry->name, "has
", count, "elements"
}
}
closedir(dir_handle)
d.3) 오프셋으로부터의 디렉토리 요소들의 판독/덩어리로의 완전한 디렉토리 판독
디렉토리에서 소정의 오프셋으로부터 제한된 수의 요소들을 판독하기 위한 가능한 규약은, 오프셋 및 한계 파라미터들(예를 들어, 요소들 2 내지 10을 판독하기 위한 dir_2_10)을 나타내는, 가변 파일 이름으로 이용 가능한 가상 파일들을 가지는 것이다. 이 파일은 단순히 매칭하는 요소들의 이름들을 포함할 수 있다. 이러한 파일의 논리적 이름은 "dir_<from>_<to>", "content_<from>_<to>", "items_<from>_<to>", ... 일 수 있다. 이는 이하의 의사 코드 조각으로 설명된다:
from := 0
to := N
while (file_handle :=
open('/foo/bar@dir_$from_$to'))
{
content := read(file_handle)
close(file_handle)
from := from + N
to := to + N
}
원래의 문제점은 복잡도 O(n2)를 가졌지만, 이는 이제 O(n/N)으로 감소됐다. 덩어리 크기 N이 1인 최악의 경우에, 복잡도는 O(n)이다. N이 적어도 n인 최상의 경우에, 복잡도는 다시 O(1)이다. 이 최상의 성능은, N이 클 수 있도록, 메모리 한계들이 없는 경우에, 또는 디렉토리들이 대부분의 시간에 소수의 요소들을 가질 때(작은 n의 값들) 달성될 것이다.
이 사례들은 섹션 b에 기술된 문제점들에 대한 단지 예시적인 규약들이고, 핵심 아이디어들은 결코 이 3가지 사례들로 제한되지 않는다.
본 발명의 다른 부분은, 파일 시스템의 실제 파일들과 간섭하지 않도록, 가상 파일 시스템에서 이 가상 파일들을 이용 가능하게 하는 방법이다. 다수의 가능성들이 있다:
Figure pct00002
사례들에 설명된 바와 같이, 경로 확장 파일 이름들
본 구현에서, 특별 가상 파일들은 동일한 파일 시스템에서 구현된다(예를 들어, /foo/bar가 디렉토리의 경로이면, 경로 /foo/bar@content는 가상 파일을 나타낸다). 유일한 단점은, 경로 길이가 제한되어서, 항상 경로를 확장할 수는 없다는 것이다.
Figure pct00003
가상 파일들을 갖는 미러링 파일 시스템
가상 파일들을 제공하기 위한 전용 미러링 파일 시스템을 생각할 수 있다. 미러링 파일 시스템은, 그 미러링 파일 시스템에 의해 기본 파일 시스템에 가상 파일들이 추가되는, 기존 파일 시스템 위의 오버레이라고 생각될 수 있다.
Figure pct00004
확장 가능한 플러그인 파일 시스템
이는 미러링 파일 시스템의 더 일반적인 방식으로, 미러링 파일 시스템의 콘텐츠는 플러그인 인터페이스에 의해 동적으로 채워질 수 있다(populated). 가상 콘텐츠를 미러링 파일 시스템에 추가할 수 있는 플러그인이 이러한 파일 시스템에 로드될 수 있다.
파일 시스템의 실제 파일들과 가상 파일들 간의 이름 충돌들을 방지하기 위해, 구획 문자 또는 구획 문자들의 시퀀스가 가상 파일로의 경로로부터 실제 경로로의 경로를 분리하는데 사용될 수 있다. 본 사례들의 구획 문자는, 예를 들어, '@' 이거나, 충돌 가능성을 감소시키기 위한 '.@.'와 같은 있음직하지 않은 시퀀스였다. 예를 들어:
Figure pct00005
/foo/bar@size
Figure pct00006
/foo/bar@content
Figure pct00007
/foo/bar@content_1_10
그러나, POSIX 파일 시스템들의 경우, 경로 구획 문자 자체 ('/')를 제외하고는, 경로 이름들에서 발생할 수 없는 문자 또는 문자들의 시퀀스는 없다. 따라서, 선택된 구획 문자, 또는 시퀀스는 실제 파일들에 대한 경로에서 제외되어야만 한다. 이는 가상 파일 시스템에 대한 사소한 요구 사항이다.
이 가상 파일들은, (제공된 버퍼가 파일의 모든 데이터를 포함할 정도로 충분히 큰 경우) 오직 3개의 시스템 호출들만을 요구하거나, 또는 사용자 공간에서 구현된 파일 시스템의 경우에 6개의 문맥 전환들을 요구하는, 통상의 파일 동작들로 판독될 수 있다. 간섭을 방지하기 위해, 가상 파일 시스템은, 가상 파일 시스템에 대한 사소한 요구 사항인, 단지 선택된 구획 문자가 디렉토리 이름들에서 발생하지 않는 것을 보장하기만 하면 된다는 점에 유의한다.
본 발명은 이하의 장점들을 갖는다:
Figure pct00008
파일 시스템으로부터 데이터를 검색하기 위해 야기된 시스템 호출들의 수가 최소화됨,
Figure pct00009
본 발명은 상호 운용 가능성을 깨지 않음, 본 발명을 구현하는 파일 시스템은 추가된 기능을 모르는 애플리케이션들에 의해 어떠한 제한도 없이 여전히 사용될 수 있음,
Figure pct00010
새로운 시스템 호출들이 요구되지 않음,
Figure pct00011
함수 API에 시스템 호출들을 캡슐화하는 중간 라이브러리들이 조정될 필요가 없음,
Figure pct00012
모든 파일 시스템 동작들이 이전과 같이 동작할 것이고, 호출들이 셸(shell)에서 직접 개시되든, 셸 스크립트 내로부터 개시되든, 또는 어떤 프로그래밍 언어로든 기록된 애플리케이션 내로부터 개시되든 간에 상관없음,
Figure pct00013
새롭게 도입된 가상 파일들이 네트워크 공유들에서도 보일 수 있어서, 이 네트워크 파일 시스템을 사용하는 원격 애플리케이션들도 본 발명으로부터 이익을 얻을 수 있음,
Figure pct00014
비록 3개의 가능한 애플리케이션들만이 본 명세서에 기술되었지만, 본 발명은 일반적으로 적용될 수 있음,
Figure pct00015
문맥 전환들의 감소는 사용자 공간에서 파일 시스템들을 구현할 수 있게 하지만, 그렇지 않았다면 이 파일 시스템들은 큰 오버헤드로 인해 사용될 수 없었을 것임,
Figure pct00016
사용자 공간에서 파일 시스템을 구현하는 것은 시스템 공간에서 파일 시스템을 구현하는 것보다 더 쉬워서, 개발 비용들을 절약한다.
본 발명의 다른 실시예들도 본 발명의 범위로부터 벗어나지 않은 채로 당업자에 의해 사용될 수 있다. 기술된 방법은 특히 가정용 게이트웨이에서 사용될 수 있지만, 파일 시스템들을 사용하는 셋톱 박스들 또는 휴대 전화들과 같은 다른 기기들도 본 발명을 사용할 수 있다. 따라서, 본 발명은 본 명세서에 첨부된 청구항들에 속한다.

Claims (12)

  1. 실제 파일들을 갖는 파일 디렉토리를 포함하는 파일 시스템을 운영하는 방법으로서,
    다수의 시스템 호출들이 요구되는 상기 파일 디렉토리로부터의 결과를 제공하도록 가상 파일을 설계하는 단계,
    상기 가상 파일을 고유 이름에 의해 상기 파일 디렉토리의 실제 파일들과 구별하는 단계, 및
    상기 가상 파일을 열고 상기 가상 파일의 콘텐츠를 판독함으로써 상기 파일 디렉토리로부터의 결과를 검색하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    다수의 시스템 호출들이 요구되는, 파일 시스템 동작을 위해 상기 가상 파일을 설계하는 단계를 포함하는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 파일 디렉토리의 콘텐츠가 변경되었을 때, 상기 가상 파일의 결과를 갱신하는 단계를 포함하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 가상 파일은 고유 파일 확장자에 의해 상기 파일 디렉토리의 실제 파일들과 구별되는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 파일 디렉토리 내에 상기 가상 파일을 배치(arrange)하는 단계를 포함하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 파일 디렉토리의 요소들을 카운트하는, 파일 시스템 동작을 위해 상기 가상 파일을 설계하는 단계를 포함하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 파일 디렉토리의 모든 다이렉트 서브-디렉토리들의 요소들을 카운트하는, 파일 시스템 동작을 위해 상기 가상 파일을 설계하는 단계를 포함하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    오프셋으로부터 상기 파일 디렉토리의 디렉토리 요소들을 판독하는, 파일 시스템 동작을 위해 상기 가상 파일을 설계하는 단계를 포함하는 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    덩어리로 완전한 파일 디렉토리를 판독하는, 파일 시스템 동작을 위해 상기 가상 파일을 설계하는 단계를 포함하는 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 따른 방법을 사용하는 장치.
  11. 제10항에 있어서,
    상기 장치는 파일 시스템, 애플리케이션들 및 유틸리티들을 처리하는 제어 프로그램을 포함하는 운영 체제를 실행하는 마이크로프로세서 시스템을 포함하는 장치.
  12. 제10항 또는 제11항에 있어서,
    상기 장치는 가정용 게이트웨이, DSL 모뎀 또는 셋톱박스인 장치.
KR1020137021965A 2011-01-21 2012-01-20 이전 버전과 호환 가능한 종합 파일 시스템 동작 성능 향상을 위한 방법, 및 각각의 장치 KR101925651B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP11447001.6 2011-01-21
EP11447001 2011-01-21
PCT/EP2012/050823 WO2012098211A1 (en) 2011-01-21 2012-01-20 Method for backward-compatible aggregate file system operation performance improvement, and respective apparatus

Publications (2)

Publication Number Publication Date
KR20140014139A true KR20140014139A (ko) 2014-02-05
KR101925651B1 KR101925651B1 (ko) 2018-12-05

Family

ID=45562289

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137021965A KR101925651B1 (ko) 2011-01-21 2012-01-20 이전 버전과 호환 가능한 종합 파일 시스템 동작 성능 향상을 위한 방법, 및 각각의 장치

Country Status (10)

Country Link
US (1) US20130304778A1 (ko)
EP (1) EP2666107B1 (ko)
JP (1) JP5986585B2 (ko)
KR (1) KR101925651B1 (ko)
CN (1) CN103443789B (ko)
CA (1) CA2824489C (ko)
MX (1) MX2013008458A (ko)
MY (1) MY175092A (ko)
RU (1) RU2598812C2 (ko)
WO (1) WO2012098211A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970794B (zh) * 2013-02-01 2017-11-28 联想(北京)有限公司 数据访问方法和数据访问装置
US9015353B2 (en) 2013-03-14 2015-04-21 DSSD, Inc. Method and system for hybrid direct input/output (I/O) with a storage device
CN103809981B (zh) * 2014-02-26 2017-06-23 中国科学院信息工程研究所 一种通用文件系统的操作获取记录的方法
EP3489832B1 (en) 2014-09-01 2021-06-30 Huawei Technologies Co., Ltd. File access method and apparatus, and storage system
WO2016033718A1 (zh) 2014-09-01 2016-03-10 华为技术有限公司 访问文件的方法、装置和存储系统
WO2017116304A1 (en) 2015-12-31 2017-07-06 Razer (Asia-Pacific) Pte. Ltd. Methods for controlling a computing device, computer-readable media, and computing devices
US20190005066A1 (en) * 2017-06-29 2019-01-03 International Business Machines Corporation Multi-tenant data service in distributed file systems for big data analysis
US11055110B2 (en) * 2018-06-05 2021-07-06 Microsoft Technology Licensing, Llc Operating system service for persistently executing programs
CN109032953B (zh) * 2018-08-13 2022-03-15 福建联迪商用设备有限公司 一种中间库测试方法及终端
CN112667565B (zh) * 2020-12-30 2021-12-03 湖南博匠信息科技有限公司 一种基于fuse的存储单元文件管理方法及系统
KR20220126903A (ko) * 2021-03-10 2022-09-19 삼성전자주식회사 파일 리댁션을 수행하는 전자 장치 및 이의 동작 방법

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2578870B2 (ja) * 1988-01-14 1997-02-05 富士通株式会社 プログラム走行スラップカウント装置
JPH05233402A (ja) * 1992-02-21 1993-09-10 Toshiba Corp メモリマップドファイルアクセス方式
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
US5920895A (en) * 1995-04-24 1999-07-06 Microsoft Corporation Mapped file input/output with delayed zeroing
JPH103421A (ja) 1995-11-20 1998-01-06 Matsushita Electric Ind Co Ltd 仮想ファイル管理システム
US5778384A (en) * 1995-12-22 1998-07-07 Sun Microsystems, Inc. System and method for automounting and accessing remote file systems in Microsoft Windows in a networking environment
US6253218B1 (en) * 1996-12-26 2001-06-26 Atsushi Aoki Three dimensional data display method utilizing view point tracing and reduced document images
WO1999042934A2 (en) 1998-02-20 1999-08-26 Storm Systems, Llc File system performance enhancement
IL143592A0 (en) * 1998-12-07 2002-04-21 Network Ice Corp A method and apparatus for remote installation of network drivers and software
US8099758B2 (en) * 1999-05-12 2012-01-17 Microsoft Corporation Policy based composite file system and method
US6754736B1 (en) * 1999-06-23 2004-06-22 Fujitsu Limited Information processing apparatus, data inputting/outputting method, and program storage medium therefor
US6466944B1 (en) * 1999-12-02 2002-10-15 Novell, Inc. Method for creation, management, and use of files containing multiple virtual data streams using standard file system APIs
US8006243B2 (en) * 1999-12-07 2011-08-23 International Business Machines Corporation Method and apparatus for remote installation of network drivers and software
US7418439B2 (en) * 2000-03-17 2008-08-26 Twin Peaks Software, Inc. Mirror file system
JP2002140219A (ja) * 2000-11-01 2002-05-17 Toshiba Corp ファイル処理方法、ファイル処理装置、ファイル管理用記録媒体
US20020092003A1 (en) * 2000-11-29 2002-07-11 Brad Calder Method and process for the rewriting of binaries to intercept system calls in a secure execution environment
US7194478B2 (en) * 2002-11-12 2007-03-20 Hewlett-Packard Development Company, L.P. Virtual process file systems and methods therefor
US20040249957A1 (en) * 2003-05-12 2004-12-09 Pete Ekis Method for interface of TCP offload engines to operating systems
US7415480B2 (en) * 2003-12-10 2008-08-19 Symantec Operating Corporation System and method for providing programming-language-independent access to file system content
KR100585668B1 (ko) * 2004-03-22 2006-06-07 엘지전자 주식회사 가상 미디어파일 시스템을 이용한 멀티미디어 편집 방법및 장치와 멀티미디어 파일 구조
US7685596B1 (en) * 2004-09-01 2010-03-23 The Mathworks, Inc. Deploying and distributing of applications and software components
KR20060060150A (ko) * 2004-11-30 2006-06-05 삼성전자주식회사 가상 파일 시스템을 만들어 멀티미디어 데이터를 재생하는장치 및 재생방법
JP2006215954A (ja) * 2005-02-07 2006-08-17 Hitachi Ltd ストレージシステム及びストレージ装置のアーカイブ管理方法
CN100407139C (zh) * 2005-03-31 2008-07-30 株式会社日立制作所 文件系统和构建增强其功能的方法、操作系统、记录装置
US8364638B2 (en) * 2005-09-15 2013-01-29 Ca, Inc. Automated filer technique for use in virtualized appliances and applications
US8577940B2 (en) * 2006-03-20 2013-11-05 Parallels IP Holdings GmbH Managing computer file system using file system trees
JP2008107965A (ja) * 2006-10-24 2008-05-08 Sony Corp 情報処理装置、情報処理方法、プログラム、プログラム記録媒体
US7908476B2 (en) * 2007-01-10 2011-03-15 International Business Machines Corporation Virtualization of file system encryption
US8321667B2 (en) 2007-02-28 2012-11-27 Microsoft Corporation Security model for common multiplexed transactional logs
US8225329B1 (en) * 2007-09-13 2012-07-17 Juniper Networks, Inc. Tail synchronized FIFO for fast user space packet access
US20110040812A1 (en) * 2007-12-20 2011-02-17 Virtual Computer, Inc. Layered Virtual File System
US8615502B2 (en) * 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
US20110055299A1 (en) * 2008-12-18 2011-03-03 Virtual Computer, Inc. Managing User Data in a Layered Virtual Workspace
US8516217B2 (en) * 2009-03-27 2013-08-20 International Business Machines Corporation Managing a logically partitioned computing system through a virtual file system
US8452930B2 (en) * 2009-03-27 2013-05-28 Hitachi, Ltd. Methods and apparatus for backup and restore of thin provisioning volume
US8327111B2 (en) * 2009-03-30 2012-12-04 International Business Machines Corporation Method, system and computer program product for batched virtual memory remapping for efficient garbage collection of large object areas
US20100257218A1 (en) 2009-04-03 2010-10-07 Konstantin Iliev Vassilev Merging multiple heterogeneous file systems into a single virtual unified file system
US8285682B2 (en) * 2009-05-11 2012-10-09 Novell, Inc Techniques for establishing a file system that exposes a virtual file system for backup operations
JP5360978B2 (ja) * 2009-05-22 2013-12-04 株式会社日立製作所 ファイルサーバ、及びファイルサーバにおけるファイル操作通知方法
US8478799B2 (en) 2009-06-26 2013-07-02 Simplivity Corporation Namespace file system accessing an object store
US9235583B2 (en) * 2009-07-15 2016-01-12 Aten International Co., Ltd. Virtual media with folder-mount function
US8195929B2 (en) * 2009-08-27 2012-06-05 Hewlett-Packard Development Company, L.P. Controlling file systems sharing among two or more operating system
CA2676735C (en) * 2009-09-03 2010-10-19 Ibm Canada Limited - Ibm Canada Limitee Mechanism for making changes to server file system
US20110238715A1 (en) * 2010-03-25 2011-09-29 Hitachi Data Systems Corporation Complex object management through file and directory interface
US8938606B2 (en) * 2010-12-22 2015-01-20 Intel Corporation System, apparatus, and method for segment register read and write regardless of privilege level
US9065866B2 (en) * 2010-12-29 2015-06-23 Citrix Systems, Inc. Systems and methods for policy based integration to horizontally deployed WAN optimization appliances

Also Published As

Publication number Publication date
JP5986585B2 (ja) 2016-09-06
CN103443789B (zh) 2018-02-02
CA2824489A1 (en) 2012-07-26
MX2013008458A (es) 2013-08-12
RU2013138730A (ru) 2015-02-27
CA2824489C (en) 2021-01-05
JP2014517941A (ja) 2014-07-24
RU2598812C2 (ru) 2016-09-27
WO2012098211A1 (en) 2012-07-26
EP2666107A1 (en) 2013-11-27
EP2666107B1 (en) 2019-03-06
MY175092A (en) 2020-06-05
KR101925651B1 (ko) 2018-12-05
US20130304778A1 (en) 2013-11-14
CN103443789A (zh) 2013-12-11

Similar Documents

Publication Publication Date Title
KR101925651B1 (ko) 이전 버전과 호환 가능한 종합 파일 시스템 동작 성능 향상을 위한 방법, 및 각각의 장치
Peter et al. Arrakis: The operating system is the control plane
US9817580B2 (en) Secure migratable architecture having improved performance features
JP4613023B2 (ja) プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
WO2020244369A1 (zh) 进程间通信的方法、装置以及计算机设备
US20020062402A1 (en) Direct message transfer between distributed processes
WO2021013243A1 (zh) 一种启动小程序的方法、设备和计算机存储介质
CN110389935B (zh) 一种启动小程序的方法、设备和计算机存储介质
JPH06231022A (ja) コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法
JP2006252539A (ja) システムデータインターフェース、関連アーキテクチャ、印刷システムデータインターフェース、および関連印刷システムアーキテクチャ
EP1850231B1 (en) Systems and methods of accessing information across distributed computing components
JP2008234191A (ja) ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法
CN114371811A (zh) 用于存储管理的方法、电子设备和计算机程序产品
US20140325163A1 (en) Cross-Partition Shared Memory Attach for Data Processing Environment
WO2023011249A1 (zh) Io多路复用方法、介质、设备和操作系统
US7167872B2 (en) Efficient file interface and method for providing access to files using a JTRS SCA core framework
JP4853671B2 (ja) アクセス権限判定システム、アクセス権限判定方法及びアクセス権限判定プログラム
Xu et al. vread: Efficient data access for hadoop in virtualized clouds
CN104573061B (zh) 一种支持扩展功能的虚拟文件系统装置和方法
de Bruijn et al. Pipesfs: fast linux i/o in the unix tradition
US9087064B2 (en) User-defined hierarchies in file system data sets
Ballesteros et al. Improving the performance of styx based services over high latency links
Zhao et al. Improving distributed file system performance in virtual machine environments
KR101345802B1 (ko) 룰 데이터 처리 시스템 및 그 방법
Potts et al. L4 Reference Manual---Alpha 21x64

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant