Linux-磁盘管理(格式化,分区,挂载)

Linux中磁盘的管理

一、磁盘(Disk)体系结构详述

1、磁盘的外部结构

磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写。绝大多数磁盘被永久封存在一个密封的盒子里在这里插入图片描述
(1)磁盘主轴:决定磁盘转速(rpm-round per minute)
家用磁盘转速:7200 rpm 或 5400 rpm (西部绿盘,蓝盘)
企业磁盘转速:15k rpm 或 10k rpm (西部红盘,黑盘)
(2) 磁盘盘片:用于存储数据
(3) 磁盘磁头:用于读取数据,工作原理:采用径向运动读写数据,特点说明:盘面数量等于磁头数量(注意盘面与盘片的区别,一个盘片有两个盘面)
(4) 磁盘接口:用于连接主板
接口类型有:
SATA
SCSI
SAS
PCL-E

PS:磁盘内部是真空的,一但拆开,磁盘便不再可用。

2、磁盘内部结构

(1)磁道(Track)
磁盘的每个盘面被划分为许多同心圆,这些同心圆的轨道叫做磁道

作用说明:用来存储用户数据

特点说明:由多个同心圆组成,存储计数:最外面同心圆为0磁道

工作原理:磁盘默认按照磁道寻找数据

(2)扇区(Sector)
一个盘面划分为若干个内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区。每个扇区中的数据作为一个单元同时被读入或写入。每一个扇区是512字节,其中有64个字节存储的是分区表,一条分区信息占16个字节。

作用说明:用来存储用户数据

特点说明:磁盘存储最小单位,存储计数:默认磁盘扇区从1扇区开始,扇区大小为512字节

(3)柱面(Cylinder)

柱面:每一个盘片同一大小的同心圆可以看成连在一起的柱面,磁盘在分区的时候最小单位是柱面,每一个盘片的上下面都可以读取数据,每一个磁头,不可以跨盘面读取数据。

作用说明:用来存储用户数据

特点说明:不同盘面上相同的磁道组成(圆柱体)

工作原理:磁盘默认按照柱面进行读写,磁头之间的切换为电子切换

(4)单元块(不重要)
作用说明:用来存储用户数据
特点说明:表示单个柱面大小

根据磁盘内部结构计算磁盘大小:

