Linux系统------磁盘管理

目录

Linux操作系统磁盘管理

一、硬盘介绍

1、硬盘的物理结构

1.1、硬盘结构

1.2、磁头数、磁道、柱面、扇区

2、CHS编号

2.1、磁道编号规则

2.2、扇区编号规则

2.3、通过CHS计算硬盘容量

3、磁盘存储划分

3.1、第一个扇区存储的数据

3.2、硬盘分区

4、开机流程

5、要点

6、磁盘存储数据的形式

二、Linux文件系统

1、根文件系统

2、虚拟文件系统

3、真文件系统

3.1、ext4

3.2、xfs

4、伪文件系统

4.1、procfs

4.2、devtmpfs

4.3、sysfs

三、磁盘分区与挂载

​编辑

​编辑

1、磁盘分区方式

MBR

GPT

表示形式

2、分区命令

2.1、fdisk命令

2.2、parted命令

3、查看与识别命令

3.1、lsblk命令

3.2、partprobe命令

3.3、blkid命令

4、格式化命令

5、挂载命令

4.1、mount命令&swapon命令

4.2、umount命令&swapoff命令

四、LVM逻辑卷

1、概述

1.1、运行原理

1.2、LVM 相关概念:

1.3、挂载流程

2、管理命令

3、配置案例

3.1、构建LVM逻辑卷

3.2、扩容LVM逻辑卷

3.3、缩容LVM逻辑卷(不建议)

五、磁盘配额

1、概述

2、配置命令

2.1、quota命令

2.2、xfs_quota命令

3、配置案例

3.1、xfs配额

3.2、ext4配额(了解)

六、磁盘检测与修复

1、fsck命令

2、xfs_repair命令

3、badblocks命令

七、文件系统备份与恢复

1、xfsdump命令

2、xfsrestore命令

附录:xfs常用命令


Linux操作系统磁盘管理

Linux操作系统磁盘管理一、硬盘介绍1、硬盘的物理结构1.1、硬盘结构1.2、磁头数、磁道、柱面、扇区2、CHS编号2.1、磁道编号规则2.2、扇区编号规则2.3、通过CHS计算硬盘容量3、磁盘存储划分3.1、第一个扇区存储的数据3.2、硬盘分区4、开机流程5、要点6、磁盘存储数据的形式二、Linux文件系统1、根文件系统2、虚拟文件系统3、真文件系统3.1、ext43.2、xfs4、伪文件系统4.1、procfs4.2、devtmpfs4.3、sysfs三、磁盘分区与挂载1、磁盘分区方式MBRGPT表示形式2、分区命令2.1、fdisk命令2.2、parted命令3、查看与识别命令3.1、lsblk命令3.2、partprobe命令3.3、blkid命令4、格式化命令5、挂载命令4.1、mount命令&swapon命令4.2、umount命令&swapoff命令四、LVM逻辑卷1、概述1.1、运行原理1.2、LVM 相关概念:1.3、挂载流程2、管理命令3、配置案例3.1、构建LVM逻辑卷3.2、扩容LVM逻辑卷3.3、缩容LVM逻辑卷(不建议)五、磁盘配额1、概述2、配置命令2.1、quota命令2.2、xfs_quota命令3、配置案例3.1、xfs配额3.2、ext4配额(了解)六、磁盘检测与修复1、fsck命令2、xfs_repair命令3、badblocks命令七、文件系统备份与恢复1、xfsdump命令2、xfsrestore命令附录:xfs常用命令八、RAID类型介绍与应用场景1. RAID 0(条带化)2. RAID 1(镜像)3. RAID 5(分布式奇偶校验)4. RAID 6(双分布式奇偶校验)5. RAID 10(镜像+条带化)其他 RAID 类型对比总结选择建议注意事项

一、硬盘介绍

文件系统是Linux系统的核心,在Linux系统中,一切皆文件。对于开发者而言,编程过程中通常用到的是文件IO。在open函数打开文件,read函数读取文件的过程底层原理如何?本文件系统系列文章主要尝试针对的是这部分内容进行深入的讲解。

文件最终是存储在磁盘上,文件的存取,最终是读写磁盘。

1、硬盘的物理结构

1.1、硬盘结构

其中:

  • 每个盘片有两面,两面都可以存储数据。

  • 每个盘面都有一个磁头,用于存取数据。

  • 所有磁头都是固定的,一起做物理移动。但是每次只有一个磁头执行存取数据的任务,选择使用哪个磁头是由系统控制的。磁头间的切换非常迅速,而磁头摆动寻道则比较慢。

  • 磁头摆动,找到要读取数据所在的磁道;盘片通过转动,将数据“送到”磁头下。

1.2、磁头数、磁道、柱面、扇区

  • 磁头数: 每个盘面都有一个磁头,因此磁头数 = 盘面数。

  • 磁道: 上以盘片轴心为圆心,不同半径的同心圆称为磁道,磁道不是真正肉眼可看见的一道一道“坑”,而是被磁盘上被磁化的区域,磁道之间有一定的间隙,以免磁道之间磁介质相互影响。

  • 扇区: 每个磁道被等分为若干个弧段(扇区),每个扇区可以存放512个字节的数据。扇区是磁盘驱动器向磁盘读写数据的最小单元。

  • 柱面: 不同盘片半径相同的磁道组成的一个“柱面”。

