bash가 파일 시스템과 동기화되지 않을 수 있습니까?


12

질문을 올바르게 표현하지 않았을 수도 있지만 겪고있는 증상을 설명하기 위해 최선을 다하겠습니다. 먼저 컨텍스트를 위해 lsb_release 유틸리티에 따라 Ubuntu 서버 (GUI 없음) 버전 12.04.3 LTS를 실행 중입니다. 나는 일반적으로 tmux에서 모든 작업을 수행하고 Putty를 통해 서버에 연결하며 모든 텍스트 편집에 vim을 사용합니다.

이제 증상이 나타납니다. tmux를 사용하므로 일반적으로 항상 몇 개의 창이 열립니다. 그중 하나는 내가 놀고있는 노드 서버를 보유하고 있으며 내 사용자 계정 홈의 하위 디렉토리 (특히, ~/battleship)에 있습니다. 서버는 nginx를 사용하여 서버에서 호스팅하는 웹 페이지와 상호 작용하며 모든 웹 사이트 코드가 있습니다 /usr/share/nginx/www/bs(클라이언트 소스를 편집하기 위해 별도의 창을 열어 둡니다). 서버 창을 유휴 상태로 유지하고 몇 시간 동안 그대로두면 동기화되지 않은 것처럼 보입니다. ls파일을 실행 하고 볼 수 있으며 편집을 위해 파일을 열 수 있습니다 ( vim server.js). 그러나 내가 그렇게 할 때, 내가 달리기를 할 때 내가 변경하고 저장하거나 즉시 종료하는지 여부에 관계없이ls다시 한 번 .server.js.swp 파일을 볼 수 있으며 변경 사항이있을 경우 아무런 변화도 없습니다. 해당 디렉토리 밖으로 이동했다가 다시 들어가면 자체적으로 수정됩니다. 파일을 닫을 때 .swp를 남기지 않고 파일을 열고 성공적으로 편집 할 수 있습니다. 나는 이것이 / www 폴더에서 발생 하지 않는다는 것을 알았 기 때문에 클라이언트 소스의 절반을 언급했습니다 (아마도 사용자 계정의 홈 디렉토리 외부에 있기 때문에).

그 성벽 뒤, 내 질문은 이것입니다 : 이런 일이 발생하는지, 어떻게 방지 할 수 있습니까? 이것이 Putty를 통해 연결하고 tmux / vim을 사용하는 유일한 Linux 서버는 아니라는 점을 고려할 때 어떤 방법이 있다고 상상할 수 있지만이 이상한 동작이 발생하는 유일한 서버입니다. 도움을 주시면 감사하겠습니다.

참고 : 나는 bash, tmux 및 putty로 태그를 지정했습니다.

업데이트 : 이의 출력 cat /proc/mount질의 요청에 따라 (사용자 이름과 값 불구 ecryptfs_fnek_sig하고 ecryptfs_sig실제로 그 두 가지가 무엇인지 모르는 동안, 그들은 암호화 관련, 미안보다 더 안전한 것 때문에, 검열).

rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=2008532k,nr_inodes=502133,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=807840k,mode=755 0 0
/dev/disk/by-uuid/2da27263-f079-47ba-90ad-66e4c3a53810 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
/home/[username]/.Private /home/[username] ecryptfs rw,relatime,ecryptfs_fnek_sig=[censored],ecryptfs_sig=[censored],ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs 0 0

업데이트 2 : 출력 결과는 다음과 같습니다 uname -a.

Linux [server-name] 3.5.0-39-generic #60~precise1-Ubuntu SMP Wed Aug 14 15:38:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

업데이트 3 : memtest 패스를 완료했습니다. 이것은 상기 시험의 결과이다 . 오류없이 완료된 것으로 보이므로 결국 도움이 될지 확실하지 않습니다. 어떤 식 으로든 도움이되는 경우 하드웨어 세부 정보를 볼 수도 있습니다.


3
아니요, bash는 "파일 시스템과 동기화 할 수 없습니다". 어쨌든 일어나지 않습니다. 파일 시스템이 파일 시스템과 동기화되지 않는 것 같습니다. 그것은 분명히 문제이며, 그 점에서 이상한 것입니다. 어떤 파일 시스템을 사용하고 cat /proc/mounts있습니까? 이것은 아마도 가상화 된 서버 일 것입니다. 어떤 종류의 가상화를 사용하고 있습니까?
Gilles 'SO- 악마 그만'

1
@Gilles 나는 cat /proc/mounts당신 을 위해 출력을 포함하도록 질문을 업데이트했습니다 . 다행스럽게도 그것은 당신에게 뭔가 의미가 있습니다. 저는 여전히 Linux를 처음 접했기 때문에 많은 학습이 있었고 파일 시스템을 전혀 사용하지 않았습니다.
Alex

4
따라서 ecryptfs 파일 시스템에서 문제가 발생합니다. 이는 ecryptfs, 커널의 다른 부분 또는 해당되는 경우 가상화 소프트웨어 또는 하드웨어 결함의 버그처럼 보입니다. 박스 나 랙의 하드웨어에서 실행 중입니까, 아니면 호스팅 제공 업체가있는 가상화 된 서버입니까? 출력은 uname -a무엇입니까? 하드웨어 인 경우 콘솔을 연결하고 다음 부팅시 메모리 테스트를 수행하십시오. 호스팅 된 경우 호스팅 제공 업체에 문의하여 이러한 증상을 설명하십시오.
Gilles 'SO- 악마 그만'

