- 새 노트북을 처음부터 다시 세팅하는 대신, 기존 노트북의 전체 디스크를 NVMe over TCP로 노출해 네트워크로 그대로 복제함
- 기존 환경은 전체 디스크 암호화와 512GB 디스크를 사용했고, 새 노트북은 1TB NVMe라 복제 뒤 파티션·LUKS·BTRFS 확장이 필요했음
- 디스크 내보내기는
systemd-storagetm.service대신 두 노트북을 GRML rescue CD로 부팅하고nvmet-tcp와/sys/kernel/config/nvmet로 구성함 - 실제 복사는
dd로 진행했으며, 새 노트북에 이더넷 포트가 없어 WiFi만 사용한 결과 512GB 복제에 약 7시간 30분, 속도는 약 18~20MB/s 수준이었음 - 복제 후
parted,growpart,cryptsetup resize, BTRFS resize를 거쳐 1TB 전체를 쓰도록 조정했고, 기존 노트북 환경을 거의 그대로 이어받을 수 있었음
NVMe over TCP로 기존 디스크 내보내기
-
새 노트북 설정 절차를 반복하지 않기 위해, 동료의 제안대로 기존 노트북 디스크 전체를 복사하는 방식을 택함
-
시작 전 걸림돌은 두 가지였음
- 기존 노트북을 열어 새 디스크를 USB로 연결할 도구가 없었음
- 기존 노트북은 전체 디스크 암호화와 512GB 디스크를 사용했고, 새 노트북은 1TB NVMe라 LUKS 크기 조정이 필요했음
-
작업 흐름은 디스크 노출, 복사, 용량 확장의 세 단계로 이어짐
- 기존 노트북에서
nvmet-tcp로 디스크를 내보냄 - 새 노트북에서 해당 디스크를 복사함
- 파티션을 1TB 전체로 확장함
- LUKS 크기를 조정함
- 마지막으로 BTRFS 루트 디스크 크기를 조정함
- 기존 노트북에서
-
systemd-storagetm.service 대신 GRML 사용
- 가장 쉬운 방법으로는 systemd-storagetm.service를 사용할 수 있었음
rd.systemd.unit=storage-target-mode.target를 지정해storage-target-mode.target로 부팅하면 호출 가능함- 다만 이 방식은 dracut initrd 이미지에 네트워크 서비스를 포함해야 하고, 해당 모드에서 WiFi 설정이 번거로워 제외함
- 대신 두 노트북을 GRML rescue CD로 부팅한 뒤, 기존 노트북에서 Linux의
nvmet-tcp모듈로 NVMe 디스크를 내보냄
modprobe nvmet-tcp cd /sys/kernel/config/nvmet mkdir ports/0 cd ports/0 echo "ipv4" > addr_adrfam echo 0.0.0.0 > addr_traaddr echo 4420 > addr_trsvcid echo tcp > addr_trtype cd /sys/kernel/config/nvmet/subsystems mkdir testnqn echo 1 >testnqn/allow_any_host mkdir testnqn/namespaces/1 cd testnqn # replace the device name with the disk you want to export echo "/dev/nvme0n1" > namespaces/1/device_path echo 1 > namespaces/1/enable ln -s "../../subsystems/testnqn" /sys/kernel/config/nvmet/ports/0/subsystems/testnqn- 이 설정으로 대상 디바이스가 NVMe over TCP로 노출됨
- 새 노트북에서는 내보낸 디바이스를 검색하고 연결함
nvme discover -t tcp -a <ip> -s 4420 nvme connectl-all -t tcp -a <> -s 4420- 이후
nvme list에서 새 노트북에 연결된 디바이스를 확인하고 디스크 복사를 진행할 수 있음
디스크 복사와 크기 조정
-
dd로 512GB 복사- 루트 디스크 복사는
dd명령으로 수행함 - 새 노트북에 이더넷 포트가 없어 WiFi만 사용했고, 512GB 전체 복사에는 약 7시간 30분이 걸림
- 전송 속도는 약 18~20MB/s 수준이었음
- 다른 선택지로는 초기 파티션과 파일 시스템을 만든 뒤
rsync로 루트 디스크를 복사하거나, BTRFS 자체 파일 시스템 전송을 사용하는 방법이 있었음
dd if=/dev/nvme2n1 of=/dev/nvme0n1 status=progress bs=40M - 루트 디스크 복사는
-
파티션, LUKS, BTRFS 확장
parted는 파티션 테이블이 디스크 크기와 맞지 않음을 감지했고, 수정 여부를 확인한 뒤 자동으로 고침- 두 번째 파티션 확장을 위해
cloud-guest-utils를 설치하고growpart를 사용함
growpart /dev/nvem0n1 p2- 다음 단계에서는
cryptsetup으로 LUKS 컨테이너 크기를 늘림
cryptsetup luksOpen /dev/nvme0n1p2 ENC cryptsetup resize ENC- 디스크로 재부팅한 뒤 정상 동작을 확인했고, 로그인 후 BTRFS 파일 시스템 크기를 조정함
- BTRFS는 크기 조정을 위해 시스템이 마운트되어 있어야 해서 라이브 부팅 상태에서는 시도할 수 없었음
btfs fielsystem resize max /- 결과적으로 새 노트북에서도 기존 노트북을 계속 쓰는 것 같은 환경을 얻음
- 일반적으로 새 노트북에 완전히 적응하려면 약 1~2주가 걸리지만, 이 방식으로 그 시간을 줄임
- 부가적으로 NVMe over TCP로 디스크를 내보내는 방법을 익힌 점도 남음