首頁  >  文章  >  運維  >  linux下分區容量不足瞭如何進行擴容

linux下分區容量不足瞭如何進行擴容

齐天大圣
齐天大圣原創
2020-11-19 14:28:593324瀏覽

日常工作中,常常會遇到某個分割區剩餘容量不足的問題,所以我們需要掌握如何在linux伺服器下擴充分割區。對於分割區擴容,這裡分為了兩個情況

  • LVM分割區的擴充功能

  • 非LVM分割區的擴容

LVM分割區的擴充功能

一般,我們都建議使用LVM,這樣方便分割區的彈性伸縮。關於LVM的介紹,物理卷、邏輯組、邏輯卷等這裡就不細說了,大家可以去看看我另外的兩篇關於LVM的文章。

場景:/www 目錄是我們的和網站相關的目錄,這個目錄所掛載的分區採用了LVM,本來這個目錄有1G空間大小,但是隨著系統的運行,剩餘空間只剩下不到100M了。現在需對該分區進行擴容。

準備工作,實作場景

# pvcreate /dev/sdb1
# vgcreate vgwww /dev/sdb1
# lvcreate -l 255 vgwww
# mkfs.ext4 /dev/vgwww/lvol0 
# mount /dev/vgwww/lvol0 /www
# dd if=/dev/zero of=/www/bigfile bs=1M count=900
# df -h
……
/dev/mapper/vgwww-lvol0  988M  903M   19M   98% /www

分區擴容

首先,我們要看vgwww還有沒有剩餘空間,如果沒有的話,則需要先在vgwww中加入pv。

# vgdisplay vgwww
 ……
  Free  PE / Size       0 / 0   <=== 没哟剩余空间了
  VG UUID               xdw96k-xZNv-tmVf-Pkcx-SX7T-C1tz-ZZq3HG

透過上面資訊可以得知,該vg沒有剩餘空間了。那就需要對此vg增加pv了。現在我們來看有沒有被使用的pv,如果沒有的話,先需要建立pv。

# pvscan
  PV /dev/sdb1   VG vgwww           lvm2 [1020.00 MiB / 0    free]
  Total: 1 [1020.00 MiB] / in use: 1 [1020.00 MiB] / in no VG: 0 [0   ]

可以看到,沒有可用的pv。那麼,先創建pv

# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.
# pvscan
  PV /dev/sdb1   VG vgwww           lvm2 [1020.00 MiB / 0    free]
  PV /dev/sdc1                      lvm2 [1023.00 MiB]
  Total: 2 [<2.00 GiB] / in use: 1 [1020.00 MiB] / in no VG: 1 [1023.00 MiB]

pv已經有了,那麼將新的pv加到vgwww邏輯卷組中。

# vgextend vgwww /dev/sdc1
  Volume group "vgwww" successfully extended
# vgdisplay vgwww
 ……
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               xdw96k-xZNv-tmVf-Pkcx-SX7T-C1tz-ZZq3HG

現在vg多出了255個PE沒有被使用。接下來,就是擴容了LV

# lvresize -l +255 /dev/vgwww/lvol0 
  Size of logical volume vgwww/lvol0 changed from 1020.00 MiB (255 extents) to 1.99 GiB (510 extents).
  Logical volume vgwww/lvol0 successfully resized.
  
# lvdisplay 
  --- Logical volume ---
  ……
  LV Size                1.99 GiB  <=== lv已经变为了1.99G了
  ……

這個時候,雖然lv大小變大了,但/dev/mapper/vgwww-lvol0檔系統並沒有變大。

# df -h
文件系统                 容量  已用  可用 已用% 挂载点
……
/dev/mapper/vgwww-lvol0  988M  903M   19M   98% /www

這個時候,我們還需要xfs_growfs (針對xfs檔案系統)或resize2fs (針對ext檔案系統)來處理下。

# 该主机使用的是ext4文件系统
# resize2fs /dev/vgwww/lvol0 
# df -h
文件系统                 容量  已用  可用 已用% 挂载点
……
/dev/mapper/vgwww-lvol0  2.0G  904M  982M   48% /www

至此,對於該檔案系統的擴容完成了。

非LVM分割區的擴充功能

最近,我就碰到了這個狀況。我有一個朋友,他​​的阿里雲伺服器根分割區快滿了,原本40G的雲端盤,後來加了20G。找到我說,我明明已經加了20G,怎麼顯示還是40G阿,讓我幫他解決下問題。

不巧的是,它根目錄沒有使用lvm,我也一時半會不知道怎麼辦。後來查詢了相關信息,找到了一個解決辦法。但是這個解決辦法是有限制的,就是對需要擴容的分割區,這個分割區必須是該磁碟的最後一個分割區。

下面首先模擬場景:/bak 目錄掛載在一個單獨的分區,該分區開始時候分了500M,現在需要對其進行擴容操作

# df -h
文件系统                 容量  已用  可用 已用% 挂载点
……
/dev/sdd1                497M   26M  472M    6% /bak

開始擴容操作

# 首先卸载挂载点

# fdisk /dev/sdd
……
命令(输入 m 获取帮助):p
……
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048     1026047      512000   83  Linux

#记住开始点,即2048。然后删除该分区,重新建立分区
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-2097151,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):
将使用默认值 2097151
分区 1 已设置为 Linux 类型,大小设为 1023 MiB

命令(输入 m 获取帮助):w


# partprobe

這個時候,透過lsblk指令查看該分割區大小已經變大了,但是df -h的結果還是沒變,需要使用xfs_growfs 指令處理下。

 # xfs_growfs /dev/sdd1
 
 # df -h
文件系统                 容量  已用  可用 已用% 挂载点
……
/dev/sdd1               1020M   26M  995M    3% /bak

另外有一點要特別注意:絕對不能對該分割區寫入檔案系統,這樣之前的資料就都沒了

更多相關技術文章,請造訪linux系統教學欄位!

以上是linux下分區容量不足瞭如何進行擴容的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn