第5章磁盘管理






磁盘是操作系统中最主要的数据存储设备。本章在介绍Linux磁盘管理理论知识的基础上,重点介绍Ubuntu操作系统的磁盘管理命令,包括磁盘分区的查看和操作,文件系统的查看、挂载、卸载、创建、修复、备份和恢复等。



视频讲解



5.1Linux磁盘管理概述
Linux操作系统将每个硬件设备都看作一个文件,称为设备文件。Linux磁盘管理实际上就是磁盘设备文件管理。Linux内核为每个硬件设备在/dev目录中创建其对应的设备文件。该设备文件关联驱动程序,通过访问设备文件可以访问该文件所关联的硬件设备。
一般情况下,一个设备有三个标志: 设备类型、主设备号和次设备号。主设备号与驱动程序对应,如果使用驱动程序不同,那么主设备号也不同。次设备号被用来区分同一类型的不同设备。Linux硬件设备可以分为字符(char)设备和块(block)设备。字符设备按字符方式顺序访问设备,如打印机。块设备按块方式随机访问设备,如硬盘和U盘。
5.1.1Linux磁盘分区表
磁盘分区是对磁盘物理设备的逻辑划分。磁盘在操作系统中的使用必须先分区,然后格式化,即建立文件系统后,才能存储数据。磁盘分区被格式化后,可以称为卷(Volume)。Linux的磁盘分区主要采用两种分区表: MBR(Master Boot Record,主引导记录)和GPT(Globally Unique Identifier Partition Table,全国唯一标识磁盘分区表)。MBR最多支持4个主分区,MBR分区的最大容量是2TB。GPT最多支持128个主分区,GPT分区的最大容量可以超过2TB。目前,大多数情况下,还是采用传统的MBR分区表,这样,可以将一个磁盘最多划分成4个主分区,或者3个主分区和1个扩展分区。
5.1.2Linux磁盘分区命名
Linux系统中,磁盘分区的命名规则是在磁盘设备接口前缀和设备编号的基础上加上分区编号,即接口前缀+设备编号+分区编号。代表性的磁盘设备接口类型主要有两大类: IDE接口和SCSI、SATA、SAS、USB接口。前一种接口类型前缀使用hd表示,后一种接口类型前缀使用sd表示。设备编号为小写英文字母顺序表示,从a开始编号,即按a、b、c、d、e顺序编排。
在磁盘分区编号方面,Linux系统为每个磁盘分配一个1~16分区编号,即分区号。主分区(Primary Partion)和扩展分区(Extension Partion)占用前4个编号(1~4),逻辑分区(Logical Partion)占用后12个编号(5~16)。每块磁盘内只能划分一块扩展分区,扩展分区创建后不能直接使用,需要在扩展分区内创建逻辑分区,扩展分区内可划分任意块逻辑分区。逻辑分区实际上就是扩展分区内创建的分区。
按照以上的Linux磁盘分区命名规则,第1块SCSI磁盘表示为sda,里面的主分区分别表示为sda1、sda2,以此类推,扩展分区下的逻辑分区表示为sda5、sda6,以此类推; 第2块SCSI磁盘表示为sdb,里面的主分区分别表示为sdb1、sdb2,以此类推,扩展分区下的逻辑分区表示为sdb5、sdb6,以此类推。
5.1.3Linux文件系统
文件系统是操作系统在磁盘上保存文件信息的方法和存储的数据结构,操作系统必须借助文件系统才能存储和检索磁盘上的原始数据,它对用户来说是不可见的。
Linux文件系统格式主要使用ext2、ext3和ext4等。ext,即Extented File System(扩展文件系统)的简称。Linux内核自2.6.28版后,开始正式支持ext4文件系统。ext4是ext3的改进版本,兼容ext3,修改了ext3中部分重要的数据结构。相比ext3支持的最大16TB文件系统和最大2TB文件,ext4支持最大1EB(1 048 576TB)的文件系统和最大16TB的文件。目前的Ubuntu操作系统默认使用ext4作为文件系统。
除此以外,Linux操作系统还支持NTFS、vfat(FAT32)、ISO9660等文件系统,以及Linux系统特有的Linux Native和Linux Swap分区。
Linux Native分区,也就是根(/)分区,它是存储文件的地方,只能使用ext2文件系统。Swap交换分区是Linux系统存储物理内存上暂时不用、在需要使用时再调进内存的数据的地方。Swap交换分区建议最大设置为物理内存的大小。Ubuntu操作系统至少包括一个Linux Native和Linux Swap分区。通常Ubuntu操作系统还会包括一个/boot启动分区、一个/home主目录分区、一个/usr软件资源分区、/etc配置文件分区和/var日志文件分区,而不会将所有文件都直接放在根(/)分区上,这样操作系统难以管理和维护。
5.2磁盘分区管理命令
5.2.1ls命令查看磁盘分区情况