1
실행 sudo sync하면 파일이 업데이트됩니까?
브라이 암

1
sync 명령을 시도하십시오. 또한 df cmd는 dir이 어디에 있는지 보여주는 데 편리합니다. / proc / mount와 비슷하지만 더 읽기 쉬운 출력입니다. 마십시오 df -h /www ~/battleship /usr/share/nginx/www/bs. encryptfs 마운트에 문제가 있습니까? 디스크에 쓰기 위해 추가적인 sw 처리가 필요할 수 있으므로 캐싱이나 이와 관련이 있습니까?
gaoithe

답변:


1

내가 이와 같은 것으로 본 유일한 경험은 디렉토리가 제거되고 새로운 디렉토리가 생성되었을 때였습니다. AIX와 Solaris는이 문제를 수년 전부터 해결했습니다. 제거 된 디렉토리에 열린 쉘 세션이있는 경우 파일 시스템이 동기화되지 않는 것처럼 예상치 못한 결과를 다시 얻을 수 있습니다.

bash1: mkdir test1
bash2: cd test1
bash1: touch test1/testfile
bash1: ls test1
testfile
bash2: ls
testfile
bash1: rm -rf test1
bash2: ls
???(unknown results)???

암호화 된 파일 시스템은 검토 할 대상처럼 들립니다. 암호화되지 않은 파일 시스템을 사용해 보셨습니까?

댓글을 아직 게시 할 수 없습니다. 포인트가 충분하지 않습니다.


이것은 존재하지 않는 기본 디렉토리와 파일을 만들 수없는 bash 쉘이 남아있는 질문과 관련이 있습니다.
ubfan1

1
나는이 작은 실험을 시도 할 수 있지만,이 시점에서 그것이 ecryptfs 문제라는 것을 확신합니다. 해당 디렉토리는 여전히 존재합니다. cd .잠시 후 세션으로 돌아 오면 간단한 후에 정상적으로 작업 할 수 있습니다 . 이 시점에서 나는 모든 것을 백업하고 서버를 지우고 암호화 된 파일 시스템없이 다시 설치하는 것을 고려하고 있습니다. 나는 원격으로 중요한 것을 유지하지 않으므로 파일 암호화에 대해 너무 걱정하지 않습니다.
Alex

Ubuntu의 eCryptfs 관리자 / 작성자는 버그 보고서에 매우 민감합니다. 해결책을 찾을 수 없다면 물어 보거나 버그 보고서를 제출하는 것이 좋습니다.
blujay

0

bash 명령 사이에서 sync 명령을 실행할 수 있습니다.

sync - flush file system buffers

나는 그 자신에 대한 필요성을 결코 찾지 못했지만 적어도 두 번째 명령으로 그것을 실제로 입력 한 사람을 적어도 알고 있습니다! 느린 디스크로 과거에 심하게 태워 졌을 것입니다.

인터넷은 sync명령 사용에 대한 논의에서 밝게 보입니다 . 여기에 대한 매우 짧은 수동 입력에 대한 링크입니다 sync: http://www.gnu.org/software/coreutils/manual/html_node/sync-invocation.html

sync데이터가 메모리에서 디스크 장치로 기록되도록합니다. 디스크 장치 자체가 느리거나 문제가있는 경우 데이터는 여전히 디스크 장치 캐시 메모리에있을 수 있으며 디스크에 기록되지 않을 수 있습니다.

우분투 서버를 실행하고 있습니다. . . 데스크탑에있는 기계입니까? 아니면 구름에 있습니까? 또는. . . 다른 것? 여기를 참조하십시오 : /server/534627/what-does-the-sync-command-do 메모리에서 하드 디스크 문제와 관련된 디스크로 또는 저속한 Amazon AWS 인스턴스와의 동기화를 느리게합니다.


1
나는 sync어떤 용도로 사용 될지 확신하지 못한다 . cd .어쨌든 문제를 완화시키는 것으로 나타났습니다 . 나는 ref이전 세션으로 돌아올 때마다 사용하는 습관을 가지고 있는 별칭 을 만들었 습니다 (한 캐릭터를 저장하는 것은 약간 바보입니다). 서버는 Ubuntu 배포판을 실행하는 거실 구석에 사는 오래된 데스크탑 타워 (작년에 새로운 것을 만들었습니다)이므로 하드웨어에 완전히 액세스하고 실행중인 것을 제어 할 수 있습니다 그 위에.
Alex

0

문제는 bash가 아니라 ls 명령으로 표시됩니다.

파일을 볼 수 있다는 사실은 여전히 ​​파일이 있다는 것을 의미합니다. 다른 것과 동기화 된 것이 없으며 실행중인 동기화 양이 없어도 관련 파일 시스템 데이터의 캐시 된 사본 만 사용하지 못하게됩니다. 동기화는 데이터를 영구 저장소에 커밋하고보기를 변경하지 않습니다.

VIM 세션을 사용하고 있습니까? VIM 세션을 모르고 직접 사용하지는 않았지만 tmux로 인해 VI 세션 관리자가 파일이 닫 혔음을 인식하지 못하고 변경 사항을 추적 할 수 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.