全部產品
Search
文件中心

Alibaba Cloud Linux:磁碟分割操作說明

更新時間:Sep 06, 2024

磁碟分割是指使用磁碟分割工具將磁碟劃分為一個或多個獨立的地區進行管理。磁碟在分區表中儲存了每個分區的位置和大小資訊,作業系統根據這些資訊將分區視作一個邏輯磁碟。從而防止資料丟失以及增加磁碟空間的利用率。本文將介紹如何管理磁碟分割,包括磁碟分割的建立、改變磁碟分割大小、修改磁碟分割類型和刪除分區。

磁碟分割

  • 分區表的類型決定了單個分區的最大數量和大小。

  • 磁碟分割表的類型有兩種:主引導記錄(MBR)和GUID分區表(GPT)。

最大分區數量

  • 在MBR中,最大分區數為:“4個主要磁碟分割”或“3個主要磁碟分割和1個擴充分區”。其中,擴充分區又可以劃分為多個邏輯分區。

  • 在GPT分區表中,最大分區數量為任意多分區,但某些分區工具(例如parted)會限制分區數目。

支援最大的磁碟大小

MBR支援的最大磁碟大小為:

  • 如果扇區大小為512位元組,磁碟最大為2 TB。

  • 如果扇區大小為4096位元組,磁碟最大為16 TB。

GPT支援的最大磁碟大小為:

  • 如果扇區大小為512位元組,磁碟最大為8 ZB。

  • 如果扇區大小為4096位元組,磁碟最大為64 ZB。

本文以MBR分區類型基於fdisk工具為例進行示範。

  1. 查看系統資訊。

    sudo cat /etc/os-release

    返回系統資訊如下所示。

    NAME="Alibaba Cloud Linux"
    VERSION="3 (Soaring Falcon)"
    ID="alinux"
    ID_LIKE="rhel fedora centos anolis"
    VERSION_ID="3"
    UPDATE_ID="9"
    PLATFORM_ID="platform:al8"
    PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)"
    ANSI_COLOR="0;31"
    HOME_URL="https://www.aliyun.com/"
  2. 查看是否安裝了fdisk。

    fdisk --help
  3. 若提示無法找到該指令,則執行以下命令安裝。

    sudo yum install -y util-linux
  4. 查看fdisk是否安裝成功。

    fdisk --help

    列印以下資訊,表明fdisk工具安裝成功。

    Usage:
     fdisk [options] <disk>      change partition table
     fdisk [options] -l [<disk>] list partition table(s)
    
    ...
    
    For more details see fdisk(8).

建立分區表

本文以在磁碟/dev/vdb下建立分區表為例進行說明。

  1. 查看系統磁碟資訊。

    lsblk

    返回磁碟資訊如下所示。

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    vda    253:0    0   40G  0 disk 
    ├─vda1 253:1    0    2M  0 part 
    ├─vda2 253:2    0  200M  0 part /boot/efi
    └─vda3 253:3    0 39.8G  0 part /
    vdb    253:16   0   20G  0 disk 
  2. 進入fdisk的操作介面。

    sudo fdisk /dev/vdb
  3. 輸入m查看所有支援的命令,如下所示。

    ...
      Create a new label
       g   create a new empty GPT partition table
       G   create a new empty SGI (IRIX) partition table
       o   create a new empty DOS partition table
       s   create a new empty Sun partition table
  4. 輸入指令g建立一份GPT分區表,輸入指令o建立MBR分區表。輸入p指令查看磁碟資訊如下所示。

    Command (m for help): o
    Created a new DOS disklabel with disk identifier 0x34c3f526.
    
    Command (m for help): p
    Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
    Disklabel type: dos
    Disk identifier: 0x34c3f526
  5. 輸入w指令將分區表資訊寫入磁碟並退出。

建立分區

本文以在磁碟/dev/vdb下建立分區為例進行說明。

  1. 進入fdisk的操作介面。

    sudo fdisk /dev/vdb
  2. 輸入指令p查看當前磁碟的資訊。

    Command (m for help): p
    Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
    Disklabel type: dos
    Disk identifier: 0x34c3f526
  3. 輸入指令n建立新分區。

    Command (m for help): n 
    Partition type
       p   primary (0 primary, 0 extended, 4 free)
       e   extended (container for logical partitions)
    Select (default p): p
    Partition number (1-4, default 1):  
    First sector (2048-41943039, default 2048): 
    Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +100M
    
    Created a new partition 1 of type 'Linux' and of size 100 MiB.
  4. 輸入指令p選擇主要磁碟分割類型的分區。

  5. 輸入1選用預設的分區號。

  6. 輸入2048設定起始扇區為預設值2048。

    說明

    起始扇區為預設的2048,截止扇區為起始扇區開始往後+100 M大小的位置。兩種方式指定分區的大小。

    • +sectors:這種方式指定分區的大小為sectors個扇區。

    • +size:這種方式指定分區的大小為size,例如+100 M則指定分區大小為100 M。

  7. 輸入+100 M指定分區大小為100 M。

  8. 建立的分區如下所示,其大小為100 M。

    ...
    Created a new partition 1 of type 'Linux' and of size 100 MiB.
  9. 輸入指令w將分區資訊寫入分區表中並退出。

    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.

