Day02 磁盘管理和文件管理

1. 磁盘分区和格式化

1.1 Linux磁盘分区和表示方法

三种磁盘类型:

  • 主分区:可以直接进行使用,已经分配了空间,编号从1~4。
  • 扩展分区:也是主分区,但不能直接使用,相当与存在未分配空间的容器。
  • 逻辑分区:在拓展分区下创建,逻辑分区的数据不受主引导扇区的限制,(eg:STATSCSI接口类型的磁盘在linux中最多创建12个),编号从5开始。

编号的设定原因:在主引导扇区(MBR)中,用来存放扇区信息的大小为64字节,而每一个分区要占用的大小为16字节,所以一个磁盘最多有4个分区,编号从1~4,则逻辑分区从5开始。

表示方法:

  • 硬盘:对于SATASCSI接口的磁盘,以sdx来命名磁盘,x可以为a,b,c,d...,分别代表第1234...1,2,3,4...块磁盘。

  • 分区:以磁盘设备文件名为基础,后面添加上分区对应的数字序号。eg:sda1:代表第一块磁盘的第一个分区,sda2:代表第一块磁盘的第二个分区。

    image-20250426001217457

1.2 Linux的文件系统

windows中常用的的文件系统:

特性FAT32NTFS(目前主流)
最大文件大小4GB16EB
最大分区大小32GB(实际2TB)256TB(windows限制)
兼容性跨平台windows最好
安全行较差,无权限管理可以进行加密,或者日志记录
使用场景u盘,旧设备固态,机械硬盘

linux中常用的文件系统:

特性ext4XFS
最大文件大小16TB8EB
使用的场景通用大文件/高并发

我们可以通过命令来查看当前系统中可以使用的文件系统类型:

>sudo cat /etc/filesystems

image-20250426004103437

其中iso9660是光盘类型的文件,同时还存在一种特殊类型的文件系统,swap文件系统专门给swap分区使用,一般设置成虚拟机物理内存2倍,当我们安装linux系统,如果是系统自动分区,则会自动的创建swap分区。

1.3 查看分区信息

fdisk -l

image-20250426005300005

  • Boot:表示是否为引导块,为*,则代表为引导分区
  • Start:扇区的起始位置
  • End:扇区的终止位置
  • Blocks:扇区的空间大小
  • ID:扇区对应的编号,其中83代表为XFS分区,8e代表LVM分区,82代表交换分区。
  • System:对应的文件系统,Linux是XFS文件系统,Linux LVM是逻辑卷。

1. 4磁盘的创建和与格式化

1.4.1 创建

image-20250426083015437

1.4.2 fdisk进行分区

根据上面所学的知识,我们应该可以猜到进行磁盘分区的命令:

sudo fdisk /dev/sdb   #我们需要对第二块磁盘进行分区

常用的一些参数:

image-20250426083819111

⭐️实验测试:创建一个主分区,一个拓展分区,一个逻辑分区。

image-20250426090355532

查看是否分区成功:

  1. 先看在磁盘分区保存后的情况。

    image-20250426091214071

  2. 在判断系统内核是否已经识别到新的磁盘分区

    cat /proc/partitions

    image-20250426091434048

1.4.3 格式化

利用mkfs命令来个磁盘分区进行格式化,需要注意的是在格式化时会将所有的数据进行擦除。

使用语法:

mkfs -t 文件系统类型 磁盘分区文件名 

将sdb1格式化成ext4文件系统

mkfs -t ext4 /dev/sdb1

将sdb5格式化成xfs文件系统

mkfs -t xfs /dev/sdb5

2.临时挂载

  • 我们知道在Linux中一个皆文件,所以当我们需要对新的磁盘分区进行访问时,需要将将其挂载到某个目录上,通过这个目录来访问磁盘中的数据。

  • //boot系统会自动的对磁盘分区进行挂载,而在其他的目录下则需要手动的进行挂载。

  • Linux中存在两个默认的挂载点,/media:用来实现自动挂载的,/mnt:用来实现手动的挂载。

使用语法:

mount [-t 文件类型] 设备文件名 挂载点    #进行挂载
unmount 挂载点 #取消挂载

注意事项:作为挂载点的目录,会自动的隐藏起来,则无法进行查看,所以最好创建空目录来作为挂载点

流程:先挂载到/home下,查看文件信息,在卸载,再查看文件信息

image-20250426102828858

2.1 挂载测试

2.1.1 挂载硬盘

我们在/mnt下创建一个目录为/test来作为挂载点。

查看系统中已经挂载的设备: df

-h : 人性化显示,eg:100MB,100Gb等
-T :显示挂载信息

image-20250426103535821

2.1.2 挂载光驱、u盘和iso文件

我们将/dev/cdrom挂载到/mnt/cdrom

image-20250426105402917

挂载u盘和iso文件都是类似的方法,但iso文件在挂载时要添加参数

mount -o loop iso文件  # 挂载iso文件

3. 卸载

通过卸载挂载点目录的位置来进行卸载即可。

umont /mnt/cdrom       #卸载光驱所在的挂载点目录

注意事项:当我们在进行卸载时,可能会经常遇到如下的报错:

image-20250426110046253

翻译过来就是设被处于忙碌的状态,可能的原因有进程正在使用文件,或者你处在挂载目录下,进行卸载。解决方法就是kill使用该问文件的进程,或者退出当前目录下即可。

4.永久的进行挂载

我们需要注意的是在Linux一般通过命令来进行设置的选项都是临时的,想要永久的进行保存,就要通过文件来进行修改。挂载相关的文件是/etc/fstab(file system table)文件系统表。

image-20250426111822848

正方形框起来的一个部分为一个字段,一共有6个字段,从左往右分别为

  • 挂载的设备名称:可以用UUID或者文件设备名
  • 挂载点目录
  • 文件系统的类型
  • 挂载选项:一般设置成defalts
  • 存储设备是否需要进行dump配备:0为不要,1为要。
  • 系统启动后是否进行自动检测和检测的顺序: 0代表不检测,1代表先检测,然后在2,若存在多个需要检测的分区,则都设置成2.

4.1 永久挂载测试

**流程:**将sdb1和sdb5进行挂载,挂载完毕后重新启动虚拟机,再查看挂载是否成功。

1.查看设备文件的id

>sudo /blkid  设备文件名

image-20250426113350932

2.修改/etc/fstab

3.重新运行配置文件并查看

>mount -a  #默认情况下修改了/etc/fstab 是要重启才能生效的,但是也可以用该命令让器立即生效,(-a all:会自动的检测/etc/fstab中未必挂载的磁盘,从而实现挂载。)

image-20250426114551902

5. 磁盘配额

5.1 基本概念

磁盘配额主要是针对用户和用户组来进行设置的,只在指定的文件系统内有效。常见的两方面的限制为磁盘容量和文件个数。

  • 磁盘容量以kb为单位,限制用户所用的磁盘容量的大小。
  • 文件个数,限制用户所能创建的文件个数。

其中又存在软限制和硬限制:

  • 软限制:宽限期(默认7天,可以修改)内可以短暂的超出限制,但是会发出警告。
  • 硬限制:不存在宽限期,超出限制,禁止写入同时发出警告。

5.2 设置配额

注意事项:

在进行配额之前一定要先查看是否将SELINUX关闭,这个一种内核安全模块,会限制用户的访问范围,此时会导致用户无法进行添加的磁盘进行配额设置。

  1. 查看当前Selinux的状态
sestatus

image-20250426142119735

  1. 修改对应的配置文件
vim /etc/selinux/config

image-20250426142237840

  1. 重启然后再查看状态
  1. 生成配额文件

    >quotacheck -acug 
    >-a :检测/etc/fstab下所有启动配额的文件系统,添加了a选项,则不用再在后面添加分区
    >-c :强制创建新的配额文件(覆盖)
    >-u/-g :检测用户/用户组配额
    >-v :详细的执行过程

    image-20250426143354566

  2. 编辑配置文件

    >edquota -u  用户名
    >-u 用户名 :用来对用户进行配额
    >-g 用户组名 :用来对用户组进行配额,注意当存在多个用户组是,只对第一个用户组生效。

    会跳转到如下界面

    image-20250426144113577

    • 参数1:分区名
    • 参数2:磁盘空间大小
    • 参数3:软限制的大小,默认为KB
    • 参数4:硬限制的大小,默认为KB
    • 参数5:文件的个数
    • 参数6: 软限制的文件的个数
    • 参数7:硬限制的文件的个数
  3. 启动配额文件

    >sudo quotaon -augv
    >-a :检测/etc/fstab下所有启动配额的文件系统,添加了a选项,则不用再在后面添加分区
    >-u/-g :检测用户/用户组配额
    >-v :详细的执行过程

5.3 测试配额

我们在上面设置了磁盘的硬限制为100MB,文件个数的软限制为2,硬限制为3.

⭐️生成指定大小的文件:

通过dd命令来生成,dd的作用是用来数据备份和迁移的。

语法:

