Linux パーティションの拡張 (ルート パーティションの拡張、SWAP パーティションの拡張、新しいパーティションをディレクトリとしてマウント)

Linux パーティションの拡張 (ルート パーティションの拡張、SWAP パーティションの拡張、新しいパーティションをディレクトリとしてマウント)

Linux システムの実行中にディスク容量が不足しており、拡張する必要がある場合はどうすればよいですか? この記事では、ルート パーティション、SWAP パーティション、ディレクトリの拡張などの一般的な拡張シナリオについて説明します。

目次

    1. ルートパーティションの拡張
    • 1.1 標準パーティション拡張 (デフォルト)
    • 1.2 LVM パーティションの拡張
    1. SWAPパーティションの拡張
    • 2.1 SWAP パーティションとしてファイルを作成する (デフォルト)
    • 2.2 標準パーティションの SWAP 拡張
    • 2.3 LVM SWAP の拡張
    1. 新しいディスクを新しいパーティションにマウントする
    • 3.1 ディスクを新しいディレクトリとしてマウントする
    • 3.2 ディスクを元のディレクトリにマウントする
    1. まとめ

1. ルートパーティションの拡張

1.1 標準パーティション拡張 (このサイトの OVF デフォルト)

この例は、2 つのディスクを持つ CentOS 8 仮想マシンです。ディスク 1 にはルート ディレクトリ (を含む) 用の容量が 60G /boot、ディスク 2 には SWAP 用の容量が 4G あります。

(1) 拡張前の状態は以下のとおりです。

[root@sysin-c8 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   60G  0 disk
└─sda1   8:1    0   60G  0 part /
sdb      8:16   0    4G  0 disk
└─sdb1   8:17   0    4G  0 part [SWAP]
sr0     11:0    1 1024M  0 rom

[root@sysin-c8 ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  386M     0  386M   0% /dev
tmpfs          tmpfs     400M     0  400M   0% /dev/shm
tmpfs          tmpfs     400M   11M  389M   3% /run
tmpfs          tmpfs     400M     0  400M   0% /sys/fs/cgroup
/dev/sda1      xfs        60G  1.8G   59G   3% /
tmpfs          tmpfs      80M     0   80M   0% /run/user/0

(2) 仮想マシンのディスク 1 の容量を 100G に拡張します。このプロセス中にスクリーンショットは取得されません。

オンライン追加がサポートされている場合は、次のコマンドを使用してディスクのステータスを更新できます。partprobe /dev/sda

(3) ルート ディレクトリの展開を開始します。

[root@sysin-c8 ~]# fdisk /dev/sda

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):

(4) m を押すとヘルプが表示されます。

Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  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


Command (m for help):

(5) p を押して、現在のディスクのパーティションを表示します。

Command (m for help): p
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 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: 0x7bb4c495

Device     Boot Start       End   Sectors Size Id Type
/dev/sda1  *     2048 125829119 125827072  60G 83 Linux

# 本例该磁盘仅仅一个分区,Boot 下面有个可启动标记 *,/boot 没有独立分区

(6) d を押して削除/パーティションを実行します。

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help):
# 本例中只有一个分区,所以直接删除了,如果是有多个分区,会提示输入数字选择

(7) 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  #选择 p primary
Partition number (1-4, default 1):  #直接回车默认 1 即 sda1
First sector (2048-209715199, default 2048):  #直接回车默认值 (sysin)
Last sector, +sectors or +size{
    
    K,M,G,T,P} (2048-209715199, default 209715199): #直接回车默认值,使用全部剩余空间

Created a new partition 1 of type 'Linux' and of size 100 GiB.
Partition #1 contains a xfs signature.

Do you want to remove the signature? [Y]es/[N]o: N  #按 N 保留 xfs 签名,移除的话分区的 UUID 会变更。

The signature will be removed by a write command.

Command (m for help):

(8) p を押してステータスを再度表示します。

Command (m for help): p
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 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: 0x6a72cc03

Device     Boot Start       End   Sectors  Size Id Type
/dev/sda1        2048 209715199 209713152  100G 83 Linux

Filesystem/RAID signature on partition 1 will be wiped.

Command (m for help):

(9) 重要な手順: a を押してブート可能をセットアップします。

この例では/boot、独立したパーティションがありません。パーティションをブート可能にするには、ブート フラグを設定する必要があります。

/boot独立したパーティションでは、この手順は必要ありません。

Command (m for help): a
Selected partition 1
The bootable flag on partition 1 is enabled now.

# 按 p 再次确认,Boot 下面有了 * 符号
Command (m for help): p
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 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: 0x6a72cc03

Device     Boot Start       End   Sectors  Size Id Type
/dev/sda1  *     2048 209715199 209713152  100G 83 Linux

Filesystem/RAID signature on partition 1 will be wiped.

Command (m for help):

(10) w を押して保存します。

Command (m for help): w
The partition table has been altered.
Syncing disks.

(11) 重要な手順: ファイル システムの容量を同期します。

CentOS 7 はデフォルトで xfs ファイル システムの使用を開始し、xfs_growfs コマンドを使用してファイル システムの容量を同期します。

Ext4(2、3含む)の場合はresize2fsコマンドを使用します。

xfs_growfs /
# 注意 xfs_growfs 使用 mountpoint
#resize2fs /dev/sda1
# resize2fs 则使用 device

(12) パーティション結果の確認 システムを再起動して正常かどうかを確認します。

[root@sysin-c8 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk
└─sda1   8:1    0  100G  0 part /
sdb      8:16   0    4G  0 disk
└─sdb1   8:17   0    4G  0 part [SWAP]
sr0     11:0    1 1024M  0 rom
[root@sysin-c8 ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  386M     0  386M   0% /dev
tmpfs          tmpfs     400M     0  400M   0% /dev/shm
tmpfs          tmpfs     400M   11M  389M   3% /run
tmpfs          tmpfs     400M     0  400M   0% /sys/fs/cgroup
/dev/sda1      xfs       100G  2.1G   98G   3% /
tmpfs          tmpfs      80M     0   80M   0% /run/user/0
[root@sysin-c8 ~]#

拡張は正常に完了しました。

1.2 LVM パーティションの拡張

LVM 用語の説明:

LVM(論理ボリュームマネージャー) 論理ボリュームマネージャー

主に次の概念に分かれています。

  • 物理ボリューム - PV と呼ばれる物理ボリューム

    物理ボリュームは、論理ボリューム マネージャの最下位レベルに属します。論理ボリュームおよびボリューム グループは、物理ボリュームに基づいて作成する必要があります。物理ボリュームは、完全なハード ディスクまたはハード ディスク内のパーティションにすることができます。

  • ボリューム グループ - ボリューム グループ、VG と省略されます。

    ボリューム グループは物理ボリューム上に構築され、ボリューム グループには 1 つ以上の物理ボリュームを含めることができます。

  • 論理ボリューム - 論理ボリューム、LV と略されます。

    /home論理ボリュームは、非 LVM システムのハードディスク パーティションに似ており、論理ボリューム上にファイル システム (またはなど)を確立できます/usr

論理ボリュームの作成プロセスは次のとおりです: PV -> VG -> LV. 物理ボリュームにはボリューム グループが含まれ、ボリューム グループには論理ボリュームが含まれます。

この例は、次のように、CentOS 7、1 つのディスク、独立した/bootパーティション、および 2 つの LVM パーティションです。

# root @ C7-SYSIN in ~ [12:41:56]
$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  160G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  159G  0 part
  ├─centos-root 253:0    0  155G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom

# root @ C7-SYSIN in ~ [12:41:56]
$ df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       155G  1.5G  154G   1% /
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
tmpfs                   tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  142M  873M  14% /boot
tmpfs                   tmpfs     378M     0  378M   0% /run/user/0

仮想ディスクを 260G に拡張します。

注: 新しい物理ディスクの追加をシミュレートするためにディスクを追加することもできますが、次のドライブ文字を「/dev/sda=/dev/sdb」および「/dev/sda3=/dev/sdb1」に変更する必要があります。 。

(1) パーティションの作成

$ fdisk /dev/sda  #对原磁盘 /dev/sda 分区
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): p  #p 查看当前分区

Disk /dev/sda: 279.2 GB, 279172874240 bytes, 545259520 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: 0x000af364

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   335544319   166722560   8e  Linux LVM

Command (m for help): n  #n 新建分区
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p  #p 主分区
Partition number (3,4, default 3):  #默认按顺序,直接回车
First sector (335544320-545259519, default 335544320):  #默认直接回车
Using default value 335544320
Last sector, +sectors or +size{
    
    K,M,G} (335544320-545259519, default 545259519):  #默认直接回车使用全部剩余空间
Using default value 545259519
Partition 3 of type Linux and of size 100 GiB is set

Command (m for help): p  #p 再次查看分区

Disk /dev/sda: 279.2 GB, 279172874240 bytes, 545259520 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: 0x000af364

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   335544319   166722560   8e  Linux LVM
/dev/sda3       335544320   545259519   104857600   83  Linux

Command (m for help): w  #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.

(2) パーティションをリフレッシュする

# root @ C7-SYSIN in ~ [13:31:00]
$ partprobe /dev/sda

# root @ C7-SYSIN in ~ [13:31:54]
$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  260G  0 disk
├─sda1            8:1    0    1G  0 part /boot
├─sda2            8:2    0  159G  0 part
│ ├─centos-root 253:0    0  155G  0 lvm  /
│ └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
└─sda3            8:3    0  100G  0 part
sr0              11:0    1 1024M  0 rom

(3) PVの作成

$ pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

(4) VG を見る

$ vgdisplay
  --- 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               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <159.00 GiB
  PE Size               4.00 MiB
  Total PE              40703
  Alloc PE / Size       40703 / <159.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               Aul9M5-OJu8-3RB5-DU9Y-yi5m-ngyd-QyIKLw

VG名はセントス

(5) VGを拡張する

/dev/sda3 PV を使用して centos VG に拡張します。

$ vgextend centos /dev/sda3
  Volume group "centos" successfully extended

(6) ビューLV

$ lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                ntq8LZ-qivt-B6ij-AZWi-97a9-H2Q5-YxznfS
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-08-22 14:12:50 +0800
  LV Status              available
  # open                 1
  LV Size                <155.00 GiB
  Current LE             39679
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                jvNgUR-KUsk-1hD4-h383-w3pc-OhBT-ZFMpyi
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-08-22 14:12:51 +0800
  LV Status              available
  # open                 2
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

拡張する必要があるルート パーティション LV は /dev/centos/root です。

(7) VGの空き領域をルートパーティションLVに拡張します。

$ lvextend -l +100%FREE /dev/centos/root
  Size of logical volume centos/root changed from <155.00 GiB (39679 extents) to 254.99 GiB (65278 extents).
  Logical volume centos/root successfully resized.

(8) ルートパーティションをリフレッシュする

ext4 ファイルシステム (2 と 3 を含む) の場合は、resize2fs コマンドを使用します。

xfs_growfs /dev/centos/root

(9) 検証結果

# root @ C7-SYSIN in ~ [13:39:53]
$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  260G  0 disk
├─sda1            8:1    0    1G  0 part /boot
├─sda2            8:2    0  159G  0 part
│ ├─centos-root 253:0    0  255G  0 lvm  /
│ └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
└─sda3            8:3    0  100G  0 part
  └─centos-root 253:0    0  255G  0 lvm  /
sr0              11:0    1 1024M  0 rom

# root @ C7-SYSIN in ~ [13:39:53]
$ df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       255G  1.5G  254G   1% /
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
tmpfs                   tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  142M  873M  14% /boot
tmpfs                   tmpfs     378M     0  378M   0% /run/user/0

ルートディレクトリの容量が正常に拡張されていることがわかります。

2. SWAP パーティションの拡張

2.1 SWAP パーティションとしてファイルを作成する (このサイトの OVF デフォルト)

これは最も簡単な方法です。スワップ パーティションとして / ディレクトリに直接ファイルを作成します。非常に柔軟で、スワップの有効化と無効化、およびオンラインでのサイズの調整に最適です。

(1) スワップ パーティションとして使用するファイルを作成します。

4 GB のスワップ パーティションを追加するには、コマンドを次のように記述します。ここで、count は必要なブロックの数と等しくなります (bs*count = ファイル サイズ)。

# 这里定义为 /swap.img
dd if=/dev/zero of=/swap.img bs=1M count=4096
# 修改权限
chmod 600 /swap.img

(2) SWAP パーティション ファイル システムを作成します。

mkswap /swap.img #mkswap - set up a Linux swap area

(3) スワップ パーティション ファイルを有効にします。

swapon /swap.img #启用 swap 文件

このとき、free -mコマンドを使用すると、Swapの容量は、元の容量に上記で作成したファイルの容量を加えたものであることがわかります。

(4) 編集:/etc/fstab起動時に上記のスワップ ファイルを自動的にロードします。

次の行を追加します。

/swap.img    none    swap    defaults    0 0
#  第二个字段在 CentOS 中默认使用 swap,两者并没有不一样。
/swap.img    swap    swap    defaults    0 0
# 关于字段的风格,使用 tab 或者空格都可以,数量没有要求,通常为了对齐使用多个空格

追加する直接コマンド:

sudo sh -c "echo '/swap.img    none    swap    defaults    0 0' >> /etc/fstab"

(5) スワップファイルの解除

swapoff /swap.img
rm -r /swap.img

次に、/etc/fstab上で追加した行を編集して削除します。

Ubuntu 20.04/swap.imgでは、デフォルトでファイルを SWAP パーティションとして使用します。元のファイルを直接スワップオフして削除し、同じ名前でファイルを再作成して簡単に拡張できます。ここでは Ubuntu のアプローチから教訓を引き出し、この方法をお勧めします。

2.2 標準パーティションの SWAP 拡張

この例は、2 つのディスクを持つ CentOS 8 仮想マシンです。ディスク 1 にはルート ディレクトリ (を含む) 用の容量が 60G /boot、ディスク 2 には SWAP 用の容量が 4G あります。

(1) 拡張前の状態は以下のとおりです。

[root@sysin-c8 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   60G  0 disk
└─sda1   8:1    0   60G  0 part /
sdb      8:16   0    4G  0 disk
└─sdb1   8:17   0    4G  0 part [SWAP]
sr0     11:0    1 1024M  0 rom

[root@sysin-c8 ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  386M     0  386M   0% /dev
tmpfs          tmpfs     400M     0  400M   0% /dev/shm
tmpfs          tmpfs     400M   11M  389M   3% /run
tmpfs          tmpfs     400M     0  400M   0% /sys/fs/cgroup
/dev/sda1      xfs        60G  1.8G   59G   3% /
tmpfs          tmpfs      80M     0   80M   0% /run/user/0

(2) 仮想マシンのディスク 2 の容量を 16G に拡張します。このプロセス中にスクリーンショットは取得されません。

ディスクのステータスを更新します:partprobe /dev/sdb

(3) スワップをクローズする

swapoff /dev/sdb1

/dev/sdb1(4)パーティションの再作成

[root@sysin-c8 ~]# fdisk /dev/sdb  #选择 /dev/sdb

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p  #查看当然分区
Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 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: 0x316023cd

Device     Boot Start     End Sectors Size Id Type
/dev/sdb1        2048 8388607 8386560   4G 82 Linux swap / Solaris

Command (m for help): d  #删除分区,只有一个分区不会提示选择数字
Selected partition 1
Partition 1 has been deleted.

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  #主分区,输入 P 或者直接回车
Partition number (1-4, default 1):   #直接回车按顺序 1
First sector (2048-33554431, default 2048):   #直接回车
Last sector, +sectors or +size{
    
    K,M,G,T,P} (2048-33554431, default 33554431):   #直接回车使用全部可用空间

Created a new partition 1 of type 'Linux' and of size 16 GiB.
Partition #1 contains a swap signature.

Do you want to remove the signature? [Y]es/[N]o: N  # 选择 N 不要移除 swap 签名,磁盘 UUID 不变

The signature will be removed by a write command.

Command (m for help): t  #更改分区类型
Selected partition 1
Hex code (type L to list all codes): L  #输入 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 / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT
Hex code (type L to list all codes): 82  #输入 82,更改为 SWAP
Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Command (m for help): p  #再次查看分区,已经是 swap
Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 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: 0x316023cd

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 33554431 33552384  16G 82 Linux swap / Solaris

Filesystem/RAID signature on partition 1 will be wiped.

Command (m for help): w  #保存退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: 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).

最後に、有効にするには、再起動するか、partprobe および kpartx コマンドを実行する必要があることを求めるメッセージが表示されます。ここでコマンドを実行しますpartprobe /dev/sdb1

作成者は、テスト中に partprobe コマンドを実行するとエラーを報告しました。パーティション化プロセス中にスワップ署名が削除され、パーティションの UUID が変更された可能性があります。直接再起動するには、システムに入る前にしばらく待つ必要がありますが、通常の動作には影響しません。

(5) スワップファイルシステムの作成

mkswap /dev/sdb1
# 提示如下
Setting up swapspace version 1, size = 16 GiB (17178816512 bytes)
no label, UUID=df11dbb4-9665-4732-b865-03913713fa5e
# 注意这里的 UUID 变更,需要修改替换 /etc/fstab

(6) オープンスワップ

swapon /dev/sdb1

(7) 変更/etc/fstab

パーティションの再作成中にスワップ署名が削除された場合、ディスク UUID が変更されるため、対応する変更を加えるために編集する必要があります/etc/fstab

スワップ署名が削除されていなくても、mkswap コマンドの使用後に UUID が変更されているため、/etc/fstab対応する変更を加えるために編集する必要があります。

パーティションの UUID を表示するには、コマンドblkidまたはを使用しますlsblk -f

#UUID=c154479a-28e1-40b2-b10c-646b41693f51 swap                    swap    defaults        0 0 #原有
UUID=df11dbb4-9665-4732-b865-03913713fa5e swap                    swap    defaults        0 0

もちろん、追加のスワップ パーティションとして追加のパーティションを作成することもできます。元のスワップ パーティションは変更されず、/etc/fstab最後に編集して自動的にロードするだけです。

(8)変更/etc/default/grub

grub 構成ファイルには、スワップ パーティションを指す再開オプションがあります。標準パーティションがデフォルトでスワップ パーティションの UUID を使用する場合。

vi /etc/default/grub
# 找到如下行
GRUB_CMDLINE_LINUX="crashkernel=auto resume=UUID=c154479a-28e1-40b2-b10c-646b41693f51 rhgb quiet"  #原有
# 修改如下
GRUB_CMDLINE_LINUX="crashkernel=auto resume=UUID=df11dbb4-9665-4732-b865-03913713fa5e rhgb quiet"
# 重建配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# UEFI boot mode:
#grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

2.3 LVM SWAP の拡張

この例は、次のように、CentOS 7、1 つのディスク、独立した/bootパーティション、および 2 つの LVM パーティションです。

# root @ C7-SYSIN in ~ [12:41:56]
$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  160G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  159G  0 part
  ├─centos-root 253:0    0  155G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom

# root @ C7-SYSIN in ~ [12:41:56]
$ df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       155G  1.5G  154G   1% /
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
tmpfs                   tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  142M  873M  14% /boot
tmpfs                   tmpfs     378M     0  378M   0% /run/user/0

仮想ディスク容量を 12G 増加します。

注: 新しい物理ディスクの追加をシミュレートするためにディスクを追加することもできますが、次のドライブ文字を「/dev/sda=/dev/sdb」および「/dev/sda3=/dev/sdb1」に変更する必要があります。 。

(1) スワップをクローズする

/etc/fstabスワップの LV 名を確認します

$ cat /etc/fstab | grep swap
/dev/mapper/centos-swap swap                    swap    defaults        0 0

オフにするには:

swapoff /dev/mapper/centos-swap

(2) パーティションの作成

$ fdisk /dev/sda  #对原磁盘 /dev/sda 分区,也可以是新增的磁盘,按顺序使用 /dev/sdb 操作方法是一样的。
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): p  #查看当前分区

Disk /dev/sda: 184.7 GB, 184683593728 bytes, 360710144 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: 0x000af364

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   335544319   166722560   8e  Linux LVM

Command (m for help): n  #新建分区
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p):  #直接回车,默认主分区
Using default response p
Partition number (3,4, default 3):   #直接回车默认按顺序 3
First sector (335544320-360710143, default 335544320):   #直接回车
Using default value 335544320
Last sector, +sectors or +size{
    
    K,M,G} (335544320-360710143, default 360710143):   #直接回车,使用全部剩余空间
Using default value 360710143
Partition 3 of type Linux and of size 12 GiB is set   #12G 没错

Command (m for help): p  #再次查看分区

Disk /dev/sda: 184.7 GB, 184683593728 bytes, 360710144 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: 0x000af364

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   335544319   166722560   8e  Linux LVM
/dev/sda3       335544320   360710143    12582912   83  Linux

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.
You have new mail.

(3) パーティションをリフレッシュする

# root @ C7-SYSIN in ~ [13:31:00]
$ partprobe /dev/sda

# root @ C7-SYSIN in ~ [13:31:54]
$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  172G  0 disk
├─sda1            8:1    0    1G  0 part /boot
├─sda2            8:2    0  159G  0 part
│ ├─centos-root 253:0    0  155G  0 lvm  /
│ └─centos-swap 253:1    0    4G  0 lvm
└─sda3            8:3    0   12G  0 part
sr0              11:0    1 1024M  0 rom

(4) PVの作成

$ pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

(5) VGを見る

$ vgdisplay
  --- 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               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <159.00 GiB
  PE Size               4.00 MiB
  Total PE              40703
  Alloc PE / Size       40703 / <159.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               Aul9M5-OJu8-3RB5-DU9Y-yi5m-ngyd-QyIKLw

VG名はセントス

(6) VGを拡張する

/dev/sda3 PV を使用して centos VG に拡張します。

$ vgextend centos /dev/sda3
  Volume group "centos" successfully extended

(7) ビューLV

$ lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                ntq8LZ-qivt-B6ij-AZWi-97a9-H2Q5-YxznfS
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-08-22 14:12:50 +0800
  LV Status              available
  # open                 1
  LV Size                <155.00 GiB
  Current LE             39679
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                jvNgUR-KUsk-1hD4-h383-w3pc-OhBT-ZFMpyi
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-08-22 14:12:51 +0800
  LV Status              available
  # open                 2
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

拡張する必要があるルート パーティション LV は /dev/centos/swap です。

(8) VGの空き領域をルートパーティションLVに拡張します。

$ lvextend -l +100%FREE /dev/centos/swap
  Size of logical volume centos/swap changed from 4.00 GiB (1024 extents) to <16.00 GiB (4095 extents).
  Logical volume centos/swap successfully resized.

(9) スワップパーティションをリフレッシュする

partprobe /dev/centos/swap

(10) 検証結果

# root @ C7-SYSIN in ~ [15:54:13]
$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  172G  0 disk
├─sda1            8:1    0    1G  0 part /boot
├─sda2            8:2    0  159G  0 part
│ ├─centos-root 253:0    0  155G  0 lvm  /
│ └─centos-swap 253:1    0   16G  0 lvm
└─sda3            8:3    0   12G  0 part
  └─centos-swap 253:1    0   16G  0 lvm
sr0              11:0    1 1024M  0 rom

# root @ C7-SYSIN in ~ [15:54:13]
$ df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       155G  1.5G  154G   1% /
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
tmpfs                   tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  142M  873M  14% /boot
tmpfs                   tmpfs     378M     0  378M   0% /run/user/0

ルートディレクトリの容量が正常に拡張されていることがわかります。

(11) スワップファイルシステムの作成

$ mkswap /dev/mapper/centos-swap
mkswap: /dev/mapper/centos-swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 16773116 KiB
no label, UUID=fb85ef4d-59aa-4554-a3bd-b4cc37746c51

(12) スワップをオンにする

swapon /dev/mapper/centos-swap

free -mスワップ パーティションの容量がそのまま 16G に変更されたことを確認するために使用します/etc/fstab

3. 新しいディスクを新しいパーティションにマウントします。

この例では Ubuntu 20.04 を使用しています。パーティションは次のとおりです。100G ディスクを追加してマウントします。同時に、100G ディスクを追加して/data元のディレクトリを置き換えます/var(元のディスク パーティションでは不十分であると仮定します)。もちろん、ルート パーティションを直接拡張することもできます。この記事の上記の説明を参照してください。/dataここでは、それぞれ独立したパーティションとパーティションを作成します/var

/dataLVM を使用して独立したパーティションを作成する/varこともできます。特定の操作は異なりますが、論理的な手順は同じです。他の記事を参照してください。この記事では標準のパーティショニングを使用します。

$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0  160G  0 disk
├─sda1                      8:1    0    1M  0 part
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0  159G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  159G  0 lvm  /
sr0                        11:0    1 1024M  0 rom

# sa @ U20 in ~ [16:14:05]
$ df -Th
Filesystem                        Type      Size  Used Avail Use% Mounted on
udev                              devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                             tmpfs     391M  1.1M  390M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4      156G  6.0G  142G   5% /
tmpfs                             tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                             tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                             tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sda2                         ext4      976M  103M  806M  12% /boot
tmpfs                             tmpfs     391M     0  391M   0% /run/user/1000

Ubuntu は特殊で、LVM や標準パーティションに関係なく、bios_grub という 1M のパーティションが自動的に作成されます。ここの議論を参照してください

以下に示すように、新しいハードディスクを追加した後、新しいディスクが表示されない場合は、再起動するか、partprobe コマンドを実行する必要があります。

$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0  160G  0 disk
├─sda1                      8:1    0    1M  0 part
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0  159G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  159G  0 lvm  /
sdb                         8:16   0  100G  0 disk
sdc                         8:32   0  100G  0 disk
sr0                        11:0    1 1024M  0 rom

3.1 ディスクを新しいディレクトリとしてマウントする

(1) パーティションの作成

# sa @ U20 in ~ [16:23:43] C:1
$ sudo fdisk /dev/sdb  #将 /dev/sdb 创建分区
[sudo] password for sa:

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9a7ae73a.

Command (m for help): n  #n 新建分区
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):   #直接回车,主分区

