Zerofree를 실행할 수 있도록 읽기 전용으로 마운트하려고 할 때 "mount:/is busy" 발생

Zerofree를 실행할 수 있도록 읽기 전용으로 마운트하려고 할 때 "mount:/is busy" 발생

zerofree다음을 사용하여 VirtualBox vdi 이미지를 압축할 수 있도록 Ubuntu 11.04에서 실행하려고 합니다 .

VBoxManage modifyhd Ubuntu.vdi --compact

실행하려면 zerofree디스크 이미지가 읽기 전용으로 마운트됩니다. 나는 후속 조치를 취하고 있다이 지침이를 사용하여 복구 모드에서 읽기 전용으로 다시 마운트하라는 메시지가 표시됩니다(루트 쉘 프롬프트로 드롭).

mount -n -o remount,ro -t ext2 /dev/sda1 /

하지만 이렇게 하면 오류가 발생합니다.

mount: / is busy

이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

후속 조치: Jia Li의 답변에 따라이 게시물이 명령을 실행하면 문제를 해결할 수 있습니다.

service rsyslog stop
service network-manager stop
killall dhclient

답변1

일부 프로세스는 쓰기를 위해 파일을 열어 둡니다. 예를 들어 rsyslogd네트워크 도구 dhclient나 다른 것과 같이 로그를 작성하는 프로그램일 수 있습니다 . 하나씩 닫고 다시 설치해 보면 효과가 있을 수 있습니다.

이 프로그램을 사용하여 특정 파일을 사용하는 프로세스를 찾을 수 있습니다 fuser. 예를 들어 fuser -v -m /프로세스 목록이 반환됩니다. 그러나 이것이 파일 시스템을 사용하게 만드는 원인 중 하나인지는 확실하지 않습니다.

답변2

Peter의 답변 개선 :

마운트 지점을 사용하여 프로세스를 종료할 수 없습니다. 그래서 저는 이렇게 했습니다:

  • /etc/fstab다음 부팅 시 읽기 전용으로 시작하도록 편집되었습니다 . 전임자:/dev/sda1 / ext2 ro 0 1
  • 재부팅하고 셸을 엽니다(예: 호스트 키 + F2)
  • 제로런

시스템을 "복구"하려면:

  • 읽기-쓰기 옵션으로 마운트:$ mount -o remount,rw /dev/sda1
  • /etc/fstab원래 값을 복원하려면 다시 편집하세요.

추가: 필요한 경우 열기복구 모드어떤 단계에서든:

  • 재시작
  • VM이 로드되는 동안 Shift 키를 누르세요.
  • 고급 옵션 > 복구 모드의 커널 옵션 > 루트 셸 프롬프트에서 제거

답변3

쓰기 위해 파일을 연 프로세스가 없으면 파일 시스템은 읽기 전용으로만 다시 마운트할 수 있습니다. 실행하여 lsof /루트 파일 시스템에 파일이 열려 있는 프로세스를 확인합니다. 쓰기 위해 열려 있는 파일이 이 열에 표시됩니다 FD. 다음을 사용하여 필터링할 수 있습니다.

lsof / | awk '$4 ~ /[0-9].*w/'

프로세스 ID를 자동으로 필터링하려면 다음 출력을 구문 분석하세요 lsof -F pa.

lsof -F pa /home | awk '/^p/ {pid = substr($0, 2)} /^a.*w/ {print pid}'

답변4

때로는 마운트를 계속 사용하는 프로세스가 너무 많기 때문에 읽기 전용 마운트로 다시 시작하는 것이 더 쉬울 수 있습니다.

루트 파일 시스템의 항목을 변경합니다 /etc/fstab. 예를 들면 다음과 같습니다.

/dev/sda1 / ext2 relatime,rw,errors=remount-ro 0 1

이 되다:

/dev/sda1 / ext2 noatime,ro 0 1

재부팅 시 파일 시스템은 읽기 전용으로 마운트되므로 zerofree실행할 수 있습니다.

완료되면 파일 시스템 읽기/쓰기를 다시 마운트하고( mount -o remount,rw /) 변경 사항을 실행 취소합니다 /etc/fstab.

에서 영감을 받다https://wiki.debian.org/ReadonlyRoot#Enable_readonly_root

관련 정보