日常工作中,常常會遇到某個分割區剩餘容量不足的問題,所以我們需要掌握如何在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中文網其他相關文章!