You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux RAID 1服务器缩减磁盘容量并将1TB HDD克隆至480GB SSD的技术方案咨询

Linux RAID 1服务器缩减磁盘容量并将1TB HDD克隆至480GB SSD的技术方案咨询

你现在的需求是把服务器上的1TB HDD(当前为RAID 1配置)克隆到480GB SSD上,同时保留所有数据和Linux系统。因为目标SSD容量更小,直接克隆不可行,但从你提供的磁盘使用数据来看,实际已用空间远小于480GB,所以可以先通过命令行缩减现有卷的容量,再完成RAID迁移。接下来我会结合你的服务器配置,给出具体的操作步骤。

你的服务器磁盘配置信息

1. 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

2. 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

3. 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

4. RAID与硬件信息

lspci | grep RAID 输出:

02:00.0 RAID bus controller: Broadcom / LSI MegaRAID SAS-3 3008 [Fury] (rev 02)

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

具体操作步骤

前置准备

  1. 全量备份数据:操作前务必备份所有重要数据,比如用tar打包关键目录,或者用服务器自带的备份工具,避免操作失误导致数据丢失。
  2. 安装必要工具:确保服务器已安装lvm2partedstorcli(或MegaCLI,用于管理LSI RAID控制器),如果缺失可以用yum install安装。
  3. 物理/远程管理权限:因为要替换硬盘,你需要物理接触服务器,或者通过IPMI等远程管理卡操作。

步骤1:缩减LVM逻辑卷与卷组

从磁盘使用情况看,大部分LVM卷的已用空间远小于分配容量,先把这些卷的容量缩减到实际需要的大小,为后续迁移腾出空间。

1.1 缩减Swap卷

Swap卷是最容易处理的:

  • 关闭Swap:swapoff /dev/mapper/rl-swap
  • 缩减Swap LV:lvreduce -L 16G /dev/mapper/rl-swap(把29.8G缩减到16G,完全足够日常使用,省出13.8G空间)
  • 重新格式化Swap:mkswap /dev/mapper/rl-swap
  • 开启Swap:swapon /dev/mapper/rl-swap
  • 检查/etc/fstab,如果Swap的UUID发生变化,用blkid查看新UUID并替换文件中对应的条目。

1.2 缩减其他逻辑卷

注意:XFS文件系统不支持在线缩减,所以对于/usr/var这类XFS格式的卷,需要用备份-删除-重建-恢复的方式处理,以rl-opt为例:

  1. 备份数据:tar -czf /tmp/opt_backup.tar.gz /opt
  2. 卸载卷:umount /opt(如果有进程占用,先停止相关进程,或者进入单用户模式操作更安全)
  3. 删除原LV:lvremove /dev/mapper/rl-opt
  4. 创建更小的LV:lvcreate -L 20G -n rl-opt rl(根据已用7.6G,分配20G完全足够)
  5. 格式化LV:mkfs.xfs /dev/mapper/rl-opt
  6. 挂载LV:mount /dev/mapper/rl-opt /opt
  7. 恢复数据:tar -xzf /tmp/opt_backup.tar.gz -C /opt

对于支持缩减的ext系列文件系统,可以直接执行:

  • 卸载卷→检查文件系统:e2fsck -f /dev/mapper/xxx→缩减文件系统:resize2fs /dev/mapper/xxx 目标大小→缩减LV:lvreduce -L 目标大小 /dev/mapper/xxx→重新挂载。

1.3 缩减卷组与物理卷

当所有LV都调整完成后,把多余空间从物理卷(PV)中释放:

  • 查看卷组剩余空间:vgs
  • 缩减PV容量:pvresize --setphysicalvolumesize 350G /dev/sda3(估算总LV容量约188G,350G远小于480G,完全满足需求)
  • 确认PV新容量:pvs

步骤2:替换RAID 1中的HDD为SSD

因为当前是RAID 1配置,可以逐块替换硬盘,避免系统停机:

2.1 查看RAID状态

storcli查看RAID组信息:storcli /c0 show all,找到当前的RAID 1卷组(通常是VD 0)和对应的磁盘编号。

2.2 替换第一块HDD

  • 标记磁盘为离线:storcli /c0/e0/s0 set offlines0是要移除的HDD编号,根据实际情况调整)
  • 标记为缺失:storcli /c0/e0/s0 set missing
  • 物理拔出该HDD,插入480GB SSD
  • 初始化SSD:storcli /c0/e0/s0 set good
  • 将SSD加入RAID组并重建:storcli /c0/v0 add drives=e0:s0
  • 等待RAID重建完成:storcli /c0 show rebuild查看进度,直到显示完成。

2.3 替换第二块HDD

第一块SSD同步完成后,重复步骤2.2,移除剩下的1TB HDD,插入第二块480GB SSD,等待RAID重建完成。

步骤3:调整分区与LVM适配SSD容量

现在RAID组总容量为480GB,需要调整分区表和LVM到新容量:

  • 备份当前分区表:sfdisk -d /dev/sda > /tmp/partition_backup.sfd
  • parted调整/dev/sda3的大小,使其不超过480G - 953M*2 ≈ 478G
  • 同步PV到新分区大小:pvresize /dev/sda3
  • 可根据需要再次调整LV的容量(比如把省出的空间分配给需要的卷)

步骤4:验证系统可用性

  • 重启服务器,检查所有挂载点:df -h
  • 检查RAID状态:storcli /c0 show all
  • 测试所有服务是否正常运行,确认数据无丢失。

备选方案:用Clonezilla简化操作

如果觉得命令行操作太复杂,可以用Clonezilla启动盘:

  1. 制作Clonezilla启动U盘,用U盘启动服务器
  2. 对现有HDD系统制作仅包含已用空间的磁盘镜像
  3. 替换HDD为SSD,用Clonezilla恢复镜像到SSD,工具会自动调整分区适配SSD容量
  4. 恢复完成后,通过RAID管理工具加入第二块SSD,重建RAID 1

备注:内容来源于stack exchange,提问作者Metre

火山引擎 最新活动