Linux磁盘存储管理以及文件的查找
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 |
设备查看:
fdisk | -l | ##查看磁盘分区情况 |
---|---|---|
lsblk | ##设备使用情况 | |
blkid | ##设备管理方式及设备id | |
df | ##查看正在被系统挂载的设备 | |
-a | 列出所有的文件系统,包括系统特有的 /proc 等文件系统 | |
-k | 以 KBytes 的容量显示各文件系统 | |
-m | 以 MBytes 的容量显示各文件系统 | |
-h | 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示 | |
-H | 以 M=1000K 取代 M=1024K 的进位方式 | |
-T | 显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出 | |
-i | 不用硬盘容量,而以 inode 的数量来显示 | |
cat /proc/partitions | ##查看系统识别设备 |
2.设备挂载
在系统中有设备id的设备是可以被系统使用的
挂载命令:
mount -o 挂载参数 device 挂载点
umount 设备|挂载点
mount ##查看挂载信息
mount -o rw /dev/vda1 /westos
mount -o remount,ro /westos ##转换挂载参数由读写变为只读
在卸载时当出现设备正忙:
fuser -kvm 设备|挂载点 #-k 结束进程, -v 现实详细信息 -m 显示进程
"注意:以上设备挂载都是临时挂载"
设备永久挂载
vim /etc/fstab ##设备挂载策略文件
设备 挂载点 文件系统类型 挂载参数 是否备份 是否检测
/dev/sr0 /westos iso9660 defaults 0 0
此文件在编写完成后不会马上生效
mount -a ##重新读取/etc/fstab文件
此文件内容编写错误会导致系统启动失败
按照提示在操作界面输入超级用户密码
注释错误行
重启系统即可
3.设备中文件的查找
链接: find命令.
链接: Linux xargs 命令.
find path -option [ -print ] [ -exec -ok command ] {} \
find | -name | 文件名称符合 name 的文件 |
---|---|---|
-user | 用户为指定用户的文件 | |
-group | 用户组为指定用户组的文件 | |
-type x | 文件类型是 x 的文件 | |
-perm | 222文件权限为222,/222或者关系,-222并且关系 | |
-exec | 执行命令 | |
-maxdepth | 表示最大深度 | |
-mindepth | 表示最小深度 | |
-cmin n | 在过去 n 分钟内被修改过 | |
-o | 或者 | |
-a | 并且 | |
-not | 非 | |
find /mnt -perm /111 -type f -exec chmod ugo-x {} \; | 将/mnt目录下文件类型为普通文件的,且三个权限位至少有一位有1权限(可执行权限)的文件的 三个权限位的可执行权限删除 {} 表示find命令查找结果,\是为了转译“;” |
4.分区
MBR分区
主分区 | 主分区表记录分区的信息并可以直接使用的分区 |
---|---|
扩展分区 | 主分区表记录的分区,不可直接使用,只是逻辑分区容器 |
逻辑分区 | 扩展分区之上划分的分区叫做逻辑分区 |
分区方法
fdisk /dev/磁盘名称 | 交互模式下分区 |
---|---|
parted | 非交互和交互模式下分区(采用parted分区的话一般采用非交互模式,交互模式下相对比较繁琐) |
[root@d westos]# fdisk /dev/vdb
Command (m for help): m
d ##删除
l ##列出所有分区类型
n ##新建
p ##显示分区表
t ##更改分区类型
w ##保存更改
q ##退出
g ##设定分区方式为GPT
o ##设定分区方式为mbr
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free) ##主分区
e extended (container for logical partitions) ##扩展分区
Select (default p): p ##建立主分区
Partition number (1-4, default 1):1 ##分区表位置
First sector (2048-20971519, default 2048): ##分区起始位置推荐使用默认
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +100M ##分区结束位置
Command (m for help):wq ##退出保存,如果直接q表示退出不保存
udevadm settle #同步分区表
partx -d /dev/vdb##清理分区表
partx -a /dev/vdb##重新加载分区表
mkfs.xfs -K /dev/vdb1 ##格式化设备为xfs文件系统(相当与在/dev/vda1上安装设备管理软件)##-K 不丢弃空数据块
mount /dev/sdb1 /mnt/westos ##mount命令挂在为临时挂在,如果需要永久挂在需要编写/etc/fstab
设备删除
dd if=/dev/zero of=/dev/设备名称 bs=1M count=1
fdisk /dev/磁盘名 在交互模式下删除,选d,之后选择删除的分区号
parted 非交互模式下删除。后面使用rm加指定分区号
#mbr分区方式转换成GPT#
parted /dev/vda
(parted) mklabel
New disk label type? gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost.
Do you want to continue?
Yes/No? yes
(parted) quit
在RHEL8中可以直接使用fdisk /dev/vdb
g ##g表示把/dev/sdb设备的分区方式调整为GPT
5.swap分区
作用:
程序在运行时所有数据是在RAM,当RAM使用量超过了限额,为了使系统更加稳定,我们在硬盘上划分一部分空间来作内存缓冲区swap,当内存使用超过限额,内核会把内存中闲置的数据存放到swap中,当程序需要swap分区中的数据时内核将swap分区中的数据在交还给内存进程处理。
swap管理 swapon -s ##查看swap分区信息
创建swap分区:
(1)创建分区并设定分区的类型为Linuxswap
(2)mkswap /dev/磁盘名 %格式化设备位swap格式
(3)swapon /dev/磁盘名 -p 0-32767 %-p表示指定swap的优先级
以上操作都位临时操作,如果永久添加swap分区则需要编辑下面的文件:
vim /etc/fstab
/dev/磁盘名 swap swap default,pri=1 0 0
swapon -a 重新读取/etc/fstab文件
删除swap
(1)vim /etc/fstab
/dev/sda1 swap swap default,pri=1 0 0 %删除此行
(2)swapoff /dev/磁盘名
6.磁盘配额
作用:
设定用户能写入指定设备的最大额度。
mount /dev/sda1 /pub/ -o usrquota ##挂载设备并激活配额参数
quotaon -uv /dev/sda1 ##激活配额
edquota -u lee ##设定用户lee配额
Disk quotas for user lee (uid 1001):
设备 用户已经创建数据 软限 硬限 户已经创文件个数 软限 硬限
Filesystem blocks soft hard inodes soft hard
/dev/sda1 20480 0 20480 1 0 0
永久开启配额
vim /etc/fstab
/dev/sda1 /pub xfs defaults,usrquota 0 0
测试:
su - lee
cd /pub
dd if=/dev/zero of=/pub/leefile bs=1M count=22 ##截取数据失败只能写入20M数据
关闭配额:
quotaoff -uv /dev/sda1
vim /etc/fstab ##去掉配额参数usrquota
练习
1.在虚拟机中添加一块新的硬盘,大小为10G
2.在新硬盘中建立分区并挂在到/westosdir目录中,分区大小为500M
3.设定/westosdir目录中所有用户可以自由新建文件但不能删除不属于自己的文件
4.设定westos用户和lee用户能写入/westosdir目录中的最大数据不能超过10M
5.在系统中添加swap分区,大小为1G,优先级为1
6.以上要求在重启主机后仍然生效
[root@d ~]# mkdir /westosdir
[root@d ~]# fdisk /dev/vdb
Command (m for help): n
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +500M
[root@d ~]# mkfs.xfs -K /dev/vdb1
[root@d ~]# useradd lee
[root@d ~]# fdisk /dev/vdb
Command (m for help): t
Hex code (type L to list all codes): 82
[root@d ~]# mkswap /dev/vdb2
[root@d ~]# swapon /dev/vdb2 -p 1
[root@d Desktop]# udevadm settle
[root@d ~]# chmod 1777 /westosdir/
[root@d ~]# mount /dev/vdb1 /westosdir/ -o usrquota
[root@d ~]# quotaon -uv /dev/vdb1
[root@d ~]# edquota -u westos
[root@d ~]# edquota -u lee
vim /etc/fstab
/dev/vdb1 /westosdir xfs defaults,usrquota 0 0
vim /etc/fstab
/dev/vdb2 swap swap defaults,pri=1 0 0
检测结果
# units generated from this file.
#
UUID=caa4a2c5-1d4e-4774-bc2b-5e71fd7d8b7a / xfs defaults 0 0
UUID=f377f432-db5f-4172-aba5-edb5770d8b50 /boot xfs defaults 0 0
UUID=23e3187c-cdf8-47be-8ad9-ad4048f65a02 swap swap defaults 0 0
1
Disk /dev/vda: 10 GiB, 10737418240 bytes, 20971520 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
Disklabel type: dos
Disk identifier: 0xd2ba91ba
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 1026047 1024000 500M 83 Linux
/dev/vda2 1026048 2050047 1024000 500M 82 Linux swap / Solaris
/dev/vda3 2050048 20971519 18921472 9G 83 Linux
Disk /dev/vdb: 10 GiB, 10737418240 bytes, 20971520 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
Disklabel type: dos
Disk identifier: 0xcabd18f4
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 1026047 1024000 500M 83 Linux
/dev/vdb2 1026048 3123199 2097152 1G 82 Linux swap / Solaris
2
Filesystem Size Used Avail Use% Mounted on
/dev/vdb1 495M 39M 456M 8% /westosdir
3
drwxrwxrwt. 2 root root 22 Nov 20 20:47 /westosdir
4
dd: error writing '/westosdir/testfile': Disk quota exceeded
11+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.00645216 s, 1.6 GB/s
5
Filename Type Size Used Priority
/dev/vda2 partition 511996 0 -2
/dev/vdb2 partition 1048572 0 1