고전적인 상황 : 나는 나쁜 rm것을했고 곧 잘못된 파일을 제거했다는 것을 깨달았습니다. (중요한 것은 없으며 최근 백업을 견딜 수 있었지만 여전히 성가신 일입니다.)
extundelete이러한 도구를 사용 하여 파일을 복구하려는 경우 추가 디스크 활동이 적이라는 것을 알고 즉시 기계의 전원을 즉시 끕니다 (예 : 전원 단추를 사용 halt하거나 명령 하지 않음 ). 중요한 작업이 실행 중이거나 열려 있지 않은 랩톱이므로 허용되는 작업이었습니다. (그런데, 나는 누락 된 파일이 여전히 프로세스에 의해 열 수있는 경우는 이러한 상황에서 할 첫 번째 일은 먼저 추정 될 것이라고 그 이후로 배운 https://unix.stackexchange.com/a/101247 - 이러한 경우에는 시스템의 전원을 끄지 말고 이러한 방식으로 복구해야합니다.)
그래도 일단 시스템 전원이 꺼지면 잠시 동안 생각하고 파일을 적절한 법의학을 위해 라이브 시스템을 부팅하는 데 시간 투자 가치가 없다고 결정했습니다. 그래서 나는 기계를 다시 가동시켰다. 그런 다음 파일이 여전히 디스크에 앉아 있음을 발견했습니다 rm. 전원을 끄기 전에 디스크에 전파되지 않았습니다. 나는 약간의 춤을 추고 그의 예기치 않은 용서에 대해 sysadmins의 신에게 감사했다.
내 질문은 이것이 어떻게 가능한지, 그리고 rm실제로 디스크에 전파 되기 전에 일반적인 지연이 무엇인지 이해하는 것입니다 . 디스크 IO가 즉시 플러시되지 않지만 일정 시간 동안 메모리에 저장된다는 것을 알고 있지만 디스크 저널은 보류중인 작업이 완전히 손실되지 않도록 신속하게 처리 할 것이라고 생각했습니다. https://unix.stackexchange.com/a/78766 은 더티 페이지를 플러시하고 저널 작업을 플러시하는 별도의 메커니즘을 암시하는 것으로 보이지만, 저널에 대한 저널의 관계 rm및 예상되는 지연에 대한 충분한 세부 정보는 제공하지 않습니다. 작업이 플러시됩니다.
더 자세한 내용 : 데이터는 LUKS 볼륨 내의 ext4 파티션에 있었고 시스템을 부팅 할 때 다음을 보았습니다 syslog.
Sep 24 10:24:58 gamma kernel: [ 11.457007] EXT4-fs (dm-0): 1 orphan inode deleted
Sep 24 10:24:58 gamma kernel: [ 11.458393] EXT4-fs (dm-0): recovery complete
Sep 24 10:24:58 gamma kernel: [ 11.482475] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
그러나 그것이 관련되어 있다고 확신하지 않습니다 rm.
또 다른 질문은 커널에게 머신의 전원을 끄는 대신 보류중인 디스크 작업을 수행하지 말고 (어딘가에 덤프)하는 방법이 있는지 여부입니다. (물론, 보류중인 작업을 수행하지 않는 것이 위험하게 들리지만, 이것은 기계의 전원을 끌 때 발생하는 일이며, 경우에 따라 사용자를 구할 수있는 경우도 있습니다.) 물론 "깨끗한"것입니다. 예를 들어 물리적 전원 차단이 쉬운 옵션이 아닌 원격 서버.
rm입니다. 다시 말해, 글을 쓰려고 할 때만 일이 저널에 바쳐 지는가? 아니면 그보다 더 복잡한 그림입니까? alt-sysrq-u는 꽤 깔끔한 아이디어입니다. "It appear"주장에 대한 언급이 있습니까? (주어진 링크에서 따르지 않는 것 같습니다.) 감사합니다! :)