KR100637932B1 - 파일 시스템의 언마운트 방법 - Google Patents
파일 시스템의 언마운트 방법 Download PDFInfo
- Publication number
- KR100637932B1 KR100637932B1 KR1020050041302A KR20050041302A KR100637932B1 KR 100637932 B1 KR100637932 B1 KR 100637932B1 KR 1020050041302 A KR1020050041302 A KR 1020050041302A KR 20050041302 A KR20050041302 A KR 20050041302A KR 100637932 B1 KR100637932 B1 KR 100637932B1
- Authority
- KR
- South Korea
- Prior art keywords
- file system
- file
- unmounted
- files
- unmount
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 파일 시스템의 언마운트 방법에 관한 것으로서, 강제 언마운트 요청에 응답하여 상기 언마운트할 언마운트 파일 시스템이 루트 파일 시스템인지의 여부를 확인하는 제1단계; 상기 언마운트 파일 시스템이 루트 파일 시스템이 아닌 경우 상기 언마운트 파일 시스템 및 그 언마운트 파일 시스템에 속한 파일들에 대하여 다른 프로세스의 접근을 차단하는 제2단계; 상기 언마운트 파일 시스템에 존재하는 프로그램 바이너리 파일을 실행 중인 제1프로세스를 종료하는 제3단계; 상기 언마운트 파일 시스템 상에 오픈된 모든 파일들에 대하여 잠금을 획득하기 위해 기다리는 제2프로세스를 깨우고 상기 파일의 잠금을 삭제하는 제4단계; 상기 언마운트 파일 시스템 상에 파일을 오픈한 제3프로세스에 영향을 미치지 않으면서 상기 언마운트 파일 시스템 상에 오픈된 모든 파일을 닫는 제5단계; 상기 언마운트 파일 시스템 상에서 존재하는 디렉토리에서 실행중인 제4프로세스에게 상기 디렉토리가 더 이상 유효하지 않음을 알리는 제6단계; 및 언마운트 연산을 이용하여 상기 언마운트 파일 시스템을 언마운트하는 제7 단계를 포함한다. 따라서 본 발명은 전체 시스템에 영향을 미치지 않고 파일 시스템을 강제적으로 언마운트시킬 수 있다.
파일 시스템, 언마운트, 리눅스
Description
도 1은 리눅스 시스템에 대한 개략적인 구성도,
도 2는 본 발명의 일실시 예에 따른 파일 시스템의 언마운트 방법에 대한 처리 흐름도,
도 3 및 도 4는 본 발명의 일실시 예에 따른 파일 시스템의 언마운트 방법을 수행하기 위한 파일 시스템의 자료 구조를 설명하기 위한 도면들,
도 5는 본 발명의 일실시 예에 따라 언마운트될 파일 시스템 및 그 파일 시스템에 속한 파일들에 대한 접근이 차단된 상태를 설명하기 위한 도면,
도 6은 본 발명의 일실시 예에 따른 메모리 매핑 해제 과정을 설명하기 위한 도면.
본 발명은 파일 시스템에 관한 것으로서, 특히 파일 시스템의 강제적인 언마운트 방법에 관한 것이다.
일반적으로 파일 시스템은 하드디스크드라이브에 저장될 데이터의 읽기, 쓰기 검색을 용이하게 하기 위한 규칙을 정리해 놓은 것이다. 예를 들어 파일 시스템은 파일에 이름을 붙이고, 저장이나 검색을 위해 그 파일을 어디에 위치시킬 것인지를 나타내는 체계를 의미한다.
이러한 파일 시스템은 마이크로 소프트사(Microsoft)의 윈도우즈, 오픈 소스(Open source) 운영체제인 리눅스(LINUX), 유닉스(UNIX) 등과 같은 컴퓨터 운영체제(OS)의 핵심 기술 중 일부분으로서 존재하며, 파일 시스템의 대표적인 예로서 EXT2(EXTended file system2)와 GFS(Global File Systemm) 등이 있다.
한편 운영체제의 일종인 리눅스(LINUX)는 많은 종류의 파일 시스템을 지원하는 특징이 있다. 따라서 리눅스를 운영체제로 채택한 서버 시스템(이하, '리눅스 시스템'이라 칭함)은 가상 파일 시스템 개념을 도입하여 여러가지 종류의 파일 시스템을 지원하고 있다.
도 1은 리눅스 시스템에 대한 개략적인 구성도이다. 도 1을 참조하면 리눅스 시스템은 사용자 프로세스(110)가 동작하는 사용자 영역(A)과, 리눅스 파일 시스템이 탑재된 커널 영역(B) 및 각종 디바이스들(문자 디바이스(310), 블록 디바이스(320) 및 네트워크 디바이스(330))을 포함하는 하드웨어 영역(C)으로 나뉜다.
특히 커널 영역(B)에는 여러 종류의 파일 시스템들(minix(220), ext2(230), msdos(240) 및 nfs(250)), 가상 파일 시스템(VFS: Virtual File System)(210) 및 디바이스 드라이버(260)를 포함한다.
가상 파일 시스템(210)은 여러 종류의 파일 시스템들(minix(220), ext2(230), msdos(240) 및 nfs(250))의 상위 계층에서 그 각각의 파일 시스템들(minix(220), ext2(230), msdos(240) 및 nfs(250))을 사용자 프로세스(110)와 연결한다.
디바이스 드라이버(260)는 여러 종류의 파일 시스템들(minix(220), ext2(230), msdos(240) 및 nfs(250))을 하드웨어 영역(C)에 위치한 다수의 디바이스들(문자 디바이스(310), 블록 디바이스(320) 및 네트워크 디바이스(330))과 연결된다.
이 때 가상 파일 시스템(210)은 여러 종류의 파일 시스템들(minix(220), ext2(230), msdos(240) 및 nfs(250))을 사용자 프로세스(110)와 연결하기 위해 파일 시스템들(minix(220), ext2(230), msdos(240) 및 nfs(250)) 각각에 공통의 인터페이스를 제공한다. 따라서 사용자 응용 프로그램은 여러 종류의 파일 시스템들(minix(220), ext2(230), msdos(240) 및 nfs(250))에 대해서 연산을 수행할 때 동일한 표준 유닉스 시스템 호출을 사용할 수 있게 된다. 예를 들어 가상 파일 시스템(210)은 사용자 프로세스(110)를 통해 입력되는 여러 종류의 함수(예컨대, 읽기(read( )), 쓰기(write( )) 등) 호출에 대해서 실제 파일 시스템이 지원하는 함수로 대체시켜 준다.
한편, 가상 파일 시스템(210)은 여러 종류의 파일 시스템들(예컨대, minix(220), ext2(230), msdos(240) 및 nfs(250))을 관리하기 위해서, 가상 파일 시스템(210) 및 그 가상 파일 시스템(210)에 마운트된 여러 종류의 파일 시스템들(예컨대, minix(220), ext2(230), msdos(240) 및 nfs(250))을 표현하기 위한 '객체' 들을 포함한다.
가상 파일 시스템(210)에서 사용되는 기본적인 객체 타입으로는 '수퍼블록객체', '아이노드객체', '파일객체', '디엔트리객체'가 있으며, 각 객체들이 저장하는 정보들은 다음과 같다.
먼저 '수퍼블록객체'는 가상 파일 시스템(210)에 마운트된 파일 시스템에 대한 정보를 저장하고, '아이노드객체'는 특정 파일에 대한 일반적인 정보를 저장한다. 이 때 각 '아이노드객체'는 파일 시스템에서 특정 파일을 유일하게 식별하는 하나의 아이노드 번호와 연관된다.
한편 '파일객체'는 열려진 파일과 프로세스 사이의 상호작용에 대한 정보를 저장한다. 이 정보는 각 프로세스가 해당 파일에 접근하는 동안에만 커널 메모리 상에 존재한다. 예를 들어 파일의 현재 위치와 같은 정보를 포함한다.
또한 '디엔트리객체'는 디렉토리와 그와 연관되는 파일의 정보를 저장한다.
특히 가상 파일 시스템(210)은 상기 리눅스 시스템(즉, 가상 파일 시스템(210)이 탑재된 시스템)에 마운트된 파일 시스템 리스트를 상기 '수퍼블럭객체'를 통해 관리한다. 따라서 상기 리눅스 시스템(즉, 가상 파일 시스템(210)이 탑재된 시스템)이 초기화될 때 실제 파일 시스템(예컨대, minix(220), ext2(230), msdos(240) 및 nfs(250))은 가상 파일 시스템(210)에 자신을 등록한다.
한편, 리눅스 시스템이 사용하는 각 파일 시스템들(예컨대, minix(220), ext2(230), msdos(240) 및 nfs(250))은 장치 식별자로 접근되지 않고, 하나의 계층적인 트리 구조로 통합되어 파일 시스템이 마치 하나인 것처럼 보이게 한다. 이와 같이 파일 시스템들(예컨대, minix(220), ext2(230), msdos(240) 및 nfs(250))을 통합한 하나의 파일 시스템이 가상 파일 시스템(210)인 것이다.
따라서 리눅스 시스템에는 단 하나의 계층적인 디렉토리 구조만 존재한다. 모든 것은 '/'로 표현되는 루트 디렉토리에서 시작하여 그 하위 디렉토리로 점차 내려간다. 리눅스 시스템에 특정 파일 시스템이 새롭게 마운트될 때 그 파일 시스템은 상기 디렉토리 구조에 마운트되어야만 한다. 반대로 특정 파일 시스템을 사용하지 않을 때는 그 파일 시스템을 언마운트한다.
파일 시스템(예컨대, minix(220))을 마운트하면 가상 파일 시스템(210)은 상기 마운트한 파일 시스템(예컨대, minix(220)) 정보를 저장하기 위한 새로운 수퍼블럭객체를 할당하고 상기 마운트한 파일 시스템(220)의 물리적인 장치로부터 파일 시스템 정보를 읽어 와서 수퍼블럭 객체의 내용을 채운다. 이 때, 수퍼블럭 객체에는 파일 시스템 타입, 블록 크기, 파일 시스템의 상태, 파일 시스템 상의 열린 파일 리스트 등과 같은 정보가 포함된다.
한편, 핫스왑 디스크나 네트워크 파일 시스템을 사용하는 서버 시스템은 디스크의 장애가 발생하거나 시스템의 업그레이드를 수행해야 하는 경우 디스크를 교체하기 위해 해당 파일 시스템을 언마운트해야 한다. 그런데 이 때 해당 파일 시스템에 대해 접근하고 있는 프로세스가 있거나, 그 파일 시스템 상에 존재하는 파일이 열린 경우에 파일 시스템은 '사용중(BUSY)' 상태가 되고, 파일 시스템이 '사용중(BUSY)' 상태인 경우 그 파일 시스템은 언마운트 되지 않는다.
종래에는 이런 경우에 불가피하게 시스템(예컨대, 컴퓨터 등)의 전원을 꺼야 했다.
이 때 만일 상기 파일 시스템과 관련없이 진행 중이던 다른 작업이 존재하는 경우 상기 시스템(예컨대, 컴퓨터 등)은 그 작업을 지속시키기 위해 다시 기동되어야 한다. 즉 상기 시스템(예컨대, 컴퓨터 등)은 해당 파일 시스템을 언마운트시킨 후 다시 기동되어야 하는 것이다.
따라서 '사용중(BUSY)' 상태인 파일 시스템을 강제적으로 언마운트 시키기 위한 종래의 방법은 시스템의 재기동으로 인한 비용 부담이 발생하는 문제가 있다. 특히 대규모 서버 시스템의 경우 재기동을 위한 비용 부담이 더욱 커진다.
따라서, 본 발명은 상기 단점을 보완하기 위해 서버 시스템의 재기동으로 인한 비용 부담을 발생시키지 않는 파일 시스템의 언마운트 방법을 제공하고자 한다.
또한 본 발명은 서버 시스템의 전원을 오프시키지 않고 '사용중(BUSY)' 상태인 파일 시스템을 강제적으로 언마운트 시키는 방법을 제공하고자 한다.
또한 본 발명은 서버 시스템의 특정 파일 시스템 언마운트시 그 파일 시스템과 별개로 동작하는 프로세스 및 파일에 영향을 주지 않고 파일 시스템을 언마운트시키는 방법을 제공하고자 한다.
상기 목적을 달성하기 위해 본 발명에서 제공하는 파일 시스템의 언마운트 방법은 특정 파일 시스템에 대한 강제 언마운트 요청에 응답하여 상기 언마운트할 언마운트 파일 시스템이 루트 파일 시스템인지의 여부를 확인하는 제1 단계; 상기 언마운트 파일 시스템이 루트 파일 시스템이 아닌 경우 상기 언마운트 파일 시스템 및 그 언마운트 파일 시스템에 속한 파일들에 대하여 다른 프로세스의 접근을 차단하는 제2 단계; 상기 언마운트 파일 시스템에 존재하는 프로그램 바이너리 파일을 실행 중인 제1 프로세스를 종료하는 제3 단계; 상기 언마운트 파일 시스템 상에 오픈된 모든 파일들에 대하여 잠금을 획득하기 위해 기다리는 제2 프로세스를 깨우고 잠금을 삭제하는 제4 단계; 상기 언마운트 파일 시스템 상에 파일을 오픈한 제3 프로세스에 영향을 미치지 않으면서 상기 언마운트 파일 시스템 상에 오픈된 모든 파일을 닫는 제5 단계; 상기 언마운트 파일 시스템 상에 존재하는 디렉토리에서 실행 중인 제4 프로세스에게 상기 디렉토리가 더 이상 유효하지 않음을 알리는 제6 단계; 및 언마운트 연산을 이용하여 상기 언마운트 파일 시스템을 언마운트하는 제7 단계를 포함함을 특징으로 한다.
이하 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 이 때, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
도 2는 본 발명의 일실시 예에 따른 파일 시스템의 언마운트 방법에 대한 처리 흐름도이다. 도 2는 리눅스를 운영체제로 채택한 서버 시스템에서 기동 중인 특정 파일 시스템이 사용자에 의해 강제 언마운트 요청된 경우 이를 처리하는 방법에 대한 예를 도시하고 있다.
도 2를 참조하여 본 발명의 일실시 예에 따른 파일 시스템의 언마운트 방법을 설명하면 다음과 같다.
먼저 사용자로부터 특정 파일 시스템에 대한 강제 언마운트가 요청되면(S105) 상기 서버 시스템은 강제 언마운트할 파일 시스템이 루트 파일 시스템인지의 여부를 확인한다(S110).
통상적으로 어떤 장치가 루트 파일 시스템으로 마운트 되어야 한다는 것은 서버 시스템의 시스템 설정 파일에 기록되어 있으며 이것은 서버 시스템이 처음 부팅될 때 읽혀져서 커널의 자료구조에 로드된다. 즉, 서버 시스템의 메모리에 로드된다. 또한 그 시스템에 마운트된 파일 시스템 정보도 상기 메모리에 로드된다. 한편 사용자는 강제 언마운트 요청시 언마운트되어야 할 파일 시스템 선택 정보를 함께 입력한다.
따라서 상기 과정(S110)은 사용자가 입력한 파일 시스템 선택 정보에 의거하여 상기 메모리(즉, 커널 내의 자료구조)로부터 강제 언마운트될 파일 시스템 정보 및 루트 파일 시스템 정보를 검출한 후 그 두 정보가 동일한지의 여부를 확인함으로써 수행함이 바람직하다.
이와 같이 상기 과정(S110)을 수행하기 위해 커널 내의 자료구조를 이용하는 방법은 도 3 및 도 4에 예시되어 있다.
도 3 및 도 4는 본 발명의 일실시 예에 따른 파일 시스템의 언마운트 방법을 수행하기 위한 파일 시스템의 자료 구조를 설명하기 위한 도면들로서, 도 3의 예에서 task_struct(211)는 실행중인 프로세스에 대한 정보를 저장하는 자료구조이고, fs_struct(212)는 프로세스와 파일 시스템 간의 관계를 나타내는 정보를 저장하는 자료구조이고, vfsmount(213)는 서버 시스템에 마운트되어 있는 파일 시스템에 대한 정보를 저장하는 자료구조이다. 한편 도 4의 예에서 vfsmntlist(214)는 서버 시스템에 마운트되어 있는 파일 시스템에 대한 정보를 관리하는 리스트이고, vfsmount(215)는 도 3의 vfsmount(213)와 같이 서버 시스템에 마운트되어 있는 파일 시스템에 대한 정보를 저장하는 자료구조이고, super_block(216)은 파일 시스템 각각에 대한 정보를 저장하는 자료구조이다.
도 2 내지 도 4를 참조하여 상기 과정(S110)을 좀더 상세히 설명하면 다음과 같다.
먼저 상기 과정(S105)에서 특정 파일 시스템에 대한 강제 언마운트가 요청되면 서버 시스템은 도 3에 예시된 task_struct(211)로부터 실행중인 프로세스 정보를 검출한다. 예를 들어 task_struct(211)의 *fs가 가르키는 포인터 정보를 이용하여 fs_struct(212)를 찾아가고, fs_struct(212)의 *rootmnt가 가리키는 포인터 정보를 이용하여 vfsmount(213)을 찾아간다. 이와 같이 함으로써 서버 시스템은 그 서버 시스템에 마운트된 루트 파일 시스템에 대한 정보를 검출하는 것이다.
또한 서버 시스템은 상기 과정(S105)에서 강제 언마운트 요청시 함께 전달된 파일 시스템 정보를 이용하여 vfsmntlist(214)로부터 강제 언마운트할 파일 시스템 정보를 검출한다. 예를 들어 vfsmntlist(214)로부터 강제 언마운트할 파일 시스템이 마운트된 정보인 vfsmount(215)를 찾아간다.
상기 과정(S110)은 도 3의 예와 같은 과정으로부터 검출된 루트 파일 시스템 에 대한 정보(vfsmount(213))와 도 4의 예와 같은 과정으로부터 검출된 강제 언마운트할 파일 시스템에 대한 정보(vfsmount(215))를 비교함으로써 강제 언마운트 요청된 파일 시스템이 루트 파일 시스템인지의 여부를 확인함이 바람직하다. 즉, vfsmount(213)와 vfsmount(215)를 비교하여 그 두 값이 동일하면 강제 언마운트 요청된 파일 시스템이 루트 파일 시스템인 것으로 판단함이 바람직하다.
상기 확인(S110) 결과 강제 언마운트할 파일 시스템이 루트 파일 시스템이라면 언마운트 과정을 수행하지 않는다. 즉, 상기 과정(S110) 이후의 과정들을 수행하지 않는다. 이는 루트 파일 시스템을 언마운트 할 경우 서버 시스템을 정상적으로 운영할 수 없기 때문이다.
그리고 상기 확인(S110) 결과 강제 언마운트할 파일 시스템이 루트 파일 시스템이 아니면 서버 시스템은 강제적인 언마운트를 위한 과정을 시작한다.
먼저 서버 시스템은 강제적인 언마운트를 수행하는 파일 시스템 및 그 파일 시스템에 속한 파일에 대하여 다른 프로세스가 접근하지 못하도록 하는 접근 차단 과정(S115)을 수행한다.
이를 위해 서버 시스템은 먼저, 도 4에 예시된 바와 같이 강제 언마운트할 파일 시스템이 마운트된 정보인 vfsmount(215)로부터 강제 언마운트할 파일 시스템에 대한 개별 정보를 저장하는 super_block(216)을 검출하고, 그 super_block(216)으로부터 강제 언마운트할 파일 시스템에 속한 파일 객체들(217, 218, 219)에 대한 정보를 검출한다. 그리고 상기 super_block(216)과 파일 객체들(217, 218, 219)의 상태를 '강제 언마운트 상태'로 변경한다. 예를 들어 super_block(216)의 s_flags 필드값 및 파일 객체들(217, 218, 219)의 f_flags 필드값을 'unmount'로 변경한다.
도 5에 상기 접근 차단 과정(S115) 수행 결과의 예를 도시하고 있다. 즉, 도 5는 본 발명의 일실시 예에 따라 언마운트될 파일 시스템 및 그 파일 시스템에 속한 파일들에 대한 접근이 차단된 상태를 설명하기 위한 도면이다. 도 5를 참조하면 상기 접근 차단을 수행하기 위해 서버 시스템은 강제 언마운트할 파일 시스템에 대한 정보를 저장하는 super_block(216)의 s_flags 필드값 및 상기 파일 시스템에 속한 파일 객체들(file 객체 1(217), file 객체 2(218) 및 file 객체 3(219))의 f_flags 필드값을 <unmount>라고 설정한다. 그러면 그들 각각에게 접근을 시도하는 프로세스들은 상기 필드값을 확인한 후 접근을 포기하게 되는 것이다.
예를 들어, 프로세스1(111), 프로세스2(113), 프로세스3(115) 및 프로세스4(117)가 각각 파일 시스템 및 그 파일 시스템에 속한 파일들로 접근하기 위해 파일연산을 위한 시스템 호출을 발생시키면, 서버 시스템은 먼저 상기 파일 시스템 및 그 파일 시스템에 속한 파일 객체들의 상태를 파악하기 위해 super_block(216)의 s_falgs 필드값 및 파일 객체들(file 객체 1(217), file 객체 2(218) 및 file 객체 3(219))의 f_flags 필드값을 확인한다. 그리고 상기 필드값이 강제 언마운트 상태를 나타내는 <unmount>이면 해당 프로세스에게 '에러'를 반환한다. 예컨대, 해당 파일시스템 또는 파일객체가 강제 언마운트 상태이므로 접근이 불가하다는 '에러 메시지'를 전송한다. 따라서, 특정 파일 시스템이 강제적인 언마운트를 하는 동안 다른 프로세스들이 그 파일 시스템에 대한 접근과 수정을 할 수 없게 되는 것이다.
이와 같이 강제 언마운트할 파일 시스템 및 그 파일 시스템에 속한 파일들에 대한 접근 차단이 완료되면, 서버 시스템은 강제 언마운트할 파일 시스템 상의 모든 열린 파일에 매핑된 메모리를 매핑 해제한다(S120).
도 6은 본 발명의 일실시 예에 따른 메모리 매핑 해제 과정(S120)을 설명하기 위한 도면이다. 통상적으로 커널영역에서 파일 객체(10)는 주소 공간 정보(11)를 포함하고 있으며, 주소 공간 정보(11)에는 파일이 매핑되어 있는 가상 메모리의 연속적인 공간에 대한 정보를 나타내는 정보(예컨대, 연속 가상 메모리 영역(20, 30, 40) 리스트)가 저장되어 있다. 상기 과정(S120)은 상기 저장된 리스트 정보를 변경 또는 삭제 함으로써 가상 연결 상태를 해제하는 것을 말한다.
도 6은 파일객체(10)에 복수의 연속 가상 메모리 영역들(20, 30, 40)이 연결된 상태와 상기 연결된 상태가 메모리 매핑을 해제하기 위한 특정 함수(예컨대, munmmap 함수)(50)에 의해 해제된 상태를 예시하고 있다. 즉, 도 6의 예에서 'S11', 'S13' 및 'S15'는 파일객체(10)와 복수의 연속 가상 메모리 영역들(20, 30, 40)이 매핑된 상태를 나타내고, 'S21', 'S23' 및 'S25'은 파일객체(10)와 복수의 연속 가상 메모리 영역들(20, 30, 40)의 매핑이 해제된 상태를 나타낸다.
이 단계(S120)는 강제 언마운팅할 파일 시스템에 존재하는 프로그램 바이너리 파일을 실행중인 프로세스에게 영향을 미친다. 즉, 강제 언마운팅할 파일 시스템에 존재하는 프로그램 바이너리 파일을 실행중인 프로세스(이하, '프로세스 1'이라 칭함)가 있을 경우 상기 프로그램 바이너리 파일이 메모리에 매핑되어 있는데, 이 때 그 메모리 매핑을 해제하면 상기 프로세스 1은 “세그멘테이션 결함” 에러 를 발생하고 종료하게 된다. 다시 말하면 메모리 매핑 해제와 함께 강제 언마운트할 파일 시스템 상에 존재하는 프로그램 바이너리 파일을 샐행 중인 프로세스가 종료하게 된다.
이와 같이 메모리 매핑을 해제하였으면 서버 시스템은 강제 언마운트할 파일 시스템 내에 열려있는 모든 파일들의 잠금에 대해서 잠금 획득을 기다리는 프로세스(이하, '프로세스 2'라 칭함)를 깨우고 상기 파일 잠금을 삭제한다(S125). 그러면 상기 깨어난 '프로세스 2'는 상기 파일 잠금이 삭제된 파일에 대하여 다시 파일 잠금을 획득하려고 시도할 것이다. 하지만 상기 과정(S115)에서 상기 파일의 상태를 '강제 언마운팅'상태로 설정하였으므로, 서버 시스템은 상기 '프로세스 2'에게 에러를 리턴한다. 즉, 상기 '프로세스 2'에 에러를 발생시킨다.
여기까지 작업을 수행하면 강제 언마운트할 파일 시스템 상에 존재하는 모든 열린 파일을 닫을 준비가 되었다.
그런데 파일은 원래 그것을 연 프로세스의 문맥 상에서 닫아야 한다. 즉 프로세스는 하나의 실행 중인 프로그램을 의미하는 것으로서 정해진 자신의 코드를 실행하는 것이다. 따라서 프로세스 수행 중에 열린 파일은 그 프로세스가 닫아야만 하며 커널이 프로세스로 하여금 상기 파일을 닫게 만드는 것은 불가능하다. 예를 들어서, 텍스트 에디터 프로그램이 어떤 텍스트 파일을 오픈한 상태인데 운영체제가 임의로 에디터 프로그램에게 그 파일을 닫도록 할 수는 없는 것이다. 그렇다고 해서 커널이 열린 파일을 임의로 강제적으로 닫으면 그 파일을 원래 열었던 프로세스는 종료하게 되거나 오류를 발생하게 된다. 하지만 본 발명에서는 언마운트할 파 일 시스템 및 그 파일 시스템에 속한 파일만을 처리함으로써 다른 프로세스에는 영향을 미치지 않도록 하는 것을 목적으로 한다. 따라서 상기 파일을 닫을 때 그 파일을 열었던 프로세스가 종료하거나 오류를 발생하지 않아야 한다. 즉 상기 파일을 열었던 프로세스는 그대로 살아있어야 하는 것이다.
이를 위해 본 발명에서는 먼저 강제 언마운트할 파일 시스템 상에 존재하는 모든 열린 파일 객체를 복제한 후(S130) 그 원래 파일 객체를 비활성화시킨다(S135). 이 때 파일 객체를 복제한다는 것은 새로운 파일 객체를 새로 할당하고 원본 파일 객체의 필드값을 모두 새로운 파일 객체로 복사하는 것을 의미한다. 한편 서버 시스템은 원래 파일 객체의 상태를 'DEFUNCT' 상태로 변경함으로써 그 원래 파일 객체의 상태를 비활성화시키는 것이 바람직하다. 이와 같이 비활성화된 원래 파일 객체는 추후에 그 파일을 연 프로세스로부터 닫기 요청이 입력될 경우 그 파일의 파일 객체를 해제하는 작업만을 수행한다. 즉 상기 경우 서버 시스템은 파일을 닫기 위해 필요한 다른 시스템 함수를 호출하지 않는다.
이와 같이 강제 언마운트할 파일 시스템 상에 존재하는 모든 열린 파일에 대한 복제가 완료되면 서버 시스템은 강제 언마운트할 파일 시스템 상에 열린 파일의 내용과 저장 장치의 내용을 동기화한 후(S140) 복제된 파일을 닫는다(S145). 예를 들어 서버 시스템은 강제 언마운트할 파일 시스템 상에 열린 파일의 버퍼 캐쉬에 있는 데이타를 모두 저장장치에 기록한 후 파일을 닫아야 한다. 이를 위하여 서버 시스템은 파일 복제본에 대해서 플러쉬(flush, 일명 'fsync'라고도 함) 연산을 수행하는 것이 바람직하다. 이와 같이 파일 동기화를 수행한 후 복제된 파일을 닫게 되면 원래 파일 객체는 'DEFUNCT' 상태이고 그 복제본은 닫혀 있으므로, 원래 파일을 연 프로세스가 그대로 실행되고 있음에도 불구하고 원래 파일을 닫은 것과 같은 효과를 보게 된다. 즉 원래 파일을 연 프로세스가 종료하게 되거나 그 프로세스에 오류를 발생시키지 않으면서 해당 파일을 닫은것과 같은 효과를 볼 수 있는 것이다.
이렇게 하여 파일의 내용과 저장장치의 내용을 동기화 시킬 수 있고, 또한 파일의 정보도 저장장치에 기록할 수 있다. 이후에 원래의 파일을 연 프로세스가 파일을 닫을 때는 그 파일이 DEFUNCT 상태로 표시되어 있으므로 파일 객체를 해제하는 일만을 수행하게 된다. 즉 파일 객체 해제 이외의 별도의 시스템 호출이 일어나지 않는다.
이와 같이 강제 언마운트할 파일 시스템 상의 열린 파일에 대한 처리 과정을 수행하였으면, 마지막으로 서버 시스템은 강제 언마운트할 파일 시스템 상에 존재하는 디렉토리에서 실행중인 프로세스를 처리해야 한다(S150). 즉 상기 프로세스가 실행중인 디렉토리가 더 이상 유효하지 않음을 상기 프로세스에게 알린다. 이를 위해 서버 시스템은 강제 언마운트할 파일 시스템 상에서 실행 중인 모든 프로세스의 작업 디렉토리 정보를 널(NULL)로 수정함이 바람직하다.
이 때 상기 프로세스들은 이후에 'cd 명령'을 이용하여 작업 디렉토리를 이동할 수 있다. 즉 강제 언마운트할 파일 시스템 상에서 실행 중이던 프로세스(이하 '프로세스 3'이라 칭함)가 종료되거나 그 '프로세스 3'에 에러가 발생하는 것은 아니다. 따라서 상기 '프로세스 3'들은 이후에 cd 명령을 이용하여 다른 디렉토리로 이동한 후 정상적으로 작업을 진행 할 수 있다.
여기까지의 과정을 수행하면 강제 언마운트할 파일 시스템의 접근 카운트가 감소되어 강제 언마운트할 파일 시스템의 상태가 '사용중(BUSY)'이 아닌 상태가 된다. 따라서 서버 시스템은 정상적인 언마운트 연산을 이용하여 상기 파일 시스템을 언마운트 한다(S155).
상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위의 균등한 것에 의해 정해져야 한다.
상기와 같은 본 발명은 파일 시스템의 언마운트 방법에 관한 것으로서, 서버 시스템의 전원을 오프시키지 않고 '사용중(BUSY)' 상태인 파일 시스템을 강제적으로 언마운트 시키되, 그 파일 시스템과 별개로 동작하는 프로세스 및 파일에 영향을 주지 않음으로써 서버 시스템의 재기동으로 인한 비용 부담을 발생시키지 않는 효과가 있다. 예를 들어 본 발명의 파일 시스템 언마운트 방법은 파일 시스템 상에 열려있는 파일이 존재하거나, 파일 시스템 상에 존재하는 프로그램 바이너리를 수행 중인 프로세스가 있거나, 실행중인 프로세스의 작업 디렉토리가 파일 시스템에 속한 경우에도 전체 시스템에 영향을 미치지 않고 파일 시스템을 강제적으로 언마운트시킬 수 있는 장점이 있다. 이로 인해 본 발명은 파일 시스템의 강제적인 언마 운트 과정을 통해서 열린 파일의 동기화를 보장할 수 있고, 시스템의 전원을 끄지 않고 디스크를 교체할 수 있는 효과가 있다. 또한 본 발명의 강제적인 언마운트 방법은 리눅스의 가상 파일 시스템 수준에서 구현되어 하위의 파일 시스템 종류에 상관없이 적용 가능한 장점이 있다.
Claims (7)
- 특정 파일 시스템에 대한 강제 언마운트 요청에 응답하여 언마운트할 언마운트 파일 시스템이 루트 파일 시스템인지의 여부를 확인하는 제1 단계;상기 언마운트 파일 시스템이 루트 파일 시스템이 아닌 경우 상기 언마운트 파일 시스템 및 그 언마운트 파일 시스템에 속한 파일들에 대하여 다른 프로세스의 접근을 차단하는 제2 단계;상기 언마운트 파일 시스템에 존재하는 프로그램 바이너리 파일을 실행 중인 제1 프로세스를 종료하는 제3 단계;상기 언마운트 파일 시스템 상에 오픈된 모든 파일들에 대하여 잠금을 획득하기 위해 기다리는 제2 프로세스를 깨우고 잠금을 삭제하는 제4 단계;상기 언마운트 파일 시스템 상에 파일을 오픈한 제3 프로세스에 영향을 미치지 않으면서 상기 오픈된 모든 파일을 닫는 제5 단계;상기 언마운트 파일 시스템 상에 존재하는 디렉토리에서 실행중인 제4 프로세스에게 상기 디렉토리가 더 이상 유효하지 않음을 알리는 제6 단계; 및언마운트 연산을 이용하여 상기 언마운트 파일 시스템을 언마운트하는 제7 단계를 포함함을 특징으로 하는 파일 시스템의 언마운트 방법.
- 제1항에 있어서, 상기 제1 단계는상기 언마운트 파일 시스템이 탑재된 서버 시스템의 기동시에 메모리에 로드된 루트 파일 시스템 정보를 검출하는 단계;상기 강제 언마운트 요청시 입력된 선택 정보에 의거하여 상기 언마운트 파일 시스템 정보를 검출하는 단계; 및상기 루트 파일 시스템 정보와 상기 언마운트 파일 시스템 정보를 비교하는 단계를 포함함을 특징으로 하는 파일 시스템의 언마운트 방법.
- 제1항에 있어서, 상기 제2 단계는상기 언마운트 파일 시스템 및 그 언마운트 파일 시스템에 속한 파일들에 대한 정보를 저장하는 자료구조의 필드값들 중 상기 언마운트 파일 시스템 및 그 언마운트 파일 시스템에 속한 파일들의 상태를 나타내는 필드 값을 '강제 언마운트 상태'로 변경함을 특징으로 하는 파일 시스템의 언마운트 방법.
- 제1항에 있어서, 상기 제3 단계는상기 언마운트 파일 시스템 상의 모든 열린 파일에 대한 메모리 매핑을 해제함을 특징으로 하는 파일 시스템의 언마운트 방법.
- 제1항에 있어서, 상기 제4 단계는상기 제2 프로세스를 깨우는 단계;상기 언마운트 파일 시스템 상의 모든 열린 파일의 파일 잠금을 삭제하는 단계; 및상기 제2 단계에서 접근 차단되고 상기 파일 잠금 삭제 단계에서 파일 잠금 삭제된 파일에 대한 상기 제2 프로세스의 접근 시도에 응답하여 상기 제2 프로세스에 에러를 발생시키는 단계를 포함함을 특징으로 하는 파일 시스템의 언마운트 방법.
- 제1항에 있어서, 상기 제5 단계는상기 언마운트 파일 시스템 상의 모든 열린 파일을 복제하는 단계;상기 복제된 파일의 원본 파일을 비활성화하는 단계;상기 언마운트 파일 시스템 상에 열린 파일의 내용과 저장장치의 내용을 동기화하는 단계; 및상기 복제된 파일을 닫는 단계를 포함함을 특징으로 하는 파일 시스템의 언마운트 방법.
- 제1항에 있어서, 상기 제6 단계는상기 언마운트 파일 시스템 상에서 실행중인 모든 프로세스의 작업 디렉토리 정보를 널로 수정함을 특징으로 하는 파일 시스템의 언마운트 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050041302A KR100637932B1 (ko) | 2005-05-17 | 2005-05-17 | 파일 시스템의 언마운트 방법 |
CN2005101246334A CN1866211B (zh) | 2005-05-17 | 2005-11-14 | 强制卸载文件系统的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050041302A KR100637932B1 (ko) | 2005-05-17 | 2005-05-17 | 파일 시스템의 언마운트 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100637932B1 true KR100637932B1 (ko) | 2006-10-24 |
Family
ID=37425239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050041302A KR100637932B1 (ko) | 2005-05-17 | 2005-05-17 | 파일 시스템의 언마운트 방법 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR100637932B1 (ko) |
CN (1) | CN1866211B (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9684573B2 (en) | 2010-04-29 | 2017-06-20 | Veritas Technologies Llc | Dismounting a storage volume |
CN103617065A (zh) * | 2013-12-13 | 2014-03-05 | 广州市久邦数码科技有限公司 | 一种强力卸载移动终端系统软件的系统及方法 |
CN108920480B (zh) * | 2018-04-17 | 2021-09-03 | Oppo广东移动通信有限公司 | 一种文件系统异常的处理方法及设备、计算机存储介质 |
CN112817911B (zh) * | 2021-02-09 | 2023-07-11 | 海信视像科技股份有限公司 | 一种文件系统修复方法及终端设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132446A (ja) | 1998-10-21 | 2000-05-12 | Nec Software Kobe Ltd | ワークステーション、ネットワークシステム並びにファイルシステムの制御方法 |
US20020144047A1 (en) | 2000-06-26 | 2002-10-03 | International Business Machines Corporation | Data management application programming interface handling mount on multiple nodes in a parallel file system |
WO2004042724A1 (en) | 2002-11-07 | 2004-05-21 | Koninklijke Philips Electronics N.V. | Record carrier having a main file system area and a virtual file system area |
US6757695B1 (en) | 2001-08-09 | 2004-06-29 | Network Appliance, Inc. | System and method for mounting and unmounting storage volumes in a network storage environment |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6308184B1 (en) * | 1999-04-09 | 2001-10-23 | Hewlett-Packard Company | Delayed unloading of a dynamically loadable file |
US20020083430A1 (en) * | 2000-12-26 | 2002-06-27 | Tadao Kusuda | Uninstall control apparatus which controls uninstallation of device control software |
KR20040071791A (ko) * | 2003-02-07 | 2004-08-16 | (주) 사이텍소프트 | 드라이버 자동제거 장치 및 방법 그리고 그 방법이 기록된기록매체 |
JP4082256B2 (ja) * | 2003-03-25 | 2008-04-30 | ブラザー工業株式会社 | 情報処理装置及びプログラム |
-
2005
- 2005-05-17 KR KR1020050041302A patent/KR100637932B1/ko not_active IP Right Cessation
- 2005-11-14 CN CN2005101246334A patent/CN1866211B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132446A (ja) | 1998-10-21 | 2000-05-12 | Nec Software Kobe Ltd | ワークステーション、ネットワークシステム並びにファイルシステムの制御方法 |
US20020144047A1 (en) | 2000-06-26 | 2002-10-03 | International Business Machines Corporation | Data management application programming interface handling mount on multiple nodes in a parallel file system |
US6757695B1 (en) | 2001-08-09 | 2004-06-29 | Network Appliance, Inc. | System and method for mounting and unmounting storage volumes in a network storage environment |
WO2004042724A1 (en) | 2002-11-07 | 2004-05-21 | Koninklijke Philips Electronics N.V. | Record carrier having a main file system area and a virtual file system area |
Non-Patent Citations (2)
Title |
---|
2003 대한전자공학괴 하계종합학술대회 논문집 |
정보과학회논문지 : 시스템 및 이론 |
Also Published As
Publication number | Publication date |
---|---|
CN1866211B (zh) | 2010-11-03 |
CN1866211A (zh) | 2006-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11726845B2 (en) | Private page cache-based sharing of access to application image layers by application containers | |
US8074035B1 (en) | System and method for using multivolume snapshots for online data backup | |
US10303499B2 (en) | Application aware graph driver | |
US8055864B2 (en) | Efficient hierarchical storage management of a file system with snapshots | |
US8515911B1 (en) | Methods and apparatus for managing multiple point in time copies in a file system | |
US7363540B2 (en) | Transaction-safe FAT file system improvements | |
US7519806B2 (en) | Virtual partition for recording and restoring computer data files | |
US8489815B2 (en) | Managing cache data and metadata | |
US6957362B2 (en) | Instantaneous restoration of a production copy from a snapshot copy in a data storage system | |
US6792518B2 (en) | Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies | |
EP0415346B1 (en) | Method and system for dynamic volume tracking in an installable file system | |
EP2329360B1 (en) | Managing cache data and metadata | |
US6934822B2 (en) | Organization of multiple snapshot copies in a data storage system | |
US10860536B2 (en) | Graph driver layer management | |
US7174420B2 (en) | Transaction-safe FAT file system | |
JP5911504B2 (ja) | ストリーミング技術に基づくソフトウェア・イメージのアップグレード | |
US7694105B2 (en) | Data storage systems that implement sector sets | |
US20070061540A1 (en) | Data storage system using segmentable virtual volumes | |
KR20040053142A (ko) | 대형 파일들의 효율적 관리 | |
KR20060069791A (ko) | 공유된 읽기 전용 파일 시스템 내의 바이러스의 검출 및경고 | |
US8667035B2 (en) | Method of converting a filesystem while the filesystem remains in an active state | |
KR100637932B1 (ko) | 파일 시스템의 언마운트 방법 | |
US6823348B2 (en) | File manager for storing several versions of a file | |
Steigerwald | Imposing order | |
KR100545654B1 (ko) | 시스템 시동 후 디스크에 존재하는 파일의 무결점을감지하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20101001 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |