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

news2024/11/16 13:35:34

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

文章跳转
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 -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
    

    可以看到刚刚新增的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, 1605632

Allocating 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://www.coloradmin.cn/o/30512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 结合mysql写一个服务端

1 libhv和mysql libhv是一个跨平台的C网络库。 mysql是一个关系型数据库。 2 下载MySQL, 最好不要下载高版本的,容易出错!!! 下载地址MySQL 下载好后目录是这样的: 然后在环境变量里配置:…

Hive 3.1.3

1.下载安装包 Index of /hive/hive-3.1.3https://dlcdn.apache.org/hive/hive-3.1.3/ 2.安装&修改配置文件 2.1 安装MySQL a. 搜索centos7默认的mariadb & 卸载 [root@node1 ~]# rpm -qa | grep mariadb mariadb-libs-5.5.44-2.el7.centos.x86_64 卸载 [r…

【计算机组成原理Note】5.4.2 控制器-微程序

5.4.2 控制器-微程序 硬布线工作原理:微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,即时产生微程序工作原理:事先把微操作控制信号存储在一个专门的存储器(控制存储器)中,将每一条机器指令编写成一个微程序&#xf…

差钱吗?周杰伦线上演唱会没关打赏惹争议,看看同时直播的腾格尔

随着世界杯的到来,全球都进入了世界杯时间,音乐领域的明星们,都以各种形式欢迎世界杯的到来。在世界杯开幕的前一晚上,著名音乐人周杰伦,在某手平台开启了线上演唱会,吸引了众多人前来围观。 据不完全统计&…

【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第七章 Verilog …

【计组】入门篇 --《深入浅出计算机组成原理》

课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 目录 一、为什么需要学习计算机组成原理 二、冯诺依曼体系结构:计算机组成的金字塔 1、计算机的基本硬件组成 2、冯诺依曼体系结构 三、通过CPU主频谈性能 1、什么是性能 2、计算…

【微信早安定时推送消息】微信公众号定时推送早安消息 带天气、纪念日、生日、定时推送等(完整代码)

我挥舞着键盘和本子,发誓要把世界写个明明白白。 简介 利用所学知识给他/她一个惊喜,是作为计算机专业的你最大的乐趣。 无计算机基础,5分钟即设置好 (定时推送 及 最新版 将在下期带来) 获取完整代码,关注…

性能测试怎么做?性能测试重点和各项性能测试流程(超级详细)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 性能测试基础 1&am…

【设计模式】过滤器模式(Filter Pattern)

过滤器模式属于结构型模式,但它并不属于我们常说的二十三种设计模式。主要是以相对解耦的方式来过滤一组对象。 文章目录过滤器模式的介绍优点应用场景过滤器模式的使用类图实现方法第一步,创建员工类第二步,创建过滤器接口第三步&#xff0c…

如何部署商城项目

如何部署商城项目 1.导入数据库 ​ 注意:先保证数据库开启了远程访问(见数据库安装和配置笔记)。 1.1设置数据库服务器编码 ​ vi /etc/my.cnf ​ 在[mysqld]下面添加 character_set_serverutf8 init_connectSET NAMES utf81.2打开本地…

RK3399平台开发系列讲解(中断篇)中断控制器(Generic Interrupt Controller)

🚀返回专栏总目录 文章目录 一、GIC硬件的实现形态二、主要的功能块三、中断类型四、中断状态沉淀、分享、成长,让自己和他人都能有所收获!😄 📢外围设备不是把中断请求直接发给处理器,而是发给中断控制器,由中断控制器转发给处理器。ARM公司提供了一种标准的中断控制…

NR CSI(二) the workflow of CSI report

微信同步更新欢迎关注同名modem协议笔记 本篇内容是对CSI report相关流程的整理,其描述主要集中在R16 38.331 38.321 38.214中,以实网中的一个配置开始,看下相关定义。 如上图实网中的配置,CSI-ReportConfig 对应的就是Reporting…

Cookie和Session的工作流程是什么样的?5min学懂:简易用户登录(前端+后端+数据库)

目录 前言 一、Cookie 1.1、Cookie从哪里来? 1.2、Cookie到哪里去? 二、Session 2.1、什么是sessionId? 三、Cookie和Session的区别 四、Cookie和Session的具体工作流程 五、代码实现用户登录 5.1、核心方法 5.2、代码 前言 想要了解Cookie和…

【设计模式】桥接模式(Bridge Pattern)

桥接模式属于结构型模式,主要解决因业务增长时滥用继承而导致的**“类爆炸”问题。桥接模式将一个树型的整体继承结构替换为由抽象的类(抽象化角色)组成的抽象部分和由实现接口(实现化角色)与实现类(具体实…

无法访问mybatis.dto.StudengInVO-使用maven编译报错

一、问题由来 最近一次拉代码后,合并代码然后进行编译时出现一个问题,使用maven在进行编译的时候报一个错,无法访问mybatis.dto.StudengInVO。 突然出现这个错误让自己感觉很奇怪,开发工具已经使用了好几个月,项目也已…

SSM毕设项目 - 基于SSM的汉服文化平台网站(含源码+论文)

文章目录1 项目简介2 实现效果2.1 界面展示3 设计方案3.1 概述3.2 系统流程3.3 系统结构设计4 项目获取1 项目简介 Hi,各位同学好呀,这里是M学姐! 今天向大家分享一个今年(2022)最新完成的毕业设计项目作品,【基于SSM的汉服文化…

(十三)Spring之JdbcTemplate

文章目录环境新增、删除与修改数据新增修改删除查询一个查询一个对象查询一个值查询多个对象批量操作批量添加批量修改批量删除使用回调函数使用德鲁伊连接池上一篇:(十二)Spring IoC注解式开发JdbcTemplate是Spring提供的一个JDBC模板类&…

高阶数据结构:二叉搜索树

本篇主要是在初级数据结构中介绍的二叉树的提升,了解二叉搜索树的特性。 文章目录 一、二叉搜索树的概念二、二叉搜索树操作 1、二叉搜索树的查找2、二叉搜索树的插入3、二叉搜索树的删除三、二叉搜索树的实现四、二叉搜索树的应用五、关于二叉树进阶面试题一、二叉…

大衣哥又有喜事了,孟文豪新作《克什克腾的眼泪》,是给他写的吗

农民歌唱家大衣哥又出新歌啦! 就在大衣哥被谷传民起诉不久,互联网上面又传出新消息,继《火火的情怀》之后,大衣哥的新歌《新时代的新农民》,又要和大家见面了。很多人不明白,大衣哥不过是一个农民歌唱家&am…

Java中的反射,枚举和Lambda表达式

一. 反射 1. 反射的概述 2. 反射的使用 反射常用的类 通过反射获取Class对象 获得Class类相关的方法 使用反射创建实例对象 使用反射获取实例对象中的构造方法 通过反射获取实例对象的属性 通过反射获取实例对象的方法 3. 反射的优缺点 二. 枚举 1…