MarkLee's Studio.

openEuler:物理存储及逻辑卷管理

2024/07/28
loading

磁盘存储挂载与使用

磁盘挂载

磁盘挂载(mounting)是指在操作系统中将一个存储设备(如硬盘、SSD、光盘、U盘等)连接到文件系统,使其可以被系统和用户访问和使用。挂载后,存储设备上的文件和目录将会出现在指定的挂载点(通常是一个空的目录)下,用户可以通过这个挂载点来访问和操作这些文件和目录。

使用mount查看磁盘挂载信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[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 等,表示设备挂载到的目录。
  • 文件系统类型:例如 ext4iso9660squashfs 等,表示设备使用的文件系统类型。
  • 挂载选项:例如 rwrelatimeronosuid 等,表示挂载时使用的选项。

fdisk -l查看磁盘信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[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查看磁盘挂载,容量,利用率

1
2
3
4
5
6
7
8
9
[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),不同类的目录与文件可以存储进不同的分割。

磁盘分区主要有 MBRGPT 两种格式,两种不同的磁盘分区表标准

使用 lsblk 列出系统上所有磁盘列表

1
2
3
4
5
6
7
8
[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 列出磁盘的分区表类型与分区信息

1
2
3
4
5
6
7
8
9
10
[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 分区工具,执行以下操作对某个磁盘进行操作

1
fdisk /dev/vda

GPT

  • GPT 分区标准摆脱了 MBR 的最大支持 2TB 的限制,支持更大的磁盘容量
  • 没有主分区和逻辑分区的区别
  • 每一个分区有一个全局标识符(GUID)
  • 使用 gdisk 工具

parted 分区工具

parted /dev/vda 进入交互模式

fstab 介绍

静态存储了磁盘存储挂载信息,在系统启动时,会自动调取该文件进行磁盘挂载,这样就不需要手动进行挂载

fstab文件格式

1
2
3
4
 # <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>:挂载选项,例如defaultsnoautororw
  • <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 ,我们可以看到信息包括如下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    --- 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

参考文章:
- Linux LVM 逻辑卷管理器

CATALOG
  1. 1. 磁盘存储挂载与使用
    1. 1.1. 磁盘挂载
      1. 1.1.1. 使用mount查看磁盘挂载信息
        1. 1.1.1.1. 信息的解释
      2. 1.1.2. fdisk -l查看磁盘信息
      3. 1.1.3. 使用df -h查看磁盘挂载,容量,利用率
    2. 1.2. 磁盘分区
      1. 1.2.1. 使用 lsblk 列出系统上所有磁盘列表
        1. 1.2.1.1. 信息解释
      2. 1.2.2. 分区架构
      3. 1.2.3. 分区命名规则
    3. 1.3. 磁盘分区方案
      1. 1.3.1. MBR
      2. 1.3.2. GPT
      3. 1.3.3. parted 分区工具
    4. 1.4. fstab 介绍
      1. 1.4.1. fstab文件格式
  2. 2. 逻辑卷管理(LVM)
    1. 2.1. 基本概念
    2. 2.2. 使用 LVM 创建管理逻辑卷
      1. 2.2.1. 物理卷操作
      2. 2.2.2. 卷组操作
      3. 2.2.3. 逻辑卷操作
    3. 2.3. 参考文章:- Linux LVM 逻辑卷管理器