
데이터나 Linux 시스템 자체를 잃지 않고 HDD를 SSD에 복제할 수 있는 방법을 찾고 있습니다. 문제는 현재 HDD의 크기가 1TB이고 우리가 받은 SSD의 크기가 480GB이므로 디스크 크기가 다르기 때문에 직접 복제할 수 없다는 것입니다. 하지만 디스크가 완전히 사용되지 않았으므로 외부 장치로 축소할 수 있을 것 같습니다. 도구 또는 서버의 명령줄을 통해. 이제 각각 1TB의 HDD 2개가 서버에 연결되어 있는데 이렇게 더 작고 빠른 SSD로 교체하는 방법을 모르겠습니다. 어떤 도움이라도 주시면 감사하겠습니다.
#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931G 0 disk
├─sda1 8:1 0 953M 0 part /boot/efi
├─sda2 8:2 0 953M 0 part /boot
└─sda3 8:3 0 929.1G 0 part
├─rl-root 253:0 0 18.6G 0 lvm /
├─rl-swap 253:1 0 29.8G 0 lvm [SWAP]
├─rl-usr 253:2 0 10G 0 lvm /usr
├─rl-var_lib_docker 253:3 0 93.1G 0 lvm /var/lib/docker
├─rl-opt 253:4 0 93.1G 0 lvm /opt
├─rl-var_log_audit 253:5 0 4.7G 0 lvm /var/log/audit
├─rl-var 253:6 0 9.3G 0 lvm /var
├─rl-home 253:7 0 1.9G 0 lvm /home
├─rl-var_log 253:8 0 4.7G 0 lvm /var/log
├─rl-tmp 253:9 0 4.7G 0 lvm /tmp
└─rl-var_tmp 253:10 0 4.7G 0 lvm /var/tmp
# fdisk -l /dev/sd?
Disk /dev/sda: 931 GiB, 999653638144 bytes, 1952448512 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 0219246B-336B-4D22-96A3-FD679EDA66DE
Device Start End Sectors Size Type
/dev/sda1 2048 1953791 1951744 953M EFI System
/dev/sda2 1953792 3905535 1951744 953M Linux filesystem
/dev/sda3 3905536 1952448478 1948542943 929.1G Linux LVM
# df -h | grep -v docker
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.5G 0 7.5G 0% /dev
tmpfs 7.5G 0 7.5G 0% /dev/shm
tmpfs 7.5G 95M 7.5G 2% /run
tmpfs 7.5G 0 7.5G 0% /sys/fs/cgroup
/dev/mapper/rl-root 19G 232M 19G 2% /
/dev/mapper/rl-usr 10G 4.8G 5.3G 48% /usr
/dev/mapper/rl-tmp 4.7G 99M 4.6G 3% /tmp
/dev/mapper/rl-home 1.9G 1014M 885M 54% /home
/dev/mapper/rl-var 9.4G 3.0G 6.4G 32% /var
/dev/sda2 949M 276M 674M 30% /boot
/dev/sda1 952M 5.8M 946M 1% /boot/efi
/dev/mapper/rl-var_tmp 4.7G 66M 4.6G 2% /var/tmp
/dev/mapper/rl-var_log 4.7G 1.3G 3.5G 27% /var/log
/dev/mapper/rl-opt 94G 7.6G 86G 9% /opt
/dev/mapper/rl-var_log_audit 4.7G 106M 4.6G 3% /var/log/audit
tmpfs 1.5G 0 1.5G 0% /run/user/0
# lshw
*-raid
description: RAID bus controller
product: MegaRAID SAS-3 3008 [Fury]
vendor: Broadcom / LSI
physical id: 0
bus info: pci@0000:02:00.0
logical name: scsi0
version: 02
width: 64 bits
clock: 33MHz
capabilities: raid pm pciexpress msi msix bus_master cap_list rom
configuration: driver=megaraid_sas latency=0
resources: irq:17 ioport:5000(size=256) memory:91c00000-91c0ffff memory:91b00000-91bfffff memory:91a00000-91afffff
*-disk
description: SCSI Disk
product: PRAID CP400i
vendor: FTS
physical id: 2.0.0
bus info: scsi@0:2.0.0
logical name: /dev/sda
version: 4.68
serial: 004f93e10b84d6222c40f6200004000e
size: 931GiB (999GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=0219246b-336b-4d22-96a3-fd679eda66de logicalsectorsize=512 sectorsize=4096
*-volume:0
description: Windows FAT volume
vendor: mkfs.fat
physical id: 1
bus info: scsi@0:2.0.0,1
logical name: /dev/sda1
logical name: /boot/efi
version: FAT32
serial: cbe6-07f6
size: 951MiB
capacity: 952MiB
capabilities: boot fat initialized
configuration: FATs=2 filesystem=fat mount.fstype=vfat mount.options=rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro name=EFI System Partition state=mounted
*-volume:1
description: EFI partition
physical id: 2
bus info: scsi@0:2.0.0,2
logical name: /dev/sda2
logical name: /boot
serial: 7ca4eedb-7995-4a39-b1c8-676c006e7c83
capacity: 952MiB
configuration: mount.fstype=xfs mount.options=rw,seclabel,relatime,attr2,inode64,logbufs=8,logbsize=32k,sunit=128,swidth=128,noquota state=mounted
*-volume:2
description: LVM Physical Volume
vendor: Linux
physical id: 3
bus info: scsi@0:2.0.0,3
logical name: /dev/sda3
serial: gE8t7L-MEtM-wxjh-VGNz-19ch-dDXX-NQKV7n
size: 269GiB
capacity: 929GiB
capabilities: multi lvm2
# lspci | grep RAID
02:00.0 RAID bus controller: Broadcom / LSI MegaRAID SAS-3 3008 [Fury] (rev 02)
@Nikita 저는 물리적으로 접근할 수 있을 뿐만 아니라 웹에서도 접근할 수 있습니다. RAID 구성은 소프트웨어라고 생각합니다.
답변1
재배치 가능성을 염두에 두고 구축된 시스템에서는 이는 다른 장치를 연결하고, 초기화하고, 볼륨을 마이그레이션하고, 부트로더를 다시 설치하는 것만큼 쉬울 수 있으며, 서비스를 중단하지 않고도 달성할 수도 있습니다.
좋은 소식이 있습니다. 귀하의 레이아웃이 그것과 일치합니다. LVM을 사용하면 볼륨 그룹의 모든 공간이 할당되지는 않습니다. 모든 논리 볼륨을 합하면 480GB SSD에서 일반적으로 사용 가능한 공간보다 적은 공간을 차지하는 것으로 보입니다. 이는 파일 시스템 크기를 조정할 필요가 없음을 의미합니다. 서비스 중단 없이도 모든 것이 가능하다고 생각합니다.
또한 이 특정 사례와는 관련이 없지만 항상 파일 시스템을 축소한 다음 복제하는 것으로 귀결되는 것은 아니라는 점을 기억하는 것이 좋습니다. 대부분의 경우 새 파일 시스템을 생성하고 파일을 복사할 수 있습니다.
일반적으로 "LSI MegaRAID SAS"로 알려진 최신형 Broadcom HW RAID가 있습니다.프로그램storcli
. Broadcom 웹사이트에서 이를 얻으려면 해당 카드 모델이 무엇인지 알아야 합니다. 현재로서는 3008 컨트롤러 칩을 사용하고 있다는 것을 알고 있지만 안타깝게도 정품 다운로드 페이지로 연결되기에는 충분하지 않습니다.
이 유틸리티를 사용하면 OS 내에서 RAID를 조작하고 모니터링할 수 있습니다.이 능력은 꼭 필요해요! 그러나 나는 그것에 대해 작업한 경험이 충분하지 않습니다. 예전에는 을 가지고 있었는데 megacli
요즘에는 더 이상 사용되지 않으며 최신 카드와 함께 사용하는 것은 그리 좋은 생각이 아닐 것입니다. 또는 재부팅하고 일부 키 입력을 사용하여 부팅 시간 유틸리티를 호출한 다음 거기에서 새 논리 디스크를 생성할 수 있습니다.
새 미디어 세트에서 새 RAID 어레이와 새 논리 디스크를 생성한 후에는 이를 이와 같이 분할하고 마지막 파티션만 더 작게 하여 유사한 레이아웃을 생성해야 합니다.
screen
마이그레이션을 수행하기 위해 원격 연결을 사용하는 경우 또는 에서 모든 작업을 수행하는 것이 좋습니다 tmux
. 그러면 네트워킹 문제로 인해 연결이 끊어지더라도 셸 세션이 유지되어 연결할 수 있습니다. 그것에. 터미널에 앉아 있거나 KVM의 왕(iLO, iDRAC, xClarity 등)을 사용하는 경우 이는 중요하지 않습니다.
/dev/sdb
새로운 RAID 가상 디스크가 OS에서 우연히 호출되었다고 가정해 보겠습니다 .올바른 장치를 사용하고 있는지 확인하세요. 그렇지 않으면 데이터를 복구하기가 어렵습니다.:
- 달리다
fdisk /dev/sdb
g
GPT 파티션 테이블을 생성하고 삭제에 동의하려면 누르세요 .- 동일한 크기의 새 파티션을 생성하여 EFI 시스템 파티션(ESP)을 생성합니다.
n
유형 1 "ESP"를 선택하고 크기를 사용합니다953M
(M은 MiB를 의미하며 이는 기존 ESP의 정확한 크기입니다). - 부팅 파티션 만들기:
n
, "Linux 파일 시스템"(해당하는 번호가 기억나지 않음)을 선택하고 크기를953M
다시 사용하십시오. - LVM 파티션 생성:
n
"Linux LVM"(실수하지 않은 경우 31)을 선택하고 남은 공간을 모두 채우려면 제안된 내용을 수락합니다. - 변경 사항을 승인하고 종료합니다:
w
.
그런 다음 LVM이 아닌 파일 시스템을 복제합니다. 그에 대한:
- ESP 및 /boot 파티션을 마운트 해제합니다.
umount /boot/efi /boot
- 해당 내용을 복제하십시오:
dd if=/dev/sda1 of=/dev/sdb1
및dd if=/dev/sda2 of=/dev/sdb2
. 이 단계에 오류가 있으면 오류를 해결할 때까지 진행하지 마세요! 한 가지 원인은 크기가 정확하지 않기 때문일 수 있습니다. - /boot에 XFS를 사용하고 있으므로 지금 복제본의 UUID를 변경해야 합니다. 그렇지 않으면 마운트할 수 없습니다:
xfs_admin -U generate /dev/sdb2
. 새 UUID로 업데이트하는 것을 잊지 마세요/etc/fstab
(마운트에 UUID를 사용하는 경우 그래야 합니다). - 새 /boot 및 ESP 파티션을 마운트
mount /dev/sdb2 /boot
합니다mount /dev/sdb1 /boot/efi
.
이제 나머지 대형 파티션에서 PV를 생성하고 이를 기존 볼륨 그룹에 추가합니다.
pvcreate /dev/sdb3
vgextend r1 /dev/sdb3
이제 가장 긴 작업을 준비합니다. HDD 물리적 볼륨에서 데이터를 이동합니다.
pvmove -vi 5 /dev/sda3
마지막으로 볼륨 그룹에서 HDD 논리 드라이브를 제거하고 LVM 레이블을 제거합니다.
vgreduce r1 /dev/sda3
pvremove /dev/sda3
완료되면 새 RAID에서 부팅하도록 재구성할 차례입니다. 이 새 볼륨을 기본 부팅으로 만들려면 RAID 카드를 설정해야 할 수도 있습니다. 일반적으로 EFI 부팅에는 필요하지 않지만 해를 끼치 지 않으므로 그렇게하십시오.
새 RAID에서 부팅하도록 펌웨어 부팅 항목을 설정합니다. OS 릴리스에서 제공하는 도구를 사용하거나 efibootmgr
; 어쨌든 구체적인 명령은 사용 중인 배포판에 따라 다릅니다.