Linux擴容-新增磁盤分區掛載-fdisk
擴容后的雲硬盤,掛載給實例后,需要對擴容的部分划分分區並初始化。本節以“CentOS 7.0 64位”操作系統為例,介紹使用fdisk工具為擴容后的磁盤創建新的分區。
一 背景信息
擴容成功后,需要為擴容部分的容量創建新的分區,或者重新創建分區替換原有分區。
- 為擴容部分的容量創建新的分區
該場景下,不需要卸載原有的分區,而是在原有分區的基礎上新增分區。該操作不會中斷業務,對業務影響較小。推薦系統盤或者需要保證業務不中斷的磁盤擴容場景使用。如果當前磁盤使用的是MBR格式,則要求擴容后的磁盤容量不超過2TB,並且磁盤的分區數量還未達到上限。
- 重新創建分區替換原有分區
如果當前磁盤使用的是MBR分區,且磁盤分區數量已達到上限,無法再增加新的分區。此時需要先卸載已有分區,重新創建新的分區替換原有分區。該操作不會刪除原有分區的數據,但操作過程中需預先中斷業務,因此會對用戶正在運行的業務產生影響。
- MBR分區轉換為GPT分區
如果當前磁盤使用的是MBR分區,且擴容后磁盤容量已超過2TB,則此時需要將MBR分區轉換為GPT分區,該操作會清除磁盤上的數據,請您預先對原數據進行備份。
二 掛載操作步驟
以下步驟,舉例說明如何將磁盤擴容部分的空間划分為一個新的分區,並掛載到“/opt”下。
該磁盤采用MBR分區,磁盤容量小於2TB,且分區數量未達到上限。分區方式為MBR時,可以使用fdisk工具或parted工具划分分區,本節以fdisk工具為例。
- 執行以下命令,查看磁盤信息。
fdisk -l
回顯類似如下信息,“/dev/xvda”表示系統盤。
[root@ecs-bab9 test]# fdisk -l
Disk /dev/xvda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000cc4ad
Device Boot Start End Blocks Id System
/dev/xvda1 * 2048 2050047 1024000 83 Linux
/dev/xvda2 2050048 22530047 10240000 83 Linux
/dev/xvda3 22530048 24578047 1024000 83 Linux
/dev/xvda4 24578048 83886079 29654016 5 Extended
/dev/xvda5 24580096 26628095 1024000 82 Linux swap / Solaris
- 執行以下命令,進入fdisk模式,以“/dev/xvda”為例。
fdisk /dev/xvda
回顯類似如下信息:
[root@ecs-bab9 test]# fdisk /dev/xvda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
- 輸入“n”,按“Enter”,開始新建分區。
本例中由於系統盤原來已經有5個分區,所以系統自動添加第6分區。
回顯類似如下信息:
Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (26630144-83886079, default 26630144):
- 輸入新分區的起始磁柱編號,如設置默認值,按“Enter”。
起始磁柱編號必須大於原有分區的結束磁柱編號。
回顯類似如下信息:
First sector (26630144-83886079, default 26630144):
Using default value 26630144
Last sector, +sectors or +size{K,M,G} (26630144-83886079, default 83886079):
- 輸入新分區的截止磁柱編號,按“Enter”。
本步驟中使用默認截止磁柱編號為例。
回顯類似如下信息:
Last sector, +sectors or +size{K,M,G} (26630144-83886079, default 83886079):
Using default value 83886079
Partition 6 of type Linux and of size 27.3 GiB is set
Command (m for help):
- 輸入“p”,按“Enter”,查看新建分區。
回顯類似如下信息:
Disk /dev/xvda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000cc4ad
Device Boot Start End Blocks Id System
/dev/xvda1 * 2048 2050047 1024000 83 Linux
/dev/xvda2 2050048 22530047 10240000 83 Linux
/dev/xvda3 22530048 24578047 1024000 83 Linux
/dev/xvda4 24578048 83886079 29654016 5 Extended
/dev/xvda5 24580096 26628095 1024000 82 Linux swap / Solaris
/dev/xvda6 26630144 83886079 28627968 83 Linux
Command (m for help):
- 輸入“w”,按“Enter”。將分區結果寫入分區表中,分區創建完畢。
回顯類似如下信息:
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)
Syncing disks.
- 執行partprobe命令,將新的分區表變更同步至操作系統。
partprobe
- 執行以下命令,設置新建分區文件系統格式(df -T查看原有文件系統 )。
以“ext4” 文件格式為例:
mkfs -t ext4 /dev/xvda6
回顯類似如下信息:
[root@ecs-bab9 test]# mkfs -t ext4 /dev/xvda6
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1790544 inodes, 7156992 blocks
357849 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2155872256
219 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
格式化需要等待一段時間,請觀察系統運行狀態,若回顯中進程提示為done,則表示格式化完成。
- 執行以下命令,將新建分區掛載到需要增加空間的目錄下,以“/opt”為例。
mount /dev/xvda6 /opt
回顯類似如下信息:
[root@ecs-bab9 test]# mount /dev/xvda6 /opt
[root@ecs-bab9 test]#
說明:
新增加的分區掛載到不為空的目錄時,該目錄下原本的子目錄和文件會被隱藏,所以,新增的分區最好掛載到空目錄或者新建目錄。如確實要掛載到不為空的目錄,可將該目錄下的子目錄和文件臨時移動到其他目錄下,新分區掛載成功后,再將子目錄和文件移動回來。
- 執行以下命令,查看掛載結果。
df -TH
回顯類似如下信息:
[root@ecs-bab9 test]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda2 xfs 11G 7.4G 3.2G 71% /
devtmpfs devtmpfs 4.1G 0 4.1G 0% /dev
tmpfs tmpfs 4.1G 82k 4.1G 1% /dev/shm
tmpfs tmpfs 4.1G 9.2M 4.1G 1% /run
tmpfs tmpfs 4.1G 0 4.1G 0% /sys/fs/cgroup
/dev/xvda3 xfs 1.1G 39M 1.1G 4% /home
/dev/xvda1 xfs 1.1G 131M 915M 13% /boot
/dev/xvda6 ext4 29G 47M 28G 1% /opt
三 設置開機自動掛載磁盤
如果您需要在實例啟動時自動掛載磁盤,請在上述操作之后參考本節設置開機自動掛載磁盤。設置時不能采用在 /etc/fstab直接指定 /dev/xvdb1的方法,因為實例中設備的順序編碼在關閉或者開啟實例過程中可能發生改變。推薦使用UUID來配置自動掛載數據盤。
說明:
磁盤的UUID(Universally Unique Identifier)是Linux系統為存儲設備提供的唯一的標識字符串。
- 執行如下命令,查詢磁盤分區的UUID。
blkid 磁盤分區
以查詢磁盤分區“/dev/xvdb1”的UUID為例:
blkid /dev/xvdb1
回顯類似如下信息,表示“/dev/xvdb1”的UUID。
[root@ecs-b656 test]# blkid /dev/xvdb1
/dev/xvdb1: UUID="1851e23f-1c57-40ab-86bb-5fc5fc606ffa" TYPE="ext4"
- 執行以下命令,使用VI編輯器打開“fstab”文件。
vi /etc/fstab
- 按“i”,進入編輯模式。
- 將光標移至文件末尾,按“Enter”,添加如下內容(UUID)。
UUID=1851e23f-1c57-40ab-86bb-5fc5fc606ffa /mnt/sdc ext4 defaults 0 2
- 按“Esc”后,輸入“:wq”,按“Enter”。
保存設置並退出編輯器。