對大多數系統管理員來說擴充 Linux 服務器的磁盤空間是日常的工作之一。因此這篇文章會通過使用 Linux 命令,在 CentOS 7 系統上演示一些簡單的操作步驟來擴充您的磁盤空間而不需要重啟您的生產服務器。關於擴充和增加新的磁盤到 Linux 系統,我們會提及多種方法和多種可行性,可按您所需選擇最適用的一種。
1. 在虛擬機客戶端擴充磁盤空間:
在為 Linux 系統增加磁盤卷之前,您首先需要添加一塊新的物理磁盤,或在 VMware vShere、VMware 工作站以及你使用的其它虛擬環境軟件中進行設置來增加一塊虛擬磁盤的容量。
Increase disk
2. 檢查磁盤空間:
運行如下命令來檢查當前磁盤空間大小。
Fdisk check
可以看到,雖然我們已經在后端給其增加到 50 GB 的空間,但此時的總磁盤大小仍然為 10 GB。
3. 擴展空間而無需重啟虛擬機
現在運行如下命令,通過重新掃描 SCSI (注:Small Computer System Interface 小型計算機系統接口)總線並添加 SCSI 設備,系統就可以擴展操作系統的物理卷磁盤空間,而且不需要重啟虛擬機。
# ls /sys/class/scsi_host/ # echo "- - -" > /sys/class/scsi_host/host0/scan # echo "- - -" > /sys/class/scsi_host/host1/scan # echo "- - -" > /sys/class/scsi_host/host2/scan
使用下面的命令來檢查 SCSI 設備的名稱,然后重新掃描 SCSI 總線。
# ls /sys/class/scsi_device/ # echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan # echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/rescan
如下圖所示,會重新掃描 SCSI 總線,隨后我們在虛擬機客戶端設置的磁盤大小會正常顯示。
Rescan disk device
4. 創建新磁盤分區:
一旦在系統中可以看到擴展的磁盤空間,就可以運行如下命令來格式化您的磁盤以創建一個新的分區。請按如下操作步驟來擴充您的物理磁盤卷。
1. # fdisk /dev/sda 2. Welcome to fdisk (util-linux 2.23.2) press the 'm' key for help 3. Command (m for help): m 4. Command action 5. a toggle a bootable flag 6. b edit bsd disklabel 7. c toggle the dos compatibility flag 8. d delete a partition 9. g create a new empty GPT partition table 10. G create an IRIX (SGI) partition table 11. l list known partition types 12. m print this menu 13. n add a new partition 14. o create a new empty DOS partition table 15. p print the partition table 16. q quit without saving changes 17. s create a new empty Sun disklabel 18. t change a partition's system id 19. u change display/entry units 20. v verify the partition table 21. w write table to disk and exit 22. x extra functionality (experts only) 23. Command (m for help):
鍵入 ‘p’ 來查看當前的分區表信息,然后鍵入 ‘n’ 鍵來創建一個新的主分區,選擇所有可用的扇區。使用 ‘t’ 命令改變磁盤類型為 ‘Linux LVM’,然后選擇編碼 ‘8e’ 或者默認不選,它默認的類型編碼為 ’83’。
現在輸入 ‘w’ 來保存分區表信息並且退出命令環境,如下示:
Command (m for help): w The partition table has been altered! Calling ioctl to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)
New disk Volume
5. 創建物理卷:
根據上述提示,運行 ‘partprob’ 或 ‘kpartx’ 命令以使分區表生效,然后使用如下的命令來創建新的物理卷。
# partprobe
# pvresize /dev/sda3
要檢查新創建的卷,運行如下的命令可以看出新的物理卷是否已經被創建,是否可用。接下來,我們就可以使用這個新的物理卷來擴展 ‘centos’ 卷組了,如下示:
# pvdisplay
# vgextend centos /dev/sda3
Extend volume Group
6. 擴展邏輯卷:
現在我們使用如下的命令擴展邏輯卷,以增加我們系統正使用的磁盤空間。
# lvextend -L +40G /dev/mapper/centos-root
一旦返回增加成功的消息,就可以運行如下命令來擴展您的邏輯卷大小。
# xfs_growfs /dev/mapper/centos-root
‘/’ 分區的大小已經成功的增加了,可以使用 ‘df’ 命令來檢查您磁盤驅動器的大小。如圖示。
Increase disk space
7. 通過增加新的磁盤來擴充根分區而不用重啟系統:
這是第二種方法,它使用的命令非常簡單,用來增加 CentOS 7 系統上邏輯卷空間大小。
所以第一步是打開您的虛擬機客戶端的設置頁面,點擊 ‘增加’ 按紐,然后繼續下一步操作。
Add new disk
選擇新磁盤所需要的配置信息,如下圖所示的,選擇新磁盤的大小和它的類型。
New disk setup
然后進入服務端重復如下的命令來掃描您的磁盤設備,以使新磁盤在系統中可見。
# echo "- - -" > /sys/class/scsi_host/host0/scan # echo "- - -" > /sys/class/scsi_host/host1/scan # echo "- - -" > /sys/class/scsi_host/host2/scan
列出您的 SCSI 設備的名稱:
# ls /sys/class/scsi_device/ # echo 1 > /sys/class/scsi_device/1\:0\:0\:0/device/rescan # echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/rescan # echo 1 > /sys/class/scsi_device/3\:0\:0\:0/device/rescan # fdisk –l
Scanning new disk
一旦新增的磁盤可見,就可以運行下面的命令來創建新的物理卷,然后增加到卷組,如下示。
# pvcreate /dev/sdb # vgextend centos /dev/sdb # vgdisplay
Extending Volume Group
現在根據此磁盤的空間大小來擴展邏輯卷,然后添加到根分區。
# lvextend -L +20G /dev/mapper/centos-root # xfs_growfs /dev/mapper/centos-root # df –h
Increase / Partition
參考
[1]: http://linoxide.com/author/kashifs/