달리는 사람을 죽이면e4defrag
, 데이터 손실/손상 위험이 있나요? 중단할 수 있는 안전한 방법이 있나요?
예: 달리기e4defrag
큰 파티션(예: 루트) 또는 큰 파일(예: squashfs 시스템 이미지 파일)에서는 매우 느리므로 때때로 중지/종료해야 합니다.e4defrag
완료하기 전에 이 필요하지만 종료할지 잘 모르겠습니다( SIGINT
, SIGTERM
, SIGKILL
등 중 하나를 보내서).e4defrag
안전 해요?
저는 Debian Stretch를 실행 중이고 파일 시스템은 ext4입니다.
내 커널 버전: 4.14.13
mye2fsprogs 버전:1.43.4-2
답변1
코드 자체를 확인하지는 않았지만 e4defrag는 한 번에 하나의 파일만 처리할 수 있으므로 확실히 전체 파일 시스템이 손상되지는 않습니다.
그럼에도 불구하고 실제 데이터 이동은 로그 트랜잭션의 맥락에서 커널에서 수행되므로 사용자 공간에서 수행하는 모든 작업에 영향을 받지 않아야 합니다. 도중에 재부팅해도 문제가 발생하지 않습니다.
답변2
e4defrag
표준 파일 시스템 호출을 사용하여 마운트된 파일 시스템에서 작동하기 때문에 kill
파일에 쓰는 모든 프로그램과 동일한 위험이 있습니다 . 어떤 신호가 전송되는지 kill
에 따라 다릅니다 .kill
e4defrag
지능을 신호하다괜찮아야 해
신호 용어괜찮아야 해
신호 살해잠재적으로 위험해 보이고 파일이 손상될 수도 있습니다.중요한문서. 따라서 사용을 피하십시오신호 살해그리고
e4defrag
.
답변3
분명히 조각 모음의 마법은 모두 하나의 ioctl() 호출(범위당)에 있습니다.
/* EXT4_IOC_MOVE_EXT */
defraged_ret =
ioctl(fd, EXT4_IOC_MOVE_EXT, &move_data);
따라서 전체 조각 모음 프로세스가 커널에서 수행되는 것처럼 보입니다. 그리드 중단 및 kill -9의 경우에도 로그가 보호되고 안전해야 합니다.
후자의 경우 다음 재부팅 시에만 로그가 재생되어야 합니다. 도움이 되었기를 바랍니다.