【例51】ls命令查看磁盘分区情况。
输入以下命令: 



ls/dev/sd*

ls-l/dev/sd*



以上命令的执行效果如图51所示。图51中,第一个字符b表示该设备的类型为块设备,如果显示为c,则表示字符设备。另外,8表示主设备号,0、1、2、5表示次设备号。


图51ls命令查看磁盘分区


5.2.2lsblk查看磁盘分区命令
lsblk命令的英文是list block,即用树形格式列出所有可用块设备分区的信息,而且还能显示它们之间的依赖关系,但是不会列出RAM盘的信息。
【例52】lsblk命令树形格式查看磁盘分区。
输入以下命令: 



lsblk| grepsd



以上命令的执行效果如图52所示。图52中,lsblk命令结合管道和grep过滤出包含sd的块设备。可以发现,系统的第一个SCSI硬盘sda,大小为40GB,sda包括了3个分区: 分区sda1(大小为512MB)、分区sda2(大小为1KB)和分区sda5(大小为39.5GB)。


图52lsblk命令树形格式查看磁盘分区


5.2.3gparted软件调整磁盘分区大小
gparted软件是一个图形界面的分区管理工具,相比传统的Linux系统命令行分区工具fdisk烦琐的命令行问答式操作,gparted软件界面直观,功能强大,操作简单。使用gparted软件之前,需要先扩展虚拟机的硬盘空间,方法如下: 选择“编辑虚拟机设置”→“硬盘(SCSI)”→“扩展”选项,在“最大磁盘大小(GB)(S)”文本框中输入扩展分区大小,如图53所示。需要设置足够大的扩展分区,如原来是20GB,现在扩展到40GB。本书安装的Ubuntu系统,原来设置为40GB,现在设置为45GB,读者可以按照实际情况设置,但必须大于原来的硬盘大小。


图53扩展虚拟机硬盘空间


硬盘空间扩展之后,分区大小并不会起变化,需要使用gparted软件划分,才能真正起作用。如果读者的Ubuntu操作系统没有安装gparted软件,可以使用以下命令安装: 


sudoaptinstallgparted


【例53】gparted软件扩展分区。
需要注意的是,必须使用超级用户权限启动gparted才能操作分区。输入以下命令: 



sudogparted



以上命令的执行效果如图54所示。从图54中可以看出,gparted软件的主界面直观地显示了硬盘上的所有分区情况,包括分区的大小、类型和挂载情况。可以发现,/dev/sda1的“文件系统”是fat32、“挂载点”是/boot/efi、“大小”是512MB。/dev/sda2是extended文件系统,即扩展分区,它的下面划分/dev/sda5逻辑分区,文件系统是/ext,大小与扩展分区一样是39.5GB,已用22.60GB,未用16.9GB。另外,还有一个未分配的分区,它的文件系统也未分配,大小为5GB。


图54gparted软件的主界面


选择/dev/sda2区域,即extended扩展分区,右击,在弹出的“调整大小/移动/dev/sda2”对话框中将/dev/sda2的大小调整到最大,如图55所示。


图55“调整大小/移动/dev/sda2”对话框


选择/dev/sda5区域,即ext4扩展分区,右击,在弹出的“调整/dev/sda5的大小”对话框中将/dev/sda5的大小调整到最大,如图56所示。


图56“调整/dev/sda5的大小”对话框


单击工具栏中的按钮,应用全部操作,在弹出的对话框中单击“应用”按钮,如图57所示。


图57确认编辑分区操作


单击“关闭”按钮,再关闭软件,如图58所示。


图58关闭操作窗口


完成gparted软件的分区操作后,再查看当前的分区大小。输入以下命令: 



lsblk| grepsd



以上命令的执行效果如图59所示。对比未使用gparted软件调整的分区大小,可以发现,/dev/sd5分区由原来的39.5GB扩展到现在的44.5GB,已经增加了5GB。


