磁盘存储挂载与使用
磁盘挂载
磁盘挂载(mounting)是指在操作系统中将一个存储设备(如硬盘、SSD、光盘、U盘等)连接到文件系统,使其可以被系统和用户访问和使用。挂载后,存储设备上的文件和目录将会出现在指定的挂载点(通常是一个空的目录)下,用户可以通过这个挂载点来访问和操作这些文件和目录。
使用mount查看磁盘挂载信息
[root@localhost yum.repos.d]# mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=1048576,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,size=299212k,nr_inodes=819200,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,size=4096k,nr_inodes=1024,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,rdma)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpu,cpuacct)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
/dev/mapper/openeuler-root on / type ext4 (rw,relatime,seclabel)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,nosuid,noexec,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=14884)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime,seclabel)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime,seclabel)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,seclabel,size=748028k,nr_inodes=1048576)
/dev/vda1 on /boot type ext4 (rw,relatime,seclabel)
信息的解释
- 设备名:例如
/dev/sda1
、/dev/sda2
、/dev/sdb1
等,表示挂载的设备或分区。 - 挂载点:例如
/
、/home
、/mnt/mydisk
等,表示设备挂载到的目录。 - 文件系统类型:例如
ext4
、iso9660
、squashfs
等,表示设备使用的文件系统类型。 - 挂载选项:例如
rw
、relatime
、ro
、nosuid
等,表示挂载时使用的选项。
fdisk -l查看磁盘信息
[root@localhost boot]# fdisk -l
Disk /dev/vda:40 GiB,42949672960 字节,83886080 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x849d8593
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/vda1 * 2048 2099199 2097152 1G 83 Linux
/dev/vda2 2099200 83886079 81786880 39G 8e Linux LVM
Disk /dev/mapper/openeuler-root:36.94 GiB,39665532928 字节,77471744 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/openeuler-swap:2.05 GiB,2206203904 字节,4308992 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
使用df -h查看磁盘挂载,容量,利用率
[root@localhost boot]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 731M 0 731M 0% /dev/shm
tmpfs 293M 30M 263M 11% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/mapper/openeuler-root 37G 1.8G 33G 6% /
tmpfs 731M 0 731M 0% /tmp
/dev/vda1 974M 151M 756M 17% /boot
磁盘分区
硬盘分区是使用分割编辑器(partition editor)在磁盘上划分几个逻辑部分,碟片一旦划分成数个分割(Partition),不同类的目录与文件可以存储进不同的分割。
磁盘分区主要有 MBR 和 GPT 两种格式,两种不同的磁盘分区表标准
使用 lsblk
列出系统上所有磁盘列表
[root@localhost boot]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 223.5M 0 rom
vda 252:0 0 40G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 39G 0 part
├─openeuler-root 253:0 0 36.9G 0 lvm /
└─openeuler-swap 253:1 0 2.1G 0 lvm [SWAP]
从输出信息来看,主要分为两个sr0,vda装置,vda中分为两个分区vda1,vda2,vda2中还有 LVM 产生的文件系统
信息解释
- NAME:装置文件名,会省略 /dev 等前导目录
- MAJ:MIN:其实核心认识的装置都是通过这两个代码来熟悉的,分别是:
主要:次要
装置 - RM:是否为颗拆卸装置(removable device)。如光盘、USB 磁盘等
- SIZE:容量
- RO:是否为只读
- TYPE:磁盘 disk、分区槽 partition、只读存储器 rom
- MOUTPOINT:挂载点
分区架构
- 主分区
- 扩展分区(它本身不能存储数据,而是一个容器,可以包含多个逻辑分区)
- 逻辑分区1
- 逻辑分区2
- 逻辑分区3
分区命名规则
/dev/vd{a-z}{number}
/dev/
设备名称vd
设备类型(hd/sd
){a-z}
设备序号{number}
分区编号
磁盘分区方案
MBR
使用 parted /dev/vda print
列出磁盘的分区表类型与分区信息
[root@localhost boot]# parted /dev/vda print
型号:Virtio 块设备 (virtblk)
磁盘 /dev/vda:42.9GB
扇区大小 (逻辑/物理):512B/512B
分区表:msdos
磁盘标志:
编号 起始点 结束点 大小 类型 文件系统 标志
1 1049kB 1075MB 1074MB primary ext4 启动
2 1075MB 42.9GB 41.9GB primary lvm
我们看到分区表类型 msdos
是指MBR分区表 — 使用 fdisk
分区工具,执行以下操作对某个磁盘进行操作
fdisk /dev/vda
GPT
- GPT 分区标准摆脱了 MBR 的最大支持 2TB 的限制,支持更大的磁盘容量
- 没有主分区和逻辑分区的区别
- 每一个分区有一个全局标识符(GUID)
- 使用
gdisk
工具
parted 分区工具
parted /dev/vda
进入交互模式
fstab 介绍
静态存储了磁盘存储挂载信息,在系统启动时,会自动调取该文件进行磁盘挂载,这样就不需要手动进行挂载
fstab文件格式
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/sda1 /boot ext4 defaults 1 2
/dev/mapper/root / ext4 defaults 0 1
UUID=12345678-9ab /home ext4 defaults 0 2
<file system>
:文件系统的设备路径或UUID<mount point>
:文件系统要挂载到的路径<type>
:文件系统类型<options>
:挂载选项,例如defaults
、noauto
、ro
、rw
等<dump>
:用于备份工具的备份级别,默认为0<pass>
:用于fsck
工具的文件系统检查顺序,默认为0(不检查)
逻辑卷管理(LVM)
LVM 是 Linux 系统对磁盘分区的一种管理机制,是在磁盘分区之上建立一个逻辑层,这个逻辑层让多个硬盘或者分区看起来像一块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而大大提高了分区的灵活性。
基本概念
- PE(Physical Extend):物理单元,能被 LVM 寻址的最小单元
- PV(Physical Volume):物理卷,即实际存在的分区
- VG(Volume Group):卷组,一个或多个物理卷组成卷组,可以将卷组想象成为一个新的逻辑磁盘
- LV(Logical Volume):逻辑卷,将卷组重新分配为多个逻辑卷,是用户实际使用的逻辑设备
使用 LVM 创建管理逻辑卷
物理卷操作
- 创建物理卷
命令为pvcreate [option] devname
详细用法使用pvcreate --help
查看 - 查看物理卷信息
命令为pvdisplay [option] devname
,我们可以看到信息包括如下
--- Physical volume ---
PV Name /dev/vda2
VG Name openeuler
PV Size <39.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 9983
Free PE 0
Allocated PE 9983
PV UUID yoL1lh-t5IG-VVPT-13dO-LxVD-LXvk-NnkUfE
- 修改物理卷信息
命令为pvchange [option] devname
详细用法使用pvchange --help
查看 - 删除物理卷
命令为pvremove [option] devname
卷组操作
- 创建卷组
vgcreate [option] vgname pvname ...
- 查看卷组
vgdisplay [option] [vgname]
- 修改卷组属性
vgchange [option] vgname
- 扩展卷组
vgextend [option] vgname pvname ...
- 收缩卷组
vgreduce [option] vgname pvname ...
- 删除卷组
vgremove [option] vgname
逻辑卷操作
- 创建逻辑卷
lvcreate [option] -n lvname vgname
- 查看逻辑卷
lvdisplay [option] [lvname]
- 调整逻辑卷大小
lvresize [option] lvname
- 扩展逻辑卷
lvextend [option] lvname
- 收缩逻辑卷
lvreduce [option] lvname
- 删除逻辑卷
lvremove [option] lvname
参考文章: