目录
[1、fdisk -l](#1、fdisk -l)
[2、fdisk /dev/sdb](#2、fdisk /dev/sdb)
一、基础概念
Linux 系统内的存储设备,可以直接将整个磁盘分区后,格式化为文件系统挂载使用。也可以使用 LVM (逻辑卷管理)进行管理,下面将介绍 LVM 的相关知识点与操作。
LVM 逻辑卷管理有以下优点:
(1)灵活的磁盘管理:将多个物理磁盘分区或整个磁盘合并成一个逻辑卷,从而提供了更大的存储空间。这种灵活性使得用户可以根据需要动态地调整逻辑卷的大小,无需重新分区或重新格式化文件系统。同时,LVM还支持跨多个物理磁盘分配存储,不受单个物理磁盘容量的限制。
(2)LVM提供数据快照功能:可以在不中断系统运行的情况下创建磁盘快照,以便进行数据备份或恢复操作。
名词介绍如下:
- 磁盘分区(Disk Partition):在 Linux 中,磁盘分区是将硬盘划分为多个独立区域的过程。这些分区可以单独格式化,并用于不同的目的,如存储操作系统、应用程序数据或备份文件。Linux 磁盘分区主要分为基本分区(primary partition)和扩充分区(extension partition)两种。基本分区可以立即使用,但不能进一步划分;而扩充分区则必须再次进行分区后才能使用。
- PV(物理卷):PV 即 Physical Volume,是指物理磁盘或磁盘分区。在 Linux 的逻辑卷管理(LVM)中,PV 是 LVM 操作的基本单位。它可以是硬盘的一部分,也可以是整个硬盘。通过PV,LVM能够识别和管理底层的物理存储。
- VG(卷组):VG 即 Volume Group,是由一个或多个 PV 组合而成的虚拟存储池。VG 允许用户将多个 PV 聚合在一起,从而形成一个统一的、可管理的存储资源。VG 内部可以包含多个PV,这些PV的大小和类型可以不同。
- LV(逻辑卷):LV 即 Logical Volume,是从 VG 中划分出来的逻辑存储单元。LV 的大小可以在 VG 的总容量范围内灵活调整,因此它比传统的磁盘分区具有更高的灵活性。LV 可以像普通的磁盘分区一样进行格式化、挂载和使用
二、基本操作
1、fdisk -l
扫描系统中所有的磁盘设备(不仅会显示物理设备的信息,也会显示逻辑卷设备的信息),并显示每个磁盘的分区信息。这包括每个分区的起始和结束位置、大小、文件系统类型(如果已格式化)以及是否为主分区或逻辑分区等。
在 Linux 系统中,磁盘和分区是通过设备文件进行管理的,而逻辑卷设备也是其中的一部分。因此,当使用 fdisk -l 命令时,它会扫描系统中的所有磁盘设备,并列出它们的信息,包括物理磁盘和逻辑卷设备。
若磁盘设备名为"/dev/mapper/",通常与逻辑卷管理(LVM)相关。
[root@localhost ~]# fdisk -l
# (物理)显示第一块磁盘设备名、磁盘总大小
Disk /dev/sda: 107.4 GB, 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
Disk label type: dos
Disk identifier: 0x000e4cc8
# 显示磁盘下分区,需要使用 LVM 进行管理, ID 需要为 8e
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209715199 103808000 8e Linux LVM
# (逻辑)显示第二块磁盘设备信息
Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 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/centos-swap: 8455 MB, 8455716864 bytes, 16515072 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/centos-home: 44.1 GB, 44149243904 bytes, 86228992 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
2、fdisk /dev/sdb
对设备 /dev/sdb 进行分区操作。
3、pvcreate
使用 pvcreate 将 /dev/sdb 磁盘创建为物理卷,需要注意 sdb 的磁盘 ID 需要为 8e,若不是 8e 则需要使用 fdisk 进行修改。
[root@masterdb ~]# fdisk /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): t #t可以修改分区代码
Partition number (1,2, default 2): 1 #选择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 C: 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 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list all codes): 8e #选择8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w # 保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@masterdb ~]# pvcreate /dev/sdb
Physical volume "/dev/sdc" successfully created.
5、pvremove
pvremove 命令是 Linux 系统中用于永久删除一个存在的物理卷的命令。
使用 pvremove 指令删除物理卷时,它将 LVM 分区上的物理卷信息删除,使其不再被视为一个物理卷。在删除物理卷时,可以使用一些常用参数。例如,使用"-f"参数可以强制删除物理卷,不需要用户确认。
若该 PV 已经添加到 VG 中,并且该 VG 中已经创建了 LV。则需要先删除 LV、再删除 VG,最后再删除 PV。
6、pvdisplay/pvs
pvdisplay 命令可以显示一个或多个物理卷的信息,包括物理卷的名称、所属的卷组(Volume Group,简称 VG)、物理卷的大小、PE(Physical Extent)大小、总PE数、可用PE数、已分配的PE数和UUID(Universally Unique Identifier,通用唯一识别码)等。
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sdb
VG Name centos
PV Size <99.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 25343
Free PE 1
Allocated PE 25342
PV UUID JhX6kO-2dyH-bSlS-CdPG-gM8f-DHFn-aaxEZ9
7、vgcreate
vgcreate 是 Linux 系统中用于创建卷组(Volume Group)的命令。在 Linux 的逻辑卷管理(LVM)中,卷组是由一个或多个物理卷(Physical Volume)组成的集合,它提供了一个用于分配逻辑卷(Logical Volume)的池。
vgcreate [选项] 卷组名 物理卷路径 [物理卷路径 ...]
-s 或 --physicalextentsize:设置物理扩展区(PE)的大小(以 KB 为单位)。
-l 或 --maxlogicalvolumes:设置卷组中允许的最大逻辑卷数量。
-p 或 --maxphysicalvolumes:设置卷组中允许的最大物理卷数量。
-v 或 --verbose:显示详细信息。
# 使用vgcreate创建卷组 VG_TEST, 包含物理卷:/dev/sdb1 和 /dev/sdb2
[root@masterdb ~]# vgcreate VG_TEST /dev/sdb1 /dev/sdb2
Volume group "VG_TEST" successfully created
8、vgremove
用于删除 VG。需要注意,删除 VG 之前需要先将 VG 内 LV 全部删除掉。
vgremove VG_TEST
9、vgextend
vgextend 命令是 Linux 系统中用于动态扩展 LVM VG 的命令。它通过向 VG 中添加 PV 来增加 VG 的容量。
请注意,在使用 vgextend 命令之前,应确保该 PV 无其他用途,并且具有足够的权限来执行此操作。
# 使用 vgextend 扩容卷组VG_TEST
[root@masterdb ~]# vgextend VG_TEST /dev/sdb3
Volume group "VG_TEST" successfully extended
10、vgdisplay/vgs
通过 vgdisplay 命令,可以查看卷组的详细信息,包括卷组名、物理卷数量、逻辑卷数量、卷组空间使用情况等。
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size <99.00 GiB
PE Size 4.00 MiB
Total PE 25343
Alloc PE / Size 25342 / 98.99 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID FoBujC-nLU8-PqfT-ATAx-z1Lt-qgBY-Heev7O
11、lvcreate
用于从 VG 中创建逻辑卷(LV)
# 创建逻辑卷,指定 LV 大小、名称以及所属 VG
lvcreate --L SIZE --n LV_NAME VG_NAME
# 使用lvcreate创建逻辑卷lv_test
[root@masterdb ~]# lvcreate -L 1g -n lv_test VG_TEST
Logical volume "lv_test" created.
12、lvremove
在执行 lvremove 命令之前,请确保逻辑卷没有被正在使用。如果逻辑卷处于活动状态或正在使用,通常无法直接删除。
# 指定 lv path 进行删除
lvremove /dev/VG_TEST/lv_test
# 强制删除
lvremove -f /dev/VG_TEST/lv_test
# 来自动回答"yes"以确认删除
lvremove -y /dev/VG_TEST/lv_test
# 删除多个 lv
lvremove /dev/VG_TEST/lv_test1 /dev/VG_TEST/lv_test2
13、lvextend
lvextend 是 Linux 系统中用于扩展逻辑卷(Logical Volume)的命令。在逻辑卷管理(LVM,Logical Volume Manager)环境中,当逻辑卷的空间不足时,可以使用 lvextend 命令来增加逻辑卷的大小,从而满足存储需求。
在扩展逻辑卷之前,请确保所属的卷组(Volume Group)有足够的未分配空间或可以从其他逻辑卷中释放空间。
如果逻辑卷上挂载了文件系统,并且在扩展逻辑卷后想要文件系统能够使用新增的空间,通常需要执行文件系统调整大小的命令(如 resize2fs 对于 ext2/ext3/ext4 文件系统)。但如果你使用了 -r 选项,lvextend 会自动为你完成这一步。
lvextend [选项] <逻辑卷路径> [大小]
-L 或 --size:指定新的逻辑卷大小,支持运算。
-r 或 --resizefs:在扩展逻辑卷后自动调整文件系统的大小。
示例如下:
lvextend -L 20G -r /dev/VG_TEST/lv_test
lvextend -L +10G -r /dev/VG_TEST/lv_test
14、lvdisplay/lvs
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID k9OdpR-dI74-BcMX-WV4s-c7ON-nvK8-A2vHB6
LV Write Access read/write
LV Creation host, time localhost, 2022-10-19 01:55:25 +0800
LV Status available
# open 2
LV Size <7.88 GiB
Current LE 2016
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID dkEDwC-cVfK-aVeT-bkjm-9Tug-4IRt-EKbDpg
LV Write Access read/write
LV Creation host, time localhost, 2022-10-19 01:55:26 +0800
LV Status available
# open 1
LV Size <41.12 GiB
Current LE 10526
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID 6RI94s-zOmB-R21f-N95c-FZXU-gOhm-65TZki
LV Write Access read/write
LV Creation host, time localhost, 2022-10-19 01:55:27 +0800
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
15、格式化与挂盘
格式化 LV 可以主要使用 mkfs 或 mkfs.xxx,具体如下所示:
[root@localhost ~]# mkfs
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.fat mkfs.minix mkfs.msdos mkfs.vfat mkfs.xfs
常见的文件系统如下所示:
-
ext2:是 Linux 中最早的文件系统之一,适用于那些分区容量不是太大,更新也不频繁的情况。
-
ext3:是 ext2 的改进版本,增加了日志功能,有助于系统从异常中恢复,提高了文件系统的可靠性。
-
ext4:是 ext 文件系统的最新版本,具有更强的稳定性和可靠性,支持大文件和高容量的文件系统,同时提供了更高的性能和更好的容错能力。
-
XFS:是另一种常见的 Linux 文件系统,它采用异步日志记录,可以高效地处理大量小文件的读写操作。
[root@masterdb ~]# mkfs.ext3 /dev/VG_TEST/lv_test
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
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done创建挂载点
[root@masterdb ~]# mkdir /test
挂载文件系统
[root@masterdb ~]# mount /dev/VG_TEST/lv_test /test
确认结果
[root@masterdb ~]# df --h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 4.1G 5.9G 42% /
...
/dev/mapper/VG_TEST-lv_test 976M 1.3M 924M 1% /test
三、其他操作
1、lsblk
lsblk 命令会列出系统上的所有块设备,包括磁盘、分区以及逻辑卷(LV)等,可以根据 Type 进行识别。
当你使用 lsblk 命令时,它会按照层次结构展示这些块设备。这意味着它会显示磁盘作为顶级设备,然后是磁盘上的分区,接着是这些分区上可能存在的逻辑卷。这样,你可以清晰地看到整个存储系统的布局和层次关系。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
└─centos-home 253:2 0 41.1G 0 lvm /home
sr0 11:0 1 4.2G 0 rom /run/media/roo/CentOS 7 x86_64
需要注意区别,上述 pv、vg 和 lv 都是 LVM 里面的概念。对于磁盘来说,是可以直接格式化使用的。
2、查看文件系统
可以使用 lsblk -f 或者 mount
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 55eed7fa-d7e8-4ed2-829e-2f0c783e5a3a /boot
└─sda2 LVM2_member GR0XIJ-IMc0-zN5M-Euw3-VM5w-BNoB-iVRdsY
├─centos-root xfs 83e1636e-21a3-4354-ae51-8f7b1a098949 /
├─centos-swap swap 8955a905-81c4-4f53-be0d-bdd9a64e31a9 [SWAP]
└─centos-home xfs ccda1c11-a7ab-4641-9bde-2b296828ba22 /home
sdb xfs a95db32b-2882-472f-b86d-eaf2742a4e22 /oracleclp/oracle/240411151451
sr0 iso9660 CentOS 7 x86_64 2018-05-03-20-55-23-00 /run/media/root/CentOS 7 x86_64
[root@localhost ~]# mount | grep oracleclp
/dev/sdb on /oracleclp/oracle/240411151451 type xfs (rw,relatime,nouuid,attr2,inode64,sunit=8,swidth=1024,noquota)