나는 dd를 사용하여 내 rootfs를 다른 파티션에 복사하고 새 rootfs 복사본으로 시스템을 부팅했습니다.
sudo dd if=/dev/disk/by-partuuid/342853ea-cab9-4a4f-b935-1a704c1cc17f conv=sync,noerror bs=4M of=/dev/nvme0n1p1
여기서 partuuid는 rootfs 파티션의 부분 uuid입니다.
문제는 때때로 dd에 의해 복사된 rootfs가 약간의 손상을 입은 것처럼 보인다는 것입니다. (내 파일이 손상되었거나 dd가 멈췄습니다)
이 작업을 수행하는 데 사용할 수 있는 더 안전한 옵션이 있습니까?
답변1
문제는 때때로 dd에 의해 복사된 rootfs가 약간의 손상을 입은 것처럼 보인다는 것입니다. (내 파일이 손상되었거나 dd가 멈췄습니다)
좋아, 이제 두 rootfs가 모두 마운트되지 않는다는 것이 무슨 뜻인지 이해합니다. 문제는USB가 없는 임베디드 시스템을 사용하고 있기 때문에 불가능합니다.지원하다.
총 길이 DR
소스 및/또는 대상 파일 시스템이긍정적인rsync
(로컬 또는 네트워크를 통해) 또는 일반을 사용하여 (설치) cp
파일 시스템 수준에서 복사(동기화)합니다.
블록 수준에서
파일 시스템을 안전하게 복사(복제)할 수 있습니다.블록 레벨 (전체 디스크, 파티션, 논리 볼륨) 경우에만 해당두 개의 파일 시스템- 소스 및 대상 블록 장치에서설치되지 않음.
다음과 같은 이유로 대상에 일관성 없는 복사본(손상된 파일 시스템)이 생성됩니다.
마운트된 파일 시스템소스 블록 장치프로그램이 기본 소스 블록 장치에서 블록을 읽을 때 해당 (메타)데이터 및 기타 내부 구조가 지속적으로 변경됩니다.
파일 시스템도 설치됨대상 블록 장치프로그램이 운영 체제를 우회하여 대상 블록 장치에 직접 블록을 쓰면 해당 (메타)데이터 및 기타 내부 구조가 지속적으로 읽고 업데이트됩니다. 운영 체제와 대상 시스템에서 실행되는 프로그램의 메모리 상태가 파일 시스템의 메타(데이터)와 일치하지 않아 혼동되고, 잘못된 데이터를 읽고 쓰기로 인해 메타(데이터)가 손상될 수 있습니다.
블록 장치는 상위 계층(주로 파일 시스템)이 오프라인(마운트되지 않음, 비활성 상태)일 때만 복사해야 합니다.
파일 시스템 수준에서
이는 파일 시스템이 마운트되었음을 의미합니다.
여기서 복사하는 동안 대상 파일이나 원본 파일이 업데이트되면 블록 장치와 같은 불일치가 발생할 수도 있지만 대상 파일 시스템(논리 수준)에 저장된 데이터에만 해당됩니다. 실행 중인 운영 체제 및 응용 프로그램은 사용하는 대상 파일을 바꾸면 혼란스러울 수도 있습니다.
100% 보장을 사용하면 소스 시스템에서 읽기 위해 열려 있는 파일만 복사할 수 있으며, 대상 시스템의 운영 체제나 애플리케이션에서 쓰기 위해 열려 있지 않은 파일은 복사할 수 없습니다.
마운트된 활성 파일 시스템에서 다른 마운트된 활성 파일 시스템으로 파일을 복사할 수 있지만 결과는 달라질 수 있습니다.
하드웨어 아키텍처, 파일 시스템 계층, 배포 등이 다른 장치 간에 파일을 맹목적으로 복사할 수는 없습니다.
파일 시스템 수준 복제의 경우 rsync
(로컬 또는 네트워크를 통해) 또는 간단한 cp
.
두 시스템 모두에 특정한 런타임 데이터가 포함된 디렉터리를 복사하면 안 됩니다.예: /dev
, /proc
, /sys
, /tmp
, /run
, /var/run
, /var/tmp
, /lost+found
, 일부 구성 파일, 실행 중인 데이터베이스 파일 등 /media
은 /mnt
대상 시스템과 소스 시스템 간의 차이에 따라 달라집니다.
파일 시스템이 lvm 논리 볼륨에 있고 스냅샷의 파일을 복사하는 경우 lvm 스냅샷을 사용할 수 있습니다.
xfs를 사용하면 소스 파일 시스템이 온라인일 때 xfsdump /source_fs를 xfsrestore /target_fs로 파이프할 수 있습니다.
답변2
소스 파일 시스템이 고정/해제 메커니즘을 지원하는 경우 이를 순서대로 사용할 수 있습니다(대상 파일 시스템이 마운트되지 않았다고 가정). 1/소스 파일 시스템을 고정하고, 2/블록을 복사하기 위해 dd를 사용하고, 3/고정 해제를 해제합니다. 소스 파일 시스템.
소스 파일 시스템이 고정되면 쓰기 액세스가 불가능합니다. 소스 파일 시스템이 "atime" 옵션으로 마운트된 경우 읽기 액세스에서도 쓰기가 생성됩니다("액세스 시간" 메타데이터를 업데이트하기 위해). 사용 사례에 따라 이것이 가능할 수도 있고 불가능할 수도 있습니다.
https://linux.die.net/man/8/fsfreezeLinux Ext3/4, ReiserFS, JFS 및 XFS를 지원하는 것이 좋습니다.
그런데 COW fs(소스 및 대상과 동일)를 갖고 btrfs 보내기/받기 메커니즘(또는 ZFS)과 같이 스냅샷을 참조점으로 사용하여 블록별 증분 전송을 사용할 수 있습니다. 하지만 임베디드 컨텍스트에 이런 유형의 파일 시스템이 있는지 의심됩니다.