一、系统的磁盘管理
1.本地存储设备的识别
fdisk -l # 查看硬盘上设备的真实存在的所有设备
cat /proc/partitions # 查看系统识别的设备
blkid # 查看系统可以使用的设备
df # 查看系统正在挂载的设备
df -h #查看到的设备大小更准确( 以2^n 计算 1M=1024K )
df -H #查看到的设备大小不准确( 以10^n 计算 1M=1000K)
注:从上到下,查看到的依次减少
(1)fdisk -l 查看系统真实存在的设备
(2)cat /proc/partitions 查看系统的可以识别的设备
(3)blkid 系统可使用的设备
(4)df 系统正在挂在的设备
(5)df -h 与 df -H 的区别
df -h (1M=1024K)
df - H (IM=1000K)
2、设备的挂载和卸载
/dev/sda1 # /dev=设备 s=sata,d=disk,a表示第一块硬盘,1表示第一块磁盘的第一块
(1)设备名称
/dev/xdxn # 例如: /dev/sda /dev/vda /dev/hd0
x:硬盘类型(s:sata硬盘 h:串口硬盘 v:虚拟硬盘)
x:a..z,硬盘所在个数
n:1..16,分区所在个数
/dev/mapper/* 系统中的虚拟设备
/dev/vdb1 1代表第一个分区
(2)设备的挂载与卸载相关命令
mount 设备 挂载点
mount /dev/sdb1 /mnt # 挂载/dev/sdb1设备到/mnt下
mount -o ro /dev/sdb1 /mnt # 只读挂载,ro表示只读
mount -o remount,rw /dev/sdb1 # 重新读写挂载,这个命令可以不用卸载之前的挂载
umoutn /mnt
umoutn /dev/sdb1 # 卸载,卸载的时候可以卸载设备,也可以卸载挂载点
mount # 查看挂载信息
做此实验可以将自己的u盘插入电脑(在真机里做)
df查看u 盘的挂载点
mount /dev/sdb1 /mnt 挂载sdb1到mnt
umount /mnt 或umoun /dev/sdb1 卸载,卸载的时候可以卸载设备,也可以卸载挂载点
mount -o ro /dev/sdb1 /mnt 只读挂载
mount 查看挂载信息
显示ro,则证明是只读挂载
测试:进入/mnt(u盘挂载点),不能建立文件(只读挂载)
从只读挂载到读写挂载的转换有两种
方法一: 先卸载刚才挂载的(umount)如果卸载不了,看下方(3)解决设备正忙的情况
mount -o rw /dev/sdb1 /mnt(只读挂载)
方法二: 不想解挂的时候,使用remount,rw改为读写模式
测试:进入/mnt(u盘挂载点),可以建立文件(读写挂载)
(3)解决设备正忙的情况
方法一:
发现进程:fuser -vm /dev/sdb1
终止进程:fuser -kvm /dev/sdb1
卸载成功
方法二:
发现进程:lsof /dev/sdb1
终止进程:kill -9 pid
卸载成功
有时卸载时显示设备正忙的原因:是因为你就在挂载目录下,此时退出挂载目录,就可以正常卸载了
二、系统的分区管理
1、磁盘分区信息
硬盘0和磁道1扇区的512个字节中记录的信息如下:
512 =446 +64+2
(1)446 ——> mbr主引导记录
(2)64 ——>mpt主分区表
最多有4个主分区,一个分区用16个字节记录
主分区:用主分区表记录的分区
扩展分区:专门用来存储更多的分区(相当于一个容器)
逻辑分区:扩展分区里的分
(3)2 ——>硬盘的有效性标识“55aa”
2.分区的划分及管理
主分区的创建及管理
实现一个分区设备的创建使用,一般经过如下动作:
划分创建一个分区、格式化、挂载
(1)创建分区
首先可以先查看一下系统真实存在的设备,选择合适的分区设备
开始创建分区(这里我们选的设备是/dev/vdb)
m 可以查看参数帮助列表:
新建分区参数选择设置如下:
查看分区列表
如果分区没有显示,则可以使用partprobe命令(同步分区表)
(2)格式化 mkfs.xfs /dev/vdb1
blkid 显示系统可用的设备
(3)挂载设备
实现永久挂载
编辑挂载策略文件 /etc/fstab
/dev/vdb5 /mnt xfs defaults 0 0
设备 挂载点 文件系统 挂载参数 是否备份 是否检测
激活设备(重新读取该文件,使其挂载)
测试
先解挂
重新激活设备(重新读取该文件,使其挂载)
实现永久挂载成功
拓展分区的创建及管理
(1)创建拓展分区
当系统已经有三个主分区时
再创建分区时,默认提示就由p(主分区)——> e(拓展分区)
填e,后续可以一路选择默认,把剩余所有空间分给扩展分区,最后保存
a.再次添加分区,方式如同添加主分区一样,这次添加的分区就是逻辑分区(拓展分区里的分区)
这里不再截图描述
b.同步分区列表,查看分区列表信息
3.swap分区的管理
(1)创建swap分区
新建一个分区
t 表示修改分区id (默认情况下,此分区是Linux类,要该为swap类型)
L 表示列出所以id类型代码
找到关于swap分区类型的代码——>82
输入82,把/dev/vdb6的分区类型修改为swap
同步分区列表
将/dev/vdb6格式化为swap格式,否则设备不可用
mkswap /dev/vdb6
激活swap设备,使系统利用此设备
swapon -a /dev/vdb6
实现永久挂载
编辑挂载策略文件 /etc/fstab
注意:swap分区不需要挂载
(2)删除swap分区
编辑挂载策略文件 /etc/fstab ,删除相应内容
swapoff 设备
fdisk /dev/vdb 删除第6个分区
同步分区列表,显示已经删除
注:删除分区时,要先停止设备,不能先删除分区
三、磁盘配额
注意:磁盘配额针对设备,而非用户
(1)创建一个设备
新建一个目录
新建一个分区
同步分区列表
格式化
挂载 (usrquota——>用户配额)
(2)激活配置参数
打开配置文件
设置student用户最大额度为20M(20480k=20M)
赋予权限,方便测试
编辑挂载策略文件
测试:
20M没有超过最大设置额度,可以正常截取
21M超过最大设置额度提示,提示“超过配额限制”,则其真实截取大小还是为20M
四、磁盘加密
LUKS简介
LUKS(Linux Unified Key Setup)为Linux硬盘加密提供了一种标准,它不仅能通用于不同的Linux发行版本,还支持多用户/口令。因为它的加密密钥独立于口令,所以如果口令失密,我们可以迅速改变口令而无需重新加密真个硬盘。通过提供一个标准的磁盘上的格式,它不仅方便之间分布的兼容性,而且还提供了多个用户密码的安全管理。必须首先对加密的卷进行解密,才能挂载其中的文件系统。
所需工具
工具:cryptsetup(默认已经安装);常用参数:luksFormat 加密、luksOpen 打开映射、luksClose 关闭映射、luksAddKey 添加密钥
思路:
使用cryptsetup对分区进行了加密后,这个分区就不再允许直接挂载。LUKS也是一种基于device mapper 机制的加密方案。如果要使用这个分区,必须对这个分区做一个映射,映射到/dev/mapper这个目录里去,我们只能挂载这个映射才能使用。然而做映射的时候是需要输入解密密码的。
前面我们添加的磁盘vdb5我们用其作实验
1、对磁盘进行加密
cryptsetup luksFormat /dev/vdb1 ##加密磁盘vdb1
注意:这里要大写YES!!然后输入该设备的密码。设置密码#密码要超过8个字节,而且要满足复杂性
密码:
cipan1234
我们可以看到,当加密操作完成后,已经“上锁”的磁盘是不能直接挂载的,若要对磁盘进行挂载,必须先将“锁”打开:
2、使用加密磁盘
(1)打开加密磁盘:
cryptsetup open /dev/vdb1 westos ##/dev/vdb是真实的经过加密的设备
##westost是加密后的真实设备映射的虚拟设备(名称)
打开后,我们在/dev/mapper中可以看到虚拟设备westos
在这里插入图片描述
(2)给磁盘添加文件系统:
mkfs.xfs /dev/mapper/westos #格式化westos
(3)挂载设备:
可以正常的使用此设备进行读写:
在此设备上新建文件如下:
(4)卸载&关闭设备:
先将设备卸载,再关闭,关闭设备的操作就像将设备上的已经打开的“锁”再 锁上,关闭设备之后,我们不能再挂载设备,从而也就不能在设备上读写。
umount /mnt/ #卸载设备
cryptsetup close westos #关闭设备(westos就是我们在打开时指定的虚拟设备)
关闭后,我们可以看到,/dev/mapper中,虚拟设备redhat消失,在下次打开加密设备时,由我们指定新的虚拟设备:
(5)我们再将设备重新打开、挂载,发现我们存储在设备中的文件依然存在:
3、加密磁盘开机自动挂载
先建立/pub目录用来永久挂载加密磁盘:
(1)开机自动挂载:
打开vim /etc/fstab
添加:
/dev/mapper/redhat /pub xfs defaults 0 0
设备 挂载点 文件类型 挂载方式默认 是否备份 是否检查
(2)设置虚拟设备与真实设备的映射
在打开加密磁盘时,需要我们指定相应的虚拟设备,在上面的编辑中,我们指定了设备与挂载点,但是我们指定的设备是系统中当前并不存在的虚拟设备,因此,我们还需要建立虚拟设备与真实设备的映射,也就是打开加密磁盘:
打开vim /etc/crypttab
添加:
redhat /dev/vdb1 /root/vdb1passwd
虚拟设备 真实设备 校验文件
##表示:真实设备通过此校验文件成功后建立此虚拟设备
(3)建立校验文件
在上面,我们指定/root/vdb1passwd为校验文件,但是此文件中系统并不存在,因此我们需要自己建立此文件,并在此文件中写入磁盘的密码:
添加密码:
(4)为加密的设备添加密码校验文件
上面建立了校验文件,但是此时,此文件与设备并不存在联系,因此还需让这两者建立联系:
cryptsetup luksAddKey /dev/vdb1 /root/vdb1passwd ##指定此加密设备的校验文件为/root/vdb1passwd
完成这些操作后,加密磁盘就可以开机自动挂载,可以看到当前/dev/mapper/redhat并没有挂载到/pub上:
reboot后,我们可以看到设备自动挂载,并且设备中还存在我们建立的文件file{1…5}:
4.删除加密设备:
删除设备的过程即是删除我们对设备做的所有更改
1.删除自动挂载文件中的内容:vim /etc/fstab
删除:/dev/mapper/redhat /pub xfs defaults 0 0
2.删除/etc/crypttab:
3.删除校验文件;
4.卸载设备:
5.关闭设备:
6.格式化设备:
此设备就变为一个普通的设备,我们不再需要进行“打开”“关闭”等操作,可以直接对设备进行挂载: