一、概述
在linux系統中,目錄的大小是動態的,隨著其中的文件和子目錄的添加、刪除和修改而變化。當目錄中的文件和子目錄越來越多時,可能需要對該目錄進行動態擴容,以便為其提供足夠的空間。
以下是Linux目錄動態擴容的概述:
- 確定當前目錄的大小:使用命令du可以獲取目錄的大小信息。例如,運行命令du -sh /path/to/directory可以顯示指定目錄的大小。
- 確定當前目錄的文件系統類型:使用命令df -T /path/to/directory可以獲取指定目錄所在的文件系統類型。通常,Linux系統使用ext2、ext3、ext4等文件系統類型。
- 檢查當前目錄所在的文件系統是否支持動態擴容:不是所有文件系統都支持動態擴容,因此需要檢查當前目錄所在的文件系統是否支持。通常情況下,ext2、ext3、ext4等常用的Linux文件系統都支持動態擴容。
- 對文件系統進行擴容:如果文件系統支持動態擴容,可以使用工具對其進行擴容。對于ext2、ext3、ext4等文件系統,可以使用resize2fs命令來擴展文件系統。例如,如果要將/dev/sda1文件系統擴展到10GB,可以使用命令resize2fs /dev/sda1 10G。
- 擴容目錄所在的分區:在對文件系統進行擴容后,需要將目錄所在的分區進行擴容??梢允褂胒disk命令或其他分區管理工具對分區進行擴容。注意,在擴容分區之前,必須先對文件系統進行擴容,否則擴容分區可能會導致數據丟失。
- 檢查目錄是否已經擴容成功:使用du命令再次檢查目錄的大小,以確保已經成功擴容。
需要注意的是,在擴容文件系統和分區時,必須備份所有重要數據,以免發生數據丟失。
二、開始實戰操作演示
第一步:添加一塊10G的硬盤
第二步:查看添加的硬盤
fdisk -l
如果看不到新添加的磁盤塊,則如下解決
# 重新掃描SCSI總線添加設備
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
注意,如果掃描這三個文件不成,就全部掃描一遍
cat /usr/local/src/test.sh
#!/usr/bin/bash
scsisum=`ll /sys/class/scsi_host/host*|wc -l`
for ((i=0;i<${scsisum};i++))
do
echo "- - -" > /sys/class/scsi_host/host${i}/scan
done
#echo "- - -" > /sys/class/scsi_host/host0/scan 這三個值代表通道,SCSI目標ID和LUN。破折號充當通配符,意思是“重新掃描一切”
第三步:對磁盤進行分區
注意:不同操作系統的磁盤命名方式不同,有些是/dev/vdc。具體使用方式參考第三步中fdisk -l首行顯示Disk。
按照下面Linux操作進行分區。
$ fdisk /dev/sdc
# fdisk的交互模式,依次輸入
n --創建新分區
p --創建主分區
<回車> --默認分區編號
<回車> --默認起始扇區位置。
<回車> --默認結束扇區位置。
t --設置分區類型
8e 類型為LVM
w --寫入分區表
# 查看分區情況
fdisk -l /dev/sdc
第四步:擴充根分區:將新分區擴展根:/
1、查看卷分組
[root@compute2 ~]# vgdisplay -v
--- Volume group ---
VG Name centos # 卷分組名,后面會用到這個名字
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 12.00 GiB
PE Size 4.00 MiB
Total PE 3073
Alloc PE / Size 3072 / 12.00 GiB
Free PE / Size 1 / 4.00 MiB # 這一項表示目前該系統上還存在4.00G的空閑空間,可以增加到其它分區上使用
VG UUID gjNdOE-1caE-oOKW-CzOU-3JTz-NUFY-f5R5my
2、為新增的分區創建物理卷
# 注意3表示上面設置分區編號
pvcreate /dev/sdc3
3、查看新建的物理卷和大小,使用pvdisplay命令。
[root@compute2 ~]# pvdisplay /dev/sdc3
"/dev/sdc3" is a new physical volume of "<10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc3
VG Name
PV Size <10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID w7wpuN-2kvs-v8Zp-3y6V-ptpC-QvFq-BAWQ9O
4、擴展卷分組,"centos"是vgdisplay命令查到的卷分組名:這里的卷分組名跟上面呼應
[root@compute2 ~]# vgextend centos /dev/sdc3
Volume group "centos" successfully extended
5、查看文件根系統名稱
[root@compute2 ~]# df -h|grep '/$'
/dev/mApper/centos-root 10G 6.7G 3.4G 67% /
6、擴展邏輯卷空間5G
[root@compute2 ~]# **lvextend -L +5G /dev/mapper/centos-root**
Size of logical volume centos/root changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
Logical volume centos/root successfully resized.
7、最后擴容文件系統
# 使用 resize2fs或xfs_growfs 對掛載目錄在線擴容
# resize2fs 針對文件系統ext2 ext3 ext4
# xfs_growfs 針對文件系統xfs
[root@compute2 ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2621440 to 3932160
8、最后查看文件系統
df -h
在線擴容到此為止了,有任何疑問歡迎給我留言或關注我公眾號【大數據與云原生技術分享】加群交流或私信溝通,后續會持續更新技術文章,請小伙伴耐心等待~