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

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

image.png

Linux磁盘管理

1. linux 文件系统类型

Ext( Extended file system) :

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

Ext2 :

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

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

Ext4 :

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

Btrfs:

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

swap文件系统:

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

支持的其他类型:

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 为例来做练习,命令如下:

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

执行命令 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
  1. 可以看到刚刚新增的Disk /dev/sdb
  2. 执行 fdisk /dev/sdb
fdisk /dev/sdb

  1. 在显示出的界面中,“m”查看帮助菜单
  • d 删除分区
  • n 添加新分区
  • p :primary主分区

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

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

注意:

Linux系统主分区最多4个,多数情况下采用3个主分区+扩展分区。

扩展分区最多只能有一个(os限制)

能够被格式化后作为数据访问的分区为主分区与逻辑分区。扩展分区无法格式化。

逻辑分区的数量依据操作系统而不同,在linux 系统中,IDE硬盘最多有59个逻辑分区 (5- 63号) SATA硬盘最多11个逻辑分区( 5- 15 )

  • p 打印分区表

  • 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 系统中的文件目录结构。

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

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

可以看到,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 磁盘配额:

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

usrquota:针对单个用户进行空间限制

grpquota:针对用户组进行空间限制

quotacheck:自检测并创建用户(组)的磁盘配额文件。

quota.usr:用户的磁盘配额文件

quota.group:用户组的磁盘配额文件

quotaon:开启限额功能

edquota 用户名 : 针对某个用户限额

案例:

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

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

[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

生成一个磁盘配额文件:

[root@hyy diskstudy]# quotacheck -acuv

-a:扫描/etc/mtab文件所有挂载的文件系统。

-c:忽略现有的配置文件

-u:计算每个用户占用空间,创建quota.usr

-g:计算每个用户组占用空间,创建quota.group

-v:以交互的方式

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

[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

开启磁盘限额的功能,第一步是使其具备该功能而非开启。

[root@hyy diskstudy]# quotaon ./web

针对某个用户进行限制:

[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:硬限制,不可以超出,否则出错

查看用户对应限额:

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

或者

使用root用户:

repquota ./web

验证操作

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

[root@hyy diskstudy]# dd if=/dev/zero of=./test.txt bs=1024 count=51200
+ bs=1024 1K
+ count 多少个bs

如果需要对其他用户实施同样的 限制,无需重新走一遍:

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 实例:添加硬盘分区步骤

划分分区(fdisk)

创建文件系统(mkfs)

尝试挂载(mount)

写入配置文件(/etc/fstab)

相关文章
|
3月前
|
Ubuntu Linux Shell
Linux系统中如何查看磁盘情况
【9月更文挑战第3天】在Linux系统中,有多种方式查看磁盘情况。可通过命令行工具`df`查看文件系统磁盘使用情况,选项`-h`以人类可读格式显示,`-T`显示文件系统类型;`du`命令显示目录或文件磁盘使用情况,`-h`以人类可读格式显示,`-s`仅显示总计;`fdisk -l`列出磁盘和分区信息。此外,图形界面的磁盘管理工具和文件管理器也可用于查看磁盘使用情况。这些方法有助于更好地管理磁盘空间。
612 4
|
4月前
|
存储 监控 安全
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
|
25天前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
58 3
|
3月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
231 73
|
2月前
|
机器学习/深度学习 Linux 编译器
Linux入门3——vim的简单使用
Linux入门3——vim的简单使用
58 1
|
2月前
|
Unix Linux 对象存储
Linux 磁盘管理
Linux 磁盘管理
38 1
|
2月前
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
31 0
Linux入门1——初识Linux指令
|
3月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
2月前
|
存储 数据可视化 Linux
Linux 基础入门
Linux 基础入门
|
2月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
28 0