Linux从入门到精通(八)——Linux磁盘管理

article/2025/10/20 19:30:01

文章篇幅较长,建议先收藏,防止迷路

文章跳转
Linux从入门到精通(八)——Linux磁盘管理go
Linux从入门到精通(九)——Linux编程go
Linux从入门到精通(十)——进程管理go
Linux从入门到精通(十一)——计划任务go
Linux从入门到精通(十二)——shell编程go

目录

  • Linux磁盘管理
      • 1. linux 文件系统类型
      • 2. linux 文件系统配置文件
        • linux 文件类型的颜色
        • Linux 下用字符表示的文件类型
      • 3. 文件系统操作命令
        • 3.1 df:
          • 例子
        • 3.2 du:
          • 例子
        • 3.3 Fdisk
          • 实例
            • 1、新增硬盘:
            • 2、磁盘分区:
        • 3.4 Mkfs:
          • 例子
        • 3.5 Mount:
          • 例子
          • 自动挂载
        • 3.6 磁盘配额:
          • 案例:
          • 验证操作
        • 3.7 umount:
          • 例子
        • 3.8 实例:添加硬盘分区步骤

Linux磁盘管理

1. linux 文件系统类型

  1. Ext( Extended file system) :

    是为linux核 心所做的第-一个文件系统。采用Unix文件系统 ( UFS )的元数据结构,以克服MINIX文件系 统性能不佳的问题。它是在linux上,第一个利用 虚拟文件系统实现出的文件系统,在linux核心 0.96c版中首次加入支持。

  2. Ext2 :

    GNU/Linux 系统中标准的文件系统, 其特点为存取文件的性能极好,对于中小型的文件 更显示出优势,这主要得利于其簇快取层的优良设 计。

  3. ext3 :中采用了日志式的管理机制,它使文件系统; 具有很强的快速恢复能力,并且由于从ext2 转 换到ext3 无须进行格式化,因此,更加推进了 ext3文件系统的大大推广。

  4. Ext4 :

    Ext3的改进版,修改了 Ext3 中部分 重要的数据结构,而不仅仅像 Ext3对 Ext2 那样,只是增加了-一个日志功能而已。Ext4可 以提供更佳的性能和可靠性,还有更为丰富的功能;

  5. Btrfs:

    它被称为是下一代Linux文件系统。据说它采用了很多先进的文件系统设计,不仅解决了ext2/3的扩展性问题,还让人们看到了下一代文件系统所具有的许多其他特性。

  6. swap文件系统:

    该文件系统是 Linux中作为 交换分区使用的。在安装Linux 的时候,交换 分区是必须建立的,并且它所采用的文件系统类型 必须是 swa p 而没有其他选择。

  7. 支持的其他类型:

    • IS09660文件系统,光盘所使用的文件系统。
    • FAT文件系统,MSDOS 和Windows使用的文件系统。
    • NTFS文件系统是Windows NT使用的文件系统,并且可以在Windows 2000/XP上使用。NTFS文件系统比Windows以前版本使用的FAT文件系统拥有更好的稳定性、更高的磁盘利用率及更好的性能。

2. linux 文件系统配置文件

  • /etc/filesystems:系统指定的测试挂载文件系统类型
  • /proc/filesystems:Linux 系统已经加载的文件系统类型
  • /lib/modules/2.6.18-274.el5/kernel/fs/ 文件系统类型的驱动所在目录
  • /etc/fstab
  • /etc/mtab

linux 文件类型的颜色

​ linux文件颜色的含义:蓝色代表目录 绿色代表可执行文件 红色表示压缩文件 浅蓝色表示链接文件 灰 色表示其他文件 红色闪烁表示链接的文件有问题了 黄色表示设备文件:

  • 蓝色文件----------目录
  • 白色文件----------一般性文件,如文本文件,配置文件,源码文件等
  • 浅蓝色文件----------链接文件,主要是使用 ln 命令建立的文件
  • 绿色文件----------可执行文件,可执行的程序
  • 红色文件-----------压缩文件或者包文件

Linux 下用字符表示的文件类型

  • -:普通文件
  • d:目录文件
  • l:链接文件
  • b:块设备文件
  • c:字符设备文件
  • p:管道文件

3. 文件系统操作命令

3.1 df:

列出文件系统的整体磁盘使用情况

