目录
前言
磁盘分区结构
硬盘的接口
磁盘分区表示
1,MBR
2.磁盘分区的表示
3.linux系统使用的文件系统类型
管理磁盘及分区
fdisk的命令
管理文件系统
创建文件系统
1.mkfs命令使用
挂载,卸载文件系统
mount命令的基本使用格式:
U盘的挂载
卸载文件系统
LVM组成
LVM的管理命令
LVM使用
pv(物理卷)相关操作
逻辑卷(LV)操作
5.格式化并挂载LV
本章总结
在计算机系统中,磁盘作为核心存储设备,承载这操作系统,应用程序及用户数据的管理和存储任务。静态分区的局限性逐渐显现,如容量固定·难以动态调节等问题。
对于解决传统分区的不足,逻辑卷管理(LVM)技术应运而生。LVM通过在物理磁盘和文件系统之间引入逻辑层,实现存储资源的动态分配和扩展。本章讲解磁盘结构·分区操作·文件系统管理及LVM配置流程,帮助读者掌握高效管理磁盘的技术。
物理机构:由盘片和磁头组成,都是每面一个
数据结构:每个盘片被划分为一个个磁道,每个磁道又划分为一个个扇区。每个盘面对应一个磁头。所有的磁头都是连在同一个磁臂上的,因此所有磁头只能“共进退”。所有盘面中相对位置相同的磁道组成柱面
介绍了磁盘分区了,那它们是如何工作的?
由于计算机只认识二进制,而数据都在盘面上
所以*盘面上就存储了大量的二进制*
类比到磁铁的正负极,盘面是通过*磁性来区分0,1*的
读取操作时,*磁头*感应磁性场盘面上的*磁变化*,并将其转换为对应的数据
写入操作时,磁头*改变磁场的极性*,将数据写入磁性盘面
硬盘按数据接口不同,大致分为ATA(IDE)和SATA以及SCSI和SAS。
现在流行的是SAS(Serial Attached SCSI)是新的SCSI技术,和SATA相同,都是以序列技术传输。
MBR是主引导记录(Master BOOT Record),位于第一个物理扇区。它包括主引导程序和硬盘分区表。分区表有四个记录区,每一个占16个字节。
硬盘分为主分区·扩展分区和逻辑分区,一般情况下主分区只有四个,而扩展分区可以作为特殊的主分区。在扩展分区上建立逻辑分区。主分区放操作系统,扩展分区放其他文件数据。
在windows系统中使用盘符的方式表示主分区和扩张分区。
在linux系统中是如何表示的,具体情况如下:
硬盘:对于“IDE”接口的硬盘设备,表示“hdx”形式的文件名,对于“SCSI”接口的硬盘设备,表示“sdx”形式的文件名。其中“x“为a,b,c,d的字母顺序来填写
分区:表示分区时,在硬件设备的文件名作为基础,后面添加相对应的数字序号。
注意:由于主分区只能有四个,所以主分区和扩展分区序号只能在1~4之间,逻辑分区从5开始。
Linux 文件系统是用于在磁盘和分区上命名、存储、检索和更新文件的方式。它由用户数据和元数据(如文件名、创建时间、修改时间、大小以及目录层次结构中的位置等)组成。Linux 支持多种文件系统类型,包括但不限于 Ext2、Ext3、Ext4、BtrFS、GlusterFS 等。
常见的 Linux 文件系统类型
Ext2/Ext3/Ext4: Ext3 是 Linux 中常见的默认文件系统,它是 Ext2 的升级版本,采用日志式管理机制,具有快速恢复能力。Ext4 是 Ext3 的进一步发展,提供了更高的存储限制和更好的性能。
Swap: Linux 中用作交换分区的文件系统,安装 Linux 时必须建立。
vfat: Linux 中的 FAT 文件系统,包括 FAT12、FAT16 和 FAT32。
NFS: 网络文件系统,允许在局域网内实现文件共享。
ISO9660: 光盘使用的文件系统,Linux 对光盘有很好的支持。
XFS: 适合高容量磁盘和大型文件,具有高性能,在windows系统中使用较多。
SAS:是现在Linux服务器主要使用的接口,具有超强的传输速度。
在Linux系统中,我们使用fdisk磁盘及分区管理工具,它时Linux系统自带的工具之一
Linux fdisk命令的基本语法 fdisk命令的基本语法如下: fdisk [选项] 设备文件名 其中,设备文件名指定要进行分区操作的硬盘设备,如/dev/sda。 Linux fdisk命令的常用选项说明 以下是fdisk命令的一些常用选项说明: -l:显示设备的分区表信息。 -n:创建一个新的分区。 -d:删除一个分区。 -p:打印分区表的内容。 -t:更改分区的类型。 -u:以扇区单位显示分区信息。 -w:将分区表写入磁盘。 -q:不保存,直接退出磁盘
当建立完分区后,还需对分区进行格式化并挂载到指定目录,才能用于使用。
在linux系统在使用mkfs(Make Filesystem,)命令工具进行格式化转换不同类型的文件系统。而SWAP交换分区使用MKswap命令进行格式化。
mkfs的命令格式为: mkfs -t 文件系统类型 分区设备
实例:创建xfs文件系统
[root@localhost ~]# mkfs -t xfs /dev/sda1 meta-data=/dev/sda1 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=1 = reflink=1 bigtime=1 inobtcount=1 nrext64=1 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
首先在fdisk工具中将目标分区的ID号设为82,在使用mkswap命令进行添加”虚拟内存“
实例:
Hex 代码或别名(输入 L 列出所有代码):82 已将分区“Linux”的类型更改为“Linux swap / Solaris”。 分区表记录没有按磁盘顺序。 [root@localhost ~]# mkswap /dev/sda5 正在设置交换空间版本 1,大小 = 5 GiB (5368705024 个字节) 无标签,UUID=261a1a87-1f0e-4f1b-8d4e-5f7ea0dcd7c0
对于新添加的swap分区,需使用swapon命令启用,swapoff进行关闭。
实例:
[root@localhost ~]# cat /proc/meminfo |grep "SwapTotal"
SwapTotal: 4194300 kB //查看分区大小
[root@localhost ~]# swapon /dev/sda5 打开交换分区
[root@localhost ~]# cat /proc/meminfo |grep "SwapTotal"
SwapTotal: 9437176 kB //查看已打开交换分区
[root@localhost ~]# swapoff /dev/sda5 //关闭交换分区
dnf -y install nrfsgrops #下载ntfs相关的软件包,才能进行构建ntfs系统
mkfs -t ntfs /dev/sda1
mount [ -t 文件系统类型 ] 存储设备 挂载点
我们一般情况下经常会把磁盘文件挂载在linux系统中。下面主要介绍如何把U盘、等挂载到linux系统中。
USB接口的U盘对于linux系统而言是当作SCSI设备对待的,插入U盘后,再次使用“fdisk -l”命令,发现磁盘列表中多了一个硬盘/dev/sdb,容量大小2G,和插入的U盘容量大小一致。同时系统多了一个/dev/sdb1的磁盘分区。这个磁盘分区就是要挂载的U盘。新建一个目录作为U盘的挂接点。比如说要把U盘挂载到 /mnt/usb,那么需要采用下列命令新建 /mnt/usb。 mkdir /mnt/usb 然后就可以采用mount命令把U盘挂载在/mnt/usb。 mount /dev/sdb1 /mnt/usb 输入命令 cd /mnt/usb进入目录/mnt/usb,然后输入 ls命令就可以查看U盘里的内容了。
U盘使用完毕后,为了避免损坏U盘或者丢失数据,可以采用 umount命令解挂U盘,类似于windows下的弹出U盘操作。
mount命令的”-o”选项关在镜像到指定地方
mount [-0 挂在参数] 存储设备 挂载点
[root@localhost ~]# mount /dev/sda1 /a1 [root@localhost ~]# umount /a1 //通过挂载店卸载对应目录
查看磁盘使用情况
用法:df [选项]... [文件]...
参数:
-h : 显示容量单位
-T: 显示对应文件类型
[root@localhost ~]# df -hT
文件系统 类型 大小 已用 可用 已用% 挂载点
/dev/mapper/openeuler-root ext4 191G 1.8G 180G 1% /
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 1.7G 0 1.7G 0% /dev/shm
tmpfs tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs tmpfs 675M 9.1M 666M 2% /run
tmpfs tmpfs 1.7G 0 1.7G 0% /tmp
/dev/nvme0n1p2 ext4 974M 174M 733M 20% /boot
打开/etc/fstab目录,该目录是mount命令的配置文件,下面该图说明配置,以后每个命令都可以这样写
多个物理卷组成卷组,卷组是一个整体,在里面创建逻辑卷。
1、物理卷 (PV,Physical Volume) 一个可供存储LVM的块设备. 如硬盘分区(MBR或GPT分区)、SAN 的硬盘、RAID 或 LUN,一个回环文件, 一个被内核映射的设备 (例如 dm-crypt),它包含一个特殊的LVM头,它是 LVM 构建的实际硬件或存储系统。
2、卷组 (VG,Volume Group) 卷组是对一个或多个物理卷的集合,并在设备文件系统中显示为 /dev/VG_NAME。
3、逻辑卷 (LV,Logical Volume) 逻辑卷是可供系统使用的最终元设备,它们在卷组中创建和管理,由物理块组成,实际上就是一个虚拟分区,并显示为 /dev/VG_NAME/LV_NAME,通常在其上可以创建文件系统。
4、物理块 (PE,Physical Extends) 一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。
功能 | pv(物理卷)命令 | VG(卷组)命令 | LV(逻辑卷)命令 |
---|---|---|---|
scan(扫描) | pvscan | vgscan | lvscan |
create(创建) | pvcreate | vgcreate | lvcreate |
display(显示) | pvdisplay | vgdisplay | lvdisplay |
remove(删除) | pvremove | vgremove | lvremove |
extend(添加) | vgextend | lvextend | |
reduce(减少) | vgereduce | lvreduce |
①创建物理卷 格式:pvcreate device1 device2
[root@localhost ~]# pvcreate /dev/sda4 Physical volume "/dev/sda4" successfully created.
②查看当前物理卷信息 格式:pvs pvscan pvdisplay
[root@localhost ~]# pvdisplay /dev/sda4 "/dev/sda4" is a new physical volume of "20.00 GiB" --- NEW Physical volume --- PV Name /dev/sda4 VG Name PV Size 20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID xzPpoB-ryOE-n1ZZ-j8fj-zhFv-dWS5-Lmwdmd
③删除pv 格式:pvremove device1 device2
[root@localhost ~]# pvremove /dev/sda4 Labels on physical volume "/dev/sda4" successfully wiped.
vg(卷组)相关操作
①创建卷组 格式:vgcreate vg_name pv1 pv2
创建卷组vg_test1,并把/dev/sda1和/dev/sda2加入到卷组中
[root@localhost ~]# vgcreate vg_test1 /dev/sda1 /dev/sda2 Volume group "vg_test1" successfully created
②查看卷组 格式:vgs vgscan vgdisplay
[root@localhost ~]# vgdisplay vg_test1 --- Volume group --- VG Name vg_test1 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 19.99 GiB PE Size 4.00 MiB Total PE 5118 Alloc PE / Size 0 / 0 Free PE / Size 5118 / 19.99 GiB VG UUID COE9ed-pYFY-y5UH-jZui-cJYL-7ZC8-ry7HDA
③删除卷组 格式:vgremove 卷组名
[root@localhost ~]# vgremove vg_test1 Volume group "vg_test1" successfully removed
④扩容卷组 格式:vgextend 卷组名 device
[root@localhost ~]# vgextend vg_test1 /dev/sda4 Volume group "vg_test1" successfully extended
⑤缩小卷组 格式:vgreduce 卷组名 device
[root@localhost ~]# vgreduce vg_test1 /dev/sda4 Removed "/dev/sda4" from volume group "vg_test1"
①创建逻辑卷 格式:lvcreate -L
lvcreate -L 指定要给的lv的大小 卷组的名称 -n 给逻辑卷命名
[root@localhost ~]# lvcreate -L 15G vg_test1 -n lv_test Logical volume "lv_test" created.
②查看逻辑卷 格式:lvs lvscan lvdisplay
[root@localhost ~]# lvscan ACTIVE '/dev/openeuler/swap' [4.00 GiB] inherit ACTIVE '/dev/openeuler/root' [194.99 GiB] inherit ACTIVE '/dev/vg_test1/lv_test' [15.00 GiB] inherit
③删除逻辑卷 格式:lvremove /dev/vg_test1/lv_test
lvremove 逻辑卷路径
④扩容逻辑卷 格式:lvextend -L
lvextend -L 扩容数量 逻辑卷路径
[root@localhost ~]# lvextend -L +3G /dev/vg_test1/lv_test Size of logical volume vg_test1/lv_test changed from 15.00 GiB (3840 extents) to 18.00 GiB (4608 extents). Logical volume vg_test1/lv_test successfully resized.
①格式化逻辑卷 格式:mkfs.
mkfs.
[root@localhost ~]# mkfs.xfs /dev/vg_test1/lv_test meta-data=/dev/vg_test1/lv_test isize=512 agcount=4, agsize=1179648 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=1 = reflink=1 bigtime=1 inobtcount=1 nrext64=1 data = bsize=4096 blocks=4718592, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
②挂载逻辑卷 格式:mount /dev/vg_test1/lv_test 目录
mount 逻辑卷路径 目录
[root@localhost ~]# mount /dev/vg_test1/lv_test test [root@localhost ~]# df -HT 文件系统 类型 大小 已用 可用 已用% 挂载点 /dev/mapper/openeuler-root ext4 205G 1.9G 193G 1% / devtmpfs devtmpfs 4.2M 0 4.2M 0% /dev tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs tmpfs 4.2M 0 4.2M 0% /sys/fs/cgroup tmpfs tmpfs 708M 9.5M 698M 2% /run tmpfs tmpfs 1.8G 0 1.8G 0% /tmp /dev/nvme0n1p2 ext4 1.1G 183M 768M 20% /boot /dev/mapper/vg_test1-lv_test xfs 20G 403M 19G 3% /root/test 如
希望读者可以通过这篇文章掌握从基础磁盘分区到高级存储管理的全流程操作,理解LVM在提升存储资源利用率的优势,为实际运维场景中