Using default response p.
Partition number (1-4, default 1):   #直接回车,按顺序编号 1
First sector (2048-209715199, default 2048):   #直接回车
Last sector, +/-sectors or +/-size{
    
    K,M,G,T,P} (2048-209715199, default 209715199):   #直接回车,使用全部可用空间

Created a new partition 1 of type 'Linux' and of size 100 GiB.

Command (m for help): p  #查看分区
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: VMware Virtual S
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: 0x9a7ae73a

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 209715199 209713152  100G 83 Linux

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

(2) ファイルシステムの作成(パーティションのフォーマット)

sudo mkfs -t ext4 /dev/sdb1
# 上述使用 ext4,也可以使用 xfs

(3)/dataディレクトリにマウントする

sudo mkdir /data
sudo mount /dev/sdb1  /data

(4) 起動時の自動ロード

編集して/etc/fstab、次の行を追加します。

/dev/sdb1 /data ext4 defaults 0 0

(5) 検証

再起動後、正しくロードされているかどうかを確認します。

$ df -Th
Filesystem                        Type      Size  Used Avail Use% Mounted on
udev                              devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                             tmpfs     391M  1.2M  390M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4      156G  6.0G  142G   5% /
tmpfs                             tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                             tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                             tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sda2                         ext4      976M  103M  806M  12% /boot
tmpfs                             tmpfs     391M     0  391M   0% /run/user/1000
/dev/sdb1                         ext4       98G   61M   93G   1% /data