2、CHS编号

所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区)。每个柱面、磁头、扇区都有自己的编号。

2.1、磁道编号规则

  • 磁头编号: 从上到下,分别为磁头0号,磁头1号......

  • 柱面编号: 最外圈的柱面编号为0,往里依次递增1,2,3.....

2.2、扇区编号规则

每个磁道都可以被分为若干个扇区,假设有18个扇区,编号依次为1,... 18。这里的1...18在一个磁道中是唯一的,但不同磁道之间会重复。因此,要确定一个扇区在硬盘(多个盘片)中的具体位置,则需要结合柱面号/磁头号/扇区号来确定——绝对扇区编号,或者是为整个硬盘的所有扇区分配一个唯一的编号——DOS扇区编号(也称为相对扇区编号或逻辑扇区编号)。

  • 绝对扇区: 由柱面号/磁头号/扇区号唯一确定。

  • DOS(Disk Operating System)扇区(逻辑扇区): 磁盘操作系统为了管理方便,会将柱面号/磁头号/扇区号确定的扇区编号转换为易于管理和计算的单一数字编号,称为相对扇区编号或逻辑扇区编号。DOS扇区编号是从柱面0/磁头0/扇区1开始的,编号为0,依次递增,即柱面0/磁头0/扇区18的DOS扇区编号为18;柱面0/磁头1/扇区1的DOS扇区编号为19...。每个分区的第一个扇区的逻辑扇区编号为0。

2.3、通过CHS计算硬盘容量

硬盘存储容量=磁头数×柱面数×每个磁道扇区数×每个扇区字节数

3、磁盘存储划分

3.1、第一个扇区存储的数据

硬盘的第一个扇区(逻辑编号为0)可以说是整个硬盘最重要扇区了,它主要存储两大信息:

  • 主引导分区(Master Boot Record,MBR): 存放引导加载程序,大小为446字节。

  • 分区表(partition table): 记录整块硬盘分区的状态,占64字节,每一个分区信息占16个字节。

3.2、硬盘分区

分区的最小单位为柱面(Cylinder),也就是说,分区其实就是指定从第几个柱面到第几个柱面属于哪个区。

假设硬盘有400个柱面,平均分为4个区(C、D、E、F盘),则第四个分区F的柱面范围是第301号到第400号柱面。

分区表中,记录的就是就是每个分区的起始柱面号和结束柱面号。因为分区表只有64字节,因此最多只能容纳4个分区的记录(硬盘默认),要想分更多的去,则需要通过扩展分区来创建逻辑分区。