[root@localhost ~]# df [选项] [目录或文件名]
  • -a 显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统;
  • -m 以 MB 为单位显示容量;
  • -k 以 KB 为单位显示容量,默认以 KB 为单位;
  • -h 使用人们习惯的 KB、MB 或 GB 等单位自行显示容量;
  • -T 显示该分区的文件系统名称;
  • -i 不用硬盘容量显示,而是以含有 inode 的数量来显示。
例子

【例1】

​ 不使用任何选项的 df 命令,默认会将系统内所有的文件系统信息,以 KB 为单位显示出来。

[root@VM-24-17-centos ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G   28K  1.9G   1% /dev/shm
tmpfs           1.9G  540K  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vda1        79G   15G   61G  20% /
tmpfs           374M     0  374M   0% /run/user/
  • Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
  • 1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;
  • Used:表示用掉的硬盘空间大小;
  • Available:表示剩余的硬盘空间大小;
  • Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;
  • Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。

【例2】

[root@VM-24-17-centos ~]# df -ahT
Filesystem     Type         Size  Used Avail Use% Mounted on
sysfs          sysfs           0     0     0    - /sys
proc           proc            0     0     0    - /proc
devtmpfs       devtmpfs     1.9G     0  1.9G   0% /dev
securityfs     securityfs      0     0     0    - /sys/kernel/security
tmpfs          tmpfs        1.9G   28K  1.9G   1% /dev/shm
devpts         devpts          0     0     0    - /dev/pts
tmpfs          tmpfs        1.9G  540K  1.9G   1% /run
tmpfs          tmpfs        1.9G     0  1.9G   0% /sys/fs/cgroup
cgroup         cgroup          0     0     0    - /sys/fs/cgroup/systemd
pstore         pstore          0     0     0    - /sys/fs/pstore
bpf            bpf             0     0     0    - /sys/fs/bpf
cgroup         cgroup          0     0     0    - /sys/fs/cgroup/blkio
....

注意,使用 -a 选项,会将很多特殊的文件系统显示出来,这些文件系统包含的大多是系统数据,存在于内存中,不会占用硬盘空间,因此你会看到,它们所占据的硬盘总容量为 0。

3.2 du:

​ 列出目录所占空间。

[root@VM-24-17-centos ~]# ls -lh
total 40K
drwxr-xr-x 5 root root 4.0K Oct 17 21:26 goprojects
-rw-r--r-- 1 root root  25K Nov 18  2021 install.sh
drwxr-xr-x 2 root root 4.0K Nov  7 20:58 linuxstudy
drwxr-xr-x 5 root root 4.0K May  4  2022 mysql

​ 需要注意的是,使用"ls -lh"命令是可以看到文件的大小的。但是大家会发现,在使用"ls -lh"命令査看目录大小时,目录的大小多数是 4KB,这是因为目录下的子目录名和子文件名是保存到父目录的 block(默认大小为 4KB)中的,如果父目录下的子目录和子文件并不多,一个 block 就能放下,那么这个父目录就只占用了一个 block 大小。

​ 大家可以将其想象成图书馆的书籍目录和实际书籍。如果我们用"ls-lh"命令査看,则只能看到这些书籍占用了 1 页纸的书籍目录,但是实际书籍到底有多少是看不到的,哪怕它堆满了几个房间。

​ 但是我们在统计目录时,不是想看父目录下的子目录名和子文件名到底占用了多少空间,而是想看父目录下的子目录和子文件的总磁盘占用量大小,这时就需要使用 du 命令才能统计目录的真正磁盘占用量大小。

​ du 命令的格式如下:

[root@localhost ~]# du [选项] [目录或文件名]

选项:

  • -a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量;
  • -h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;
  • -s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量;
例子

【例1】

​ 统计当前目录的总磁盘占用量大小,同时会统计当前目录下所有子目录的磁盘占用量大小,不统计子文件磁盘占用量的大小。默认单位为KB。

[root@VM-24-17-centos linuxstudy]# du -h
4.0K	./a # 统计每个子目录的大小
4.0K	./b
72K	. # 统计当前目录总大小

【例2】

​ 统计当前目录的总大小,同时会统计当前目录下所有子文件和子目录磁盘占用量的大小。默认单位为 KB

[root@VM-24-17-centos linuxstudy]# du -ha
4.0K	./.test.txt.swo
24K		./test1.log
0		./a/testa.txt
4.0K	./a
24K		./test.log
4.0K	./.test.txt.swp
0		./b/testb.txt
4.0K	./b
4.0K	./test.txt
72K		.

【例3】

​ 只统计磁盘占用量总的大小,同时使用习惯单位显示

[root@VM-24-17-centos linuxstudy]# du -sh
72K		.

3.3 Fdisk

给硬盘分区

​ 我们在安装操作系统的过程中已经对系统硬盘进行了分区,但如果新添加了一块硬盘,想要正常使用,难道需要重新安装操作系统才可以分区吗?

​ 当然不是,在 Linux 中有专门的分区命令 fdisk parted。其中 fdisk 命令较为常用,但不支持大于 2TB 的分区;如果需要支持大于 2TB 的分区,则需要使用 parted 命令,当然 parted 命令也能分配较小的分区。我们先来看看如何使用 fdisk 命令进行分区。

​ fdisk 命令的格式如下:

[root@localhost ~]# fdisk [~l] 设备文件名
  • -l选项会将设备名称对应的设备的所有分区信息,显示后退出,不指定设备时显示系统能够识别的所有设备。

  • 不使用参数时,则进入fdisk命令的交互界面,可按提示进行操作。

    注意: fdisk 以设备名称作为参数,而不是文件系统名称。

实例
1、新增硬盘:

一直下一步,最后重启虚拟机即可。

2、磁盘分区:

注意,千万不要在当前的硬盘上尝试使用 fdisk,这会完整删除整个系统,一定要再找一块硬盘,或者使用虚拟机。这里给大家举个例子:

# 查询本机可以识别的硬盘和分区
[root@hyy ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors # 硬盘文件名和硬盘大小
Units = sectors of 1 * 512 = 512 bytes # 每个柱面的大小
Sector size (logical/physical): 512 bytes / 512 bytes # 每个扇区的大小
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disk label type: dos 
Disk identifier: 0x000058a3 Device 	   Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4810751     2097152   82  Linux swap / Solaris
/dev/sda3         4810752    41943039    18566144   83  Linux# 第二个硬盘识别,这个硬盘的信息
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
  • Device:分区的设备文件名。
  • Boot:是否为启动引导分区,在这里 /dev/sda1 为启动引导分区。
  • Start:起始柱面,代表分区从哪里开始。
  • End:终止柱面,代表分区到哪里结束。
  • Blocks:分区的大小,单位是 KB。
  • id:分区内文件系统的 ID。在 fdisk 命令中,可以 使用 “i” 查看。
  • System:分区内安装的系统是什么。

如果这个分区并没有占满整块硬盘,就会提示 “Partition 1 does not end on cyl inder boundary”,表示第一个分区没有到硬盘的结束柱面。大家发现了吗?/dev/sda 已经分配完了分区,没有空闲空间了。而第二块硬盘 /dev/sdb 已经可以被识别了,但是没有可分区。

我们以硬盘 /dev/sdb 为例来做练习,命令如下:

对设备实施分区操作,进入交互界面

  1. 执行命令 fdisk -l查看是否添加了新设备

    [root@hyy ~]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000058a3Device    Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048      616447      307200   83  Linux
    /dev/sda2          616448     4810751     2097152   82  Linux swap / Solaris
    /dev/sda3         4810752    41943039    18566144   83  LinuxDisk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    

    可以看到刚刚新增的Disk /dev/sdb

  2. 执行 fdisk /dev/sdb

     fdisk /dev/sdb
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxubsNxz-1669206638802)(images/image-20221109113044084.png)]

  3. 在显示出的界面中,“m”查看帮助菜单

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-khP6UpHK-1669206638804)(images/image-20221109113722134.png)]

    • d 删除分区

    • n 添加新分区

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KoIhnYwu-1669206638806)(images/image-20221109113801212.png)]

      • p :primary主分区

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzY23WyS-1669206638807)(images/image-20221109130243046.png)]

        输入分区号—> 输入起始柱面号—> 输入结束柱面号(或者+size{K,M,G})

      • e :extend 扩展分区

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qp70uyzE-1669206638808)(images/image-20221109130318913.png)]

      • l :逻辑分区(创建扩展分区之后才出现)

        创建了扩展分区之后,再创建分区,提示命令会发生改变,出现逻辑分区(分区号从5):

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fHP8S2Z2-1669206638812)(images/image-20221109125220876.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMvE1v9G-1669206638813)(images/image-20221109130350593.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DzBNqyjW-1669206638816)(images/image-20221109130401327-16679702426961.png)]

      注意:

      • Linux系统主分区最多4个,多数情况下采用3个主分区+扩展分区。
      • 扩展分区最多只能有一个(os限制)
      • 能够被格式化后作为数据访问的分区为主分区与逻辑分区。扩展分区无法格式化。
      • 逻辑分区的数量依据操作系统而不同,在linux 系统中,IDE硬盘最多有59个逻辑分区 (5- 63号) SATA硬盘最多11个逻辑分区( 5- 15 )
    • p 打印分区表

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Scu7DhJi-1669206638821)(images/image-20221109130435298.png)]

    • q 退出而不保存更改

    • w 将表写入磁盘并退出

3.4 Mkfs:

格式化分区(为分区写入文件系统)

Mkfs 命令的格式如下:

[root@hyy ~]# mkfs [-t 文件系统格式] 分区设备文件名
  • -t 文件系统格式:用于指定格式化的文件系统,如 ext3、ext4;
例子

​ 我们建立了 /dev/sdb1(主分区)、/dev/sdb2(扩展分区)、/dev/sdb5(逻辑分区)和 /dev/sdb6(逻辑分区)这几个分区,其中 /dev/sdb2 不能被格式化,剩余的三个分区都需要格式化之后使用。

​ 这里我们以格式化 /dev/sdb1 分区作为演示,其余分区的格式化方法一样。

​ 格式化 /dev/sdb1 分区的执行命令如下:

# 初始化分区,为主分区写入ext3的文件系统
[root@hyy ~]# mkfs -t ext3 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label= # 这里指的是卷标名,我们没有设置卷标
OS type: Linux
Block size=4096 (log=2) # block 的大小配置为 4K
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621184 blocks # 由此配置决定的inode/block数量
131059 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
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, 1605632Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 
# 这样就创建起来所需要的 Ext3 文件系统了!简单明了!

3.5 Mount:

挂载命令。

​ 所有的硬件设备必须挂载之后才能使用,只不过,有些硬件设备(比如硬盘分区)在每次系统启动时会自动挂载,而有些(比如 U 盘、光盘)则需要手动进行挂载。

