縮小 Linux RAID 1 伺服器上的磁碟大小

縮小 Linux RAID 1 伺服器上的磁碟大小

我正在尋找一種將我的 HDD 克隆到 SSD 而不丟失資料或 Linux 系統本身的方法。問題是目前 HDD 的大小是 1TB,而我們得到的 SSD 有 480GB,所以我無法直接克隆,因為磁碟大小不同,但我知道磁碟沒有完全使用,所以我猜這可以透過外部縮小工具或透過伺服器上的命令行。現在我有 2 個 HDD,每個 1 TB 連接到伺服器,不知道如何替換這些更小、更快的 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 上通常可用的空間,這表示您不需要調整任何檔案系統大小。我認為即使不停止服務,一切皆有可能。

另外,雖然與這種特殊情況無關,但請記住,它並不總是歸結為縮小檔案系統然後進行克隆。在許多情況下,您可能只是建立新的檔案系統並複製檔案。


您有一個 Broadcom HW RAID,通常稱為“LSI MegaRAID SAS”,是一種現代的 RAID,透過以下方式進行管理:storcli程式。要從 Broadcom 網站獲取它,您需要知道它的卡片型號;目前,我們知道它使用的是 3008 控制器晶片,不幸的是,這還不足以引導您進入正版下載頁面。

該實用程式將允許您在作業系統內操作和監控您的 RAID;這個能力是必須的!然而,我沒有足夠的使用它的經驗;我曾經有過megacli,但現在已經過時了,將它與新卡一起使用可能不是一個好主意。或者,您可以使用某些按鍵重新啟動並呼叫啟動時實用程序,然後從那裡建立新的邏輯磁碟。

從一組新媒體建立新的 RAID 陣列和新邏輯磁碟後,您需要像這樣進行分割並建立類似的佈局,只是最後一個分割區較小。

screen如果您使用遠端連接來執行遷移,我建議在或中執行所有操作tmux,這樣即使您因網路問題而失去連接,shell 會話也將保留,您將能夠連接到它。如果您坐在終端前或使用 KVM 之王(iLO、iDRAC、xClarity 等),這並不重要。

假設/dev/sdb作業系統中恰好呼叫了新的 RAID 虛擬磁碟。確保您使用正確的設備,否則將很難恢復您的資料。:

  1. 跑步fdisk /dev/sdb
  2. 按下g建立 GPT 分割區表(並同意擦除)。
  3. 透過建立相同大小的新分割區來建立 EFI 系統分割區 (ESP):n,選擇類型 1“ESP”並使用大小953M(M 表示 MiB,即現有 ESP 的確切大小)
  4. 建立啟動分區:n,選擇“Linux filesystem”(我不記得它對應的是哪個數字)並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. 由於您使用 XFS 進行 /boot,因此您現在必須更改克隆的 UUID,否則您將無法 mount: xfs_admin -U generate /dev/sdb2。不要忘記/etc/fstab使用新的 UUID 進行更新(如果它使用 UUID 進行掛載,則應該如此)。
  4. 掛載新的 /boot 和 ESP 分割區:mount /dev/sdb2 /bootmount /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 啟動。使用作業系統版本提供的工具,或使用efibootmgr;手動執行此操作無論如何,具體命令取決於您使用的發行版。

相關內容