3.2 ディスクを元のディレクトリにマウントする

(1) パーティションの作成

# sa @ U20 in ~ [16:23:43] C:1
$ sudo fdisk /dev/sdc  #将 /dev/sdc 创建分区
[sudo] password for sa:

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9a7ae73a.

Command (m for help): n  #n 新建分区
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):   #直接回车,主分区

Using default response p.
Partition number (1-4, default 1):   #直接回车,按顺序编号 1
First sector (2048-209715199, default 2048):   #直接回车
Last sector, +/-sectors or +/-size{
    
    K,M,G,T,P} (2048-209715199, default 209715199):   #直接回车,使用全部可用空间

Created a new partition 1 of type 'Linux' and of size 100 GiB.

Command (m for help): p  #查看分区
Disk /dev/sdc: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: VMware Virtual S
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: 0x9a7ae73a

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdc1        2048 209715199 209713152  100G 83 Linux

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

(2) ファイルシステムの作成(パーティションのフォーマット)

sudo mkfs -t xfs /dev/sdc1
# 上述使用 xfs,也可以使用 ext4

(3)/varnewディレクトリにマウントする

sudo mkdir /varnew
sudo mount /dev/sdc1  /varnew

(4) 重要なステップ:/varすべてのコンテンツを新しいハードドライブにコピーします。