图59gparted软件调整后的分区大小


5.2.4free查看内存和交换分区命令
命令功能: free命令可以查看内存和交换分区情况,显示内存、磁盘交换分区的总计、已用、空闲、共享、缓冲、可用等大小。
命令语法: free[选项]。
常用参数: h,human readable,人性化阅读。
【例54】free命令查看内存和交换分区。
输入以下命令: 



free

free-h



以上命令的执行效果如图510所示。其中,无参数的free命令采用字节作为单位显示内存和交换分区大小,free h命令采用人性化易读方式显示大小。从图510可以看出,当前内存总计为1.9GB,已用1.1GB,可用698MB,交换分区大小为1.8GB。


图510free命令查看内存和交换分区


5.2.5交换分区管理命令
Linux系统的swap含义就是交换,其作用相当于Windows系统的“虚拟内存”。当某进程向Linux操作系统请求内存,又发现物理内存不足时,Linux系统会把内存中暂时不用的数据放到交换分区,从而解决内存容量不足的问题。当某进程又需要这些数据,并且Linux系统还有空闲物理内存时,又会把存储在交换分区中的数据移回物理内存中。
虽然在安装Ubuntu操作系统时会提示设置swap分区,但是这种方式并不灵活。如果需要在使用过程中调整交换分区的大小,可以使用交换分区管理命令。交换分区管理命令主要包括: swapon、swapoff、fallocate和mkswap命令。
swapon命令功能: 查看交换分区的绝对路径和大小等信息、挂载交换分区。
swapoff命令功能: 关闭交换分区。
fallocate命令功能: 分配交换分区大小。
mkswap命令功能: 设置交换分区。
命令语法: 交换分区管理命令[选项][分区文件名]。
【例55】设置新的交换分区大小。
在设置新的交换分区大小之前,需要先关闭当前的交换分区。输入以下命令: 



swapon

sudoswapoff/swapfile

swapon

free-h



以上命令的执行效果如图511所示。从图511中可以看出,先使用swapon命令查看当前交换分区的信息: 绝对路径为/swapfile、大小为1.8GB等。再使用swapoff命令关闭/swapfile交换分区文件,最后使用swapon命令查看,显示为空,使用free h命令查看,显示当前交换分区为0B。


图511关闭swap分区


接着,创建一个与当前内存大小接近的交换分区。通过图511可知,当前内存为3.8GB,因此,可以分配一个4GB大小的文件,再将其转换为交换分区文件,并挂载。输入以下命令: 



sudofallocate-l4G/swapfile

sudomkswap/swapfile

sudoswapon/swapfile

swapon

free-h



以上命令的执行效果如图512所示。从图512中可以看出,使用fallocate命令创建了一个4GB大小的文件,通过mkswap命令转换交换分区文件,使用swapon挂载和查看。最后使用free h命令查看,结果显示,当前交换分区大小已经成功设置为4GB。


图512设置新的交换分区






视频讲解



5.3文件系统管理命令
5.3.1du查看磁盘目录命令

命令功能: du,即disk usage的缩写,用于查看文件和目录使用情况。
命令语法: du[选项][目录]。
常用参数: 在du命令中,常用参数选项及其含义如表51所示。


表51du命令的常用参数及其含义



常用参数含义

h即humanreadable,人性化阅读。将以GB、MB、KB为单位表示大小,易于阅读

s仅显示总计大小

a列出所有文件和目录大小

【例56】du命令查看磁盘目录空间使用情况。
本例为查看主目录的磁盘空间使用情况。先改变目录到主目录,然后查看当前目录的空间使用情况,Linux系统可以使用“.”或者“./”来表示当前目录。输入以下命令: 



cd~

sudodu-sh.

sudodu-sh./





图513du命令查看当前目录
使用情况


以上命令的执行效果如图513所示。从图513可以看出以上两个命令输出的结果是一样的,当前目录使用的空间总大小为4.8GB。

接着,使用两种方式显示当前目录各子目录大小排在前三位的目录。输入以下命令: 





du-sh* | sort-h | tail-n3

du-sh* | sort-rh | head-n3



以上命令的执行效果如图514所示。从图514中可以看出,第一种方式人性化地显示当前目录下每个目录的总大小,先通过管道输出给sort h命令按大小顺序排序,再通过管道输出给tail n3命令,显示最后3行。需要注意的是,第二种方式通过管道输出给sort rh命令按大小逆序排序,再通过管道输出给head n3命令,显示前面3行。


