Linux

如何擴展位於其他分區中間的分區(或創建新分區並遷移數據)

  • February 13, 2022

所以我需要在系統上擴展一個分區(/tmp),但不知道如何進行此操作(我最初沒有設置分區)。

以下命令顯示:

fdisk -l
Disk /dev/sda: 4798.6 GB, 4798552211456 bytes, 9372172288 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt

#         Start          End    Size  Type            Name
1         2048       411647    200M  EFI System      EFI System Partition
2       411648      1435647    500M  Microsoft basic
3      1435648    395407359  187.9G  Microsoft basic
4    395407360    446607359   24.4G  Microsoft basic
5    446607360    497807359   24.4G  Microsoft basic
6    497807360    549007359   24.4G  Microsoft basic
7    549007360    569487359    9.8G  Microsoft basic
8    569487360    585871359    7.8G  Linux swap
9    585871360   6585871360    2.8T  Linux filesyste

我創建的各種分區是:

/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda4 on /var type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda9 on /home type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /tmp type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda2 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
/dev/sda5 on /var/log type xfs     (rw,relatime,attr2,inode64,noquota)
/dev/sda6 on /var/log/audit type xfs (rw,relatime,attr2,inode64,noquota)

我看到分配了以下大小:

Filesystem   Size  Used Avail Use% Mounted on
/dev/sda3    188G  123G   66G  66% /
/dev/sda4    25G  3.8G   21G  16% /var
/dev/sda9    2.8T  224G  2.4T   9% /home
/dev/sda7    9.8G   46M  9.8G   1% /tmp
/dev/sda2    497M  161M  337M  33% /boot
/dev/sda1    200M  9.8M  191M   5% /boot/efi
/dev/sda5    25G  151M   25G   1% /var/log
/dev/sda6    25G   71M   25G   1% /var/log/audit

據我所知,/dev/sda8 一定是從 XFS 到 EXT4 分區刪除和重新創建的。

我需要擴展/dev/sda7 以獲得更多空間,並且從快速統計來看,/dev/sda 大約是 5TB,而我們只為 /dev/sda1 使用了超過 3TB 的空間——> /dev/sda9。讓我相信我在 /dev/sda 上還剩下 1-2TB。我需要在不失去數據的情況下增加它,最好不要停機。

我“認為”我需要創建另一個分區 (/dev/sda10) 並為其分配所需的空間。從那裡我會執行“mkfs -t ext4 /dev/sda10”來為其分配一個文件系統。然後更新 /etc/fstab 以將 /dev/sda10 指向 /tmp(也許先掛載 /dev/sda10 並將所有 /tmp 複製過來?)。

我在正確的道路上嗎?謝謝

您的mountdf輸出確認這/tmp是一個安裝的文件系統駐留在/dev/sda7.

您的fdisk輸出顯示/dev/sda7緊隨其後的是“Linux Swap”類型/dev/sda的分區/dev/sda8。這個分區很可能被用作交換分區。(您可以使用命令進行驗證swapon。)如果您想/dev/sda7原地增長,您必須先刪除/dev/sda8

您的fdisk輸出還顯示磁碟的總大小為 9372172288 個扇區,但最後一個分區/dev/sda9在扇區 6585871360 結束。因此在最後一個分區之後有 9372172288 - 6585871360 = 2786300928 個扇區或 1.3 TB 的未分區可用空間。

這為您提供了兩種可能的途徑:

a) 將交換分區移動到未分區的空間,並將該/tmp分區擴展到以前被交換分區佔用的空間。您可以在不停機的情況下執行此操作,首先/dev/sda10從扇區 6585871360 開始創建所需大小的新交換分區,使用 啟動它swapon /dev/sda10,然後使用 停用舊的交換分區swapoff /dev/sda7。在舊的交換分區耗儘後,您可以刪除分區 8 並將分區 7 擴展到該空間。這將為您提供/tmp最多 585871360 - 549007360 = 36864000 個扇區或 17.6 GB 的分區。

b) 將/tmp分區移動到未分區的空間。這將允許您將其擴展到 1.3 TB。但是,它需要(短)停機時間,因為您需要解除安裝目前/tmp分區,這在系統執行時是不可能的。

引用自:https://serverfault.com/questions/1093536