修改分區大小

本文以分區擴容為例,介紹如何修改分區大小。fdisk工具並沒有直接提供修改分區大小的指令,因此在使用fdisk修改分區大小時,只能通過刪除原有分區並建立一個新的大小的分區來實現,然而,這一操作可能會導致原有資料的丟失。parted是另一種磁碟分割工具,它提供了修改分區大小的相關指令。以下將介紹使用parted工具修改分區大小的方法。

  1. 安裝parted

    sudo yum install -y parted
  2. 確認是否安裝成功。

    sudo parted --help

    返回結果如下則證明安裝成功。

    Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
    Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run in
    interactive mode.
    
    OPTIONs:
      -h, --help                      displays this help message
    
    ...
  3. 進入parted操作介面。

    sudo parted /dev/vdb
  4. 設定parted的單位為MiB。

    (parted) unit MiB
  5. 輸入p指令查看所有的分區資訊:

    (parted) p                                                                
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 20480MiB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start    End     Size    Type     File system  Flags
     1      1.00MiB  101MiB  100MiB  primary
     2      101MiB   201MiB  100MiB  primary
  6. 修改分區大小。

    請將NUMBEREND替換為對應的分區號和結束位置。

    resizepart NUMBER END

    分區2的起始位置為101 MiB,若希望將其大小擴充至500 MiB,則結束位置為601 MiB。

    (parted) resizepart 2 601MiB
    (parted) p                                                                
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 20480MiB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start    End     Size    Type     File system  Flags
     1      1.00MiB  101MiB  100MiB  primary
     2      101MiB   601MiB  500MiB  primary
  7. 輸入quit退出parted程式。

  8. 進入fdisk的操作介面。

    sudo fdisk /dev/vdb
  9. 輸入指令p查看當前磁碟的資訊,確認分區大小。

    Command (m for help): p
    Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
    Disklabel type: dos
    Disk identifier: 0xefabc860
    
    Device     Boot  Start     End Sectors  Size Id Type
    /dev/vdb1         2048  206847  204800  100M 83 Linux
    /dev/vdb2       206848 1230847 1024000  500M 83 Linux
  10. 輸入q退出。

修改分區類型

使用fdisk修改分區類型。

  1. 進入fdisk操作介面。

    sudo fdisk /dev/vdb
  2. 輸入p查看當前分區資訊,分區資訊如下所示。

    Command (m for help): p
    Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
    Disklabel type: dos
    Disk identifier: 0xefabc860
    
    Device     Boot  Start     End Sectors  Size Id Type
    /dev/vdb1         2048  206847  204800  100M 83 Linux
    /dev/vdb2       206848 1230847 1024000  500M 83 Linux
  3. 輸入l查看所有分區類型,分區類型如下所示。

     0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
     1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
     2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
     3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
     4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
     5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
     6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
    ......
  4. 修改分區類型。

    以將分區2修改為擴充分區(類型號為5)為例,首先輸入指令t,接著輸入2,最後輸入5即可。

    Command (m for help): t
    Partition number (1,2, default 2): 2
    Hex code (type L to list all codes): 5
    
    Changed type of partition 'Linux' to 'Extended'.
  5. 輸入指令p查看分區資訊。

    Command (m for help): p
    Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
    Disklabel type: dos
    Disk identifier: 0xefabc860
    
    Device     Boot  Start     End Sectors  Size Id Type
    /dev/vdb1         2048  206847  204800  100M 83 Linux
    /dev/vdb2       206848 1230847 1024000  500M  5 Extended
  6. 輸入w儲存分區資訊至分區表中,並退出。

    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.

刪除分區

  1. 進入fdisk操作介面。

    sudo fdisk /dev/vdb
  2. 輸入p指令查看分區資訊。

    Command (m for help): p
    Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
    Disklabel type: dos
    Disk identifier: 0xefabc860
    
    Device     Boot  Start     End Sectors  Size Id Type
    /dev/vdb1         2048  206847  204800  100M 83 Linux
    /dev/vdb2       206848 1230847 1024000  500M  5 Extended
  3. 以刪除分區2為例,首先輸入指令d,然後輸入需要刪除的分區號2,將顯示如下資訊。

    Command (m for help): d
    Partition number (1,2, default 2): 2
    
    Partition 2 has been deleted.
  4. 輸入p指令查看分區資訊,此時分區2已被刪除。

    Command (m for help): p
    Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
    Disklabel type: dos
    Disk identifier: 0xefabc860
    
    Device     Boot Start    End Sectors  Size Id Type
    /dev/vdb1        2048 206847  204800  100M 83 Linux
  5. 輸入w指令儲存分區資訊至磁碟分割表並退出。

    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.