내 Ubuntu 미디어 서버의 드라이브가 거의 가득 찼습니다. 머신에 2TB의 용량을 더 추가하고 3.5TB가 모두 단일 드라이브로 인식되는 것을 선호합니다. 상황을 복잡하게 만들기 위해 드라이브의 데이터가 손실되거나 프로그램을 재구성해야 하는 것을 원하지 않습니다.
내 계획은 LVM을 사용하여 새 드라이브에 볼륨 그룹을 만들고 dd를 사용하여 이전 드라이브의 내용을 복사하는 것이었습니다. 그런 다음 기존 드라이브를 지우고 볼륨 그룹에 추가할 계획입니다.
이 계획이 성공할까요?
가장 큰 질문은 다음과 같습니다. - dd가 문제 없이 내 설치를 다른 드라이브에 복사할 수 있습니까? 볼륨 그룹인 경우에도 마찬가지입니까? -1.5TB 드라이브를 2TB 드라이브로 복사하고 남은 공간을 비울 수 있습니까?
답변1
이미 LVM을 사용하고 있는 경우:
- 새 디스크가 LVM용으로 마운트 및 파티션되어 있는지 확인하세요(LVM 비트 전환).
- 새 디스크에 PV 생성(
pvcreate /dev/your-new-disk
) - 새 PV를 포함하도록 VG 확장(
vgextend your-volume-group /dev/your-new-disk
) pvmove
기존 디스크의 데이터를 새 디스크로 이동합니다. .dd
(pvmove /dev/your-old-disk
LVM이 이전 디스크의 데이터를 사용 가능한 다른 디스크로 이동하도록 강제합니다.)
아직 LVM을 사용하고 있지 않은 경우:
- 새 디스크에 PV 및 VG를 만듭니다.
- 새 VG의 새 LV에 데이터를 복사하십시오. 귀하의 파일 시스템에 사용 가능한 경우 +를
사용 하지만 원하는 경우 또는 또는을 사용할 수도 있습니다 .dump
restore
cpio
tar
dd
- 기존 디스크를 포맷하고 PV로 전환한 다음 VG에 추가합니다.
다음은 다소 독선적이며 LVM과 관련이 없습니다.
dump
+restore
:- 원시 블록 장치에서 작동하므로 소스
atime
등이 영향을 받지 않고 대상ctime
등을 올바르게 설정할 수 있습니다. - 모든 하드링크를 보존하고 모든 확장 속성, 보안 정책 및 기타 파일 시스템별 메타데이터를 보존할 수 있을 만큼 파일 시스템 내부를 잘 이해해야 합니다.
- 소스와 대상의 크기는 다를 수 있습니다. 사용 중인 데이터만 복사합니다.
- 가장 빠른 방법이어야합니다.
- 원시 블록 장치에서 작동하므로 소스
cpio
//tar
/rsync
:cp
- 마운트된 파일 시스템에서 작동하므로 소스
atime
가 변경되고, 대상이ctime
보존될 수 없으며, inode 번호가 변경됩니다. - 하드링크를 보존하려면 알려진 모든 inode를 메모리에 유지해야 하며 올바르게 수행될 수도 있고 그렇지 않을 수도 있습니다. 도구는 확장된 속성, 보안 정책 및 기타 파일 시스템별 메타데이터를 보존할 만큼 파일 시스템을 충분히 이해하거나 권한을 가질 수도 있고 그렇지 않을 수도 있습니다.
(예를 들어 ext4는 밀리초 미만의 타임스탬프를 지원하지만 내가 아는 한 이러한 도구 중 어느 것도 이를 보존하지 않습니다.) - 소스와 대상의 크기는 다를 수 있습니다. 지정된 데이터만 복사합니다.
stat
syscall( ,opendir
,readdir
,closedir
,mkdir
,open
,read
,write
,close
…) 에 많은 시간을 보냅니다 .
- 마운트된 파일 시스템에서 작동하므로 소스
dd
:- 원시 블록 장치의 정확한 복사본입니다.
- 사용 여부에 관계없이 모든 블록을 복사합니다.
- 고유해야 하는 항목(예: UUID)을 포함하여 모든 파일 시스템 구조를 복제합니다.
XFS인 경우 동일한 시스템에 동시에 둘 다(기본적으로) 마운트할 수 없습니다. - 복사 중에는 크기를 조정할 수 없습니다.
- 파일 시스템이 가득 차지 않으면 비교적 느립니다.