dd
이런 방식으로 LVM2 논리 볼륨이 있는 외부 드라이브에 백업을 수행하고 싶습니다 .
제가 생각하는 방식은
- 외장 드라이브에서 동일한 크기의 lv 만들기
- 다음으로 복사
dd
(이 접근 방식에서 정말 잘못된 점을 발견하면 알려주세요. 안정적이고 빠른 것이 필요합니다.)
전체 프로세스를 자동화하고 싶습니다.
# Sanity check that lv is not used
lvuses="$( lvdisplay -c /dev/mapper/vgA-AA | cut -d ':' -f 6 )"
if [ $lvuses -gt 0 ]; then exit 1 ; fi
#obtain lv size (in sectors)
lvsize="$( lvdisplay -c /dev/mapper/vgA-AA | cut -d ':' -f 7 )"
#create destination
lvcreate -L "${lvsize}s" vgB -n BB || exit 1
# copy
dd if=/dev/mapper/vgA-AA of=/dev/mapper/vgB-BB
그것은 중요하지 않습니까? 내가 뭐 놓친 거 없니?
(저의 경우 vgA-AA는 LVM 스냅샷이므로 외부 드라이브에 백업하고 해당 드라이브를 다른 지리적 위치로 가져가고 싶습니다.)
답변1
귀하의 스크립트는 좋아 보이지만 저는 다른 접근 방식을 사용하겠습니다. 즉, 이미지를 생성한 다음 삭제합니다. 내가 아는 한 이 작업은 온라인으로 수행할 수 있습니다. 테스트되지 않음:
lvconvert -m /dev/mapper/vgA-AA /dev/sdz98 /dev/sdz99
lvconvert --splitmirrors 1 --name BB /dev/mapper/vgA-AA
새 논리 볼륨을 다른 볼륨 그룹으로 이동하려면 보내려는 LV가 자체 물리 볼륨에 있는지 확인하고 vgsplit
.
답변2
사용하지 마십시오 dd
. 여유 공간을 포함하여 볼륨의 모든 내용을 복사하여 원래 파일 시스템과 동일한 UUID로 파일 시스템을 생성하는 어리석은 동물이므로 시스템을 혼란시킬 수 있습니다. 대신 partclone
Ghost4linux와 같은 도구나 fsarchiver
시스템을 압축된 이미지 파일로 복사하고 여유 블록을 건너뛸 수 있는 도구를 사용하십시오.
답변3
- 외부 디스크 마운트
- 애플리케이션 중지
- 파일 시스템이 사용 중이 아닌지 확인합니다($ sudo fusion -M /path/to/filesystem/mountpoint)
- 스냅샷 생성($ sudo lvcreate -s ...)
- 신청 시작
- 백업에 rsync 사용(-update 및 --link-dest에 대해 man rsync 확인)
- 또는 확인http://dirvish.org또는http://backuppc.sourceforge.net/구현을 위해
- 외부 디스크 마운트 해제
- 스냅샷 LV 삭제 이 프로세스는 백업된 각 외부 디스크에 디렉터리를 생성합니다. 원본 디스크에서 변경된/새 파일만 복사하고 백업 간에 중복 파일을 하드 링크하여 공간을 절약합니다.
답변4
안정적이고 빠릅니다. LVM 스냅샷을 추천합니다.
매우 빠르며 백업 프로세스 중에 파일 변경 없이 백업을 보장할 수 있습니다. 또한 볼륨에 데이터베이스가 있는 경우 이를 오프라인으로 전환할 필요가 없습니다.
이는 볼륨 변화를 테스트하는 좋은 방법이기도 합니다. 스냅샷을 만들고 변경하지만 스냅샷을 다시 병합할 수는 없습니다. 성공하면 스냅샷이 삭제됩니다.
편집: 코드
lvcreate -L 10G -s -n snapshot /dev/VG/LV
그런 다음 스냅샷 볼륨을 원하는 위치에 백업하세요.
파일 시스템 테스트의 경우 스냅샷을 만들고 다시 병합할 수 있습니다.
lvconvert --merge /dev/VG/snapshot
이 병합은 스냅샷 볼륨을 자동으로 삭제합니다.
노트:스냅샷에는 다음이 필요합니다 kernel version 2.6.33 or newer
.LVM tools 2.02.58 or newer
편집하다. 링크: