Linux

在不失去數據的情況下重新分配分區中的空間

  • April 28, 2011
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md0               1829037   1745454         0 100% /
tmpfs                   255940         0    255940   0% /lib/init/rw
udev                     10240        44     10196   1% /dev
tmpfs                   255940         0    255940   0% /dev/shm
/dev/mapper/sys-srv  206424760  35519164 160419836  19% /srv

這是我的 df 在我的伺服器上的輸出。很明顯,我需要 md0 中的空間,我想從 /srv 中獲取它。有人可以弄清楚我的磁碟設置並建議我如何將分區上的 2gb 增加到 10 或更多嗎?

pv輸出:


 Incorrect metadata area header checksum
 Incorrect metadata area header checksum
 Incorrect metadata area header checksum
 Incorrect metadata area header checksum
 Incorrect metadata area header checksum
 Incorrect metadata area header checksum
 PV         VG   Fmt  Attr PSize   PFree  

 /dev/md0        lvm2 --   232.88G 232.88G
 /dev/md1   sys  lvm2 a-   231.02G  29.02G

vgs 輸出:


 Incorrect metadata area header checksum
 VG   #PV #LV #SN Attr   VSize   VFree 
 sys    1   2   0 wz--n- 231.02G 29.02G

lvs 輸出:


 Incorrect metadata area header checksum
 LV   VG   Attr   LSize   Origin Snap%  Move Log Copy% 
 srv  sys  -wi-ao 200.00G  

 swap sys  -wi-ao   2.00G  

fdsik -l 輸出:


Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         243     1951866   fd  Linux raid autodetect
/dev/sda2             244       30401   242244135   fd  Linux raid autodetect

Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1         243     1951866   fd  Linux raid autodetect
/dev/sdb2             244       30401   242244135   fd  Linux raid autodetect

Disk /dev/md0: 1998 MB, 1998585856 bytes
2 heads, 4 sectors/track, 487936 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md0 doesn't contain a valid partition table

Disk /dev/md1: 248.0 GB, 248057888768 bytes
2 heads, 4 sectors/track, 60561008 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/dm-0: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/dm-1: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/dm-1 doesn't contain a valid partition table

您需要添加更多細節。分區佈局(的輸出fdisk -l)和 /dev/mapperdf的輸出可能意味著您正在使用 LVM,如果是這種情況(的輸出pvs; vgs; lvs)。另外/proc/mdstatas your rood 的內容似乎是 RAIDed。

您的輸出所暗示的 RAID 和 LVM 的混合df將使重新排列空間變得更加困難,如果/並且/srv兩者都在同一個 LVM 卷組中 - 您可能會發現檢查備份、擦除機器、重新排列和恢復您的備份更快更容易備份中的數據和配置。您可以通過縮小/svr、使用釋放的空間創建新卷、移動文件並將它們安裝在正確的位置來將一些東西移出根文件系統——這將為您購買一些空間,直到您可以安排更大的更改。/home通常是一個很好的候選者,/var/log也許也是,但這取決於空間的使用位置。同樣作為一個快速的勝利,確保你已經清除了包記憶體(aptitude clean在 Debian-a-like 系統上)並從/var/log你不太可能需要。

**編輯:(**添加附加細節後)

您的設置似乎有問題,因為 md0 看起來像是作為簡單文件系統安裝的 ~2Gb 卷,但 LVM 將其列為(更大的)pv。

但是,您在其他 pv/vg 上有一大塊可用空間,因此除非您需要(例如,因為您使用基於 LVM 快照的方法以最少的停機時間進行一致的備份),否則您可以將 root 移到那裡。基本程序是:

  1. 在目前/上騰出一些空間(清理臨時文件,刪除包記憶體和/或舊日誌),這樣你就不會在空間上執行煙霧
  2. 使用 lvcreate 為新的根文件系統添加所需大小的邏輯卷
  3. 從 LiveCD 或類似的引導(救援模式/單使用者模式引導也可能工作,並且更有可能理解您的 RAID/LVM 佈局,而無需額外的詭計多端))。希望這個實例(救援啟動或 live cd)可以看到您的 RAID 和 LVM 設置,在這種情況下:
  4. 用 複製原始文件系統dd if=/dev/md0 of=/dev/mapper/sys-root,調整它的大小以填充更大的邏輯卷resize2fs /dev/mapper/sys-root(它會要求您fsck首先執行,按照它的說明執行此操作),並為複制的文件系統提供一個新的 UUIDuuidgentune2fs /dev/hdaX -U <uuid-generated-by-uuidgen>(還要注意那個 UUID,你可能需要它)
  5. 掛載新文件系統並更新/etc/fstab以引用新文件系統而不是舊文件系統
  6. 重新啟動並手動告訴 grub(我假設 grub,如果它是舊安裝,您可能仍在使用 lilo 作為引導載入程序)引導這個新文件系統而不是舊文件系統
  7. 如果這有效,您應該愉快地以 root 身份使用新文件系統,更新它的 grub 配置以包含新設置作為選項並使用新配置重新執行 grub-install
  8. 您仍然擁有舊的文件系統,並且 grub 配置為在舊+新之間提供雙重引導,以防以後發現錯誤

(在工作 ATM 休息時,所以我沒有時間研究上述所需的確切命令/程序 - 查找相關文件/論壇以獲取更多詳細資訊)

與像這樣的任何主要操作一樣:在繼續之前確保您的備份是最新的,和/或將完整的原始副本或磁碟/文件系統帶到另一個驅動器,以防出現不可逆轉的錯誤。

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