Linux RAID 1 서버에서 디스크 크기 축소/줄이기

Linux RAID 1 서버에서 디스크 크기 축소/줄이기

데이터나 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에서 우연히 호출되었다고 가정해 보겠습니다 .올바른 장치를 사용하고 있는지 확인하세요. 그렇지 않으면 데이터를 복구하기가 어렵습니다.:

  1. 달리다fdisk /dev/sdb
  2. gGPT 파티션 테이블을 생성하고 삭제에 동의하려면 누르세요 .
  3. 동일한 크기의 새 파티션을 생성하여 EFI 시스템 파티션(ESP)을 생성합니다. n유형 1 "ESP"를 선택하고 크기를 사용합니다 953M(M은 MiB를 의미하며 이는 기존 ESP의 정확한 크기입니다).
  4. 부팅 파티션 만들기: n, "Linux 파일 시스템"(해당하는 번호가 기억나지 않음)을 선택하고 크기를 953M다시 사용하십시오.
  5. LVM 파티션 생성: n"Linux LVM"(실수하지 않은 경우 31)을 선택하고 남은 공간을 모두 채우려면 제안된 내용을 수락합니다.
  6. 변경 사항을 승인하고 종료합니다: w.

그런 다음 LVM이 아닌 파일 시스템을 복제합니다. 그에 대한:

  1. ESP 및 /boot 파티션을 마운트 해제합니다.umount /boot/efi /boot
  2. 해당 내용을 복제하십시오: dd if=/dev/sda1 of=/dev/sdb1dd if=/dev/sda2 of=/dev/sdb2. 이 단계에 오류가 있으면 오류를 해결할 때까지 진행하지 마세요! 한 가지 원인은 크기가 정확하지 않기 때문일 수 있습니다.
  3. /boot에 XFS를 사용하고 있으므로 지금 복제본의 UUID를 변경해야 합니다. 그렇지 않으면 마운트할 수 없습니다: xfs_admin -U generate /dev/sdb2. 새 UUID로 업데이트하는 것을 잊지 마세요 /etc/fstab(마운트에 UUID를 사용하는 경우 그래야 합니다).
  4. 새 /boot 및 ESP 파티션을 마운트 mount /dev/sdb2 /boot합니다 mount /dev/sdb1 /boot/efi.

이제 나머지 대형 파티션에서 PV를 생성하고 이를 기존 볼륨 그룹에 추가합니다.

  1. pvcreate /dev/sdb3
  2. vgextend r1 /dev/sdb3

이제 가장 긴 작업을 준비합니다. HDD 물리적 볼륨에서 데이터를 이동합니다.

  1. pvmove -vi 5 /dev/sda3

마지막으로 볼륨 그룹에서 HDD 논리 드라이브를 제거하고 LVM 레이블을 제거합니다.

  1. vgreduce r1 /dev/sda3
  2. pvremove /dev/sda3

완료되면 새 RAID에서 부팅하도록 재구성할 차례입니다. 이 새 볼륨을 기본 부팅으로 만들려면 RAID 카드를 설정해야 할 수도 있습니다. 일반적으로 EFI 부팅에는 필요하지 않지만 해를 끼치 지 않으므로 그렇게하십시오.

새 RAID에서 부팅하도록 펌웨어 부팅 항목을 설정합니다. OS 릴리스에서 제공하는 도구를 사용하거나 efibootmgr; 어쨌든 구체적인 명령은 사용 중인 배포판에 따라 다릅니다.

관련 정보