고전적인 상황 : 나는 나쁜 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"주장에 대한 언급이 있습니까? (주어진 링크에서 따르지 않는 것 같습니다.) 감사합니다! :)