4、开机流程

  1. 加载BIOS: BIOS(Base Input Output System,基本输入输出系统,读做/'baious/)是硬件厂商写入到主板ROM里的一个程序,电脑开机时,会最先执行BIOS。

  2. MBR: BIOS在执行的过程中,会根据用户设置(即在BIOS的Boot界面选择的优先启动项,U盘/硬盘/光驱),如果硬盘的优先级最高,则计算机会从硬盘的第一个扇区的MBR中的读取引导加载程序(Boot Loader)。和BIOS一样,主引导分区MBR是硬件本身会支持的东西。

  3. 引导加载程序:引导加载程序(Boot Loader)是用于读取操作系统内核文件的一个小软件,不同的操作系统有各自的引导加载程序。每个分区都可以有自己的文件系统,有自己的引导扇区,在启动的过程中,用户可以选择是直接加载引导程序所在分区的操作系统,还是将引导加载功能交给各分区引导扇区中的加载程序。boot loader的功能主要有:

    • 提供菜单:让用户选择不同的开机选项,是多重引导的重要功能。

    • 载入内核文件:直接指向可开机的程序区段,开始操作系统。

    • 转交其他loader: 将引导加载功能转交给其他loader负责。

  4. 操作系统内核文件:最后,引导加载程序加载操作系统的内核文件,启动操作系统!

5、要点

  1. 每个分区都有自己的引导扇区(boot sector)。

  2. 实际可开机的操作系统内核文件是存放在各个分区内的,如在C盘安装Windows系统,在D盘安装Linux操作系统。

  3. 引导加载程序(boot loader)只会认识自己所在分区内的可开机内核文件,以及其他boot loader(相当于一个指针,指向其他loader)。

  4. loader可以直接指向或者间接地将管理权交给其他loader。

  5. 一点经验:如果要安装多系统,最好先安装Windows,后安装Linux。因为Windows会强制覆盖MBS,也就是说,如果你先装Linux再装Windows,MBR中就只有Windows的相关选项(Linux的被覆盖掉了)。而Linux则不会强制覆盖MBR,你可以选择将Linux的引导程序安装在MBR或者其所在分区的引导扇区中;你也可以在Linux的引导程序中设置Windows的开机选项。

6、磁盘存储数据的形式

磁盘以二进制的形式存储数据。我们平时编程过程中读写文件模式可能有文本形式/二进制形式,文件也有文本文件、音频文件、图片文件...等各种不同类型的文件,但这些文件在磁盘上都是以二进制的方式存储。

可以想像一下,二进制中的0,对应磁盘上的一个“凹”点,1对应磁盘上的一个“凸”点。

二、Linux文件系统

计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。

文件系统的本质:一种方便管理、组织、访问数据的软件。

  • 对于管理来说,主要是磁盘空闲空间的管理

  • 对于组织来说,主要是通过引入文件(inode)、树形目录(dentry)来组织用户的数据。文件包含用户的数据、树形为用户提供了一个对数据进行分类的功能。

  • 对于访问来说,通过目录+文件名的方式进行文件创建、删除、读、写(也就是所谓的增、删、查、改)。

1、根文件系统

  根文件系统(rootfs)是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

2、虚拟文件系统

  虚拟文件系统VFS软件抽象层为用户屏蔽了底层文件系统的差异,向上层提供了统一地访问接口。

3、真文件系统

  真文件系统其实是实际存储设备的文件系统,挂载于EEPROM、 Nor FLASH、 NAND FLASH、 eMMC 等存储器中。

3.1、ext4

EXT4是第四代扩展文件系统(Fourth extended filesystem,缩写为 ext4)是Linux系统下的日志文件系统,使用64位空间记录块数量和i-节点数量。

3.2、xfs

XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中,目前CentOS 7将XFS+LVM作为默认的文件系统。据官方所称,XFS对于大文件的读写性能较好。

4、伪文件系统

  Linux内核提供了sysfs、procfs、devtmpfs等伪文件系统,伪文件系统存在于内存,不占用硬盘。以文件地形式向用户提供一些系统信息,用户读写这些文件就可以读取、修改系统的一些信息。

4.1、procfs

  procfs是 进程文件系统的缩写,包含一个伪文件系统(启动时动态生成的文件系统),用于通过内核访问进程信息。这个文件系统通常被挂载到 /proc 目录。

  由于 /proc 不是一个真正的文件系统,它也就不占用存储空间,只是占用有限的内存。

4.2、devtmpfs

  devtmpfs 的功用是在 Linux 核心 启动早期建立一个初步的 /dev,令一般启动程序不用等待 udev(udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。),缩短 GNU/Linux 的开机时间。

  如果将一个设备连接到Linux系统时,通常需要一个设备驱动程序才能正常工作。此时通过设备文件或设备节点与设备驱动程序交互,这些是看起来像普通文件的特殊文件。由于这些设备文件就像普通文件一样,所以可以使用ls、cat等程序与它们交互。这些设备文件一般存放在/dev目录下。

4.3、sysfs

  sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。sysfs 文件系统被挂载在 /sys 挂载点上。

  Sysfs的目的是更好地管理系统上的设备,相比/dev目录无法做到这一点。Sysfs是一个虚拟文件系统,通常挂载在/sys目录下。它为我们提供了比在/dev目录中能够看到的更详细的信息。目录/sys和/dev在某些方面看起来非常相似,但它们确实有很大的不同。基本上,/dev目录很简单,它允许其他程序访问设备本身,而/sys文件系统用于查看信息和管理设备。

  /sys文件系统基本上包含了系统中所有设备的所有信息,比如制造商和型号、设备插入的位置、设备的状态、设备的层次结构等等。在这里看到的文件不是设备节点,因此实际上并不是在/sys目录下与设备交互,而是在管理设备。

三、磁盘分区与挂载

磁盘热扫描:

cd  /sys/class/scsi_host
for i in `ls /sys/class/scsi_host`;do echo "- - -" > ${i}/scan;done
[root@luolhost scsi_host]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 120G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 119G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 67G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 9.5G 0 rom /run/media/root/CentOS 7 x86_64

# cd /sys/class/scsi_host

# ls

1、磁盘分区方式

MBR

        主引导记录,有且仅支持四个主分区或三主一扩展多个逻辑,每分区最大2TB,兼容性好。不能超2TB,超过容易异常

GPT

        是GUID分区表(GUID Partition Table)的缩写; 含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。 自纠错能力强,一块磁盘上主分区数量不受(4个的)限制,支持大于18EB的总容量, 几乎没有上限,最大支持到128个分区,分区大小支持到256TB。

表示形式

硬盘:

/dev/hda:hd,表示硬盘的接口为IDE
/dev/sda:sd,表示硬盘的接口为scsi;a是硬盘的编号,如:b、c.....

分区:

/dev/sda1:第一个分区
/dev/sda2:第二个分区
假如使用MBR分区方式: 四个主分区,分别是:sda1,sda2,sda3,sda4;扩展分区:有且只能有一个,并且会占用主分区编号;
逻辑分区:基于扩展分区之上;/dev/sda5

2、分区命令

2.1、fdisk命令

fdisk - Linux分区表操作工具软件

选项:

选项作用
-l显示系统中已安装的分区表
-s显示分区的扇区数
-u显示分区的单元号
-c检查分区表是否正确
-d显示分区表中的错误
-n显示分区的起始和结束扇区号
-v显示fdisk的版本信息
-m显示分区的媒体类型
-u指定分区的单元号
-o指定分区的文件系统编号
-r从新分区表中创建一个新的根分区
-L创建逻辑分区(可选)
-p显示当前分区表的状态
-S设置分区的扇区大小(可选)
-a设置分区的主引导记录(MBR)类型(可选)

案例:

交互式分区

# fdisk  /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
​
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
​
Device does not contain a recognized partition table
使用磁盘标识符 0x41008f20 创建新的 DOS 磁盘标签。
​
命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
#解析
a 切换可引导标志
b 编辑 bsd 磁盘标签
c 切换 dos 兼容性标志
d 删除分区
g 创建新的空 GPT 分区表
G 创建 IRIX(SGI)分区表
l 列出已知分区类型
m 打印此菜单
n 添加新分区
o 创建新的空 DOS 分区表
p 打印分区表
q 不保存更改退出
s 创建新的空 Sun 磁盘标签
t 更改分区的系统 ID
u 更改显示/输入单位
v 验证分区表
w 将表写入磁盘并退出
x 额外功能(仅限专家
#分区类型
82  Linux 交换 / So
83  Linux
8e  Linux LVM 

创建主分区

第一步,先分区

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB
​
命令(输入 m 获取帮助):p
​
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x41008f20
​
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
​
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@luo ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  199G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  ├─centos-swap 253:1    0    2G  0 lvm  [SWAP]
  └─centos-home 253:2    0  147G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sr0              11:0    1 1024M  0 rom  
​保存并退出按w

第二步,格式化

[root@luo ~]# mkfs.ext4 /dev/sdb1

挂载源需要挂载点(目录),根下创建目录/sdb1

但是临时挂载重启会失效,如何让他开机也能使用呢?写入配置就行。

[root@luo ~]# mkdir /sdb1

[root@luo ~]# mount /dev/sdb1 /sdb1

第三步,写入配置

[root@luo ~]# vim /etc/fstab

/dev/sdb1 /sdb1 ext4 defaults 0 0

第四步,重启之前测试

[root@luo ~]# umount /dev/sdb1                卸载挂载源和挂载点都行

[root@luo ~]# mount -a              读取系统文件下和文件挂载相关的文件(/ettc/fstab),只要没报错一般都是成功的

挂载源写错会提示挂载源写错,挂载点写错会提示挂载点写错,文件系统写错也会报错

超级块是存储数据之外的信息,普通块是存储普通数据

第五步,故障排除查

#vim  /etc/fstab        将。挂载点/sdb1改成错误的/sdb12

#reboot   重启

进入系统登录

#df   -Th  发现它自己创建了一个

#vim  /etc/fstab        将/正确的挂载源/dev/sdb1  改成错误的/sdb12   使他找不到挂载源

#reboot

挂载源找不到进不到登录界面,看代码按Esc,等待到底,然后输入密码回车进入终端(操作系统

#df   -Th  查看磁盘情况

#journalctl   -xb 进入报错界面进行查看,一般红色就是报错,找到是挂载源报错

#vim  /etc/fstab           进去查看并修改挂载源,保存退出

:wq

#reboot    修改好后重启      就正常了

创建扩展分区

#扩展分区不能格式化,逻辑分区可以格式化,逻辑分区只存在于扩展分区里的

#有分区挂载时不能继续创建分区

#取消挂载 umount       挂上挂载  mount

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 15 GiB
​
命令(输入 m 获取帮助):p
​
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x41008f20
​
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    41943039    15727616    5  Extended

创建逻辑分区

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (10489856-41943039,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-41943039,默认为 41943039):+5G
分区 5 已设置为 Linux 类型,大小设为 5 GiB
​
命令(输入 m 获取帮助):p
​
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x41008f20
​
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    41943039    15727616    5  Extended
/dev/sdb5        10489856    20975615     5242880   83  Linux

非交互创建分区

[root@luo ~]# vim fdisk.txt 
n
p


+5G
w

##################以上为文件内容######
fdisk /dev/sdb < fdisk.txt
[root@luo ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  199G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  ├─centos-swap 253:1    0    2G  0 lvm  [SWAP]
  └─centos-home 253:2    0  147G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
├─sdb2            8:18   0    5G  0 part 
├─sdb3            8:19   0    5G  0 part 
└─sdb4            8:20   0    5G  0 part 
sr0              11:0    1 1024M  0 rom

2.2、parted命令

容量比较大时,一般会用这个

选项:

选项作用
-l,--list列出所有块设备上的分区布局
-h,--help显示此帮助信息

案例:

parted /dev/sdb
#对/dev/sdb进行分区或管理操作
(parted) mklabel gpt
#定义分区表格式
#(常用的有msdos和gpt分区表格式,msdos不支持2TB以上容量的磁盘,所以大于2TB的磁盘选gpt分
区表格式)
(parted) mkpart p1
#创建第一个分区,名称为p1
#(p1只是第一个分区的名称,用别的名称也可以,如part1)
File system type? [ext2]? ext3
#定义分区格式
#(不支持ext4,想分ext4格式的分区,可以通过mkfs.ext4格式化成ext4格式)
Start? 1
#定义分区的起始位置
#(单位支持K,M,G,T)百分比
End? 5T
#定义分区的结束位置
#(单位支持K,M,G,T)百分比
(parted) print
Number Start End Size File system Name 标志
#查看当前分区情况
#设置好后输入 quit 保存退出


(parted) rm
#rm删除命令
#(删除之前必须确保分区没有被挂载)
Partition number? 1
#删除第一个分区

3、查看与识别命令

3.1、lsblk命令

lsblk - list block devices

lsblk 是一个用于列出所有块设备的命令行工具。块设备包括硬盘、分区、USB 驱动器等。lsblk 提供了这些设备的详细信息,如设备名称、挂载点、大小、类型

选项:

案例:

[root@luo ~]# lsblk
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                 8:0    0  200G  0 disk 
├─sda1              8:1    0    1G  0 part 
└─sda2              8:2    0  199G  0 part 
  ├─centos-root   253:0    0   50G  0 lvm  /
  ├─centos-swap   253:1    0    2G  0 lvm  [SWAP]
  └─centos-home   253:2    0  147G  0 lvm  /home
sdb                 8:16   0   20G  0 disk 
└─sdb1              8:17   0   10G  0 part /sdb1
sdc                 8:32   0    8G  0 disk 
├─c2505-c2505_lv1 253:3    0    4G  0 lvm  /dir
└─c2505-c2505_lv2 253:4    0    2G  0 lvm  /mnt
sdd                 8:48   0    8G  0 disk 
sr0                11:0    1  4.3G  0 rom  

3.2、partprobe命令

partprobe - inform the OS of partition table changes

partprobe 是一个用于通知操作系统重新读取分区表的命令行工具。通常在创建、删除或修改分区后,操作系统可能不会立即识别这些更改,此时可以使用 partprobe 来强制内核重新读取分区表,而无需重启系统。

语法:

partprobe [-d] [-s] [devices...]

选项:

案例:

[root@c2407 ~]# partprobe /dev/sdb

3.3、blkid命令

查看磁盘分区的UUID

[root@c2407 ~]# blkid 
/dev/mapper/centos-root: UUID="f2840324-c37b-4223-bd2c-fce06d067b06" TYPE="xfs" 
/dev/sda2: UUID="42kMNt-GtE2-gNCd-bfIj-PPry-yTWY-TQ0B7r" TYPE="LVM2_member" 
/dev/sda1: UUID="93d6db3e-561a-4e35-8b4d-7e8d3c9d0e91" TYPE="xfs" 
/dev/sdb1: UUID="032cdca8-8800-46ef-82f3-cfa352f1ce5c" TYPE="xfs" 
/dev/sdb2: UUID="5742659f-2f02-4d97-989a-31eb63c69234" TYPE="ext4" 
/dev/sdb3: UUID="a33e9ee4-2d50-4e73-86c6-07f12bac0387" TYPE="swap" 
/dev/mapper/centos-swap: UUID="bee55b41-0179-440b-98be-a050e8b4b70c" TYPE="swap" 
/dev/mapper/centos-home: UUID="b13ce83a-ea51-4fb3-b6c9-feb1a56a282b" TYPE="xfs" 

4、格式化命令

mkfs命令

用于格式化磁盘分区,生成指定的文件系统。格式化后分区中的数据将丢失!!!

mkfs.ext4或mkfs.xfs两种文件类型

mkswap

语法:

mkfs [ -V ] [ -t 文件系统类型 ] [ fs-选项 ] 文件系统 [ 块 ]
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs 

选项:

选项作用
-t文件系统类型
-v产生冗长输出信息。帮助信息

案例:

1)普通文件系统格式化

[root@luo ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

2)swap文件系统格式化

swap虚拟内存

[root@luo ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old ext4 signature.
正在设置交换空间版本 1,大小 = 10485756 KiB
无标签,UUID=aa065408-9a4d-4daf-ba23-30801ffe6149


5、挂载命令

挂载源: 磁盘分区或者文件系统

挂载点: 文件系统访问的入口,通常是目录。

4.1、mount命令&swapon命令

mount - mount a filesystem,挂载一个文件系统;临时挂载,重启失效!

swapon:挂载swap文件系统

mkswapon  虚拟挂载之前需要用这个命令格式化,然后修改权限chmod 0600 

再swapon 进行挂载

语法:

mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...]  device|dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir

选项:

选项作用
-t指定要挂载的文件系统类型,常见的文件系统类型有ext4、ntfs、vfat等。
-o指定挂载选项,比如可以指定只读挂载(ro)、允许所有用户挂载(user)、允许执行程序挂载(exec)等。
-r以只读模式挂载文件系统。
-w以读写模式挂载文件系统
-a挂载/etc/fstab文件中定义的所有文件系统。
-n不重新挂载/etc/fstab文件中定义的文件系统。
-o remount重新挂载一个已经挂载的文件系统,可以改变挂载选项。
-o loop挂载一个loop设备上的文件系统。

案例:

1)普通文件系统挂载

[root@luo ~]# mount /dev/sdb1 /sdb1
[root@luo ~]# df -Th
文件系统                    类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root     xfs        50G  4.2G   46G    9% /
devtmpfs                    devtmpfs  894M     0  894M    0% /dev
tmpfs                       tmpfs     910M   11M  900M    2% /run
tmpfs                       tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-home     xfs       147G   38M  147G    1% /home
tmpfs                       tmpfs     182M   12K  182M    1% /run/user/42
/dev/mapper/c2505-c2505_lv2 ext4      2.0G  6.1M  1.8G    1% /mnt
/dev/mapper/c2505-c2505_lv1 xfs       4.0G   33M  4.0G    1% /dir
tmpfs                       tmpfs     182M     0  182M    0% /run/user/0
/dev/sdb1                   ext4      9.8G   37M  9.2G    1% /sdb1

2)swap文件系统挂载

