하나의 RAID-1 파티션을 축소하고 다른 파티션을 늘립니다.

하나의 RAID-1 파티션을 축소하고 다른 파티션을 늘립니다.

2TB와 3.5TB가 /dev/md2설치된 전용 서버가 있습니다 .//dev/md3/home

/dev/md2이제 500GB로 축소하고 /dev/md3약 5TB로 늘리고 싶습니다 . 어떻게 해야 하나요? /dev/md2크기를 500GB로 조정할 수 있었지만 하단 레이어를 /dev/sd[a,b]3500GB로 변경하지 않고 5TB로 늘 /dev/md3렸습니다 ./dev/sd[a,b]4

산출cat /proc/mdstat

Personalities : [raid1]
md3 : active raid1 sda4[0] sdb4[1]
      3714478663 blocks super 1.2 [2/2] [UU]
        resync=PENDING
      bitmap: 28/28 pages [112KB], 65536KB chunk

md2 : active raid1 sda3[0] sdb3[1]
      2111700992 blocks super 1.2 [2/2] [UU]
      [====>................]  resync = 22.1% (467664704/2111700992) finish=144.6min speed=189433K/sec
      bitmap: 13/16 pages [52KB], 65536KB chunk

md1 : active raid1 sda2[0] sdb2[1]
      523712 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      33521664 blocks super 1.2 [2/2] [UU]

관련 출력 fdisk -l(램디스크 항목 없음):

Disk /dev/sdb: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 26A1CC9A-D448-41DA-AB97-926922E45FAD

Device          Start         End    Sectors  Size Type
/dev/sdb1        4096    67112959   67108864   32G Linux RAID
/dev/sdb2    67112960    68161535    1048576  512M Linux RAID
/dev/sdb3    68161536  4291825663 4223664128    2T Linux RAID
/dev/sdb4  4291825664 11721045134 7429219471  3.5T Linux RAID
/dev/sdb5        2048        4095       2048    1M BIOS boot

Partition table entries are not in disk order.


Disk /dev/sda: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: CF6FA031-2CD0-4CD6-939B-E761A2871AB2

Device          Start         End    Sectors  Size Type
/dev/sda1        4096    67112959   67108864   32G Linux RAID
/dev/sda2    67112960    68161535    1048576  512M Linux RAID
/dev/sda3    68161536  4291825663 4223664128    2T Linux RAID
/dev/sda4  4291825664 11721045134 7429219471  3.5T Linux RAID
/dev/sda5        2048        4095       2048    1M BIOS boot

Partition table entries are not in disk order.


Disk /dev/md0: 32 GiB, 34326183936 bytes, 67043328 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/md1: 511.4 MiB, 536281088 bytes, 1047424 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/md2: 2 TiB, 2162381815808 bytes, 4223401984 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/md3: 3.5 TiB, 3803626151424 bytes, 7428957327 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

답변1

이미 RAID1이 있으므로 재구성 중에 디스크 장애 위험을 감수할 준비가 되어 있으면 이를 수행할 수 있습니다. 이것은 완전한 조리법이 아니므로 무엇을 하고 있는지 알아야 합니다. 그래도 데이터가 손실될 가능성이 높습니다.강하게당신을 촉구백업하기시작하기 전에. 진짜. 네, 진심이에요.

전체적인 계획은

  1. RAID 미러 제거
  2. 새로운 요구 사항을 수용하기 위해 현재 사용되지 않은 절반의 크기를 조정합니다.
  3. 새로운 크기의 파티션으로 새로운 RAID 하프 미러 생성
  4. 활성 절반의 모든 파일 시스템을 새로 크기가 조정된 절반으로 복사합니다(이 작업을 수행하기 전에 가능한 한 많은 서비스를 중지하세요).
  5. RAID의 새로운 절반으로 재부팅(까다로움)
  6. 미러의 나머지 절반을 다시 RAID에 추가
  7. 정돈하다

이제 이것을 라이브 시스템에 적용하기 전에 먼저 백업을 만드십시오.

실행되는 동안 몇 개의 일회성 루프백 디스크 이미지에 대한 프로세스를 시도해 보십시오. 이를 만드는 방법은 다음과 같습니다.

dd if=/dev/zero bs=1M count=200 > disk1.dat                          # Create a 200MB "disk"
cp -p disk1.dat disk2.dat                                            # And another

parted disk1.dat --align optimal unit MiB --script mklabel gpt       # First disk label
parted disk1.dat --align optimal unit MiB mkpart primary 1 2         # Dummy partition
parted disk1.dat --align optimal unit MiB mkpart primary 2 3
parted disk1.dat --align optimal unit MiB mkpart primary 3 150       # First useful partition
parted disk1.dat --align optimal unit MiB mkpart primary 150 100%    # Second

parted disk2.dat --align optimal unit MiB --script mklabel gpt       # Second disk
parted disk2.dat --align optimal unit MiB mkpart primary 1 2
parted disk2.dat --align optimal unit MiB mkpart primary 2 3
parted disk2.dat --align optimal unit MiB mkpart primary 3 150
parted disk2.dat --align optimal unit MiB mkpart primary 150 100%

