반응형
dd command를 이용하여 리눅스(Red Hat Enterprise Linux 8) 시스템 전체를 부팅 가능 USB로 복사한다.
dd는 data duplication에서 유래했지만, 매우 강력하기 때문에 디스크 파괴자 또는 데이터 파괴자라고 불리기도 한다. 왜냐하면 input과 output 순서를 바꿔서 사용할 경우에 데이터가 다 날아가기 때문이다.
Linux OS 시스템을 SSD 혹은 USB로 복사하는 경우는 다음과 같다.
- 시스템 설정상태 및 패키지 버전의 관리 이유로 전체 백업
- 시스템 해킹에 대비하는 복구 차원의 백업
- 제품 양산시 SD card에 시스템 자체를 복제해야 할 경우
1. 환경구성
- source_disk : SATA NAND Flash 59 GiB used for Linux
- target_disk: USB available 114.6 GiB
2. dd command 사용
- dd command는 "dd if=[source_disk] of=[target_disk] [옵션]"으로 구성된다. 여기에서 부팅 가능한 USB로의 Linux OS 시스템(MBR)을 복사하기 위해서는 bs=512 옵션을 사용한다.
1) 디스크 크기가 동일할 때
[root@localhost ~]# dd if=/dev/sda of=/dev/sdb bs=512 status=progress
2) 디스크 크기가 동일하지 않을 때 1)의 명령어를 사용한 경우에는 다음과 같은 에러가 발생한다.
GPT PMBR size mismatch (123731967 != 240328703) will be corrected by write.
3) 디스크의 크기가 다를 경우에는 아래의 명령어를 사용한다.
- 여기에서 count는 source_disk의 End 끝부분 123729919에 1을 더한 값이다.
[root@localhost ~]# dd if=/dev/sda of=/dev/sdb bs=512 count=123729920 status=progress
63337071104 bytes (63 GB, 59 GiB) copied, 10046 s, 6.3 MB/s
123729920+0 records in
123729920+0 records out
63349719040 bytes (63 GB, 59 GiB) copied, 10064.4 s, 6.3 MB/s
4) 디스크 복사가 잘 이루어진 것을 확인한다.
[root@localhost ~]# fdisk -l
Disk /dev/sda: 59 GiB, 63350767616 bytes, 123731968 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CE1499BB-2BD6-483F-937D-9A621F46392D
Device Start End Sectors Size Type
/dev/sda1 2048 1230847 1228800 600M EFI System
/dev/sda2 1230848 3327999 2097152 1G Linux filesystem
/dev/sda3 3328000 123729919 120401920 57.4G Linux LVM
GPT PMBR size mismatch (123731967 != 240328703) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Disk /dev/sdb: 114.6 GiB, 123048296448 bytes, 240328704 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CE1499BB-2BD6-483F-937D-9A621F46392D
Device Start End Sectors Size Type
/dev/sdb1 2048 1230847 1228800 600M EFI System
/dev/sdb2 1230848 3327999 2097152 1G Linux filesystem
/dev/sdb3 3328000 123729919 120401920 57.4G Linux LVM
5) target_disk의 파티션 정보를 수정하기 위하여 source_disk의 파티션 정보를 저장한다.
[root@localhost ~]# sfdisk -d /dev/sda > partition_table.txt
6) partition_table.txt(파티션 정보)를 수정한다.
- last-lba는 총 sectors에서 first-lba를 뺀 값이다. source_disk의 last-lba 값을 target_disk의 last-lba 값으로 수정한다.
- source_disk의 last-lba는 123731968 - 34 = 123731934
- target_disk의 last-lba는 240328704 - 34 = 240328670
[root@localhost ~]# vi partition_table.txt
label: gpt
label-id: CE1499BB-2BD6-483F-937D-9A621F46392D
device: /dev/sda
unit: sectors
first-lba: 34
last-lba: 123731934 // to be 240328670
/dev/sda1 : start = 2048, size= 1228800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=7AC06DEC-8B8E-4407-8CFB-8A05D505113A, name="EFI System Partition"
/dev/sda2 : start = 1230848, size= 2097152, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=A6525F47-4E52-4041-A109-07D4F314DA2F
/dev/sda3 : start = 3328000, size= 120401920, type=E6D6D379-F507-44C2-A23C-238F2A3DF928, uuid=0CFA3CFE-0585-41AE-BD69-13B90D7BC176
7) 수정된 파티션 정보를 target_disk에 overwrite한다.
[root@localhost ~]# sfdisk /dev/sdb < partition_table.txt
GPT PMBR size mismatch (123731967 != 240328703) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Checking that no-one is using this disk right now ... OK
Disk /dev/sdb: 114.6 GiB, 123048296448 bytes, 240328704 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CE1499BB-2BD6-483F-937D-9A621F46392D
Old situation:
Device Start End Sectors Size Type
/dev/sdb1 2048 1230847 1228800 600M EFI System
/dev/sdb2 1230848 3327999 2097152 1G Linux filesystem
/dev/sdb3 3328000 123729919 120401920 57.4G Linux LVM
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new GPT disklabel (GUID: CE1499BB-2BD6-483F-937D-9A621F46392D).
/dev/sdb1: Created a new partition 1 of type 'EFI System' and of size 600 MiB.
Partition #1 contains a vfat signature.
/dev/sdb2: Created a new partition 2 of type 'Linux filesystem' and of size 1 GiB.
Partition #2 contains a xfs signature.
/dev/sdb3: Created a new partition 3 of type 'Linux LVM' and of size 57.4 GiB.
Partition #3 contains a LVM2_member signature.
/dev/sdb4: Done.
New situation:
Disklabel type: gpt
Disk identifier: CE1499BB-2BD6-483F-937D-9A621F46392D
Device Start End Sectors Size Type
/dev/sdb1 2048 1230847 1228800 600M EFI System
/dev/sdb2 1230848 3327999 2097152 1G Linux filesystem
/dev/sdb3 3328000 123729919 120401920 57.4G Linux LVM
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
8) target_disk에 overwrite한 파티션 정보를 반영한다.
- BIOS: grub2-mkconfig -o /boot/grub2/grub.cfg
- EFI: grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
[root@localhost ~]# dracut --regenerate-all -f && grub2-mkconfig -o /boot/grub2/grub.cfg && grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Generating grub configuration file ...
WARNING: Not using device /dev/sdb3 for PV zWczRQ-na3U-6XmT-weAC-Cc8y-Kcqu-HTRVqh.
WARNING: PV zWczRQ-na3U-6XmT-weAC-Cc8y-Kcqu-HTRVqh prefers device /dev/sda3 because device is used by LV.
WARNING: Not using device /dev/sdb3 for PV zWczRQ-na3U-6XmT-weAC-Cc8y-Kcqu-HTRVqh.
WARNING: PV zWczRQ-na3U-6XmT-weAC-Cc8y-Kcqu-HTRVqh prefers device /dev/sda3 because device is used by LV.
WARNING: Not using device /dev/sdb3 for PV zWczRQ-na3U-6XmT-weAC-Cc8y-Kcqu-HTRVqh.
WARNING: PV zWczRQ-na3U-6XmT-weAC-Cc8y-Kcqu-HTRVqh prefers device /dev/sda3 because device is used by LV.
WARNING: Not using device /dev/sdb3 for PV zWczRQ-na3U-6XmT-weAC-Cc8y-Kcqu-HTRVqh.
WARNING: PV zWczRQ-na3U-6XmT-weAC-Cc8y-Kcqu-HTRVqh prefers device /dev/sda3 because device is used by LV.
Adding boot menu entry for EFI firmware configuration
done
반응형
'프로그래밍 > OS' 카테고리의 다른 글
RHEL 디스플레이 해상도 800x600 보다 높은 값으로 설정 (0) | 2022.05.20 |
---|---|
grubby를 이용하여 커널 부팅 순서 변경하기 (0) | 2022.05.16 |
RHEL 부팅 USB 만들기, 설치 및 USB 원상복구 방법 (0) | 2022.05.09 |
서버 간 User Password 없이 SSH 접속 (0) | 2022.04.20 |
RHEL8 기본 튜닝 가이드 (0) | 2022.04.20 |
댓글