什么叫挂载:

​ Linux 系统中 “一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。

​ 因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。

如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。

挂载,指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。

​ 纠正一个误区,并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。

​ 举个例子,我们想通过命令行访问某个 U 盘中的数据,图 1 所示为 U 盘文件目录结构和 Linux 系统中的文件目录结构。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-32cJJQnI-1669206638831)(images/image-20221109131811820.png)]

​ 图 1 中可以看到,目前 U 盘和 Linux 系统文件分属两个文件系统,还无法使用命令行找到 U 盘文件,需要将两个文件系统进行挂载。

​ 接下来,我们在根目录下新建一个目录 /sdb-u,通过挂载命令将 U 盘文件系统挂载到此目录,挂载效果如图 2 所示。

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BCBvoVS1-1669206638840)(images/image-20221109131851932.png)]

可以看到,U 盘文件系统已经成为 Linux 文件系统目录的一部分,此时访问 /sdb-u/ 就等同于访问 U 盘。

​ 前面讲过,根目录下的 /dev/ 目录文件负责所有的硬件设备文件,事实上,当 U 盘插入 Linux 后,系统也确实会给 U 盘分配一个目录文件(比如 sdb1),就位于 /dev/ 目录下(/dev/sdb1),但无法通过 /dev/sdb1/ 直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。

总之,Linux 系统使用任何硬件设备,都必须将设备文件与已有目录文件进行挂载。

​ 通过学习 Linux 文件系统,我们可以对挂载的含义进行引申,挂载指的是将硬件设备的文件系统和 Linux 系统中的文件系统,通过指定目录(作为挂载点)进行关联。而要将文件系统挂载到 Linux 系统上,就需要使用 mount 挂载命令。

mount 命令的常用格式有以下几种:

root@localhost ~]# mount [-l]

单纯使用 mount 命令,会显示出系统中已挂载的设备信息,使用 -l 选项,会额外显示出卷标名称.

[root@localhost ~]# mount -a