图514du命令显示当前目录各子目录大小
排在前三位的目录


最后,使用du命令显示/var目录下各子目录的大小,按大小顺序排序后,重定向输出到“你的姓名.log”文件,并使用tail n5命令显示目录大小排在前五位的目录。输入以下命令: 



sudodu-h/var | sort -h >你的姓名.log

tail-n5你的姓名.log



以上命令的执行效果如图515所示。


图515du命令显示/var目录下各子目录大小
排在前五位的目录


5.3.2df查看文件系统命令
命令功能: df,即disk filesystem space usage,用于查看磁盘文件系统的空间使用情况。需要注意区分df命令与du命令功能上的差别,df是查看文件系统空间使用情况的,而du命令是查看磁盘目录空间使用情况的,两个命令名字相近,但功能不同。
命令语法: df[选项][文件系统名]。
常用参数: 在df命令中,常用参数选项及其含义如表52所示。


表52df命令的常用参数及其含义



常 用 参 数含义

h即humanreadable,人性化阅读。将以GB、MB、KB为单位表示大小,易于阅读

T显示文件系统类型

t查看挂载的文件系统是哪个分区

【例57】df命令查看文件系统的空间使用情况。
输入以下命令: 



df-h | grep sd

df-hT | grep sd

df-text4



以上命令的执行效果如图516所示。从图516中可以看出,以人性化阅读方式显示了/dev/sda5逻辑分区和/dev/sda1主分区(启动分区)的空间使用情况,需要注意的是,df h命令并没有显示/dev/sda2扩展分区,而是直接显示以上两个实际使用磁盘空间的分区。df hT命令进一步显示分区的文件系统,/dev/sda5使用的是ext4,/dev/sda1使用的是vfat,即fat32格式。另外,使用df t命令查看使用ext4文件系统的分区,结果只有/dev/sda5。


图516df命令查看文件系统空间使用情况


5.3.3blkid查看块设备文件系统信息命令
命令功能: 查看系统的块设备(包括交换分区)所使用的文件系统类型、卷标、UUID(Universally Unique Identifier,全局唯一标识符)等信息。UUID是一个128位标识符,采用32位十六进制数字,用4个“-”符号连接。
命令语法: blkid[选项][设备文件名]。
常用参数: 在blkid命令中,常用参数选项及其含义如表53所示。


表53blkid命令的常用参数及其含义



常 用 参 数含义

k列出所有已知文件系统

p切换至低级超级探针模式

o输出格式

udev使用“键值对”方式显示

【例58】blkid命令查看文件系统卷标和UUID。
输入以下命令: 



sudoblkid | grepsd

sudoblkid/dev/sda5

sudoblkid-poudev/dev/sda5



以上命令的执行效果如图517所示。从图517中可以看出,第一个命令显示了所有包含sd的块设备的UUID和文件系统类型,第二个命令只显示/dev/sda5设备的相关信息。需要注意的是,这两个命令都显示/dev/sda5和/dev/sda1没有设置卷标。第三个命令采用“键值对”方式整齐地列出/dev/sda5的设备信息。


图517blkid命令查看文件系统卷标和UUID


5.3.4e2label命令设置文件系统卷标
命令功能: 设置文件系统的卷标。
命令语法: e2label设备文件名[新卷标名]。
【例59】e2label命令设置文件系统卷标。
本例将/dev/sda5的文件系统卷标设置为system。输入以下命令: 



sudoe2label/dev/sda5system

sudoblkid/dev/sda5



以上命令的执行效果如图518所示。从图518中可以看出,e2label命令将文件系统卷标设置为system,并通过blkid命令验证了卷标(LABEL)的设置结果。


图518e2label命令设置文件系统卷标


5.3.5gparted软件创建文件系统
【例510】gparted软件创建文件系统。
本例需要先在虚拟机上添加一个硬盘,创建分区,然后才能创建文件系统。需要先关闭Ubuntu操作系统虚拟机系统,然后添加一个新的硬盘。
在虚拟机启动页选择“编辑虚拟机设置”→“硬盘(SCSI)”命令,在弹出的“硬件类型”对话框中选择“硬盘”选项,单击“下一步”按钮; 在弹出的“添加硬件向导: 选择磁盘类型”对话框中选择“虚拟磁盘类型”中的“SCSI(推荐)”选项,单击“下一步”按钮; 在弹出的“添加硬件向导: 选择磁盘”对话框中选择“创建新虚拟磁盘”选项,单击“下一步”按钮; 在弹出的“添加硬件向导: 指定磁盘容量”对话框中,设置“最大磁盘大小”为1GB,选中“将虚拟磁盘存储为单个文件”单选按钮,如图519所示。


