NFS로 홈 폴더를 호스팅하는 것이 가능합니까?


30

일부 키오스크 컴퓨터를 배포 할 계획이며 작은 펜 드라이브를 부트 디스크로 남겨두고 나머지는 백업하기 쉬운 서버 인 LTSP로 유지하고 싶습니다 .

지금은 두 가지 옵션을 고려하고 있습니다. NFSed / home / 또는 로그인시 복사 된 ~ /의 로컬 복사본이 로그 아웃시 rsynced입니다.

파일 작업이 너무 느려지거나 네트워크가 막힐 수 있습니다 .


"안전"을 보안과 관련이없는 다른 단어로 바꾸시겠습니까? 아마도 가능한 merriam-webster.com/dictionary/feasible ?
Cristian Ciupitu

1
데자뷰의 약간의 감각. 그것은 똑같은 것은 아니지만 그들이 가지고있는 흥미로운 스레드입니다. hardware.slashdot.org/story/09/06/23/1823201/…
voyager

답변:


30

프로덕션 환경에서 홈 디렉토리로 NFS를 사용합니다. 몇 가지 트릭이 있습니다.

  1. NFS에 마운트하지 마십시오 /home. 이렇게하면 NFS 서버가 다운 될 경우 로컬 사용자를 사용할 수 있습니다. 우리는 마운트/mnt/nfs/home

  2. 소프트 마운트와 매우 짧은 시간 초과를 사용하면 프로세스가 영원히 차단되지 않습니다.

  3. 자동 마운터를 사용하십시오 . 이렇게하면 리소스 사용이 중단되고 NFS 서버가 작동 중지 된 경우 서비스 중단에 대해 걱정할 필요가 없습니다.

    auto.master:
      +auto.master
      /mnt/nfs /etc/auto.home --timeout=300
    
    auto.home
       home -rw,soft,timeo=5,intr      home.bzzprod.lan:/home
    
  4. 권한 관련 문제가 발생하지 않도록 싱글 사인온 시스템을 사용하십시오. OpenLDAP 서버가 있습니다.


나는 항상 NFS 서버가 다운 될 경우 자동 마운터가 믿기 어려워서 잠그는 경향이 있다는 것을 항상 발견했습니다. / mnt / nfs / home에 마운트하는 경우 / etc / passwd에서 사용자의 홈을 설정하는 위치입니까?
pjc50

2
글쎄, UID와 GID를 동기화 상태로 유지해야하기 때문에 / etc / passwd 및 NFS 마운트 홈 디렉토리를 사용하는 것은 좋지 않습니다 .OpenLDAP와 같은 것을 사용하십시오. 그러나 예, 사용자의 홈 디렉토리는 / mnt / nfs / home으로 설정되어 있습니다. /사용자 이름.
Aaron Brown

@AaronBrown 네트워크에 $ HOME을 넣으려면 네트워크에도 사용자 ID와 인증을 추가해야한다는 데 동의합니다. 어떻게하는지에 관계없이 $ HOME을 어딘가에 정의 /mnt/nfs/home해야 /home하며 중단 을 설정하는 것을 선호 하지만 중단 중에 로컬을 어떻게 사용 합니까? 자세한 내용은 unix.stackexchange.com/questions/189404/…
JFlo

8

http://www.howtoforge.com은 최근 GlusterFS를 NFS 대체 / 대체로 사용하는 방법에 대한 기사를 게시했습니다.

http://www.howtoforge.com/creating-an-nfs-like-standalone-storage-server-with-glusterfs-on-debian-lenny