-a 选项的含义是自动检查 /etc/fstab 文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。

这里简单介绍一下 /etc/fstab 文件,此文件是自动挂载文件,系统开机时会主动读取/etc/fstab这个文件中的内容,根据该文件的配置,系统会自动挂载指定设备。有关自动挂载(修改此文件)的具体介绍,会在后续文章中讲解。

[root@localhost ~]# mount [-t 系统类型] [-L 卷标名] [-o 特殊选项] [-n] 设备文件名 挂载点

各选项的含义分别是:

  • -t 系统类型:指定欲挂载的文件系统类型。Linux 常见的支持类型有 EXT2、EXT3、EXT4、iso9660(光盘格式)、vfat、reiserfs 等。如果不指定具体类型,挂载时 Linux 会自动检测。
  • -L 卷标名:除了使用设备文件名(例如 /dev/hdc6)之外,还可以利用文件系统的卷标名称进行挂载。
  • -n:在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单人维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项;
  • -o 特殊选项:可以指定挂载的额外选项,比如读写权限、同步/异步等,如果不指定,则使用默认值(defaults)。具体的特殊选项参见表 1;
    • rw/ro:是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。
    • async/sync:此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。
    • dev/nodev:是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。
    • auto/noauto:是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。
    • suid/nosuid:设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。
    • exec/noexec:设定在文件系统中是否允许执行可执行文件,默认是允许。
    • user/nouser:设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。
    • defaults:定义默认值,相当于 rw、async 、dev、auto、suid、exec、nouser、这 7 个选项。
    • remount:重新挂载已挂载的文件系统,一般用于指定修改特殊权限。
例子

【例1】

​ 查看系统中已经挂载的文件系统,注意有虚拟文件系统

[root@localhost ~]# mount
/dev/sda3 on / type ext4 (rw) 
# 含义是,将 /dev/sda3 分区挂载到了 / 目录上,文件系统是 ext4,具有读写权限
proc on /proc type proc (rw)
sysfe on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw, gid=5, mode=620)
/dev/sda1 on /boot type ext4 (rw)
....

【例2】

​ 修改特殊权限。通过例 1 我们查看到,/boot 分区已经被挂载了,而且采用的是 defaults 选项。这里我们重新挂载分区,并采用 noexec 权限禁止执行文件执行,看看会出现什么情况(注意不要用 / 分区做实验,否则系统命令也就不能执行了)。

​ 重新挂载 /boot 分区,并使用 noexec 权限

[root@localhost ~]# mount -o remount noexec /boot[root@localhost sh]# cd /boot
#写一个 shell 脚本,看是否会运行
[root@localhost boot]#vi hello.sh
#!/bin/bash
echo "hello!!"
[root@localhost boot]# chmod 755 hello.sh
[root@localhost boot]# ./hello.sh
-bash:./hello.sh:权限不够
#虽然赋予了hello.sh执行权限,但是仍然无法执行
[root@localhost boot]# mount -o remount exec /boot
#记得改回来,否则会影响系统启动

​ 对于特殊选项的修改,除非特殊场景下需要,否则不建议大家随意修改,非常容易造成系统出现问题,而且还找不到问题的根源。

【例3】

挂载分区。

# 将刚才创建的三个分区(1主,2逻辑)分别挂载到 /diskstudy目录下的web、bak、test目录下
[root@hyy diskstudy]# mount /dev/sdb1 ./web
[root@hyy diskstudy]# mount /dev/sdb5 ./bak
[root@hyy diskstudy]# mount /dev/sdb6 ./test

​ 可能有人会想,为什么使用 Linux 系统的硬盘分区这么麻烦,而不能像 Windows 系统那样,硬盘安装上就可以使用?

​ 其实,硬盘分区(设备)挂载和卸载(使用 umount 命令)的概念源自 UNIX,UNIX 系统一般是作为服务器使用的,系统安全非常重要,特别是在网络上,最简单有效的方法就是“不使用的硬盘分区(设备)不挂载”,因为没有挂载的硬盘分区是无法访问的,这样系统也就更安全了。

​ 另外,这样也可以减少挂载的硬盘分区数量,相应地,也就可以减少系统维护文件的规模,当然也就减少了系统的开销,即提高了系统的效率。

自动挂载

查看是否挂载:

[root@hyy diskstudy]# cat /etc/mtab
....
/dev/sdb1 /diskstudy/web ext3 rw,seclabel,relatime,data=ordered 0 0
/dev/sdb5 /diskstudy/bak ext2 rw,seclabel,relatime 0 0
/dev/sdb6 /diskstudy/test ext2 rw,seclabel,relatime 0 0

那么重新启动虚拟机,这三个分区是否还可以使用?

不可以,系统开机时会自动读取/etc/fstab这个文件中的内容,根据该文件的配置,系统会自动挂载指定设备。

[root@hyy diskstudy]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jun  1 00:21:21 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=47a5bc34-1592-4c26-9409-73f14d3770e9 /                       xfs     defaults        0 0
UUID=dffed75c-4132-4782-893a-e282d515e2f7 /boot                   xfs     defaults        0 0
UUID=4b6a9d5f-1029-4c6b-b443-98150efe360c swap                    swap    defaults        0 0

如果你想要实现这三个分区,启动的时候自动挂载,需要修改/etc/fstab

[root@hyy diskstudy]# vi /etc/fstab
....
# 磁盘管理学习
# 设备名        挂载目录        文件系统        选项            备份    检测
/dev/sdb1       /web            ext3            defaults        0       0
/dev/sdb5       /bak            ext2            defaults        0       0
/dev/sdb6       /test           ext2            defaults        0       0

这样启动的 时候就会自动挂载了。

3.6 磁盘配额:

针对某个用户,限制其对某个分区的使用大小,防止用户创建过大的文件,造成空间不足。

  1. usrquota:针对单个用户进行空间限制
  2. grpquota:针对用户组进行空间限制
  3. quotacheck:自检测并创建用户(组)的磁盘配额文件。
    • quota.usr:用户的磁盘配额文件
    • quota.group:用户组的磁盘配额文件
  4. quotaon:开启限额功能
  5. edquota 用户名 : 针对某个用户限额
案例:

给ls用户和ww用户进行磁盘配额,步骤:

  1. 修改要限制使用分区 的挂载选项,使其具备限额功能。

    [root@hyy diskstudy]# mount -o remount,usrquota ./web
    

    修改后查看/etc/mtab,可以看到多了usrquota

    [root@hyy diskstudy]# cat /etc/mtab
    ...
    /dev/sdb1 /diskstudy/web ext3 rw,seclabel,relatime,quota,usrquota,data=ordered 0 0
    ...
    

    此时还是临时挂载,上面说了,如果需要自动挂载,需要修改/etc/fstab文件:

    [root@hyy diskstudy]# vi /etc/fstab
    /dev/sdb1       /web            ext3            defaults,usrquota        0       0
    
  2. 生成一个磁盘配额文件:

    [root@hyy diskstudy]# quotacheck -acuv
    
    • -a:扫描/etc/mtab文件所有挂载的文件系统。
    • -c:忽略现有的配置文件
    • -u:计算每个用户占用空间,创建quota.usr
    • -g:计算每个用户组占用空间,创建quota.group
    • -v:以交互的方式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qxDWQj1w-1669206638846)(images/image-20221109150846141.png)]

    执行后发现报错,没有生成成功,需要:

    [root@hyy diskstudy]# setenforce 0[root@hyy diskstudy]# quotacheck -acuv
    quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
    quotacheck: Scanning /dev/sdb1 [/diskstudy/web] done
    quotacheck: Old group file name could not been determined. Usage will not be subtracted.
    quotacheck: Checked 3 directories and 1 files[root@hyy diskstudy]# ls web
    aquota.user  lost+found
    
  3. 开启磁盘限额的功能,第一步是使其具备该功能而非开启。

    [root@hyy diskstudy]# quotaon ./web
    
  4. 针对某个用户进行限制:

    [root@hyy diskstudy]# edquota #ls #用户名# 进入一个vi界面,限制ls用户,限额20M
    Disk quotas for user ls (uid 1003):Filesystem                   blocks       soft       hard     inodes     soft     hard/dev/sdb1                         0          0         20480          0        0        0
    • blocks:限制空间大小
    • inodes:限制文件数目
      • soft:符号限制,不出错,但会提醒超出,一般不起作用
      • hard:硬限制,不可以超出,否则出错
  5. 查看用户对应限额:

    用户登录之后,使用quota命令查看限额

    或者

    使用root用户:

    repquota ./web
    
验证操作

创建指定大小文件(在./web目录下):

[root@hyy diskstudy]# dd if=/dev/zero of=./test.txt bs=1024 count=51200
+ bs=1024 1K
+ count 多少个bs
  1. 如果需要对其他用户实施同样的 限制,无需重新走一遍:

    edquota -p 已有限制用户 待限制用户

3.7 umount:

umount 命令用于卸载已经挂载的硬件设备,该命令的基本格式如下:

[root@localhost ~]# umount 设备文件名或挂载点
例子

注意,卸载命令后面既可以加设备文件名,也可以加挂载点,不过只能二选一,比如:

[root@localhost ~]# umount /dev/sdb6  # 使用设备名卸载
[root@localhost ~]# umount /diskstudy/test # 使用挂载点卸载

另外,我们在卸载时有可能会出现以下情况:

[root@localhost ~]# cd /diskstudy/test # 进入sdb6分区挂载目录
[root@localhost cdrom]# umount /diskstudy/test
umount: /diskstudy/test: device is busy.
#报错,设备正忙

这种报错是因为我们已经进入了挂载点,因此,如果要卸载某硬件设备,在执行 umount 命令之前,用户须退出挂载目录。

卸载硬件设备成功与否,除了执行 umount 命令不报错之外,还可以使用 df 命令或 mount -l 来查看目标设备是否还挂载在系统中。

3.8 实例:添加硬盘分区步骤

  1. 划分分区(fdisk)
  2. 创建文件系统(mkfs)
  3. 尝试挂载(mount)
  4. 写入配置文件(/etc/fstab)

http://chatgpt.dhexx.cn/article/IUcJ3pQv.shtml

相关文章

Linux:Quota 的基本命令​​​​​​​

在开始进行 quota 的实作之前,我们得来了解一下 quota 要使用的指令啰! 基本上分为两种,一种是查询功能(quota, quotacheck, quotastats, warnquota, repquota),另一种则是编辑 quota 的内容( …

01_Linux系统管理_基础知识_高级文件系统管理_磁盘配额(quota)

环境 虚拟机:VMware-10.0.7 build-2844087Linux系统:CentOS 6.8远程工具:Xshell 6 (Build 0197) 01_Linux系统管理_基础知识_高级文件系统管理_磁盘配额 一、什么是磁盘配额(quota) 磁盘配额概念 对用户和用户组使用磁…

linux 系统配额管理功能,磁盘配额管理_Linux教程_Linux公社-Linux系统门户网站

在多用户系统中,如果没有对用户使用的磁盘空间做出限制,用户无限制地存放数据和文件,可能会导致系统磁盘空间告警。如果存放的是无用数据,就会导致磁盘空间白白浪费。磁盘配额可以限制用户或组在磁盘上存放文件的空间,…

Linux复习笔记

Linux复习笔记 常识说明 目录结构 Linux以树型结构管理文件,其最上层文件夹为 / ,也就是根目录。 如图所示,图中展示了一部分文件夹的结构: 所有的文件夹都属于根目录的子文件夹。 安装好系统后,根目录会挂载到一…

linux对目录空间使用限制,Linux quotacheck命令使用详解:检查磁盘的使用空间和限制...

quotacheck命令通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件,设置用户和…

Linux常用命令——quotacheck命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) quotacheck 检查磁盘的使用空间与限制 补充说明 quotacheck命令通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。执行quotach…

Linux quotacheck失败

我找了多少个帖子才发现解决这个问题的啊...最终还是靠FQ找的这位大佬的文章 http://www.2daygeek.com/quotacheck-error/# 当我在执行quotacheck -avug的时候出现如下的错误: quotacheck: 无法从 /dev/sdb1 上的文件名猜测其格式,请在命令行中指定一个…

Linux系统输入quotacheck -ugcv /dev/sdb1报错

quotacheck -ugcv /dev/sdb1 报错处理 报错大多因为selinux没有关闭 [rootlocalhost fanhuilin]# quotacheck -ugcv /dev/sdb1 quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid runni…

【Shell 命令集合 磁盘管理 】Linux 检查和创建磁盘配额数据库 quotacheck命令使用教程

目录标题 描述语法格式参数说明错误情况 注意事项底层实现示例示例一示例二示例三示例四示例五示例六示例七 用c语言实现结语 Shell 命令专栏:Linux Shell 命令全解析 描述 quotacheck命令是Linux系统中的一个磁盘配额管理工具,用于检查和创建磁盘配额数…

