2010-12-06 5 views
0

NFS 파일 시스템을 마운트 할 때 모든 데이터 처리는 nfs 클라이언트를 통해 이루어집니다. NFS가 아닌 다른 것을 사용하기 위해 자체 처리기를 작성하려면 어떻게해야합니까?Solaris : 응용 프로그램 핸들러에 파일 시스템 마운트

이 대안은 로컬 호스트의 NFS 서버가 될 수 있지만 것이라고

편집 굉장히 비효율적 솔기

일반적으로 당신이 얻을 파일 시스템으로

을 어떻게해야하는지의 예 : 응용 프로그램이 /가 파일 시스템을 읽기와 쓰기, Solaris는 마운트 된 위치를보고 디스크 인 경우 디스크를 읽거나 씁니다. 소프트웨어 미러 인 경우 미러 소프트웨어를 읽고 씁니다. NFS라면 원격 NFS 서버에 읽고 씁니다. 위에서 언급 한 옵션 대신 사용자 지정 스토리지 소프트웨어를 읽고 쓰고 싶습니다.

우리의 스토리지 소프트웨어는 응용 프로그램에서 사용하는 파일을 저장하기위한 것으로, 데이터베이스에 저장되지 않은 크거나 자주 교체되는 데이터 덩어리를 대상으로합니다. 또한 당사 고유의 특정 유연성도 포함됩니다.

기존/기존 응용 프로그램은 새 소프트웨어에 대해 알지 못합니다. 그들이 알고있는 일은 디렉토리를 읽고 쓰는 것입니다. 디렉토리에 NFS가 있고 NFS 서버가 스토리지 소프트웨어로 변환되어 연결되었다는 것을 Solaris에 알릴 수 있습니다. 우리는 솔라리스가 들어 본 적이없는 새로운 프로그램에 대해 솔라리스에게 말하고 솔라리스에게 우리 프로그램과 대화하는 방법을 가르치기를 원합니다.

+0

당신은 응용 프로그램이 NFS 서버에 직접 얘기하고 싶지 : 여기

은 프로세스의 간단한 예입니다? 네가 묻고있는거야? 어떤 특별한 이유가 있습니까? –

+0

파일/파일 시스템을 사용하는 기존 앱의 데이터를 가로 채고 싶습니다. NFS 클라이언트는 예제 일뿐입니다. 나는 NFS 서버를 작성하고 그런 식으로 마운트 할 수 있지만, 요점은 NFS와 통신하지 않고 데이터를 마운트하는 것입니다. –

+1

기대하는 바를 구체적으로 설명하고 로컬 호스트 NFS 서버가 비효율적으로 작업을 수행하는 이유를 설명 할 수 있습니까? – jlliagre

답변

0

. Alfresco는 Java의 CIFS 서버 라이브러리 인 JCIFS를 보유하고 있습니다. 마치 Windows 시스템에있는 것처럼 자원을 파일로 표시 할 수 있습니다. 즉, 프로그램에서 이러한 CIFS 서버를 "탑재"할 수 있으며 해당 메커니즘을 통해 데이터베이스의 데이터를 게시 할 수 있습니다.

나는 그것을 사용하지 않았지만, 당신이하고 싶은 것과 아마 당신이 들여다 보길 원하는 것처럼 들릴 것입니다.

또한 커널을 해킹하지 않고 "사용자 모드"로 사용자 정의 파일 시스템을 만들 수있는 FUSE가 있습니다. 유닉스와 맥 OS에서 작동하며 윈도우 버전도있을 수 있습니다. 이것은 이론 상으로는 무엇이든 할 수 있습니다.

예를 들어, FUSE 시스템을 사용하여 SSH를 통해 원격 시스템을 마운트 할 수있는 인스턴스가 있습니다. 이들은 C/C++로 작성되는 경향이 있습니다.

+0

우리는 Windows를 사용하지 않습니다. 분명한 이유가 있습니다. [퓨즈] (http://fuse.sourceforge.net/)는 매우 흥미로운 것 같습니다. 내가 생각하는 NFS 번역 서버를 작성하는 것보다 훨씬 낫다 : P –

+0

파일 레벨에서 이상한 일을하지 않는다면 솔라리스는 CIFS를 완벽하게 지원하기 때문에 여전히 CIFS 서버를 고려해야 할 것이다. –

1

제게 이것은 의사 파일 시스템을 만들어야하는 것처럼 들립니다. 솔라리스는 VFS (가상 파일 시스템)를 사용합니다.이 파일 시스템에서는 사용자 공간에 하나의 통일 된 구조로 제시된 여러 파일 시스템을 사용할 수 있습니다. UFS 또는 NFS 또는 WHATEVER 파일 시스템을 마운트 할 때마다 사용자와 응용 프로그램은 파일 시스템에 독립적 인 도구를 사용하여 VFS와 상호 작용할 수 있습니다.

즉, 의사 파일 시스템을 만드는 데 필요한 것을 의미합니다. read(), write() 등의 vnode 및 vfs 작업 (VFS 시스템 인터페이스)을 처리하고 이들을 묶고 (누군가가 특정 파일을 열 때 수행 할 작업을 결정하는 등) 파일 시스템을 데이터베이스 백엔드 너의 선택의.

더 읽기 :

http://developers.sun.com/solaris/articles/solaris_internals_ch14_file_system_framework.pdf

큰 작업처럼 소리 ...

안부, JGR을 일부 CIFS 서버에서 볼 수도 있습니다

+0

데이터 저장 소프트웨어 (데이터베이스와 비슷하지만 정확하게는 아님)를 사용하면 기존 앱을 모두 다시 작성해야합니다. 그러나 파일 시스템을 장치 제어 장치에 마운트하면 파일 시스템을 사용하는 응용 프로그램은 영향을받지 않으며 저장소 소프트웨어의 이점을 얻습니다. –

+0

자, 데이터베이스와 대화하는 응용 프로그램이 있습니다. 데이터베이스는 Solaris VFS를 통해 파일 시스템에 씁니다. 정확히 무엇을 다시해야합니까? 아직도 우둔 나는 두려워 ... – jgr

+0

하드 디스크에 직접 대신 내 데이터베이스에 파일을 저장하는 방법이 필요합니다. 하지만 현재 파일 시스템을 사용하고있는 기존의 모든 응용 프로그램을 다시 작성하고 싶지는 않습니다. 나는 VFS를 사용하지 않고있다. –

0

NFS는 소프트웨어에 디렉토리를 마운트하는 것이 아니라 디렉토리에 원격 공유를 마운트하는 것에 관한 것이 아닙니다. 저장 장치가 원격인지 여부는 그다지 중요하지 않지만 커널 소프트웨어 계층을 통과합니다. Solaris는 VFS를 사용하여 첫 번째 계층을 제공합니다. 기본 요소를 구현해야합니다. 이미 VFS에 익숙한 사람에게는 어려운 일이 될 것입니다. 분명히 커널 코드를 작성하는 것에 익숙하지 않으므로 프로젝트에 대해 매우 비관적 인 것입니다 ...

대신 간단하고 위험한 접근 방법을 제안합니다. 응용 프로그램 I/O 코드 (열기, 읽기, 쓰기, 닫기 및 좋아요 또는 libc fopen, fwrite, 가장 적합한 위치가 무엇인지 알아 내야 함)를 가로 챌 수있는 인터 레이션 라이브러리를 구현하고 저장소 소프트웨어 대신. http://developers.sun.com/solaris/articles/lib_interposers.html

관련 문제