>dd if=文件路径 of=文件路径 bs=1000  count=100 #生成100MB的文件
  • if:input file

  • of: output file

  • bs: (block size)磁盘块的大小,单位为kb

  • count: 磁盘块的个数

  1. 生成60MB大小的文件

    image-20250426155806158

  2. 编辑user1的配额文件,同时将这100MB的文件多次的复制到/mnt/test下查看结果

    • user1的配置文件:
    edquota -u user1

    image-20250426154714062

    • 切换到user1用户,并移动文件,这里的rubush是自己创建的一个目录

      cp /rubush/smallfile s1

      image-20250426160131698

    5.4 查看用户或分区的信息

    语法

    用法1:针对用户

    quota -u/g  用户名/用户组名
    -v: 详细信息
    -s : 人类习惯的单位,eg:`MB`

    image-20250426161212495

    用法2:针对分区

    repquota 
    -a :检查`/etc/fstab`中的所有挂载了的分区
    -u 用户名 :单个用户
    -g 用户组名 :单个用户组
    -v :详细信息
    -s :人类习惯的方式

    image-20250426161552679

6. LVM(逻辑卷管理)

LVM:Logic Volume Manage)逻辑卷管理。建立在物理磁盘和分区之间的逻辑层。最大的特点是可以动态的对磁盘进行管理。因为在传统的磁盘管理上,想要进行对容量进行改变,只能先初始化磁盘,在进行改变。而

LVM则不需要。

6.1 四大组成部件

  • PV(physical volum):物理卷:处理逻辑卷管理的最顶层,可以为物理分区,或物理磁盘,或者为raid。

  • VG(volume grop):卷组:建立在物理卷之上,卷组中最少要存在一个物理卷,当卷组创建后能够动态的

    添加删除物理卷。

  • LV(logic volum):逻辑卷:建立在卷组之上,把卷组中未进行使用的空间来分配给逻辑卷,逻辑卷创建后也可以进行动态的添加和删除容量。同时一个LV可以来自一块分区,也可能来自多块分区。但是要注意一个逻辑卷是不能来自多个卷组的。

  • PE(physical extent):物理块,LVM的最小存储单位,默认为4MB4MB.

拓展知识点:

  • 磁盘的最小存储单位:sector(扇区),默认大小为0.5kB0.5kB
  • 文件系统的最小存储单位:block(块),默认大小为4KB4KB

结构图:

image-20250427153616479

image-20250427153657333

6.2 常用的LVM命令

功能PVVGLV
display(产看详细信息)pvdisplayvgdisplaylvdisplay
create(创建)pvcreatevgcreatelvcreate
scan(扫描)pvscanvgscanlvscan
remove(移除)pvremovevgremovelvremove
extend(拓展)vgextendlvextend
reduce(减少)vgreducelvreduce

6.3 项目测试

**目标:**将/dev/sdb5/dev/sdb6合并成卷组vg0,在将vg0分成逻辑卷lv0lv1,在利用/dev/sdb7对逻辑卷lv0进行增加容量。

  1. 查看当前的磁盘信息

    sudo fdisk -l

    image-20250427164753528

  2. 创建物理卷

    sudo pvcreate /dev/sdb5
    sudo pvcreate /dev/sdb6
    sudo pvcreate /dev/sdb7

    image-20250427165110555

  3. 创建卷组

    语法

    vgcreate [选项] 卷组名 物理卷
    选项:
    -s PE: 执行物理块的大小,默认为4KB,一般不进行修改
    sudo vgcreate vg0 /dev/sdb5 /dev/sdb6

    image-20250427165522036

    image-20250427165643697

  4. 创建逻辑卷

    语法:

    lvcreate [选项] 逻辑卷大小 [-n 逻辑卷名称] 卷组名
    选项:
    -L :大小
    -l :指定PE的个数来进行创建,一般不用
    -n :逻辑卷名称
    sudo lvcreate -L +600M -n lv1 vg0
    sudo lvcreate -L +500M -n lv2 vg0

    image-20250427170340709

    image-20250427170454209

  5. 格式化逻辑卷,并进行永久的挂载

    之前学习过了如何格式化和挂载,就不再演示。但是存在一个问题需要注意。

    image-20250427171534348

    image-20250427171639255

  6. 对lv1进行增加200MB的容量

    • 先查看vg0的容量情况:

      image-20250427171915099

    • 先对卷组进行扩容

      语法:

      sudo vgextend 卷组名 物理卷
      sudo vgextend /vg0 /dev/sdb7   #将sdb7添加到vg0中
      sudo vgdisplay #产看卷组情况

      image-20250427172308330

    • 在对逻辑卷进行扩容

      语法:

      sudo lvextend [选项] [ 逻辑卷名] 
      选项:
      -L :大小
      -l :指定PE的个数来进行创建,一般不用
      -n :逻辑卷名称
      sudo lvextend -L +200M /dev/vg0/lv1

      image-20250427173709248

    • 由于文件系统在扩容后无法进行识别,需要对文件系统进行扩容

      对于ext4文件系统:

      sudo resize2fs /dev/vg0/lv1

      对于xfs文件系统:

      sudo xfs_growfs

      image-20250427173928650