Profile picture

[Linux] dd 명령어로 ubuntu 마이그레이션(migration)

JaehyoJJAng2023년 07월 07일

◾️ 개요

서버나 PC를 아무 생각 없이 사용하다보면 언젠가 용량 부족 문제에 직면하게 된다.

Ubuntu OS의 경우 dump나 캐시 삭제 등을 통해 용량을 어느 정도 확보할 수 있지만 그마저도 언젠가 안 먹힐 때가 온다.

보통 이럴 때는 RAID를 도입하여 기존 디스크를 사용자의 입맛에 맞는 RAID 레벨로 묶고,
새로운 디스크를 구매하여 기존 RAID에 추가하는 방식으로 용량을 확장한다.


dd 커맨드의 경우 간단하고 직관적인 명령어이며, 특히 단순한 디스크 마이그레이션 작업에서는 RAID보다 효과적일 수도 있다.

단, 아래의 몇 가지 주의할 점이 존재한다.

  • 블록 수준 복제: dd는 블록 수준으로 디스크를 복제하므로, 파일 시스템이나 파티션에 대한 특별한 처리 없이 단순히 비트 단위로 복제됩니다. 따라서 복제된 디스크는 크기가 동일해야 합니다.
  • 성능 문제: dd는 단순한 명령어로 성능을 최적화하지 않습니다. 따라서 대용량 디스크의 경우 시간이 오래 걸릴 수 있습니다.
  • 데이터 일관성: 디스크를 사용 중인 동안 dd를 실행하는 것은 데이터 일관성 문제를 야기할 수 있습니다. 이를 피하기 위해 시스템을 끄고 부팅하지 않은 상태에서 dd를 사용하는 것이 좋습니다.
  • 정확성 확인: 마이그레이션 후에는 반드시 데이터의 일관성과 정확성을 확인해야 합니다. RAID의 경우 특히 체크섬 등의 기능으로 데이터 무결성을 보장할 수 있습니다.

◾️ 마이그레이션

  • 시스템을 부팅하지 않은 상태에서 USB 또는 다른 방법으로 부팅 가능한 미디어를 사용하여 시스템을 부팅

현재 구버전 SSD(/dev/sda)와 새제품 SSD(/dev/sdb) 서버에 장착되어 있는 상태이다.

1. 서버의 터미널을 열어주고 해당 명령어를 입력해보자.

sudo fdisk -l /dev/sd{a,b}

image
현재 /dev/sda, /dev/sdb 두 디스크가 장착되어 있다.
지금부터 /dev/sda의 모든 데이터를 /dev/sdb로 옮기는 작업을 진행해볼 것이다.


2. 아래 명령어를 사용하여 /dev/sda에서 /dev/sdb로 데이터를 복제해보자.

sudo dd if=구ssd of=신ssd bs=4M status=progress
  • if=/dev/sda : 복제할 원본 디스크
  • of=/dev/sdb : 목적지 디스크
  • bs=4M : 블록 크기를 4MB로 지정 (이 값은 변경 가능하지만 보통 4MB가 성능상 좋은 선택)
  • status=progress : 복제 진행 상황을 터미널에 표시

3. 위 명령을 실행하면 복제 작업이 시작되며 진행 상황이 표시된다. 작업이 완료되면 디스크를 재부팅하여 새로운 디스크가 올바르게 인식되는지 확인해야 한다.

sudo shutdown -r now

Loading script...