不需要挂载点

root@luo ~]# mkswap /dev/sdb1 mkswap: error: /dev/sdb1 is mounted; will not make swapspace [root@luo ~]# umount /dev/sdb1 [root@luo ~]# mkswap /dev/sdb1 mkswap: /dev/sdb1: warning: wiping old ext4 signature. 正在设置交换空间版本 1,大小 = 10485756 KiB 无标签,UUID=805f5849-3d57-4dbe-9611-45a4bb43a7f4

[root@luo ~]# swapon /dev/sdb1

[root@luo ~]# free -m

        total used free shared buff/cache available

Mem: 1819 781 251 34 786 785

Swap: 12287 0 12287

[root@c2407 ~]# swapon /dev/sdb3
[root@c2407 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819         475         954          10         388        1186
Swap:          7167           0        7167
[root@c2407 ~]# swapon -a #读取fstab文件中的swap文件系统进行挂载

free -m  虚拟空间  ,一般物理内存小于16g的时候,一般我们给它的内存是1.5到2倍之间

[root@luo mnt]# mount -o remount,rw /dev/sdb1 /mnt/
[root@luo mnt]# mount

4)挂载模拟的块设备文件

[root@luo ~]# dd if=/dev/zero of=/test_disk bs=100M count=1
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,1.41262 秒,74.2 MB/秒