다음은 GlusterFS 프로젝트 페이지 ( http://www.gluster.org/) 에서 NFS를 대체 ​​할 수있는 '유용한'대안에 대한 간단한 설명입니다 .

"GlusterFS는 즉시 자체 복구됩니다. fsck가 없습니다. 스토리지 백엔드는 일반 파일 및 폴더 (NFS 스타일)로 직접 액세스 할 수 있습니다. 복제를 사용하면 GlusterFS가 하드웨어 오류를 견딜 수 있습니다."

자세한 내용은 프로젝트 설명서를 참조하십시오.

또한 GlusterFS 사용의 또 다른 장점은 SAN에 더 많은 공간이 필요한 경우 다른 스토리지 브릭 (서버 노드)을 추가하기 만하면 필요할 때 병렬로 스토리지를 확장 / 확장 할 수 있다는 것입니다.

이것이 도움이되거나 최소한 올바른 방향으로 당신을 가리 키기를 바랍니다!


7

소프트 마운트에주의하십시오! NFS 파일 시스템을 소프트 마운트하면 시간 초과가 발생한 후 IO가 실패합니다. 그것이 사용자의 홈 디렉토리에서 원하는 것인지 확인하십시오! 내 추측은 당신이하지 않는 것입니다. intr 옵션과 함께 홈 디렉토리에 하드 마운트를 사용하면 훨씬 안전합니다.

하드가 시간 초과되지 않음 : IO 작업이 무기한 재 시도됩니다. intr 옵션을 사용하면 장착 프로세스를 중단 할 수 있습니다. 따라서 내보내기를 마운트하고 실패한 경우 하드 마운트가 세션을 잠급니다. intr 옵션을 사용하면 마운트를 중단 할 수 있으므로이 조합은 매우 안전하며 사용자 데이터를 쉽게 잃어 버리지 않습니다.

어쨌든 autofs는이 모든 것을 훨씬 쉽게 해줍니다.


1
(가) 있습니다 intr마운트 옵션은, 예를 들어, 참조 커널 2.6.2 이후 리눅스에서 사용되지 access.redhat.com/solutions/157873
myrdd

4

주의 할 점은 NFS 서버가 종료 될 때 (마운트가 정지됨) 소프트 마운트를 수행해도 "고정"자체를 피할 수는 있지만 홈이없는 것처럼 홈 디렉토리의 문제를 해결할 수는 없습니다. 디렉토리, 사용자가 어쨌든 망했다.

NFS 서버가 복구 될 때에도 사용자가 작업을 수행하지 않으면 정지 문제가 남아 있습니다. 마운트 시스템에서 프로세스를 종료 한 후 다시 마운트해야합니다. 그 이유는 NFS 서버가 다시 시작되면 다른 서버를 할당 fsid했기 때문에 fsidNFS 서버 에서 s를 하드 코딩하여이 문제를 해결할 수 있습니다 .

#. Home Directories
/usr/users \
  192.168.16.0/22(rw,sync,no_root_squash,fsid=1) \
  192.168.80.0/22(rw,sync,no_root_squash,fsid=1)

#. Scratch Space
/var/ftp/scratch \
  192.168.16.0/22(rw,async,no_root_squash,fsid=3) \
  192.168.80.0/22(rw,async,no_root_squash,fsid=3) \
  172.28.24.151(rw,async,root_squash,fsid=3)

exports(5)매뉴얼 페이지 상태 ...

fsid=num
          This option forces the filesystem identification portion of the file handle
          and  file attributes used on the wire to be num instead of a number derived
          from the major and minor number of the block device on which the filesystem
          is  mounted.   Any 32 bit number can be used, but it must be unique amongst
          all the exported filesystems.

          This can be useful for NFS failover, to ensure that  both  servers  of  the
          failover  pair use the same NFS file handles for the shared filesystem thus
          avoiding stale file handles after failover.

... 주 / 부 숫자가 변경되지 않는 한 (SAN / 다중 경로 볼륨을 내보낼 때를 제외하고는 일반적으로 변경되지 않는 한) 변경 사항이 있음을 알았습니다. 문제를 완전히 제거했습니다. 즉, NFS 서버가 다시 연결되면 연결이 신속하게 복원됩니다 /dev/sdaX. 예를 들어 이것이 왜 장치에 차이를 냈는지 여전히 알 수 없습니다 .

나는 내 주장이 대체로 일화 적이라는 것을 지적해야한다. 실제로 그것이 문제를 고친 이유는 이해가되지 않지만 문제를 고친 것은 "보이는"것으로 보인다. 아직 발견되지 않았습니다. =)


서버가 사용하는이 "무작위"fsid에 대해 확신하십니까?
Cristian Ciupitu

