最近經常有粉絲咨詢,電腦用久了之后,C盤空間總是不夠用,有些人想升級Win10都不行,而D盤可用空間多;或者一開始分區的時候就不太合理,有的分區空間很大,而有的分區卻很小,這時就想重新分配一下分區空間。針對該問題,我們把方法整理出來,分享給大家。
注意:在進行合并分區操作之前,為了以防萬一,建議將該分區里的數據備份到移動硬盤或其他分區,以免操作失敗而造成數據丟失。硬盤有價,數據無價,切記切記!
首先需要下載安裝一款叫做《分區助手專業版》軟件,啟動該軟件,在硬盤分區中找到想要被合并的分區,然后在頁面左側的分區操作欄目下,找到合并分區選項,選中并且打開。
進入合并分區設置頁面,在頁面下方可以看到此時默認的是合并上面選擇的分區到J,也就是說兩個分區的數據合并之后都轉移到J分區,這個時候就要明確到底要合并到哪個區域。
這里,我是把J分區合并到F分區(D盤合并到C盤操作也一樣),所以在右側選擇的F分區,然后再點擊下方的確定按鈕。
這時,系統將自動返回到主頁面,在分區中可以看到此時F分區的容量已經把J分區加到一起了。
但是,這里還沒有完成,這只是一個預覽效果,我們還需要選中該合并的分區(F),點擊頁面左上角的提交按鈕,進行鎖定分區
這時,系統將彈出一個等待執行的操作頁面,直接點擊下方的執行按鈕即可
有時,我們會出現如下方所示的提示窗口,說明在合并之前某個分區剛使用過數據,或者進行了一些數據的操作,這里只要點擊重試按鈕即可
系統將自動進入到合并分區的操作當中,靜靜等待即可,無需做任何鼠標的操作,合并分區的大小不同,所花費的時間也不同
直到進度條顯示100%的時候,將會彈出所有操作已經完成的窗口,直接點擊確定按鈕即可。
這時,可以看到J分區已經成功合并到F分區里面,容量空間變大了,大功告成!
主旨
在日常運維過程中,經常會出現磁盤爆滿,不足以維持未來業務量,或者磁盤太大,造成資源浪費的情況,這種情況下最好的方式就是采用磁盤的動態擴容和縮減。
LVM是什么
在這里我們推薦使用LVM邏輯卷的方式,為什么使用這個方式呢,這個方式有什么值得推崇的呢,我們在這里不進行一堆原理上的介紹,只需要知道如果我們使用了lvm,就可以動態的控制某個磁盤的大小,而不至于每次都要刪除重建磁盤即可。話不多說,下面我們直接進入正文。
名詞解釋
PS:包括但不限于以下三個(因為越多越亂)
PV:物理卷。可以是單獨磁盤,也可以是磁盤分區;
VG:卷組。是PV的組合,可以看成單獨的邏輯磁盤;
LV:邏輯分區。相當于物理分區的 /dev/sd*
他們的關系如下圖:
環境
一臺linux服務器
一個新磁盤
檢查
輸入 fdisk -l 命令,檢查下是否有一塊磁盤未使用,如下,“/dev/sdb”就是未被使用的磁盤。
[root@localhost ~]# fdisk -l
磁盤 /dev/sda:21.5 GB, 21474836480 字節,41943040 個扇區
Units=扇區 of 1 * 512=512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x000aa7ff
設備 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units=扇區 of 1 * 512=512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤 /dev/mapper/centos-root:18.2 GB, 18249416704 字節,35643392 個扇區
Units=扇區 of 1 * 512=512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤 /dev/mapper/centos-swap:2147 MB, 2147483648 字節,4194304 個扇區
Units=扇區 of 1 * 512=512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
[root@localhost ~]#
劃分磁盤分區
PS:是否進行此步驟,根據實際情況進行操作,這里是做實驗。
將 /dev/sdb 磁盤劃分成sdb1、sdb2、sdb3,每個磁盤3g的空間
PS:如果要做 lvm,不需要額外使用mkfs命令進行格式化
[root@localhost ~]# fdisk /dev/sdb # 開始劃分磁盤 /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x6fc1e4e0 創建新的 DOS 磁盤標簽。
命令(輸入 m 獲取幫助):n # 輸入 n 新建磁盤
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): # 直接回車
Using default response p
分區號 (1-4,默認 1):# 直接回車
起始 扇區 (2048-20971519,默認為 2048):# 直接回車
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認為 20971519):+3G # 分給 3g 的空間
分區 1 已設置為 Linux 類型,大小設為 3 GiB
命令(輸入 m 獲取幫助):n # 輸入 n 新建磁盤
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): # 直接回車
Using default response p
分區號 (2-4,默認 2):# 直接回車
起始 扇區 (6293504-20971519,默認為 6293504):# 直接回車
將使用默認值 6293504
Last 扇區, +扇區 or +size{K,M,G} (6293504-20971519,默認為 20971519):+3G # 分給 3g 的空間
分區 2 已設置為 Linux 類型,大小設為 3 GiB
命令(輸入 m 獲取幫助):n # 輸入 n 新建磁盤
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): # 直接回車
Using default response p
分區號 (3,4,默認 3): # 直接回車
起始 扇區 (12584960-20971519,默認為 12584960):# 直接回車
將使用默認值 12584960
Last 扇區, +扇區 or +size{K,M,G} (12584960-20971519,默認為 20971519):+3G # 分給 3g 的空間
分區 3 已設置為 Linux 類型,大小設為 3 GiB
命令(輸入 m 獲取幫助):p # 查看分區情況,是否和規劃的一樣
磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units=扇區 of 1 * 512=512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x6fc1e4e0
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 83 Linux
/dev/sdb2 6293504 12584959 3145728 83 Linux
/dev/sdb3 12584960 18876415 3145728 83 Linux
命令(輸入 m 獲取幫助):w # 報錯退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@localhost ~]#
創建pv
命令集合:
pvcreate 將物理分區新建為PV
pvs/pvscan 查看系統里有pv的磁盤
pvdisplay 顯示系統上面的pv狀態
pvremove 刪除pv
實操:
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 # 將 sdb2 和 sdb3 變成pv
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# pvs # 查看系統中pv
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 lvm2 --- 3.00g 3.00g
/dev/sdb2 lvm2 --- 3.00g 3.00g
[root@localhost ~]#
創建vg
命令集合:
vgcreate 新建vg, -s 后面接 pe 的大小
vgextend 擴展vg,就是增加vp
vgs/vgscan 查看系統里有 vg 的磁盤
vgdisplay 顯示系統上面的 vg 狀態
vgremove 刪除vg
vgreduce 在vg里面刪除pv
實操:
[root@localhost ~]# vgcreate jier /dev/sdb1 /dev/sdb2 # 創建一個名為 jier 的vg
Volume group "jier" successfully created
[root@localhost ~]# vgs # 查看是否成功,兩個 3g 的,就是6g
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
jier 2 0 0 wz--n- 5.99g 5.99g
[root@localhost ~]#
創建lv
命令集合:
lvcreate 新建lv,-L指定容量,M,G
lvextent 增加容量
lvs/lvscan 查看系統里有lv的磁盤
lsdisplay 顯示系統上面的lv的狀態
lsremove 刪除lv
lvreduce 在lv里減少容量
實操:
[root@localhost ~]# lvcreate -L 500M -n jier01 jier # 在 jier 卷組上,新建一個名為 jier01 的lv,且容量為 500M
Logical volume "jier01" created.
[root@localhost ~]# lvs # 查看是否創建成功
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
jier01 jier -wi-a----- 500.00m
[root@localhost ~]# mkfs.ext4 /dev/jier/jier01 # 格式化 jier01 ,推薦使用ext4的格式
mke2fs 1.42.9 (28-Dec-2013)
文件系統標簽=OS type: Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一個數據塊=1
Maximum filesystem blocks=34078720
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Allocating group tables: 完成
正在寫入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]# mkdir /jier01 # 新建目錄,此目錄為掛載點,名字隨意
[root@localhost ~]# mount /dev/jier/jier01 /jier01/ # 將jier01掛載到/jier01目錄下
[root@localhost ~]# df -h # 查看容量
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 17G 1.8G 16G 11% /
devtmpfs 808M 0 808M 0% /dev
tmpfs 820M 0 820M 0% /dev/shm
tmpfs 820M 9.6M 810M 2% /run
tmpfs 820M 0 820M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 164M 0 164M 0% /run/user/0
/dev/mapper/jier-jier01 477M 2.3M 445M 1% /jier01
[root@localhost ~]#
擴容lv/目錄
命令集合:
resize2fs 文件系統擴容
實操:
[root@localhost ~]# lvextend -L +200M /dev/jier/jier01 # 磁盤添加200M的空間
Size of logical volume jier/jier01 changed from 500.00 MiB (125 extents) to 700.00 MiB (175 extents).
Logical volume jier/jier01 successfully resized.
[root@localhost ~]# resize2fs /dev/jier/jier01 # 文件系統重新加載,此部署必須,如果發現報錯了,可以使用xfs_growfs試一下,有可能是你格式化的時候,格式化成為額xfs格式
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/jier/jier01 is mounted on /jier01; on-line resizing required
old_desc_blocks=4, new_desc_blocks=6
The filesystem on /dev/jier/jier01 is now 716800 blocks long.
[root@localhost ~]# df -h # 查看容量,已經新增了200M的內容
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 17G 1.8G 16G 11% /
devtmpfs 808M 0 808M 0% /dev
tmpfs 820M 0 820M 0% /dev/shm
tmpfs 820M 9.6M 810M 2% /run
tmpfs 820M 0 820M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 164M 0 164M 0% /run/user/0
/dev/mapper/jier-jier01 670M 2.5M 631M 1% /jier01
[root@localhost ~]#
擴容vg/卷組
[root@localhost ~]# pvcreate /dev/sdb3 # 將 sdb3 變成pv
Physical volume "/dev/sdb3" successfully created.
[root@localhost ~]# vgextend jier /dev/sdb3 # 給 jier 這個卷組,新增一個pv
Volume group "jier" successfully extended
[root@localhost ~]# vgs # 查看容量,由6g變成了9g
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
jier 3 1 0 wz--n- <8.99g 8.30g
[root@localhost ~]#
縮減lv/目錄
PS:縮減必須卸載磁盤掛載,方可進行操作
命令:umount
[root@localhost ~]# umount /jier01/ # 卸載
[root@localhost ~]# e2fsck -f /dev/jier/jier01 # 檢查
e2fsck 1.42.9 (28-Dec-2013)
第一步: 檢查inode,塊,和大小
第二步: 檢查目錄結構
第3步: 檢查目錄連接性
Pass 4: Checking reference counts
第5步: 檢查簇概要信息
/dev/jier/jier01: 11/178816 files (0.0% non-contiguous), 33345/716800 blocks
[root@localhost ~]# resize2fs /dev/jier/jier01 400M # 文件系統縮減
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/jier/jier01 to 409600 (1k) blocks.
The filesystem on /dev/jier/jier01 is now 409600 blocks long.
[root@localhost ~]# lvreduce -L 400M /dev/jier/jier01 # 磁盤縮減
WARNING: Reducing active logical volume to 400.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce jier/jier01? [y/n]: y # 輸入 y 回車
Size of logical volume jier/jier01 changed from 700.00 MiB (175 extents) to 400.00 MiB (100 extents).
Logical volume jier/jier01 successfully resized.
[root@localhost ~]# mount /dev/jier/jier01 /jier01/ # 重新進行掛載
[root@localhost ~]# df -h # 查看容量
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 17G 1.8G 16G 11% /
devtmpfs 808M 0 808M 0% /dev
tmpfs 820M 0 820M 0% /dev/shm
tmpfs 820M 9.6M 810M 2% /run
tmpfs 820M 0 820M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 164M 0 164M 0% /run/user/0
/dev/mapper/jier-jier01 380M 2.3M 355M 1% /jier01
[root@localhost ~]#
至此,磁盤的動態增大和縮減已經全部實現完畢。