图519指定新建磁盘的容量


接着,在弹出的“指定磁盘文件”对话框中,设置“磁盘文件”为默认的文件名,即Ubuntu 20.04_VM15D.vmdk,单击“完成”按钮,在返回的“虚拟机设置”对话框中,单击“确定”按钮。启动Ubuntu操作系统虚拟机,进入系统后输入以下命令: 



lsblk| grepsd

ls/dev/sd*



以上命令的执行效果如图520所示。从图520中可以发现,相比例52的磁盘分区的查看结果,在添加了一个新硬盘后,增加了设备文件sdb。


图520查看第二个硬盘设备文件名


接下来,采用gparted软件为第二个硬盘增加一个分区,并格式化,即创建文件系统。输入以下命令: 



sudogparted/dev/sdb



以上命令使用超级用户权限运行gparted软件并操作/dev/sdb设备,打开的界面如图521所示。


图521gparted软件操作/dev/sdb


选择“设备”→“创建分区表”命令,在弹出的对话框中选择新分区表类型为gpt,单击“应用”按钮,如图522所示。


图522gparted软件在/dev/sdb上建立新的分区表


选择“分区”→“新建”命令,在弹出的对话框中,“新大小”按默认选择最大,即1023MiB,设置“创建为”为“主分区”,在“分区名称”文本框中输入/dev/sdb1,“文件系统”设置为默认的ext4,“卷标”文本框中输入“你的姓名”,单击“添加”按钮,如图523所示。


图523gparted软件创建新分区


选择“分区”→“格式化为”→ext4命令,单击工具栏上的按钮,或者选择“编辑”→“应用全部操作”命令,在弹出的对话框中选择“应用”和“关闭”按钮。执行结果如图524所示,已经使用gparted软件为/dev/sdb1分区创建了ext4文件系统。


图524gparted软件创建ext4文件系统


最后,使用命令验证第二个硬盘的文件系统是否创建成功。关闭gparted软件,输入以下命令: 



lsblk| grepsd

ls/dev/sd*

sudoblkid/dev/sdb1

sudoe2label/dev/sdb1你的姓名

sudoblkid/dev/sdb1



以上命令的执行效果如图525所示。从图525中可以发现,通过lsblk和ls命令验证了/dev/sdb1分区已经创建成功,通过blkid命令可以发现,该分区的卷标没有设置成功,因此,采用e2label命令设置为“你的姓名”。


图525查看第二个硬盘文件系统设置情况


5.3.6fsck检查和修复文件系统命令
命令功能: fsck命令能够检查、修复文件系统。
命令语法: fsck[选项][设备名]。
常用参数: 在fsck命令中,常用参数选项及其含义如表54所示。


表54fsck命令的常用参数及其含义



常 用 参 数含义

p不提示用户,直接修复

n只检查,不修复

f强制检查,无论返回标志是否正常

c检查可能的坏块,并加入坏块列表

【例511】fsck命令检查和修复文件系统。
本例将检查例510中所创建的文件系统。输入以下命令: 



sudofsck/dev/sdb1



以上命令的执行效果如图526所示。从图526中可以发现,/dev/sdb1,即第二个硬盘第一个分区的文件系统没有发现错误。


图526fsck命令检查第二个硬盘第一个分区文件系统


5.3.7mount挂载和umount卸载命令
命令功能: mount用于将指定的设备文件名挂载到指定的挂载点上; umount用于将指定的设备文件名从指定的挂载点卸载。
命令语法: mount/umount[选项][设备名/挂载点]。
常用参数: mount命令的常用参数及其含义如表55所示。


表55mount命令的常用参数及其含义



常 用 参 数含义

t指定文件系统类型,通常不需要指定,mount命令能够自动识别

l列出所有挂载点

【例512】手动挂载/dev/sdb1。
本例将挂载例510中所创建的分区/dev/sdb1。输入以下命令: 



mount-l|grepsda

mount-l|grepsdb