d1=$(losetup --show --find --partscan disk1.dat); echo $d1           # Loop device
d2=$(losetup --show --find --partscan disk2.dat); echo $d2

mdadm --create /dev/md103 --metadata default --level=1 --raid-devices=2 ${d1}p3 ${d2}p3
mdadm --create /dev/md104 --metadata default --level=1 --raid-devices=2 ${d1}p4 ${d2}p4

mkfs -t ext4 -L 103 /dev/md103
mkfs -t ext4 -L 104 /dev/md104

mkdir /mnt/103 /mnt/104                                              # Mountpoints for our test filesystems
mount /dev/md103 /mnt/103
mount /dev/md104 /mnt/104

이제 일부 데이터를 복사하고 프로세스를 시도할 수 있는 /dev/md103두 개의 RAID1 파일 시스템이 있습니다. 루프백 디스크 이미지 장치의 기본 이름으로 및를 /dev/md104사용했습니다 .$d1$d2

다음은 몇 가지 세부정보입니다. 백업이 완료되었나요?

  1. RAID 미러 제거

    다음 명령을 사용하면 두 개의 RAID 파티션 중 절반이 실패하도록 설정할 수 있습니다.

    mdadm /dev/md103 --set-faulty ${d2}p3 --remove ${d2}p3    # sdb3
    mdadm --zero-superblock ${d2}p3
    
    mdadm /dev/md104 --set-faulty ${d2}p4 --remove ${d2}p4    # sdb4
    mdadm --zero-superblock ${d2}p4
    
  2. 두 번째 디스크 파티션 크기 조정

    선호하는 도구를 사용하여 두 번째 디스크의 파티션을 삭제하고 다시 생성하십시오. 예를 들어,

    parted $d2 --align optimal unit MiB rm 3
    parted $d2 --align optimal unit MiB rm 4
    

    이 시점에서 시스템을 다시 시작해야 할 수도 있습니다. (또는 요구 사항이 충족될 수도 있습니다 .) 완료되면 루프 장치를 다시 만들고 할당하는 partprobe것을 잊지 마십시오 .$d1$d2

    parted $d2 --align optimal unit MiB mkpart primary 3 50
    parted $d2 --align optimal unit MiB mkpart primary 50 100%
    
  3. 새로운 크기의 파티션으로 새로운 RAID 하프 미러 생성

    RAID 장치 및 파일 시스템을 생성합니다. 첫 번째 항목이 이미 배열의 일부인 것처럼 경고할 것이므로 걱정하지 마세요. 예전에는 그랬지만 지금은 그렇지 않습니다.

    mdadm --create /dev/md203 --metadata default --level=1 --raid-devices=2 missing ${d2}p3
    mdadm --create /dev/md204 --metadata default --level=1 --raid-devices=2 missing ${d2}p4
    
    mkfs -t ext4 -L 203 /dev/md203
    mkfs -t ext4 -L 204 /dev/md204
    
    mkdir /mnt/203 /mnt/204
    mount /dev/md203 /mnt/203
    mount /dev/md204 /mnt/204
    
  4. 활성 절반의 모든 파일 시스템을 새로 크기가 조정된 절반으로 복사

    파일 시스템이 최대한 안정적이도록 실행하기 전에 가능한 한 많은 서비스를 중지하는 것이 중요합니다.

    cp -ax /mnt/103 /mnt/203    # cp -ax / /mnt/203
    cp -ax /mnt/104 /mnt/204    # cp -ax /home /mnt/204
    
  5. 새로운 절반 RAID로 재부팅

    /etc/mdadm/mdadm.conf새 어레이로 업데이트 해야 합니다 . 이 명령을 사용하여 아직 나열되지 않은 항목을 추가하세요.

    mdadm --examine --scan
    

    또한 새 루트 파일 시스템을 찾을 수 있도록 grub시스템을 업데이트해야 합니다 . initramfs설정에 이러한 세부정보가 제공되지 않아 안내를 드릴 수 없습니다.

  6. 미러의 나머지 절반을 다시 RAID에 추가

    새 하프 미러에서 RAID가 성공적으로 실행되고 있다고 확신하는 경우 원래 하프 미러를 삭제하고 새 하프 미러에 다시 추가할 수 있습니다. 여전히 파일 시스템을 마운트하면 이러한 명령이 실패합니다. (이 단계에서는 그렇지 않아야 합니다.)

    mdadm --stop /dev/md103
    mdadm --zero-superblock ${d1}p3
    
    mdadm --stop /dev/md104
    mdadm --zero-superblock ${d1}p4
    

    이제 위 명령을 사용하여 나머지 디스크 파티션의 크기를 조정하십시오 parted.

    새로운 하프 미러 RAID1에 새로 크기가 조정된 파티션 추가

    mdadm /dev/md203 --add ${d1}p3
    mdadm /dev/md204 --add ${d1}p4
    
  7. 정돈하다

    , , 및 에서 /etc/mdadm/mdadm.conf기존 장치를 제거합니다 . 재시작.grubinitramfs/etc/fstab

관련 정보