sudo cp -a /var/** /varnew

意味:

「-a」オプションは、「-d、-p、-r」オプションと同等です。「-a」オプションを使用すると、ソースの所有者を含め、ターゲット ファイルとソース ファイルのすべての属性が一致します。ファイル、それが属するグループ、時間、およびソフト リンク可能性。

ここで 2 つの「**」が使用されているのは、Bash でGlobstarオプションがオンになっている場合にすべてのファイルを確実にコピーできるようにするためです。

(5) 現在の/varディレクトリの名前を変更します (オプション、直接削除することもできます)

sudo mv /var /varold

(6) ハードディスクを/varディレクトリに再マウントします。

sudo umount /dev/sdc1
sudo mkdir /var
sudo mount /dev/sdc1 /var

(7) 起動時の自動マウントの設定

#sudo vi /etc/fstab
#在文件的最后增加一行
/dev/sdc1 /var xfs defaults 0 0

(8) 元の/varディレクトリを削除します。

問題がないことを確認したら、元のファイルを完全に削除してください/var

sudo rm -rf /varold

4. まとめ

標準パーティションを使用して容量を拡張することは、特に仮想マシン環境では LVM より簡単に思えますが、仮想ディスクは LVM 機能を使用せずに直接容量を拡張できます。

物理マシン環境では、LVM を使用すると、新しい物理ディスク拡張を利用できます。

したがって、仮想マシンまたはクラウド環境では標準パーティションを使用することをお勧めします (独立したスワップ仮想ディスクまたはスワップ ファイルを使用する方が便利です)。物理マシンの場合、特に大量のデータを含むアプリケーション シナリオでは、LVM の使用を検討できます。初め。

おすすめ

転載: blog.csdn.net/qq_23435961/article/details/131911839