[root@luo ~]# du -ah /test_disk
100M    /test_disk
[root@luo ~]# mkfs.ext4 /test_disk

将test_disk挂载到/mnt目录下

第二种虚拟挂载

[root@luo ~]# swapon /test_disk 
swapon: /test_disk:将跳过 - 它似乎有空洞。
[root@luo ~]# !dd
dd if=/dev/zero of=/test_disk bs=100M count=1
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,0.392362 秒,267 MB/秒
[root@luo ~]# mkswap /test_disk
正在设置交换空间版本 1,大小 = 102396 KiB
无标签,UUID=604f4536-965c-49a2-9365-c0336ee186c7
[root@luo ~]# chmod 0600 /test_disk
[root@luo ~]# swapon /test_disk 
[root@luo ~]# free -m

 

注意:在Rocky操作系统中,模拟的磁盘文件无法作为swap使用!!

4.2、umount命令&swapoff命令

umount - 卸载文件系统

swapoff-卸载swap文件系统

语法:

umount -a [-nrv] [-t vfstype]
umount 挂资源或者挂载点

选项:

选项作用
-a卸载所有可卸载文件系统

案例:

1)卸载普通文件系统


2)swap文件系统卸载


四、LVM逻辑卷

1、概述

LVM 是 Logical Volume Manager(逻辑卷管理)的简写,它是 Linux 环境下对磁盘分区进行管理的⼀种机制; 安装 Linux 操作系统时遇到的⼀个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空 间; 普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小; 随着 Linux 的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小,即动态调整磁盘容量,从而提高磁盘管理的灵活性。

