在使用Ubuntu系统的过程中会出现磁盘空间不足的问题,本文记录了为Ubuntu添加一块新的磁盘并进行挂载的过程。
:/$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 100G 0 disk
├─vda1 252:1 0 1M 0 part
├─vda2 252:2 0 1.5G 0 part /boot
└─vda3 252:3 0 98.5G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 49.3G 0 lvm /
vdb 252:16 0 1000G 0 disk
此处可以看出vdb
尚未进行初始化,无法供文件系统使用。使用fdisk -l
确认系统检测到新增磁盘:
:/$ sudo fdisk -l
Disk /dev/vda: 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: gpt
Disk identifier: 1B239CED-5775-4316-8D16-144AEAD70FD6
Device Start End Sectors Size Type
/dev/vda1 2048 4095 2048 1M BIOS boot
/dev/vda2 4096 3149823 3145728 1.5G Linux filesystem
/dev/vda3 3149824 209713151 206563328 98.5G Linux filesystem
Disk /dev/vdb: 1000 GiB, 1073741824000 bytes, 2097152000 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 /dev/mapper/ubuntu--vg-ubuntu--lv: 49.25 GiB, 52877590528 bytes, 103276544 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
要将磁盘用于文件系统,需要进行以下步骤:
- 磁盘分区:将一个磁盘分为一个或多个区(Part)并格式化。
- 创建物理卷。
- 创建逻辑卷:从卷组中划分逻辑卷。
- 格式化逻辑卷:使用适当的文件系统格式对逻辑卷进行格式化。
- 挂载逻辑卷:将逻辑卷挂载到文件系统目录以供读写访问。
- 设置系统启动时自动挂载。
1 磁盘分区
# 使用fdisk命令进入磁盘开始分区
:/$ sudo fdisk /dev/vdb
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 0x8a5c0f19.
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): g
Created a new GPT disklabel (GUID: 0C67AF26-366B-8A4C-983F-054AD54D43A8).
Command (m for help): p
Disk /dev/vdb: 1000 GiB, 1073741824000 bytes, 2097152000 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: gpt
Disk identifier: 0C67AF26-366B-8A4C-983F-054AD54D43A8
Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-2097151966, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2097151966, default 2097151966):
Created a new partition 1 of type 'Linux filesystem' and of size 1000 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
#磁盘分区格式化
:/$ sudo mkfs -t xfs /dev/vdb1
meta-data=/dev/vdb1 isize=512 agcount=4, agsize=65535935 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=262143739, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=127999, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
:/$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 100G 0 disk
├─vda1 252:1 0 1M 0 part
├─vda2 252:2 0 1.5G 0 part /boot
└─vda3 252:3 0 98.5G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 49.3G 0 lvm /
vdb 252:16 0 1000G 0 disk
└─vdb1 252:17 0 1000G 0 part
# 分区完成
2 创建物理卷
:/$ sudo pvcreate /dev/vdb1
WARNING: xfs signature detected on /dev/vdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/vdb1.
Physical volume "/dev/vdb1" successfully created.
# 创建卷组:sudo vgcreate <my_volume_group_name> /dev/vdb1
:/$ sudo vgcreate vg-data /dev/vdb1
Volume group "vg-data" successfully created
3 创建逻辑卷
# sudo lvcreate -L 1000G -n <my_logical_volume_name> <my_volume_group_name>
:/$ sudo lvcreate -L 1000G -n vg-data_lv-data vg-data
Volume group "vg-data" has insufficient free space (255999 extents): 256000 required.
:/$ sudo lvcreate -L 999G -n vg-data_lv-data vg-data
Logical volume "vg-data_lv-data" created.
4 格式化逻辑卷
# sudo mkfs.<filesystem_type> /dev/<my_volume_group_name>/<my_logical_volume_name>
# 根据你的需要选择适当的文件系统类型,例如ext4、xfs等。
:/$ sudo mkfs.xfs /dev/vg-data/vg-data_lv-data
meta-data=/dev/vg-data/vg-data_lv-data isize=512 agcount=4, agsize=65470464 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=261881856, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=127872, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
5 挂载逻辑卷
# 创建挂载点
:/$ sudo mkdir -p /data
# 挂载逻辑卷sudo mount /dev/<my_volume_group_name>/<my_logical_volume_name> /data
:/$ sudo mount /dev/vg-data/vg-data_lv-data /data
6 设置系统启动自动挂载
:/$ sudo vim /etc/fstab
# 在文件的末尾添加以下行:
# /dev/<my_volume_group_name>/<my_logical_volume_name> /data <filesystem_type> defaults 0 0
# <filesystem_type> 是你选择的文件系统类型,例如ext4、xfs等。
查看新挂载的磁盘是否可供文件系统使用。
:/$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 212M 1.4G 14% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 49G 13G 33G 28% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/vda2 1.5G 219M 1.2G 16% /boot
tmpfs 1.6G 92K 1.6G 1% /run/user/1000
/dev/mapper/vg--data-vg--data_lv--data 999G 7.0G 992G 1% /data