2017-11-02 31 views
1

우리는 RHEL6.5 ext4에서 RHEL7.3 XFS로 애플리케이션을 업그레이드하고 있습니다. 우리는 XFS 파일 시스템이 콜드 재부팅 (시스템 콘솔 -iLO에서)을 수행하면 일부 파일 (몇 초마다 디스크에 기록됨)을 0 바이트로 자릅니다. 우리의 응용 프로그램뿐만 아니라 콜드 재부팅 후에 사라지는 파일을 ">"사용하여 하나의 명령에서 파일로 리디렉션한다고 가정 해 보겠습니다. 우리는 fysnc을 수행하는 명백성에 대한 권장 사항을 알고 있습니다. 하지만 자바 코드는 무엇입니까? 파이썬 스크립트의 사례는 어떻습니까?XFS RHEL7.3 콜드 재부팅, 파일 자르기

이제 우리는 ext4 또는 XFS를 고집 할 지 여부에 대한 딜레마에 빠져 있습니다. XFS는 장점이 있으며 우리의 첫 번째 선호가 될 것입니다. 그리고 우리는 나머지 세계가 이것을 인식하지 못한다고 믿을 수 없습니다. RHEL (RHLE6.5 https://bugzilla.redhat.com/show_bug.cgi?id=845233에서 비슷한 문제가 수정 된 것을 볼 수 있습니다) 또는 이것이 현대 FileSystems의 예상되는 동작입니까?

답변

1

Java와 Python 모두 I/O 라이브러리에서 fsync 연산에 액세스 할 수 있으므로 실제로는 변명이 아니지만 사용자가 의미하는 바를 이해합니다.

그러나이 영역의 주요 ext4/XFS 차이는 일반적으로 다른 것입니다. A 스트레이트

은 특히 작성된 내용이 단지 몇 바이트 이상인 경우에 ext4가있는 경우에도 길이가 0 인 파일을 남기곤합니다. 무엇 (기본 구성)에서 ext4에서 작동하도록 보장하는 것은 이것이다 : ext4에 - - 부도와

echo contents > file.new 
mv file.new file 

, 이것은 뒤에 떠나지 않을 것입니다 부분적으로 작성 file (만 file.new가 불완전 할 수 있음). XFS는이 점에서 다르다. 내용 앞에는 이름 바꾸기 전에 fsync ed가 있어야한다.

2014 년에 Eric Sandeen proposed a patch to align the XFS behavior with what ext4 does에서 수신되었지만 병합되지 않았습니다. 어쩌면 조수가 그때부터 돌았고, 재배포 된 패치는 오늘날 받아 들여질 것입니다. (현재 코드에서는 플러시되지 않지만 XFS 개발자는 아닙니다.)

이렇게하면 XFS 로의 마이그레이션이 차단되는 경우 반드시 지원 티켓을 제출해야합니다. 비록 이것이 업스트림 커널에서 벗어나는 옵션이 아니더라도, 그러한 고객 요구는 항상 중요한 피드백입니다.

+0

감사합니다. 플로리안. 그것을 분명히합니다. ext4에서 우리는 마운트 옵션에 nodelalloc을 가지고 있으며 잘못된 동작을 재현 할 수 없습니다. fsync 추가에 대한 우리의 문제는 거대한 코드 기반입니다. 우리는 수천 시간을 소비하게 될 수 있지만 우리의 적용 범위가 100 %인지 확실하지 않습니다. 우리는 이미 빨간 모자 지원으로 사건을 열었습니다. 표준 응답은 "레드햇 문제가 아닙니다 .XFS에서 제공하는 것입니다 .fsync를 추가하거나 삭제하십시오." Eric의 패치를 사용하면 더 많이 밀어 낼 수 있습니다. 나는 회의적이다. – Avita