1.1、运行原理

1.2、LVM 相关概念:

1.PV(Physical Volume):物理卷

处于 LVM 最底层,可以是物理硬盘或者分区,整个硬盘,或使用fdisk 等⼯具建⽴的普通分区,包许多默认 4MB 大小的 PE(Physical Extent,基本单元)。

2.PE(Physical Extend):物理区域

PV 中可以用于分配的最小存储单元,可以在创建 PV 的时候制定(默认为 4MB),如 1M, 2M, 4M, 8M, 32M, 64M… 组成同⼀VG 中所有 PV 的 PE大小应该相同。

3.VG(Volume Group):卷组

建立在 PV 之上,可以含有一个到多个 PV,一个或多个物理卷组合而成的整体。

4.LV(Logical Volume):逻辑卷

建立在 VG 之上,相当于原来分区的概念,不过大小可以动态改变。从卷组中分割出的一块空间,用于建立文件 系统。

1.3、挂载流程

2、管理命令

功能PV物理卷命令VG卷组命令LV逻辑卷命令
扫描pvscanvgscanlvscan
建立pvcreatevgcreatelvcreate
查询pvdisplayvgdisplaylvdisplay
删除pvremovevgremovelvremove
扩容vgextendlvextend
缩容vgreducelvreduce

3、配置案例

第一步,先创建物理卷

添加一块磁盘模拟

[root@luo ~]# for i in `ls /sys/class/scsi_host/`;do echo "- - -" > /sys/class/scsi_host/$i/scan;done

for循环

[root@luo ~]# lsblk        查看设备磁盘信息

[root@luo ~]# pvscan        扫描物理卷


 
[root@luo ~]# pvcreate /dev/sdc 

这里创建物理卷 sdc

                       
[root@luo ~]# pvdisplay

 
   
 

注意:这时在卷组生成过程中是没有PE产生,只有在卷组生成之后才有PE产生

第二步,创建卷组

#vgscan        扫描

#vgdisplay        查询

#vacreate   c2505   /dev/sdc        创建卷组c2505

#vgdisplay   在卷组生成之前是没有PE数据产生,只有在卷组生成之后才有PE数据产生

扩容---------

#vgextend    /dev/sdd       将/dev/sdd磁盘扩容进/dev/sdc,这是PE扩容了一倍

缩容---------