以上命令的执行效果如图527所示。从图527中可以发现,/dev/sda5分区挂载在/,即根目录上,/dev/sda1分区挂载在/boot/efi目录上,/dev/sdb1分区挂载点为空,说明该分区还没有挂载。需要创建一个目录,然后挂载该分区。


图527mount命令查看系统各分区的挂载点


Linux系统的/mnt目录,通常用于挂载新添加的硬盘、U盘和CDROM设备等。接下来在/mnt上创建“你的姓名”目录,将新添加的/dev/sdb1分区挂载到该目录上。输入以下命令: 



sudomkdir/mnt/你的姓名

sudomount/dev/sdb1/mnt/你的姓名



以上命令的执行效果如图528所示。从图528中可以看出,通过mount l命令,/dev/sdb1分区已经成功挂载到/mnt/yujian目录上,文件系统类型为gparted软件所格式化的ext4文件系统。


图528mount命令设置/dev/sdb1分区的挂载点


5.3.8文件系统配置文件
/etc/fstab是Linux系统的文件系统配置文件。系统启动时会自动读取该文件内容。共有6个字段,从左到右依次为设备名、挂载点、文件系统类型、挂载选项、是否备份(0表示不备份,1表示备份)、是否检查文件系统及顺序(0表示不检查、1表示检查)。
常用参数: /etc/fstab文件的各字段及其含义如表56所示。


表56/etc/fstab文件的各字段及其含义



字段含义

device磁盘设备文件或该设备的卷标和UUID

mount point设备的挂载点,即挂载到哪个目录下

filesystem磁盘文件系统的格式,包括ext2、ext3、ext4、ntfs、vfat等

parameters文件系统的参数

能否被DUMP命令备份0代表不要做dump备份,1代表要每天进行dump的操作,2代表不定日期地进行dump操作

是否检验扇区开机的过程中,系统默认会以fsck检验该系统是否为clean(完整)。0代表不要检验,1代表最早检验(一般根目录会选择),2代表1级检验完成之后进行检验

【例513】查看自动挂载的文件系统。
输入以下命令: 



sudocat/etc/fstab



 以上命令的执行效果如图529所示。


图529查看文件系统配置文件


5.3.9用户磁盘空间配额命令
Linux是一个多用户多任务操作系统。系统的资源,包括磁盘空间总是有限的,作为系统管理员有必要限制登录系统用户使用的磁盘空间大小,即为登录Linux系统的用户磁盘空间配额。
用户磁盘空间配额命令主要包括三个命令: quota、setquota和edquota。以下分别介绍这三个命令的功能、语法和常用参数,并通过实例说明它们的使用方法。
quota命令功能: 用于显示分配给用户的磁盘空间大小,即用户磁盘配额。
quota命令语法: quota[选项][用户名或组名]。
quota常用参数: 该命令的常用参数及其含义如表57所示。


表57quota命令的常用参数及其含义



常 用 参 数含义

u显示用户的磁盘空间配额

v显示执行过程

a显示所有的文件系统

s人性化阅读方式显示配额

setquota命令功能: 用于非交互式设置用户磁盘配额。
setquota命令语法: setquotau或g 用户名 软配额硬配额软限制值硬限制值分区名。当用户使用的磁盘空间达到软配额时,系统会发出警告,而达到硬配额时,系统会直接限制使用。软限制值和硬限制值是指宽限期机制,如果不希望使用宽限机制,可以设为0。
setquota常用参数: 该命令的用参数及其含义如表58所示。


表58setquota命令的常用参数及其含义



常 用 参 数含义

u非交互式设置用户的磁盘空间配额

g非交互式设置用户组的磁盘空间配额

edquota命令功能: 用于复制或交互式用户磁盘配额。
edquota命令语法: edquotap模板用户用户1用户2。
edquota常用参数: 该命令的常用参数及其含义如表59所示。


表59edquota命令的常用参数及其含义



常 用 参 数含义

p复制用户的磁盘空间配额

u进入编辑界面,修改用户的磁盘空间配额

g进入编辑界面,修改用户组的磁盘空间配额


【例514】设置用户的磁盘空间配额。
本例设置“你的姓名1”和“你的姓名2”两个用户的磁盘空间配额。首先安装磁盘配额命令,输入以下命令: 



sudoaptinstallquota



然后备份文件系统配置文件,编辑该文件,加入配额选项。输入以下命令: 



sudocp/etc/fstab/etc/fstab~

sudogedit/etc/fstab



打开该文件系统配置文件后,在第9行找到单词errors,在它的前面加上“usrquota,”,表示为文件系统加入配额选项,如图530所示。保存并关闭文件。


图530修改文件系统配置文件


重新挂载/,重启系统后,使用quotaon命令启动quota。输入以下命令: 



sudomount-oremount/

reboot

sudoquotaon-avug



如果已经删除了前面创建的用户,那么需要添加“你的姓名1”和“你的姓名2”两个用户,并设置其磁盘配额。输入以下命令: 



sudouseradd-m你的姓名1

sudouseradd-m你的姓名2

sudosetquota-u你的姓名19GB10GB00/

sudoedquota-p你的姓名1你的姓名2

sudoquota-uvs你的姓名1你的姓名2



以上命令的执行效果如图531所示。从图531中可以看出,使用setquota命令设置了yujian1用户的软配额为9GB,硬配额为10GB,软限制值和硬限制值均为0,使用分区为“/”。然后,使用edquota命令将yujian1用户的磁盘配额复制给了yujian2用户。最后,使用quota命令查看了用户配额情况。


图531设置和显示用户的磁盘空间配额


5.4文件系统备份和恢复命令
5.4.1tar备份和恢复命令

tar命令不但可以用于压缩和解压文件,也可以用于备份和恢复文件系统。
常用参数: tar命令的常用参数及其含义如表510所示。


表510tar备份和恢复命令的常用参数及其含义



常 用 参 数含义

c即create,建立新的备份文件

v即verbose,显示命令的执行过程

p即samepermissions,保留原来的文件目录权限

z使用gzip压缩属性备份或恢复文件系统

j使用bzip2压缩属性备份或恢复文件系统,效率更高,压缩包更小

f指定备份文件

x解压备份文件

exclude=<样式>
排除符合样式的文件,如exclude=/tmp,即备份时不包括/tmp

/lost+found
系统发生错误时提供了恢复丢失文件的方法

【例515】tar命令备份和恢复启动分区。
本例使用tar命令使用bzip2压缩属性,将/boot系统启动分区备份到/tmp目录下。输入以下命令: 



sudotar-cpjf/tmp/你的姓名.tar.bz 2/boot

ll-h/tmp/*.bz2



以上命令的执行效果如图532所示。从图532中可以看出,已经将/boot启动分区备份至/tmp下。


图532tar备份/boot启动分区文件系统


接下来将备份文件恢复到指定主目录下的boot文件夹中。输入以下命令: 



mkdir~/boot

sudotar-xpjf/tmp/你的姓名.tar.bz2-C~/boot

ls~/boot/boot



以上命令的执行效果如图533所示。从图533中可以看出,已经将/boot启动分区恢复至主目录的boot文件夹下。


图533tar恢复/boot启动分区文件系统


5.4.2dump备份和restore恢复命令
dump命令是一个比较专业的备份工具,可以备份任何类型的文件系统,支持完全备份和增量备份,而restore命令是对应的文件系统恢复工具。
如果系统没有安装dump和restore命令,那么使用之前需要使用以下命令安装: 


sudoaptinstalldump

sudoaptinstallrestore


dump和restore命令的常用参数及其含义如表511所示。


表511dump和restore命令的常用参数及其含义



常 用 参 数含义

f指定备份或恢复文件

t查看备份或恢复文件

0~90~9级备份,0为完全备份,其余为增量备份

【例516】dump备份和restore恢复文件系统。
本例使用dump命令和0级备份参数将/boot启动分区完全备份至/tmp下。输入以下命令: 



sudodump-0f/tmp/你的姓名.dump/boot

ls-lh/tmp/你的姓名.dump



以上命令的执行效果如图534所示。


图534dump命令备份/boot分区文件系统


接着,使用restore命令浏览备份文件中的数据,并显示前10行。输入以下命令: 



sudorestore-tf/tmp/你的姓名.dump| head-n10



以上命令的执行效果如图535所示。


图535restore命令查看备份文件数据


需要注意的是,如果使用restore命令恢复一个文件系统至原磁盘分区,可以使用命令: sudorestorerf/tmp/你的姓名.dump。
5.5综合实例: 挂载和卸载U盘
本综合实例使用mount命令挂载U盘、使用umount命令卸载U盘。Ubuntu操作系统能够识别FAT32、NTFS和exFAT文件系统的U盘。对于FAT32格式U盘能够自动识别,但对于使用NTFS文件系统的U盘,需要使用以下命令安装: 


sudoaptinstallntfs-3g


如果U盘是exFAT(FAT64)文件系统,请使用以下命令安装: 


sudoaptinstallexfat-fuseexfat-utils


插入U盘,选择“虚拟机”→“可移动设备”→“U盘名称”→“连接(断开与主机的连接)”命令,可以看到U盘已经挂载成功: 左侧收藏栏出现按钮,即U盘小图标。如果U盘在菜单中能够识别,但挂载后在Ubuntu操作系统中无法显示,则检查虚拟机设置中USB控制器的USB兼容性,选择USB 3.1,如图536所示。


图536USB兼容性设置


单击“确定”按钮后,重新启动Ubuntu操作系统,就能够正常显示U盘小图标了。然后使用命令查看U盘挂载后增加的磁盘分区变化,输入以下命令: 



lsblk| grepsd

ls/dev/sd*



以上命令的执行效果如图537所示。从图537中可以发现,插入U盘后,增加了块设备sdc和/dev/sdc1分区。


图537U盘挂载后增加的磁盘分区变化


U盘被识别后,Ubuntu操作系统默认将U盘挂载到“/media/登录用户名”,可以使用ls命令查看U盘挂载点的卷标和U盘中的文件和目录。然后,尝试将U盘重新挂载到“/mnt/你的学号”下。输入以下命令: 



ls/media/ubuntu

ls/media/ubuntu/U盘卷标

sudoumount/dev/sdc1

sudomkdir/mnt/你的学号

sudomount/dev/sdc1/mnt/你的学号

sudotouch/mnt/你的学号/你的学号.txt



以上命令的执行效果如图538所示。图538中显示该挂载的U盘的卷标为YUJIAN,使用umount命令通过设备文件名/dev/sdc1卸载U盘后,使用mount命令重新挂载到/mnt/2019119101,并创建“2019119101.txt”文件。


图538查看U盘挂载结果并重新挂载到“/mnt/你的学号”


接着,尝试使用umount通过挂载点“/mnt/你的学号”卸载U盘,使用mount重新挂载到默认目录,查看在挂载点“/mnt/你的学号”创建的文件是否存在于新的挂载点“/media/登录用户名”下。输入以下命令: 



sudoumount/mnt/你的学号

sudomount/dev/sdc1/media/ubuntu

ls/media/ubuntu/*.txt



以上命令的执行效果如图539所示。从图539中可以发现,原挂载点创建的“2019119101.txt”文件确实存在于新的挂载点下。


图539查看U盘在原挂载点产生的文件


需要注意的是,mount和umount命令还可以挂载和卸载位于局域网的挂载点(共享目录)。这两个命令在网络共享目录上的使用实例,将在第7章介绍。
5.6课后习题
一、 填空题
1. 使用ls查看磁盘分区的命令是或者。
2. 查看文件系统磁盘空间情况,并且人性化显示的命令是。
3. 使用超级用户权限,执行gparted分区软件的命令是。
4. 使用超级用户权限,将第3个磁盘的第1个分区挂载到/mnt目录上的命令是。
5. 使用超级用户权限,查看第5个磁盘第1个分区的UUID的命令是。
6. Linux操作系统的第2个硬盘第2个逻辑分区表示为。
7. 获取swap对应的绝对路径的命令是。
8. 使用超级用户权限,暂时关闭swap分区的命令是。
9. 使用超级用户权限,查看已有的交换分区空间的命令是。
10. 修改文件可实现软件开机自动挂载。提示: 直接写绝对路径和文件名。
11. 使用超级用户权限卸载挂载点/mnt的命令是。
12. 查看当前的内存和交换分区情况并人性化显示的命令是。
13. 使用tar命令和gzip压缩属性,保留文件权限,不显示压缩过程,将/boot文件系统启动分区备份到/tmp/boot目录下,备份文件名为test.tar.gz,其命令是。
14. 使用tar命令和gzip压缩属性,保留文件权限,不显示压缩过程,将文件系统备份文件test.tar.gz恢复到/tmp/boot目录下,其命令是。
15. 使用dump命令,将/boot文件系统启动分区,0级备份到/tmp/boot目录下,备份文件名为test.dump,其命令是。