linux quotacheck命令参数及用法详解---Linux系统管理

功能说明:检查磁盘的使用空间与限制。 语  法:quotacheck [-adgRuv][文件系统...] 补充说明:执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件,设…

第一性原理 《禅与计算机程序设计艺术》 / 陈光剑

第一性原理 《禅与计算机程序设计艺术》 / 陈光剑 任何事物背后必有道理。 什麼是第一性原理 第一性原理(First Principle Thinking),指的是回歸事物最基本的條件,將其拆分成各要素進行解構分析,從而找到實現目標最優路徑的方法。 該原理源於古希臘哲學家亞里士多德提出的一…

“风味人间”与计算机程序设计艺术《禅与计算机程序设计艺术》 / 陈光剑

来自“风味人间”的类比 所谓美食,不过是一次又一次的相逢。我们带您穿越山海之间,偶尔的落地生根,成就万千肴变,随即化作滚滚红尘,穿越香料歧路,几度江湖夜雨后,点亮万家灯火。 《风味人间》 浮华随风去,一菜一江湖。无论置身繁华闹市,还是身居乡野陋巷,世上的滋味,…

《禅与计算机程序设计艺术》/ By 禅与计算机程序设计艺术GPT-4

以《禅与计算机程序设计艺术》为文章标题,写一篇关于软件架构设计哲学思想的文章,不少于10000字。不要列目录,直接写具体的内容。 《禅与计算机程序设计艺术》/ By 禅与计算机程序设计艺术&GPT-4 文章目录 《禅与计算机程序设计艺术》/ By 禅与计算机程序设计艺术&G…

编程语言进化史《禅与计算机程序设计艺术》 / 陈光剑

编程语言概述 计算机编程语言是程序设计的最重要的工具,它是指计算机能够接受和处理的、具有一定语法规则的语言。 编程语言处在不断的发展和变化中,从最初的机器语言发展到如今的2500种以上的高级语言,每种语言都有其特定的用途和不同的发展轨迹。编程语言并不像人类自然语…

《计算机程序设计艺术》系列书

《计算机程序设计艺术》重译自Donald E. Knuth(汉名高德纳)的三卷著作:"The Art of Computer Programming: 1. Fundamental Algorithms; 2. Seminumerical Algorithms; 3. Sorting and Searching";三卷中文名为《基本算法》、《半数值算法》及…

“风味人间”与计算机程序设计艺术《禅与计算机程序设计艺术》

来自“风味人间”的类比 所谓美食,不过是一次又一次的相逢。我们带您穿越山海之间,偶尔的落地生根,成就万千肴变,随即化作滚滚红尘,穿越香料歧路,几度江湖夜雨后,点亮万家灯火。 《风味人间》 浮华随风去,一菜一江湖。无论置身繁华闹市,还是身居乡野陋巷,世上的滋味,…

计算机程序设计艺术初读感

传奇 在计算机领域里,有这么一本神作:作者从20多岁还在读博士时就开始写,一直写到80多岁,写到现在这本书还没完结;为了排版这本书而顺便开发的排版系统推动了整个西文印刷行业的变革;比尔盖茨说&#xff1…

计算机程序设计艺术读后感,计算机程序设计艺术(第1卷)读后感1000字

《计算机程序设计艺术(第1卷)》是一本由[美] Donald E. Knuth著作,清华大学出版社出版的精装图书,本书定价:80.00元,页数:650,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。 《计算机程序设计艺术(第1卷)》精选点评: ●神书,但是我智力太捉急了。。。感…

你这辈子可能都不需要看《计算机程序设计艺术》了!

“欣哥, 我什么时候可以看《计算机程序设计艺术》? ” “你这辈子可能都不需要看了!” 我在大学的时候并不知道《计算机程序设计艺术》(简称TAOCP)有多牛,他的作者有多牛,人家计划写七卷&#x…

计算机程序设计艺术一二叉树

计算机程序设计艺术一二叉树 概念: 一个有限的节点集合,它或者为空,或者由一个根连同两个二叉树组成。 二叉树的自然方法: 在每个节点内,有两个链接,LLINK和RLINK以及作为“指向树的指针”的链接变量T(T是…