# fdisk 查看磁盘信息
[root@localhost ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b4096

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     2459647     1024000   82  Linux swap / Solaris
/dev/sda3         2459648    41943039    19741696   83  Linux

# 磁盘大小=柱面大小(Units)*柱面数量
# 磁盘大小=(每磁道扇区数*磁头数)*柱面数量*512字节

在这里插入图片描述

3、磁盘的运行机理

简单来说就是多个盘片之间靠主轴连接,电机带动主轴做旋转运动,通过多个磁头臂的摇摆和磁盘的旋转,磁头就可以在磁盘旋转的过程中就读取到磁盘中存储的各种数据

4、磁盘的分类

(1)IDE磁盘:特点价格低廉,兼容性强,性价比高,数据传输慢,不支持热插拔等等。
(2)SCSI磁盘:传输速率高,读写性能好,运行稳定,可连接多个设备。可支持热插拔,占用CPU低,但是价格相对来说比较贵,一般用于工作站或服务器上。
(3)SATA磁盘:结构简单、支持热插拔
(4)USB
其中IDE的磁盘的文件名为          /dev/hd[a-d]
而SCSI、SATA、USB的磁盘文件名为    /dev/sd[a-p]

二、磁盘阵列Raid(了解即可)

1、磁盘阵列概念

磁盘阵列(Redundant Arrays od Independent Disks,RDIA)“独立磁盘构成的具有冗余能力的阵列”之意。独立磁盘冗余阵列是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。而Raid就是关键。
RAID 将一组硬盘连结成来,组成一个阵列,以避免单个硬盘损坏而带来的数据损失, 同时亦提供了比单个硬盘高的可用性及容错性。
常见的组合方式有:RAID0、RAID1、RAID5、RAID6、RAID01、RAID10,下面分别介绍它们的特性。

2、磁盘阵列级别说明

raid 0

RAID0 俗称“条带”,它将两个或多个硬盘组成一个逻辑硬盘,容量是所有硬盘之和, 因为是多个硬盘组合成一个,故可并行写操作,写入速度提高,但此方式硬盘数据没有冗余, 没有容错,一旦一个物理硬盘损坏,则所有数据均丢失。因而,RAID0 适合于对数据量大, 但安全性要求不高的场景,比如音像、视频文件的存储等
在这里插入图片描述

raid 1

RAID1 俗称“镜像”,它最少由两个硬盘组成,且两个硬盘上存储的数据均相同,以实现数据冗余。RAID1 读操作速度有所提高,写操作理论上与单硬盘速度一样,但由于数据需要同时写入所有硬盘,实际上稍为下降。容错性是所有组合方式里最好的,只要有一块硬盘正常,则能保持正常工作。但它对硬盘容量的利用率则是最低,只有 50%,因而成本也是最高。RAID1 适合对数据安全性要求非常高的场景,比如存储数据库数据文件之类
在这里插入图片描述

raid 5

RAID5 最少由三个硬盘组成,它将数据分散存储于阵列中的每个硬盘,并且还伴有一个数据校验位,数据位与校验位通过算法能相互验证,当丢失其中的一位时,RAID 控制器能通过算法,利用其它两位数据将丢失的数据进行计算还原。因而 RAID5 最多能允许一个硬盘损坏,有容错性。
在这里插入图片描述

raid 6

RAID6 是在 RAID5 的基础上改良而成的,RAID6 再将数据校验位增加一位,所以允许损坏的硬盘数量也由RAID5 的一个增加到二个。由于同一阵列中两个硬盘同时损坏的概率非常少,所以,RAID6 用增加一块硬盘的代价,换来了比 RAID5 更高的数据安全性
在这里插入图片描述

raid 1+0
  1. RAID1+0 是先将数据进行镜像操作,然后再对数据进行分组,RAID 1 在这里就是一个冗余的备份阵列,而RAID 0 则负责数据的读写阵列。至少要四块盘,两块做 raid0,另两块做raid1,RAID 10 对存储容量的利用率和 RAID 1 一样低,只有 50%.
  2. Raid1+0 方案造成了 50%的磁盘浪费,但是它提供了 200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一 Raid1 中,就能保证数据安全性、RAID 10 能提供比RAID 5 更好的性能。这种新结构的可扩充性不好,使用此方案比较贵

在这里插入图片描述

三、磁盘分区

1、为什么要分区?

(1)易于管理和使用

比如说我们把磁盘分了sda1、sda2、sda3、sda4盘,我们假设sda1盘为系统盘,其他的比如说游戏、办公、软件盘,这样我们要重新分哪个区就直接在对应的盘分就可以了,不需要整块磁盘进行分区。根据用途我们也能较快的去使用相应的磁盘。

(2)有利于数据的安全

通过分区可以降低数据损失的风险。出现硬盘坏道、错误操作、重装系统都有可能造成数据损失,如果分区了,那么我们就可以将损失最小化。

(3)节约寻找文件的时间

这个我觉得跟第一条比较像,但是这里所说的寻找文件的时间,是指电脑搜索文件的时间。分区以后,电脑搜索文件时只需要在相对应的分区搜索就可以了,没必要进行全盘搜索。大大节省了寻找文件的时间。
下图为硬盘的柱面区间示意图:
在这里插入图片描述由于我们之前说过一个扇区是512字节,其中有64个字节存储的是分区表,一条分区信息占16个字节,因此磁盘最多只能分四个分区,要想有多个分区怎么办?这时候就有了扩展分区。

2、扩展分区

比如说是图中p4为扩展分区,扩展分区可以被继续划分为多个逻辑分区,逻辑分区是可以进行格式化的。扩展分区把逻辑分区的分区信息在扩展分区中找了一个位置给存起来。假如说p4扩展分区划分了三个逻辑分区那么第1个逻辑分区命名为sda5、第2个为sda6、第3个sda7,以此类推。
上面所说的是一个磁盘被分为四个分区,第四个分区被设置为扩展分区,第一个逻辑分区为sda5。但是当整个磁盘被分为3个分区的时候,我们把扩展分区划分的第1个逻辑分区依然命名为sda5,而不是其它的。总结一下,就是不论磁盘有几个主分区,第一个逻辑分区一定是从sda5开始。

3、系统启动引导记录(

Linux 开机引导和启动过程详解
MBR位于硬盘的0柱面,0磁头,1扇区,被称为主引导程序。
MBR是位于磁盘最前边的一段引导代码。它负责磁盘操作系统对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统在对硬盘进行初始化时产生的。
MBR包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。

系统启动引导记录:
MBR引导记录 用于引导磁盘空间小于2T
GPT引导记录 用于引导磁盘空间大于2T

4、系统分区命名说明

(1)按硬盘类型命名(SAS/SATA/SCSI)
第一块:/dev/sda
第二块:/dev/sdb
第三块:/dev/sdc

(2)按分区数量命名
主分区和扩展分区:
第一分区:/dev/sda1
第二分区:/dev/sda2
第三分区:/dev/sda3

逻辑分区:从sda5开始
第一分区:/dev/sda5
第二分区:/dev/sda6

(3)分区命名测验
第1块sata硬盘的第一个主分区:/dev/sda1
第3块sata硬盘的第一个逻辑分区:/dev/sdc5

总结

系统启动引导记录:记录所在位置:0磁头 0磁道 1扇区(512字节),记录占用空间:446字节

主分区(primary):最多4个主分区,每个分区信息占用16字节

扩展分区(extend):最多只能存在一个,无法存储数据信息

逻辑分区(logical):可以有多个逻辑分区,用于存放数据信息

四、分区实践

1、搭建磁盘分区环境

虚拟磁盘数量:2块虚拟磁盘
虚拟磁盘大小:100M
虚拟磁盘生效:重启系统

2、磁盘信息查看说明

查看系统磁盘信息:fdisk -l|grep 'sd[a-c]'

[root@localhost ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b4096

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     2459647     1024000   82  Linux swap / Solaris
/dev/sda3         2459648    41943039    19741696   83  Linux

3、磁盘分区工具说明

分区工具:fdisk

应用场景:磁盘大小小于2TB分区工具(创建的分区表为MBR)
分区操作:
fdisk -cu /dev/sdb ---- centos6
fdisk /dev/sdb ---- centos7
分区参数:

  1. n add a new partition
    表示增加新的分区
  • e extended
    定义扩展分区
  • p primary partition (1-4)
    定义主分区(1-4)
  1. d delete a partition
    表示删除一个分区

  2. p print the partition table
    显示分区表信息

  3. q quit without saving changes
    退出但不保存对分区的修改

  4. w write table to disk and exit
    写分区表到磁盘并退出

分区工具:parted

应用场景:磁盘大小大于2TB分区工具(创建的分区表为GPT)
分区操作:parted(分区操作实时生效)
分区参数:

  1. mklabel(创建分区表 MRB-msdos/gpt)
    create a new disklabel (partition table)

  2. mkpart(创建新的分区)
    make a partition

  3. print(显示分区表信息)
    display the partition table

  4. rm(删除指定分区信息)
    delete partition NUMBER

  5. quit(退出分区界面)
    exit program

分区工具:partprobe

作用:告知系统分区表发生变化了
使用fdisk结合partprobe命令不重启系统添加 一块新的磁盘分区。

4、磁盘格式化操作

什么是磁盘格式化?

格式化:指将分区格式化成不同的文件系统。
那什么是文件系统呢?
文件系统:指操作系统用于明确存储设备或分区上的文件的方法和数据结构:即在存储设备上组织文件的方法。就好比一个教室,同学们的坐的位置总是与桌子凳子排列的方式有关系。桌子,凳子怎么摆放,就导致了同学坐的位置在哪里。文件系统存放数据也是这么个道理。

Linux系统下的文件系统类型

Linux下的文件类型有ext2、ext3、ext4、xfs等等,我们可以使用命令:mkfs. 然后用按TAB、TAB(两次tab键)来查看都有哪些文件类型。
Centos7:xfs ,格式效率较高 数据存储效率提升
Centos6:ext3/4
在这里插入图片描述

磁盘的格式化

在命令行输入mkfs.ext3  /dev/sda5,意思就是格式化根下的sda5分区,格式化类型为.ext3

在这里插入图片描述 当done都出现完毕后,意味着格式化已经进行完毕。

5、关闭磁盘检查

# 关闭磁盘检查:
tune2fs -c 0 -i 0 /dev/sdb1

-c  定义分区磁盘挂载多少次,做一次磁盘健康检查,0表示不做检查
-i  定义分区之后间隔多少天,做一次磁盘健康检查,0表示不做检查

6、磁盘挂载

什么是挂载?

(1)Linux的宗旨是一切皆文件,从以上我们也看到。我们存储的所有文件都在sda3下存放着,sda3也就是我们的根。那我们要在sda5中写入文件时,首先要sda5要与sda3先建立一个联系,这个联系就是一个目录。建立联系的过程我们叫做挂载。
(2)当我们访问sda3底下的这个目录的时候,实际上我们访问的才是sda5这个设备文件。这个目录相当于一个访问sda5的入口,可以理解为一个接口,有了这个接口才可以访问这个磁盘。

磁盘的挂载

(1)挂载点目录:我们将磁盘切到根目录, media 和 mnt 这两个目录被叫做挂载点目录。除此之外,我们也可以自己创建一个目录作为一个挂载点目录。
在这里插入图片描述(2)临时挂载:将指定的一个目录作为挂载点目录时,如果挂载点的目录有文件,那么文件会被隐藏。因此当我们需要挂载目录时,最好新建一个空文件夹来作为挂在点目录。(重启后失效)
①首先在根下创建一个test目录用于测试,在test目录中创建一个文件file,和一个目录directory。

在这里插入图片描述②然后我们挂载sda5,使用命令:mount /dev/sda5 /test,意思就是说将/dev/sda5挂载到test目录中
然后我们刷新一下切出去,重新进到这个目录。(当然你们也可以不刷新直接使用ll命令看看会出现什么)

在这里插入图片描述③现在我们在test目录下的操作就相当于在sda5中进行操作

怎样查看到当前系统上所有磁盘的挂载信息?

①使用mount命令,但读起来较费劲,黄色线条可以告诉我们在哪里挂载的,磁盘的格式类型,读写权限,等其他信息。

在这里插入图片描述
②使用命令df -h这更易于我们对磁盘的信息的了解。包括文件的大小,已经使用的分区大小,总共可用分区的大小,使用率,以及挂载的位置。(推荐)
在这里插入图片描述

# 进行磁盘挂载:
mount /dev/sdb1 /mnt
# 卸载挂载
umount /dev/sdb1 或 umout /mnt


# 开机自动挂载:
1. /etc/rc.local
2. /etc/fstab
第一列:设备文件名称
第二列:设备挂载点目录信息
第三列:文件系统类型
第四列:挂载参数
第五列:是否进行备份
第六列:是否进行磁盘检查

7、开始实践

大致步骤:
(1)第一步:创建磁盘分区保存查看
(2)第二步:告知系统分区已经创建
(3)第三步:分区之后创建文件系统(格式化操作)
(4)第四步:关闭系统磁盘自检功能 (centos6)
(5)第五步:进行分区挂载检查效果
(6)第六步:实现分区开机自动挂载

开始分区

我们就创建1个1G的分区吧。
(1) 在进行分区时,首先我们需要查看当前磁盘的一个分区状况,使用命令:fdisk -l
在这里插入图片描述
注意:上图中/dev/sda1 后面有个*,表示该磁盘用于引导系统进行启动。
sda1:存放的是与系统相关的文件
sda2:虚拟内存交换分区
sda3:为我们系统上的根分区
start、end表示分区开始的扇区位置和结束的扇区位置。
blocks:表示块的信息,一个块里面有多个扇区。
Id:表示磁盘编号
system:表示Linux系统分区的一个分区信息。

(2)然后使用命令:fdisk /dev/sda  让硬盘进入分区模式
在这里插入图片描述 此时命令栏提示输入m来寻求帮助,那么我们输入m,来看一下都有哪些选项。
在这里插入图片描述 上图中:我将画横线的标记为经常会用到的,然后我们来解释一下其中的一些选项。

在这里插入图片描述
(3)开始创建分区,因此我们输入n,然后回车如下图。
在这里插入图片描述我们看到黄颜色线条上显示的是3个主要分区,0个扩展分区,还有1个闲置分区。
绿色光标前的default e表示的是默认为扩展分区。我们除了直接回车进入下一步,也可以输入e进入下一步。(e是创建扩展分区,p是扩展分区,现在是创建扩展分区)
①此时光标所在的位置表示选择输入起始位置,也就是起始扇区。当然,我们不用输入,直接回车就好进入下一步。它就是为了能够将后面的所有可用扇区充分的利用上,而默认选择可用扇区的起始最小扇区。

在这里插入图片描述回车后进入下一步,如下:
②此时光标所在的位置表示选择输入终了位置,也就是结束扇区。当然,我们不用输入,直接回车就可以把上面剩余的全部空间充分的利用上。
在这里插入图片描述 回车后如下:
在这里插入图片描述 ③到这里我们创建的扩展分区已经创建好了,我们在命令行界面输入p查看一下分区情况:
在这里插入图片描述黄颜色框框所框取的信息就是我们创建的扩展分区,以及他的起始,终了扇区位置信息;块信息;id编号信息,分区信息。
④有了扩展分区,那么我们才可以创建逻辑分区。
我们在命令行输入n添加一个新分区,此时添加的分区就是逻辑分区。
在这里插入图片描述 这时它询问设置逻辑分区的起始扇区,为了充分利用,我们选择默认值,然后回车。
在这里插入图片描述
到这里它在询问扇区结束位置,说白了就是我们在设置逻辑分区大小。输入格式为:+扇区 或者 +数值大小{单位}
然后我们输入:+1G  表示设置大小为的1G的逻辑空间。回车之后就完成了新的分区的设置。
紧接着我们输入p打印分区表查看分区信息。
在这里插入图片描述上图中黄颜色的线上的文字为提示信息:提示分区5大小为1GB且已经创建。
⑤此时不要着急,我们一定要记住要保存,在命令行输入w保存分区信息。我们通过w保存并退出后,使用fdisk -l  可以查看到磁盘的分区信息。
⑥但是当你在格式化的时候,有可能找不到这个分区。这是因为Linux没有把分区信息读到内核来,我们需要输入partprobe这个命令,来使我们内核重读一下我们的分区信息。
在这里插入图片描述到这里我们已经成功地创建了一个1G大小的分区,但是我们能用吗?不能,因为我们要对磁盘进行格式化后才可以进行数据的存储。

我们现在要对刚才创建的逻辑分区5进行格式化。
(1)在命令行输入mkfs.ext3  /dev/sda5,意思就是格式化根下的sda5分区,格式化类型为.ext3

在这里插入图片描述
当done都出现完毕后,意味着格式化已经进行完毕。
(2)格式化完毕后我们使用命令:ll  来查看我们格式化完毕后的分区的文件类型信息。

在这里插入图片描述
我们从信息中可以看出来sda5为一个块设备文件。8表示主设备号,5表示的为从设备号。

到这里已经格式化好的sda5能用吗?答案是不能,要想用这个磁盘我们还需要挂载。

(4)创建一个空目录,将磁盘挂载到该目录下
在这里插入图片描述
命令:blkid:查看对应分区的UUID(编号)。UUID唯一标识每一个分区,防止错误的挂载。除此之外,还会显示分区的类型。(建议先复制一下sda5的UUID,一会儿会用到)
(5)永久挂载:使用永久挂载,就意味着它开机会自动挂载。

①使用vim编辑 /etc/fstab  在命令行直接输入vim /etc/fstab 就可以编辑,实现开机自动挂载。
在这里插入图片描述②在将光标移到UUID行,在命令模式下按o键进入插入模式,同时换行。将(4)步骤中复制好的sda5的UUID编号,粘贴进来。/test挂载点目录,ext3文件系统类型,第一个0表示不备份,第二个0表示不检查。注意格式一定要正确,可以不用对齐,最好的判断依据是依照颜色。
写完之后保存退出。
在这里插入图片描述Ⅰ写完之后,你使用mount命令,是看不到test挂载信息的,只有开机时才会读取那个文件。

5、磁盘相关命令总结

在这里插入图片描述

6、企业磁盘常见问题

(1)磁盘满的情况 No space left on device
存储的数据过多了
解决方式:
1.删除没用的数据
2.找出大的没用的数据
find / -type f -size +xxx
du -sh /etc/sysconfig/network-scripts/*|sort -h

补充: 按照数值排序命令

[root@oldboyedu mount01]# cat num.txt |sort -n
# 1
# 10
# 11
# 12
# 2
# 3
# 6
# 9
[root@oldboyedu mount01]# cat num.txt |sort -n -k2
# 1
# 2
# 3
# 6
# 9
# 10
# 11
# 12

(2)存储的数据过多了
inode存储空间不足了: 出现了大量小文件

7、补充:如何调整swap分区大小

/dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。
在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件

/dev/zero : 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。
其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件

第一个历程: 将磁盘分出一部分空间给swap分区使用
dd if=/dev/zero  of=/tmp/1G  bs=100M count=10
含义:
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
 if=文件名:输入文件名,缺省为标准输入。即指定源文件。
 of=文件名:输出文件名,缺省为标准输出。
 bs=bytes:同时设置读入/输出的块大小为bytes个字节。
 count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

第二个历程: 将指定磁盘空间作为swap空间使用
[root@oldboyedu tmp]# mkswap /tmp/1G 
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=6dd70684-dec2-48cf-8fd9-f311548bbb4f

第三个历程: 加载使用swap空间
[root@oldboyedu tmp]# swapon /tmp/1G 
swapon: /tmp/1G: insecure permissions 0644, 0600 suggested.
[root@oldboyedu tmp]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.9G        225M        575M        9.6M        1.2G        1.5G
    Swap:          2.0G          0B        2.0G
[root@oldboyedu tmp]# swapoff /tmp/1G 
[root@oldboyedu tmp]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.9G        224M        576M        9.6M        1.2G        1.5G
    Swap:          1.0G          0B        1.0G
[root@oldboyedu tmp]# rm /tmp/1G -f
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值