六、磁盘划分与磁盘配额

目录

1、磁盘划分

1.1、什么是磁盘

1.2、机械硬盘的结构与关键概念
1.3、思考:为什么新买一个1T硬盘,使用时发现可使用容量低于1T
1.4、Linux中inode和block
1.5、查看超级快信息
1.6、磁盘分区与挂载

1.6.1、分区工具fdisk与格式化

1.6.2、分区工具gdisk与格式化
1.7、查看磁盘使用情况

1.7.1、df命令

1.7.2du命令

2、磁盘配额

1、磁盘划分

1.1、什么是磁盘

磁盘是一种数据存储设备,用于保存和检索数字数据。它通过一个或多个旋转的圆盘(磁性或光学的)来存储数据,数据通过磁头(在磁性磁盘中)或光头(在光学磁盘中)进行读写。磁盘可以是可移动的或固定在计算机内部的,并且根据存储技术的不同,磁盘可以分为几种类型:
硬盘驱动器(HDD)
硬盘驱动器使用磁性存储来记录和存储数据。它们包含一个或多个旋转盘片,这些盘片被涂有磁性材料,并通过移动磁头来读写数据。硬盘驱动器以其较大的存储容量和较低的成本而闻名,但与固态驱动器(SSD)相比,它们的访问速度较慢。
固态驱动器(SSD)
固态驱动器不包含移动部件,而是使用闪存(一种非易失性存储芯片)来存储数据。SSD提供比HDD更快的数据访问速度,更高的可靠性和耐用性,但每GB的成本通常更高。
光盘驱动器(CD/DVD/Blu-ray)
光盘驱动器使用激光技术在光盘上读写数据。这些磁盘可以是只读的(CD-ROM、DVD-ROM)、一次性写入的(CD-R、DVD-R)或可擦写重写的(CD-RW、DVD-RW、BD-RE)。光盘主要用于分发媒体内容、软件安装以及备份和存储个人数据。
混合硬盘(SSHD)
混合硬盘结合了HDD和SSD技术,在一个单一的设备中提供大容量的磁盘存储和快速的固态缓存。这使得它们能够提供接近SSD的性能,同时保持HDD级别的存储容量和成本效益。
网络附加存储(NAS)
虽然严格来说不是一种“磁盘”,网络附加存储是一种设备,它连接到网络,允许存储空间在网络上的多台设备之间共享。NAS设备内部通常包含多个HDD或SSD,用于数据存储。
磁盘是现代计算机系统不可或缺的一部分,用于操作系统、应用程序、用户数据等的存储。根据性能、容量和成本需求的不同,可以选择不同类型的磁盘。

1.2、机械硬盘的结构与关键概念

机械硬盘(HDD)是一种基于磁性存储原理的数据存储设备,它使用旋转的磁性盘片和移动的读写磁头来存储和检索数据。
磁道 磁道是硬盘上存储数据的圆形路径。每个盘片表面被细分为数千个同心圆,每个同心圆就是一个磁道。数据以磁道为单位进行组织和存储。
磁头 磁头用于读取和写入硬盘上的数据。它在硬盘操作时悬浮在盘片表面的微小距离上,通过改变盘片表面磁性物质的磁化状态来写入数据,或者检测磁化状态的变化来读取数据。硬盘通常有多个磁头,每个盘面一个。
扇区(Sector) 扇区是硬盘上用于实际存储数据的最小单位。每个磁道被进一步细分为若干个扇区。传统的扇区大小为512字节,但现代硬盘通常使用更大的扇区,如4096字节(即4K扇区)。
块(Block) 块是文件系统层面上的概念,指的是数据的逻辑存储单元。文件系统管理数据时,通常会将连续的多个扇区组成一个块来处理。块的大小由文件系统决定,常见的大小有4KB、8KB等。
柱面(Cylinder) 柱面是由所有盘片上相同半径的磁道组成的一个圆柱体。在早期的硬盘设计中,柱面是定位数据位置的一个重要概念,但在现代硬盘技术中,由于采用了更加复杂的数据存储算法,柱面的概念已经不再那么重要。
机械硬盘的工作原理基于精密的机械移动部件,这也导致了它们相比固态硬盘(SSD)有更高的延迟和较低的抗震性,但在成本和容量方面,机械硬盘仍有其优势

1.3、思考:为什么新买一个1T硬盘,使用时发现可使用容量低于1T

1、两种计量单位:十进制(由硬盘制造商使用)和二进制(由大多数操作系统使用)
2、在文件系统格式化时,会预留一部分空间用于存储Inode表。这意味着硬盘的一部分空间被用于存储文件系统的结构信息而非用户数据。因此,实际可用于存储文件的空间会少于硬盘的标称容量。(Windows:MFT(Master File Table))

1.4、Linux中inode和block

inode节点是一个64字节长度的表,表中包含了文件的相关信息,如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。在inode节点表中最重要的内容是:磁盘地址表。
文件命名存放在目录当中,但是Linux系统内部不使用文件名,而是使用inode号码识别文件。对于系统来说文件名只是inode号码便于识别的别称。即Linux文件系统通过把inode和文件名进行关联来查找文件。当需要读取该文件时,文件系统在当前目录中查找该文件名对应的项,由此得到该文件相对应的inode节点号,通过该idone节点的磁盘地址表把分散此南方的文件物理块连接成文件的逻辑结构。
文件是存储在磁盘上的,磁盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取磁盘的时候,不会一个个扇区的读取,二是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存放的最小单位。块的大小,最常见的4kb,即连续8个扇区自称一个block
即512字节组成一个扇区(sector),多个扇区组成一个块(block),常见的块为4kb,即连续八个扇区组成一个block

注:一个文件必须占用一个inode,但至少占用一个block

1.5、查看超级快信息

centos6使用dumpe2fs /dev/sda1,centos7使用xfs_info /dev/sba1

meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
注:
isize:inode占用空间
agcount:超级群组
agsize:超级群组占用块
sectsz:扇区大小
bsize:块大小
blocks:块的数量

1.6、磁盘分区与挂载

磁盘常识
磁盘从生产到使用的三个阶段:
低级格式化:低级格式化为磁盘的使用准备了物理介质,包括创建磁道和扇区、检测坏道(厂商完成)
分区:两种分区表MBR个GPT
MBR
将分区信息保存到磁盘的第一个扇区(MBR扇区)的64个字节中,每个分区占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容。
特点:
MBR分区主分区数目不能超过4个,很多时候,4个主分区并不能满足需要。
MBR分区方案无法支持超过2TB容量的磁盘。因为这一方案用4个字节存储分区的总扇区数,最大能表示2的32次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB,磁盘容量超过2TB以后,分区的起止位置也就无法表示了,BIOS将无法识别分区。(这种分区表逐渐将被淘汰,当然现在很多系统还在用)
思考:如果磁盘超过2TB,怎么办?
GPT
GUID磁盘分割表(GUID Partition Table)的缩写,含义“全球唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。
GPT的分区方案之所以比MBR更先进,是因为在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。在Windows中,微软设定GPT磁盘最大分区数量为128个。
特点:
支持2TB以上的大硬盘。
每个磁盘的分区个数几乎没有限制。操作系统存在允许的最多分区数的限制,比如win限制128个。
高级格式化:又称逻辑格式化,这一过程在操作系统层面上创建文件系统(如NTFS、FAT32、ext4等),使得硬盘可以被操作系统识别并存储文件。

1.6.1、分区工具fdisk与格式化

fdisk命令–MBR分区表
命令介绍

fdisk 是一个用于磁盘分区的命令行工具,它允许你创建、删除、调整、查看和复制磁盘分区表。
基本语法

fdisk [options] <device>

:你想要操作的磁盘,例如 /dev/sda。
常用选项
-l:列出指定磁盘的分区表信息
分区示例
交互模式中常用的指令

   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition    //删除分区
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types  //显示分区类型
   m   print this menu   //打印帮助菜单
   n   add a new partition  //添加新的分区
   o   create a new empty DOS partition table
   p   print the partition table   //显示分区表
   q   quit without saving changes  //退出,不保存
   s   create a new empty Sun disklabel
   t   change a partition's system id  //改变分区类型
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit  //写入分区信息,保存操作并退出
   x   extra functionality (experts only)

磁盘分区过程

命令(输入 m 获取帮助):n  //新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)  //主分区(主分区个数,扩展分区个数,剩余个数)
   e   extended //扩展分区
Select (default p): p //新建主分区
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{
            K,M,G} (2048-41943039,默认为 41943039):+1G //扇区换算容量不方便,直接通过设定容量的方式分区
分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):p //查看分区信息

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e   //新建扩展分区
分区号 (2-4,默认 2):
起始 扇区 (2099200-41943039,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{
            K,M,G} (2099200-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 19 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x11d5f66e
//只管可见扇区号的使用
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200    41943039    19921920    5  Extended

命令(输入 m 获取帮助):n //扩展分区不可使用,需要在扩展分区上建立逻辑分区
Partition type:
   p   primary (1 primary, 1 extended, 2 free) 
   l   logical (numbered from 5)
Select (default p): l   //建立逻辑分区
添加逻辑分区 5
起始 扇区 (2101248-41943039,默认为 2101248):
将使用默认值 2101248
Last 扇区, +扇区 or +size{
            K,M,G} (2101248-41943039,默认为 41943039):+2G
分区 5 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):p

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200    41943039    19921920    5  Extended
/dev/sdb5         2101248     6295551     2097152   83  Linux

命令(输入 m 获取帮助):w  //保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

格式化–mkfs
命令介绍
mkfs(make filesystem)命令在Linux系统中用于创建一个文件系统,也就是格式化分区或磁盘。mkfs后通常跟有一系列特定于文件系统类型的命令,如mkfs.ext4、mkfs.xfs等
基本语法
mkfs -t [options] [device] [size]
-t :指定要创建的文件系统类型,如ext4、xfs、vfat等。
[options]:文件系统特有的选项。
[device]:是要格式化的分区或磁盘,如/dev/sda1。
[size]:可以指定文件系统的大小,这通常不是必需的,因为mkfs会使用整个分区或磁盘。
文件系统类型特定的命令
mkfs.ext4:创建一个ext4文件系统。
mkfs.vfat:创建一个FAT文件系统,通常用于USB闪存驱动器和其他可移动媒体。
mkfs.xfs:创建一个XFS文件系统。
mkfs.ntfs:创建一个NTFS文件系统,通常用于与Windows系统兼容。
示例

mkfs.xfs /dev/sdb1  //.指定文件系统类型
mkfs -t ext4 /dev/sdb5 //-t指定文件系统类型

扩展交换分区
swap分区概念

Swap分区在Linux系统中用作虚拟内存,当物理内存(RAM)不足时,系统可以将内存中的数据暂时转移到swap分区。Swap分区可以是一个专用的分区,也可以是一个swap文件。
Swap的作用
虚拟内存:Swap提供了一种虚拟内存机制,允许系统在物理内存用尽时继续运行程序,通过将部分数据暂存到硬盘上。
内存管理:Swap还可以帮助管理内存,特别是在运行大量或内存密集型应用程序时。
休眠(Hibernation):对于支持休眠功能的系统,swap分区也被用于存储当前内存的状态,使得计算机可以完全断电,并在之后恢复到之前的状态。
Swap分区的大小 Swap分区的建议大小取决于系统内存大小和你的具体需求。对于大多数现代系统,一个常见的经验法则是:
如果内存小于2GB,swap大小可以是RAM大小的两倍。
如果内存介于2GB到8GB之间,swap大小通常设置为与RAM相等。
如果内存超过8GB,可能需要更少的swap空间,具体取决于系统使用情况和是否需要休眠功能。
查看swap分区大小
查看swap分区大小可以使用free -h命令。也可以通过cat /proc/meminfo | grep SwapTotal命令来查看
free命令介绍
free 命令在Linux系统中用于显示系统中空闲、已用、交换(swap)等内存的使用情况。它提供了关于物理内存和交换空间以及缓冲区和内核缓存的使用情况的信息
基本语法
free [options]
常用选项
-b:以字节为单位显示内存使用情况。 -k:以千字节为单位显示内存使用情况(默认选项)。 -m:以兆字节为单位显示内存使用情况。 -g:以吉字节为单位显示内存使用情况。 -h:以易读的格式显示内存使用情况(自动选择适当的单位)。 -t:显示总计(物理内存+交换空间)。 -s :连续显示内存使用情况,间隔为指定的秒数。
输出解释
total:总计物理内存的大小。 used:已使用的内存大小。 free:未被使用的内存大小。 shared:多个进程共享的内存总量(通常很小)。 buff/cache:被缓冲(buffered)和缓存(cached)的内存大小。 available:预计可用于启动新应用程序而不需交换的内存大小
buff与cache的区别
buffer和cache都是内存中的一块区域。
当CPU需要写数据到磁盘时,由于磁盘速度比减慢,所以CPU先把数据存到buffer,然后CPU去执行其他任务,buffer中的数据会定期写入磁盘
当CPU需要从磁盘读数据时,由于磁盘速度比减慢,可以把即将用到的数据提前存入cache,CPU直接从cache读取数据
示例

//显示内存使用情况(默认单位为千字节):
free
//以人类可读的格式显示内存使用情况:
free -h
//显示总计行:
free -t
//每隔2秒连续显示内存使用情况:
free -s 2

扩展swap分区

//创建交换分区
mkswap /dev/sdb5
//查看交换分区大小
cat /proc/meminfo | grep SwapTotal
//激活/swap,加入swap分区中,这是临时生效的,要永久生效需要写入/etc/fstab
swapon /dev/sdb5
cat /proc/meminfo | grep SwapTotal
//卸载
swapoff /dev/sdb5

挂载文件系统–mount
命令介绍
mount命令在Linux和UNIX系统中用于挂载文件系统。当你想要访问存储设备(如硬盘分区、CD-ROM、USB驱动器)或者某个文件系统时,你需要将它挂载到目录树中的某个点,这个点称为挂载点(mount point)。
基本语法
mount [options]
:要挂载的设备,如/dev/sda1。 :文件系统挂载的目录,如/mnt或/media/newdisk。
常用选项
-t :指定文件系统类型,如ext4、ntfs或vfat。
-o :指定挂载选项,如ro(只读)、rw(读写)、nosuid、nodev等。
-a:挂载/etc/fstab中定义的所有文件系统。
-r:以只读方式挂载文件系统。
-w:以读写方式挂载文件系统。
–bind:将一个目录挂载到另一个目录上,两个目录将显示相同的内容。
实例

//先创建挂载点
mkdir /app /date
//挂载
mount /dev/sdb1 /app/
mount -t ext4 /dev/sdb5 /date
//显示文件系统类型以及磁盘使用情况
df -hT

卸载文件系统–umount
命令介绍

umount 命令在Linux系统中用于卸载已经挂载的文件系统。使用此命令可以安全地断开文件系统与目录树的连接,确保所有挂起的读写操作完成并更新磁盘上的数据。
基本语法
umount [options]
:挂载点目录的路径,即文件系统挂载到的位置。
:设备的文件名,如 /dev/sda1。
常用选项
-l:延迟卸载,即使设备当前正忙,也立即返回。实际的卸载操作会延迟到设备不忙的时候。
-f:强制卸载,尝试强制卸载一个文件系统,即使它当前正忙。
-n:不更新 /etc/mtab 文件。通常在系统启动或关闭时由系统自动使用。
-r:如果卸载失败,尝试重新挂载为只读
示例

卸载一个挂载点
umount /date
卸载一个设备
umount /dev/sdb5

自动挂载

vim /etc/fstab
/dev/sdb1               /app                    xfs     defaults        0 0
/dev/adb5               /date                   ext4    defaults        0 0

/etc/fstab各列含义
设备名(Device):
这是要挂载的文件系统的设备名或标签。它可以是设备文件的路径(如 /dev/sda1)、UUID(如 UUID=xxxxx)或者标签(如 LABEL=/home)。
挂载点(Mount Point):
文件系统要挂载到的目录路径。例如,/、/home 或 /mnt/data。
文件系统类型(File System Type):
文件系统的类型,比如 ext4、xfs、ntfs、vfat、swap 等。
挂载选项(Mount Options):
用于定义挂载行为的选项。常见的选项包括 defaults(默认挂载选项,通常包括 rw, suid, dev, exec, auto, nouser, 和 async)、ro(只读)、rw(读写)、noexec(不允许执行二进制文件)、nosuid(忽略suid和sgid位)、等等。
Dump:
这个字段用来决定是否需要备份。如果设置为0,表示不需要备份;如果设置为1,则需要由 dump 程序备份。
Pass(fsck顺序):
在系统启动时,fsck 程序会按照这个字段给出的顺序检查文件系统。根文件系统应该设置为 1,其他需要检查的文件系统设置为 2。如果该字段设置为0,则表示不需要在启动时检查该文件系统

1.6.2、分区工具gdisk与格式化

gdisk命令–GPT分区表
命令介绍

gdisk 是一个基于文本的分区工具,专门用于处理 GUID 分区表(GPT)。相比于传统的 fdisk 工具,gdisk 支持更大的硬盘以及更多的分区数量,它是现代大容量硬盘的首选分区工具。
在Linux系统中,默认没有安装该工具,使用时要先进行安装:
yum -y install gdisk
基本语法
gdisk [options]
:你想要操作的磁盘,例如 /dev/sda。
常用选项:
-l:列出分区表,类似于 fdisk 的 -l 选项。
-e:重新加载备份分区表。
-o:创建一个新的空的 GUID 分区表。
-p:打印分区表。
-d:删除一个分区。
-n:添加一个新分区。
-t:改变一个分区的类型。
-w:将修改写入磁盘并退出。
示例

gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): ? //区别于fdisk的m,其他的无区别
b     back up GPT data to a file
c change a partition's name
d  delete a partition
i show detailed information on a partition
l   list known partition types
n add a new partition
o        create a new empty GUID partition table (GPT)
p      print the partition table
q  quit without saving changes
r        recovery and transformation options (experts only)
s sort partitions
t    change a partition's type code
v     verify disk
w        write table to disk and exit
x       extra functionality (experts only)
? print this menu

Command (? for help): p 
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 00AD00A8-FDE3-4A88-80C2-CFB30DB17D70
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 41942973 sectors (20.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help): n
Partition number (1-128, default 1):
First sector (34-41943006, default = 2048) or {
            +-}size{
            KMGTP}:
Last sector (2048-41943006, default = 41943006) or {
            +-}size{
            KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L
0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE
3000 ONIE boot             3001 ONIE config           4100 PowerPC PReP boot
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved
8200 Linux swap            8300 Linux filesystem      8301 Linux reserved
8302 Linux /home           8400 Intel Rapid Start     8e00 Linux LVM
a500 FreeBSD disklabel     a501 FreeBSD boot          a502 FreeBSD swap
a503 FreeBSD UFS           a504 FreeBSD ZFS           a505 FreeBSD Vinum/RAID
a580 Midnight BSD data     a581 Midnight BSD boot     a582 Midnight BSD swap
a583 Midnight BSD UFS      a584 Midnight BSD ZFS      a585 Midnight BSD Vinum
a800 Apple UFS             a901 NetBSD swap           a902 NetBSD FFS
a903 NetBSD LFS            a904 NetBSD concatenated   a905 NetBSD encrypted
a906 NetBSD RAID           ab00 Apple boot            af00 Apple HFS/HFS+
af01 Apple RAID            af02 Apple RAID offline    af03 Apple label
af04 AppleTV recovery      af05 Apple Core Storage    be00 Solaris boot
bf00 Solaris root          bf01 Solaris /usr & Mac Z  bf02 Solaris swap
bf03 Solaris backup        bf04 Solaris /var          bf05 Solaris /home
bf06 Solaris alternate se  bf07 Solaris Reserved 1    bf08 Solaris Reserved 2
bf09 Solaris Reserved 3    bf0a Solaris Reserved 4    bf0b Solaris Reserved 5
c001 HP-UX data            c002 HP-UX service         ea00 Freedesktop $BOOT
eb00 Haiku BFS             ed00 Sony system partitio  ed01 Lenovo system partit
Press the  key to see more codes:
ef00 EFI System            ef01 MBR partition scheme  ef02 BIOS boot partition
fb00 VMWare VMFS           fb01 VMWare reserved       fc00 VMWare kcore crash p
fd00 Linux RAID
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 00AD00A8-FDE3-4A88-80C2-CFB30DB17D70
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 39845821 sectors (19.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.

1.7、查看磁盘使用情况

1.7.1、df命令

命令介绍
df 命令在Linux系统中用于报告文件系统的磁盘空间使用情况。它可以显示每个挂载的文件系统的总空间、已使用空间、可用空间以及它们挂载的位置。
基本语法
df [options] [file…]
常用选项
-h,–human-readable:以人类可读的方式显示大小(例如,自动选择 KB、MB 或 GB)。
-T:显示每个文件系统的类型。
-a:显示所有文件系统的信息,包括通常不显示的系统文件系统。
–total:在输出的最后添加所有值的总计。
-i:显示inode信息而非块使用情况
示例

//显示所有文件系统的磁盘使用情况:
df
//以人类可读的格式显示磁盘使用情况:
df -h
//显示文件系统类型以及磁盘使用情况:
df -hT
//显示指定文件所在文件系统的磁盘使用情况:
df -h /path/to/file
//查看关于特定分区或挂载点的磁盘使用情况,可以直接指定它,如:
df -hT /dev/sdb5
//查看所有文件系统的inode信息:
df -hi

1.7.2du命令

命令介绍
du(disk usage)命令在Linux系统中用于估算文件或文件夹的磁盘使用空间。不同于df命令,du是用来计算指定文件或目录的磁盘使用情况,而不是整个文件系统的使用情况。
基本语法
du [options] [file|directory…]
常用选项
-h,–human-readable:以人类可读的格式显示(例如KB、MB、GB)。
-a,–all:显示所有文件和目录的磁盘使用情况,而不仅仅是目录。
-s,–summarize:只显示总计,即当前目录的总用量,而不列出子目录和文件的大小。
-c,–total:除了显示每个指定文件和目录的磁盘使用情况之外,还在最后一行显示它们的总计。
–max-depth=N:显示目录树下N层子目录的磁盘使用情况。
示例

//显示当前目录的磁盘使用情况:
du
//以人类可读的格式显示当前目录及其子目录的磁盘使用情况:
du -h
//只显示当前目录总计的磁盘使用情况:
du -sh
//显示指定文件或目录的磁盘使用情况:
du -h /path/to/directory
//显示当前目录下一级子目录的磁盘使用情况:
du -h --max-depth=1
//查看多个目录并显示它们的总计:
du -hc /path/to/dir1 /path/to/dir2

2、磁盘配额

实现磁盘限额的条件
1.需要 Linux 内核支持
2.安装 xfsprogs 与quota 软件包
Linux 磁盘限额的特点
作用范围:针对指定的文件系统(分区)
限制对象:用户帐号、组帐号
限制类型
图片[1] - 六、磁盘划分与磁盘配额 - 宋马
限制方法
图片[2] - 六、磁盘划分与磁盘配额 - 宋马
xfs_quota 命令
介绍:
xfs_quota 命令是一个专门针对 XFS 文件系统来管理 quota 磁盘容量配额服务而设计的命令
格式:
“quota [选项] 配额 文件系统
选项:
-c 选项用于以参数的形式设置要执行的命令,例如,‘report’ 用于报告当前配额的使用情况,‘limit’ 用于设置用户或组的磁盘使用限制,‘warn’ 用于设置警告阈值,‘delete’ 用于删除用户的配额设置等。
-x这个参数用于指定操作的文件系统。由于配额是针对特定文件系统的,因此在使用xfs_quota时需要明确指定要操作的文件系统路径。
磁盘配额管理步骤

1、安装软件包
[root@192 ~]# yum -y install quota xfsprogs
2、以支持配额功能的方式挂载文件系统
[root@192 ~]# mount -o usrquota,grpquota /dev/storage/vo /data/
[root@192 ~]# vim /etc/fstab
/dev/storage/vo         /data                   xfs    defaults,usrquota,grpquota        0 0
[root@192 ~]# mount |grep data
/dev/mapper/storage-vo on /data type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
3、修改目录权限,允许所有用户写入
[root@192 ~]# chmod 777 /data/
4、创建用户tom
[root@192 ~]# useradd tom
5、设置用户 tom 对/data 目录的 quota 磁盘容量配额。具体的限额控制包括:硬盘使用量
的软限制和硬限制分别为 3MB 和 6MB;创建文件数量的软限制和硬限制分别为 3 个和 6 个。
[root@192 ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /data
[root@192 ~]# xfs_quota -x -c report /data //查看当前配额状态
User quota on /data (/dev/mapper/storage-vo)
                               Blocks
User ID          Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
root                0          0          0     00 [--------]
tom                 0       3072       6144     00 [--------]

Group quota on /data (/dev/mapper/storage-vo)
                               Blocks
Group ID         Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
root                0          0          0     00 [--------]
6、试切换到这个普通用户,然后分别尝试创建一个体积为 5MB 和 8MB 的文件。可以发现,
在创建 8MB 的文件时受到了系统限制
[root@192 ~]# su - tom
[tom@192 ~]$ dd if=/dev/zero of=/data/tom bs=5M count=1
记录了1+0 的读入
记录了1+0 的写出
5242880字节(5.2 MB)已复制,0.00430738 秒,1.2 GB/秒
[tom@192 ~]$ dd if=/dev/zero of=/data/tom bs=8M count=1
dd: 写入"/data/tom" 出错: 超出磁盘限额
记录了1+0 的读入
记录了0+0 的写出
4194304字节(4.2 MB)已复制,0.00968536 秒,433 MB/秒

edquota 命令
介绍
edquota 命令用于编辑用户的 quota 配额限制
格式
edquota [参数] [用户]
参数
-u参数表示要针对哪个用户进行设置
-g 参数表示要针对哪个用户组进行设置
注:edquota命令会调用Vi或Vim编辑器来让root管理员修改要限制的具体细节。

[root@192 ~]# edquota -u tom
Disk quotas for user tom (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/storage-vo         8192       3072       8192          1        3        6
[root@192 ~]# su - tom
[tom@192 ~]$ dd if=/dev/zero of=/data/tom bs=8M count=1
记录了1+0 的读入
记录了1+0 的写出
8388608字节(8.4 MB)已复制,0.0101799 秒,824 MB/秒
[tom@192 ~]$ dd if=/dev/zero of=/data/tom bs=10M count=1
dd: 写入"/data/tom" 出错: 超出磁盘限额
记录了1+0 的读入
记录了0+0 的写出
8388608字节(8.4 MB)已复制,0.0105331 秒,796 MB/秒

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容