#vgreduce   c2505  /dev/sdd   c2505的容量缩回到/dev/sdd(只有在没有数据的情况下才能缩)

3.1、构建LVM逻辑卷

第三步,创建逻辑卷

#lvscan        扫描

#lvcreate -n c2505_lv1 c2505 -L +2G 在卷组c2505里创建逻辑卷c2505_lv1

#lvdisplay  查询        已经创建好了

#mkfs.xfs  /dev/c2505/c2505_lv1

注意:在mapper下c2505是vg卷组名,c2505_lv1是lv逻辑卷

# mount   /dev/c2505/c2505_lv1   /mnt   将挂载源挂载到/mnt目录下
# df   查看

扩容------- 扩容之前需要先卸载

# umount /mnt

# lvextend /dev/c2505/c2505_lv1 -L +2G

3.2、扩容LVM逻辑卷

第四步,格式化逻辑卷

xfs格式化

#mkfs.xfs  /dev/mapper/c2505-c2505_lv1    用xfs格式化

# xfs_growfs /dev/c2505/c2505_lv1        

xfs_growfs 是一个用于扩展 XFS 文件系统大小的命令。XFS 是一种高性能的文件系统,常用于处理大容量存储设备。当存储设备的大小增加后,可以使用 xfs_growfs 命令来扩展文件系统以利用新增的空间。在使用 xfs_growfs 之前,确保已经扩展了底层存储设备的大小。例如,如果使用的是 LVM 或云存储,需要先扩展逻辑卷或云磁盘的大小。
# mount /dev/c2505/c2505_lv1 /mnt/        必须挂载,没挂载无法识别

# df -Th        查看

# xfs_growfs /dev/c2505/c2505_lv1        进行识别

df -Th                

这里not  报错,提示没有挂载不能进行识别

ext格式化        (必须卸载才能识别)

#lvcreate -n c2505_lv2 c2505 -L +2G  

#mkfs.ext4   /dev/c2505/c2505_lv2

#mount /dev/mapper/c2505-c2505_lv2 /mnt

#e2fsck /dev/c2505/c2505_lv2        这时e2fsck识别不了,因为已挂载,需要卸载才能识别

e2fsck 是一个用于检查和修复 ext2、ext3 和 ext4 文件系统的工具。它可以帮助检测和修复文件系统中的不一致性,确保文件系统的完整性和稳定性。

#umount    /mnt        卸载后重新识别

#e2fsck  /dev/c2505/c2505_lv2        正常识别

#resize        在编程中,resize 通常用于调整数据结构(如数组、列表、图像等)的大小

#resize2fs /dev/c2505/c2505_lv2        会提示让你检查,这里随便输什么都行

#e2fsck -f /dev/c2505/c2505_lv2        强制检查

#resize2fs /dev/c2505/c2505_lv2 /mnt        挂载到/mnt目录下

#df -Th        扩容好了

 

五、磁盘配额

1、概述

针对用户和组,用于配置用户和组在该磁盘的使用容量限制。对root管理员步生效

配额类型:

  • usrquota:支持对用户的磁盘配额

  • grpquota:支持对组的磁盘配额

限制类型:

  • 软限制:指定一个软性的配额数据值,用户超过这个数据时,系统给出警告信息,可以打破数据值。

  • 硬限制:指定一个硬性的配额值,禁止用户超过这个限制。

2、配置命令

2.1、quota命令

选项:

选项作用
-g显示 用户所在组 的 组限额. 可选项(optional).
-u和 缺省情况 一样
-v显示 文件系统上 的 限额, 即使 没有 占用 空间.
-q简洁的 信息, 只 显示 超出 限额 的 文件系统.

案例:

查看磁盘配额:

quota -v -u luo

2.2、xfs_quota命令

语法:

xfs_quota [ -x ] [ -p prog ] [ -c cmd ] ... [ -d project ] ... [ path ... ]
xfs_quota -V

选项:

选项作用
-x启用专家模式。所有允许对配额系统进行修改的管理命令(请参阅下面的“管理员命令”部分)仅在专家模式下可用。
-ccmd xfs_quota命令可以交互式运行(默认情况),也可以作为命令行参数运行。可以给出多个-c参数。命令按照给定的顺序运行,然后程序退出。
案例:查看磁盘配额:
[root@luo ~]# xfs_quota -x -c 'report' /testlv

3、配置案例

#针对用户和组,用于配置用户和组在该磁盘的使用容量限制。
#实现支持磁盘配额的挂载:
mount -o ursquota,grpquota /dev/test_vg/test_lv /testlvm
#查看是否支持磁盘配额:mount

3.1、xfs配额

1、挂载并启用配额

mount -o usrquota,grpquota /挂载磁盘 /挂载点

永久挂载参数如下:

/dev/sdb1 /mail xfs defaults,usrquota,grpquota 0 0

2、编辑用户配额

xfs_quota -x -c 'limit -u bsoft:30M bhard:50M isft:3 ihard:5 用户名' /挂载目录

3、也可以针对组编辑配额

xfs_quota -x -c 'limit -g bsoft:30M bhard:50M isft:3 ihard:5 组名' /挂载目录

3.2、ext4配额(了解)

1、挂载

mount -o defaults,usrquota,grpquota /挂载磁盘 /挂载点

