루트 파일 시스템을 ext4에서 다른 파티션 유형(zfs)으로 마이그레이션하려고 시도하고 간단한 작업으로 시작했습니다.
rsync -a --exclude=/boot --exclude=/mnt --exclude=/media --exclude=/tmp
--exclude=[all zfs pools with default mountpoint]
/ /target/directory/mountpoint/
그런 다음 전송이 의 다른 파일에서 중단되었습니다 /proc
. 추가 후 --exclude=/proc
rsync
의 파일에서 중단되어 /sys/devices
시행착오를 포기하게 되었습니다. 읽은 man proc
후 /sys
(위키피디아) 나는 그것을 찾는 데 필요한 간단한 솔루션보다 더 많은 연구가 필요하다는 것을 알고 있습니다. 누군가가 도울 수 있기를 바랍니다. 루트 시스템은 Ubuntu 14.04 amd64입니다(라이브 시스템도 마찬가지이지만 제한적인 문제인 경우 자유롭게 제안해 주십시오).
물론 라이브 시스템으로 부팅하여 거기에 데이터를 복사하는 것은 쉽지만 이는 문제에 대한 해결 방법일 뿐입니다.
답변1
부팅이 실제로 작동하는지 테스트하는 데 사용할 수 있는 시스템이 없기 때문에 이에 대한 면책 조항부터 시작하겠습니다. 이 답변은 제가 이해한 내용을 바탕으로 한 것이며, 작동하는지 확인할 때까지 개발 시스템에서 이 방법을 시도해야 합니다.
/dev
, /sys
, 모두 가상 파일 시스템이기 때문에 /proc
OS가 부팅 시 해당 내용을 생성해야 한다고 생각합니다. 이것이 사실이라면 다음을 수행할 수 있어야 합니다.
rsync -ax / /target/directory/mountpoint
-x는 rsync에게 파일 시스템 경계를 넘지 않도록 지시하므로 가상 파일 시스템을 건너뛰고 zfs 풀을 지정할 필요가 없습니다. 여전히 마운트 지점이 생성되지만 비어 있습니다.
/tmp가 자체 파티션이 아니고 해당 파일을 복사하고 싶지 않은 경우에도 수동으로 --exclude
복사해야 합니다.
답변2
LVM을 실행하고 있는지 확인하십시오. 그렇다면 LVM을 사용하여 파일 시스템 스냅샷을 만든 다음 거기에서 복사할 수 있습니다.
이는 정지 파일 시스템에서 백업을 생성해야 하거나 백업이 그다지 유용하지 않기 때문에 고안되었습니다. 스냅샷은 장치 간 문제와 임시 파일 문제를 모두 해결합니다.
데이터베이스와 같이 활성 상태인 대용량 파일이 있는 경우 rsync 및 기타 백업은 데이터베이스 변경 전에 파일의 일부가 복사되고 나머지는 데이터베이스 변경 후에 복사되므로 일관되지 않은 버전이 생성될 수 있습니다. 스냅샷은 이 문제를 해결하려는 시도이기도 합니다.
참고: btrfs는 파일 시스템 스냅샷의 우수한 형태를 가지고 있지만 이미 ext4를 실행하고 있다면 이번에는 너무 늦었습니다.
답변3
부속물: 가능하다면(로컬 콘솔에 있으면 가능하지만 SSH를 통해 연결되어 있거나 시스템을 완전히 실행해야 하는 경우에는 불가능합니다) 런레벨 1("단일 사용자 모드", 명령은 다음과 같습니다)로 변경합니다. "init 1") 그런 일을 하기 전에. 이렇게 하면 파일 시스템을 복사하는 동안 파일 시스템의 내용을 변경할 수 있는 모든 비필수 프로세스가 중지됩니다.
특히 UUID를 사용하는 경우 fstab을 조정하세요.
새로 복제된 파일 시스템을 테스트하고 부트 로더를 다시 설치하려면 "chroot /where/the/new/root/is/mounted /bin/bash"를 사용하는 것이 좋습니다. chroot 아래에 /proc 및 /sys를 수동으로 마운트해야 할 수도 있습니다.
chroot에서 부트로더를 다시 설치하는 경우, chroot된 시스템의 /etc/mtab에 로더 설치 프로그램을 혼동시키는 쓰레기가 포함되어 있지 않은지 확인하십시오. grub 1.x인 경우 (새) /boot/device.map 파일을 삭제해야 할 수도 있습니다.
/dev를 사용하여 안전하게 플레이하려면 "MAKEDEV generic"으로 (새 파일 시스템에서) 채울 수 있습니다. 이렇게 하면 udev 마운트 지점 "아래"에 장치 파일 세트가 생성되어 시스템이 심하게 충돌하는 것을 방지할 수 있습니다. udev가 작동하지 않는 경우 시작 시.