안녕하세요 Cristian-위에서 설명하려고했지만 플래그에 대한 매뉴얼 페이지 설명과 관련된 동작을 완전히 설명 할 수는 없습니다. 당신은 그것을 시도하고 다른 본 적이 있습니까?
Xerxes 2016 년

4

어떤 네트워크 파일 시스템을 채택하든 적용 할 일반적인 조언 : 많은 프로그램이 사용자의 홈 디렉토리에 데이터를 캐시하는데, 이는 일반적으로 네트워크를 통해 홈 디렉토리에 액세스 할 때 좋은 것보다 더 해 롭습니다.

요즘 XDG_CACHE_HOME에는 로그인 스크립트에서 환경 변수를 설정하여 다른 프로그램 (예 : 로컬 디스크)에 캐시를 저장하도록 많은 프로그램에 지시 할 수 있습니다 . 많은 프로그램 (예 : Firefox)에는 여전히 수동 구성이 필요하므로 모든 사용자에 대해 동일한 방식으로 식별하고 구성하기 위해 추가 작업을 수행해야 할 수도 있습니다.


+1 Chrome 및 NFS 홈 디렉토리에서 성능 문제가 발생했습니다. Chrome의 작업 디렉토리를 로컬 시스템으로 다시 이동 한 다음 NFS 홈 디렉토리 (Chrome에서 디렉토리를 찾을 것으로 예상되는 디렉토리)에서 심볼릭 링크를 로컬 디렉토리로 다시 배치하여 문제를 해결했습니다. 내가 한 일을하는 더 좋은 방법이있을 수 있지만 문제가 해결되었습니다.
Bryan

Bryan (3 월 9 일)은 좋은 부분 답변을 남겼지 만이 문제에 대해 자세히 설명하고 싶습니다. 감사합니다. 작업 디렉토리를 로컬 시스템으로 이동하고 심볼릭 링크를 어떻게 배치 했습니까?
Jason

또한 XDG_RUNTIME_DIRDconf 데이터베이스 위치에 대한 설명은 developer.gnome.org/dconf/unstable/dconf-overview.html
JKnight

3

내가 일한 많은 곳에서 NFS 마운트 홈 디렉토리를 사용합니다. 일반적으로 성능에는 큰 차이가 없습니다 (키오스크 사용자는 로컬 IT 담당자를 얻는 방법을 알고있는 개발자보다 약간 덜 까다로울 것입니다). 내가 본 한 가지 문제는 Gnome 데스크탑에 로그인하면 NFS 서버가 어떤 이유로 든 사라집니다. 상황이 실제로 응답하지 않습니다.


2

NFS 홈을 사용하고 제대로 작동합니다. 그러나 네트워크가 충분히 빠르며 다운되지 않도록해야합니다.


2

실제로 100mbit 교환 네트워크 이상이있는 경우 NFS는 홈 디렉토리에 적합합니다. 10-20 키오스크 이상을 위해서는 서버에 기가비트 연결이 있어야합니다. 성능 경연 대회에서는 이기지 못하지만 Firefox 및 Open Office와 같은 것은 정상적으로 작동합니다.

홈 디렉토리에 복사하는 것은 로그인시 지연 시간 (최대 12MB / s 인 100mbit 네트워크에서 100m 홈 디렉토리는 10 초에 가깝습니다)에있어 큰 고통이 될 것입니다. Rsync는 웹 브라우저 캐시 동기화와 충돌합니다 ... 10 분과 500 파일이 아파요.


1

cachefilesd를 살펴보십시오 . 나는 그것을 직접 사용하지는 않았지만 유망한 것처럼 보입니다.

cachefilesd 데몬은 AFS 및 NFS와 같은 네트워크 파일 시스템에서 로컬 디스크에 지속적으로 캐싱을 수행하는 데 사용되는 캐싱 파일 및 디렉토리를 관리합니다.

또한 rsize 및 wsize 매개 변수를 조정하고 가능한 경우 점보 프레임을 사용하는 것을 잊지 마십시오.


나는 몇 년 동안 캐시 파일을 시도했지만 그것이 가져온 모든 불안정성 때문에 포기했습니다. YMMV
JFlo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.