[root@luo ~]# mount -o usrquota,grpquota /dev/c2505/c2505_lv2 /mnt
[root@luo ~]# mount

永久挂载参数如下:

/dev/sdb1 /mail ext4 defaults,usrquota,grpquota,defaults 0 0

2、生成配额文件

quotacheck /挂载点

[root@luo ~]# quotacheck /dev/c2505/c2505_lv2

3、启用配额;关闭配额命令用quotaoff

quotaon -ugv /挂载点

4、针对用户配额

edquota -u 用户名

        也可以针对组做配额: edquota -g 组名

5、修改配置文件格式如下:

/dev/sdd1 0 30M 50M 0 8 10

#for i in {1..20};do touch file$i;done        可以写脚本创建多个文件

对普通用户luo次磁盘配额修改

然后切换到luo 罗用户

六、磁盘检测与修复

七、文件系统备份与恢复

磁盘数据备份恢复

第一步备份

[root@luo ~]# umount /dir

[root@luo ~]# cd /dir

[root@luo dir]# dd if=/dev/mapper/c2505-c2505_lv1 of=./file.txt bs=512 count=1
记录了1+0 的读入                                                                512为文件系统一个分区
记录了1+0 的写出
512字节(512 B)已复制,0.00200727 秒,255 kB/秒

[root@luo dir]# ls
file.txt

第二部模拟故障

[root@luo dir]# dd if=/dev/zero of=/dev/mapper/c2505-c2505_lv1 bs=512 count=1
记录了1+0 的读入                                
记录了1+0 的写出
512字节(512 B)已复制,0.00285123 秒,180 kB/秒

[root@luo ~]# mount /dev/mapper/c2505-c2505_lv1 /dir        报错挂载不了
mount: /dev/mapper/c2505-c2505_lv1 写保护,将以只读方式挂载
mount: 未知的文件系统类型“(null)”
[root@luo ~]# df -Th        这里显示没有挂载上
文件系统                    类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root     xfs        50G  4.2G   46G    9% /
devtmpfs                    devtmpfs  894M     0  894M    0% /dev
tmpfs                       tmpfs     910M   11M  900M    2% /run
tmpfs                       tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-home     xfs       147G   38M  147G    1% /home
tmpfs                       tmpfs     182M   12K  182M    1% /run/user/42
/dev/mapper/c2505-c2505_lv2 ext4      2.0G  6.1M  1.8G    1% /mnt
/dev/sdb1                   ext4      9.8G   37M  9.2G    1% /sdb1

第三步备份恢复

[root@luo dir]# dd if=./file.txt of=/dev/c2505/c2505_lv1 bs=512 count=1       将备份好的恢复
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.00281931 秒,182 kB/秒        
[root@luo dir]# mount /dev/c2505/c2505_lv1 /dir              重新挂载
[root@luo dir]# df -Th        挂载上了
文件系统                    类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root     xfs        50G  4.2G   46G    9% /
devtmpfs                    devtmpfs  894M     0  894M    0% /dev
tmpfs                       tmpfs     910M   11M  900M    2% /run
tmpfs                       tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-home     xfs       147G   38M  147G    1% /home
tmpfs                       tmpfs     182M   12K  182M    1% /run/user/42
/dev/mapper/c2505-c2505_lv2 ext4      2.0G  6.1M  1.8G    1% /mnt
/dev/sdb1                   ext4      9.8G   37M  9.2G    1% /sdb1
/dev/mapper/c2505-c2505_lv1 xfs       4.0G   33M  4.0G    1% /dir

1、xfsdump命令

备份等级:

0 --完全备份(文件系统默认备份等级)

1—9 --增量备份

语法:

xfsdump -h
xfsdump [ options ] -f dest [ -f dest ... ] filesystem
xfsdump [ options ] - filesystem
xfsdump -I [ subopt=value ... ]

选项:

选项作用
-f指定备份到哪个目录
-L指定会话标签
-M指定设备标签
-s指定分区中文件或目录的相对路径

案例:

1)备份整个分区:

#交互式:xfsdump -f [备份存放路径] [要备份的的设备或挂载点]
xfsdump -f /opt/dump_sdb1 /dev/sda1
#非交互式:xfsdump -f [备份存放路径] [要备份的的设备或挂载点] -L [会话标签名] -M [设备标
签名]
xfsdump -f /opt/dump_sdb1_0 /dev/sdb1 -L dump_sdb1_0 -M sdb1_0

备份

[root@luo ~]# xfsdump -f /opt/sdb1.bak /dev/sdb1

将/dev/sdb1的数据备份到/opt/sdb1.bak

恢复

[root@luo ~]# xfsrestore -f /opt/sdb1.bak /sdb1/

将/opt/sdb1.bak  恢复到目录/sdb1/

注意:

  • xfsdump不支持没有挂载的文件系统备份,所以只能备份已挂载的文件系统;

  • xfsdump必须使用root的权限才能操作;

  • xfsdump只能备份xfs文件系统;

  • xfsdump备份下来的数据只能让xfsrestore来解析;

  • xfsdump是通过文件系统的UUID来分辨备份档案的,因此不能备份两个具有相同UUID的文件系统

2、xfsrestore命令

语法:

语法:xfsrestore -f [已备份文件路径] [恢复后的文件路径]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值