1 磁盘设备的管理
1.1 设备识别
- 设备接入系统后都是以文件的形式存在
- 设备文件名称
SATA/SAS/USB /dev/sda /dev/sdb ##s=SATA ,d=DISK ,a=第几块
IDE /dev/hd0 /dev/hd1 ##h=hard
VIRTIO-BLOCK /dev/vda /dev/vdb ##v=virtio
M2 (SSD) /dev/nvme0 , /dev/nvme1 ##nvme=M2
SD/MMC/EMMC /dev/mmcblk0 /dev/mmcblk1 ##mmcblk=mmc卡
光驱 /dev/cdrom /dev/sr0 /dev/sr1
1.2 常用的设备查看命令
命令 | 功能 |
---|---|
fdisk -l | 查看磁盘分区情况(系统中真实设备的存在情况) |
lsblk | 设备被使用情况 |
blkid | 系统中能被系统使用的设备 |
cat /proc/partitions | 系统当前已经识别设备 |
df | 查看正在被系统挂载的设备 |
设备查看命令的使用
- 查看系统中设备存在的真实情况:
fdisk -l
- 查看系统中设备的使用情况:
lsblk
- 查看系统中能被使用的设备(是否被使用不确定):
blkid
- 查看系统中被识别的设备(设备能不能使用不确定):
cat /proc/partitions
- 查看正在被系统挂载的设备:
df
2 设备挂载
- df:查看u盘的挂载情况
- 结束挂载:
umount /dev/vdb1
结束挂载之后,用df命令,可以看到U盘是可用的设备但是系统中未被挂载
2.1 设备的临时挂载
- 挂载U盘为只读模式
mount -o ro /dev/sdb1 /mnt
## ro:挂载参数
## /dev/sdb1:设备
## /mnt :挂载点
- 修改U盘的挂载方式为读写模式
mount -o remount,rw /mnt
2.2 设备的永久挂载
- 编写配置文件,实现永久的挂载
(1)/etc/rc.d/rc.local
系统启动之后
(2)/etc/fatab
:内核启动之后
mount
: 查看挂载的信息
- 编辑配置文件:
/etc/fstab
- 重启:
reboot
,内核启动之后实现自动的挂载
注意:
如果在编辑/etc/fstab 文件时出错,系统将无法正常启动
- 模拟问题
重启后出现下图的界面
- 解决方法
根体提示输入root用户的密码后,进入/etc/fstab
修改内容之后退出保存
exit退出系统之后,等待系统再次启动
2.3 解除挂载U盘
- 在一个shell中进入挂载目录后,打开另一个shell解除挂载会显示系统正忙,无法解除挂载
umount /dev/sdb1
df
:查看系统中挂载的设备lsof
:查看进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)kill -9 进程号
:结束进程
fuser
:显示所有正在使用着指定的file, file system 或者 sockets的进程信息
参数 | 功能 |
---|---|
-k | 结束进程 |
-v | 显示详细信息 |
-m | 显示进程 |
fuser -vm /mnt ##显示进程的详细信息
fuser -kvm /mnt ##结束并显示进程的详细信息
3 设备中文件的查找
- find:文件或目录查找,可以直接对查找结果使用命令
3.1 find命令的常用参数
参数 | 功能 |
---|---|
-name | 查找指定名字的文件 |
-user | 查找指定拥有者的文件 |
-group | 查找指定拥有组的文件 |
-type f/d/s/b/l | 查找指定类型的文件 |
-perm | 后跟文件权限,按文件权限模式来查找文件 |
-exec | 查找指定名字的文件 |
-cmin | 根据更改时间查找文件 |
-maxdepth | 后跟数字,按目录的最大深度查找时间 |
-mindepth | 后跟数字,按目录的最大深度查找时间 |
-o | 逻辑或 |
-a | 逻辑and |
-not | 逻辑非 |
- 查看当前目录及子目录中的所有文件:
find
3.1.1 根据文件名称条件查找
- 在当前目录及子目录中查找指定名字文件:
find /mnt -name file1
- 在当前目录及子目录中查找以file结尾的文件:
find /mnt -name "*file"
3.1.2 根据文件的拥有者和拥有组权限查找文件
- 在当前目录及子目录中查找文件拥有者为
westos
的文件:find /mnt -user westos
- 在当前目录及子目录中查找文件拥有者为
westos
拥有组为linux
的文件
find /mnt -user westos -a -group linux
- 在当前目录及子目录中查找文件拥有者为
westos
,或者拥有组为linux
的文件:
find /mnt -user westos -o -group linux
- 在当前目录及子目录中查找文件拥有者为
westos
,或者拥有组不是linux
的文件:
find /mnt -user westos -o -not -group linux
3.1.3 按文件类型查看文件
find -type 参数
-f ##普通文件
-b ##目录
-d ##块设备
-s ##套接字
-l ##链接
-c ##字符设备
3.1.4 按文件所在的深度(层次)查找
- mindepth
:最小深度
- maxdepth
:最大深度
- 在当前目录或子目录中查找文件深度在1~2之间的普通文件
find /mnt -mindepth 1 -maxdepth 2 -type f
3.1.5 按照时间查找被篡改的文件
cmin
以分钟为单位
(1)在当前目录或子目录中查找文件更新距离现在2分钟以内的文件:find /mnt -cmin -2
(2)在当前目录或子目录中查找文件更新距离现在2分钟以上的文件:find /mnt -cmin +2
(3)在当前目录或子目录中查找文件更新距离现在2分钟的文件:find /mnt -cmin 2
3.1.6 按文件权限查找:perm
在当前目录或子目录中查找文件权限为444的普通文件:find /mnt -perm 444
- 在当前目录或子目录中查找文件权限u,g,o位都>=4的普通文件:
find /mnt -perm -444
- 在当前目录或子目录中查找文件权限u,g,o位任一位>=4的普通文件:
find /mnt -perm /444
3.1.7 对查找到的文件执行某命令
- 在当前目录或子目录中查找文件权限u,g位>=4,o位超过0的文件,并将查找到的文件的组权限加w
find /mnt -perm -404 -exec chmod g+w {} \ ;
## -exec表示开始执行动作
## {},表示用find命令查找出的所有文件
## \是为了转译 “\”
4 分区
4.1 常见的两种分区方式
分区方式 | 位数 | 分区表大小 | 支持分区个数 | 支持单个分区大小 |
---|---|---|---|---|
legacy (MBR) | 32 | 64 byte | 主分区4个,所有分区16个 | 2.2TB |
UEFI(GPT) | 64 | 128byte | 理论上无限制,windos128G | 8ZiB |
4.2 MBR分区方式
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个,且主分区+扩展分区总共不能超过4个。逻辑分区的个数没有限制
若全部采用主分区,假设一块120G的硬盘,每个主分区分配20G,那么硬盘剩下的40G就无法使用,这就造成了资源的浪费,为了解决最多四个主分区的限制,Linux系统引入了扩展分区的概念,可以把其中一个主分区设置为扩展分区(注意只能够使用一个扩展分区)来进行扩充。在扩充分区下,又可以建立多个逻辑分区。
扩展分区是无法直接使用的,只是作为逻辑分区的容器。通常情况下,逻辑分区的起始位置及结束位置记录在每个逻辑分区的第一个扇区,这也叫做扩展分区表。在扩展分区下,系统管理员可以根据实际情况建立多个逻辑分区,将一个扩展分区划割成多个区域来使用。
- 建立分区
fdisk -l
:查看系统中真实存在的设备
fdisk /dev/vdb
:进入分区界面
- 进入分区界面后常用的参数
参数 | 功能 |
---|---|
d | 删除 |
l | 列出所有分区类型 |
n | 新建 |
p | 显示分区表 |
t | 修改分区系统id |
w | 保存更改 |
q | 退出 |
g | 设定分区方式为gpt |
o | 设定分区方式为mbr |
- 进入分区界面后建立主分区1,大小为100M
- 接着建立主分区2,3,大小为100M
- 建立主分区4,大小为100M,此时以达到能同建立主分区的个数的上限,无法在新建分区,硬盘剩余的资源见无法使用
- 为了解决主分区的个数的限制,我们将主分区4删除,然后将其设置为扩展分区,之后在扩展分区的基础上新建逻辑分区
- 新建逻辑分区5,大小为10M,p查看分区信息表的信息,最后将分区信息保存退出:
wq
2. 更新分区信息:udevadm settle
查看分区信息: cat /proc/partitions
3. 格式化设备
文件系统:
(1)ext2/ext3/ext4:linux中主流的文件系统
(2)xfs: linux下一种高性能的日志文件系统
- 主分区和扩展分区必须格式化之后才能使用:
格式化设备为xfs文件系统:mkfs.xfs /dev/vdb2
- 只有将分区格式化之后,才能实现设备的挂载:
mount /dev/vdb2 /mnt
- 查看挂载信息:
mount
- 永久挂载:在
/etc/fstab
文件中编辑相应的参数
- 重启之后可查看是否开机自动挂载
4 . 删除设备
dd if=/dev/zero of=/dev/vdb bs=1M count=1
4.3 mbr分区转化成GPT
4.3.1 直接转换
parted /dev/vdb
:对/dev/vdb
进行分区管理mklabel
:定义分区的格式
- 查看
/dev/vdb
分区类型修改时候成功
4.3.2 间接转换
fdisk /dev/vdb
:进入分区管理界面- 在分区管理界面设定分区的方式:g ,设定分区方式为gpt
5 swap分区
5.1 swap分区的作用
Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。
使用 swap 交换分区,显著的优点是,通过操作系统的调度,应用程序实际可以使用的内存空间将远远超过系统的物理内存。由于硬盘空间的价格远比 RAM 要低,因此这种方式无疑是经济实惠的。当然,频繁地读写硬盘,会显著降低操作系统的运行速率,这也是使用 swap 交换分区最大的限制。
具体使用多大的 swap 分区,取决于物理内存大小和硬盘的容量
5.2 建立swap分区
5.2.1 临时创建swap分区
(1)进入分区管理界面: fdisk /dev/vdb
(2)按 “ t ”修改分区的系统id
(3)选择第几个分区
(4)列出所有分区的类型
(5)选择要修改的swap分区的id
(6)查看分区表的信息:p
(7)格式化设备为swap格式:mkswap /dev/vdb5
blkid
:查看设备/dev/vdb5的格式
(8)激活swap分区并指定其优先级
swapon -a /dev/vdb5 -p 5
,swap的优先级中,数字越大优先级越高- 查看swap的分区信息:
swapon -s
5.2.2 设置开机自动添加swap分区
(1)编辑配置文件:/etc/fstab
,添加相应的swap分区信息
(2)swapon -a:将/etc/fstab文件中所有设置为swap的设备,启动为交换区
(3)重启后生效
5.3 删除swap分区
(1)编辑配置文件/etc/fstab
,删除相应的sawp分区信息
(2) 通过命令swapoff /dev/vdb5
删除设备的swap分区
- 查看swap的分区信息:
swapon -s
6 磁盘配额
6.1 磁盘配额的作用
磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。
注意
(1)磁盘配额限制的用户和用户组,只能是普通用户和用户组,也就是说超级用户 root 是不能做磁盘配额的;
(2)磁盘配额限制只能针对分区,而不能针对某个目录,换句话说,磁盘配额仅能针对文件系统进行限制,举个例子,如果你的 /dev/sda5 是挂载在 /home 底下,那么,在 /home 下的所有目录都会受到磁盘配额的限制
(3)可以限制用户占用的磁盘容量大小(block),当然也能限制用户允许占用的文件个数(inode)。
6.2 划分磁盘额度
- 挂载设备并激活配额参数:
mount -o usrquota /dev/vdb3 /mnt
- 完成设备挂载后修改挂载目录的权限,从而使普通用户可以再次目录中截取分区使用:
chmod 777 /mnt
- 重新读取/etc/fstab文件:
mount -a
- 查看挂载信息:
mount
- 激活配额
quotaon -uv /dev/vdb3
-u:用户的磁盘空间限制
-v:显示指令执行过程。
- 给指定用户划分配额:
edquota -u lee
,更改hard的值
软限制可理解为警告限制,硬限制是真正的限制。比如,规定软限制为 100MB,硬限制为 200MB,那么,当用户使用的磁盘空间为 100~200MB 时,用户还可以继续上传和新建文件,但是每次登录时都会收到一条警告消息,告诉用户磁盘将满。
6.3 测试
切换到划分配额的用户进行测试,一旦该用户截取的数据超过1024k时,截取数据会失败
repquota -a
列出/etc/fstab文件中,有加入配额设置的分区使用情况,包括用户和组群
6.4 永久开启配额
编辑配置文件/etc/fstab,添加相应的信息
6.5 关闭配额
(1)编辑配置文件/etc/fstab,删除相应的信息
(2) quotaoff -uv /dev/vdb3