linux存储的基本管理
- 一、设备识别
- 二、设备挂载
-
- 1.临时挂载
- 2.永久挂载
- 三、设备中文件的查找(find)
- 四、磁盘分区
- 五、swap分区
- 六、磁盘配额
实验环境:一台全新的虚拟机,添加第二块5G的虚拟硬盘VirtlO Disk device。
在真实主机里面用virt-manager打开虚拟化管理界面------选择虚拟机Open打开,打开灯泡--------选择左下AddHardware-----Strogae设定内存为5GB;Dvice type为Disk device;Bus type为VirtlO
在westosa中查看硬盘设备,新增vdb 5G
一、设备识别
在Linux操作系统中,任何物理存储设备接入系统后都是以文件的形式存在,不同类别的设备接入系统后被识别的文件类型也不同。
设备查看:
fdisk -l 查看磁盘分区情况
lsblk 设备使用情况(MOUNTPOINT设备挂载点)
blkid 设备管理方式及设备id
df -h/-H 查看正在被系统挂载的设备(h:1024换算 H:1000换算)
cat /proc/partitions 查看系统识别设备
二、设备挂载
挂载目的:通过将设备挂载到目录上来访问设备。
在系统中有设备id的设备是可以被系统使用的。
1.临时挂载
挂载命令:
mount -o 挂载参数 设备名称 挂载点
umount 设备|挂载点 ##卸载U盘
mount ##查看挂载信息
mount -o rw /dev/vdal /westos ##可读+可写挂载设备
mount -o remount,ro /westos ##转换挂载参数由读写变为只读
当卸载时出现设备正忙报错的情况使用一下命令:
fuser -kvm 设备|挂载点 ##-k 结束进程 -v 显示详细信息 -m 显示进程
先查看设备上正忙的信息:lsof /dev/sdb1
2.永久挂载
编辑设备挂载策略文件
vim /etc/fstab
设备 挂载点 文件系统类型 挂载参数 是否备份 是否检测
/dev/sdb1 /mnt swap defaults 0 0
此文件编写后不会立即生效,需要执行mount -a 使得系统重新读取此文件。
三、设备中文件的查找(find)
find -name ##按文件名称查找
find -user ##按文件拥有者查找
find -group ##按文件拥有组查找
find -type f | d | s | b | l | ##按文件类型查找(d=目录;f=文件;s=socket套接字;b=块设备;l=软链接)
find -perm 444 ##准确定位文件权限查找(u=r--&g=r--&o=r--)===1个条件
-perm /444 ##模糊定位文件权限查找(u含有r或者g含有r或者o含有r)===3个条件
-perm -444 ##模糊定位文件权限查找(ugo位都含有 r 权限)
find -exec ##对查找出来的文件进行处理
find -maxdepth 1 ##查找的最大深度为1
find -mindepth 1 ##查找的最小深度为1
find -cmin 1 ##查找在一分钟时间点被修改的文件
-cmin +1 ##查找修改时间大于1min的文件
-cmin -1 ##查找修改时间小于1min的文件
find -size + 1M ##查找大于1M的文件
-size - 1M ##查找小于1M的文件
find -o ##或者
find -a ##并且(可以省略)
find -not ##条件反选(=not后参数的否定参数)
find /mnt -perm /111 -type f -exec chmod ugo-x {} \; ###{} 表示find命令查找出来的所有结果 ,\是为了转译, “;”特殊含义,对命令执行的时候前后分隔开
先建立文件,便于观察。
按文件名查找以及深度查找
用户身份查找
文件指定大小查找,需先做出来3个文件,如下图:
dd if=/dev/zero of=/dev/sdb bs=1M count=10
(if=input file of=output file bs=1M一块的大小是1M count=10复制10块)
时间查找(主要作用是比如几分钟之内文件损坏或者出现问题,来检查哪里被修改过)
权限查找
find /mnt -perm /111 -type f -exec chmod ugo-x {} ;
##{} 表示find命令查找出来的所有结果 ,\是为了转译, “;”特殊含义,对命令执行的时候前后分隔开
四、磁盘分区
操作系统在引导的过程中,硬件支持的模式主要MBR,GPT两种分区方式。
1.GPT分区方式:
此分区方式解决了MBR分区只有4个主分区的缺点,理论上来说分区没有数量限制,但因操作系统不同对此方式分区数量限制也不同。
2.MBR分区方式:
如上图所示,MBR分区将磁盘分为主分区、扩展分区、分区表这3部分。
主分区:记录分区的信息并可以直接使用的分区。
扩展分区:主分区表记录的分区,不可直接使用,只是逻辑分区的容器。
逻辑分区:扩展分区里面划分的分区,不占用分区表。
分区方法:
fdisk交互式分区
fdisk /dev/vdb 界面参数
m ##获得帮助
d ##删除
l ##列出所有分区类型
n ##新建分区
p ##显示分区表
t ##更改分区类型
w ##保存更改
q ##退出
g ##设定分区方式为GPT
o ##设定分区方式为MBR
udevadm settle ##同步分区表
cat /proc/partitions ##查看分区情况
parted非交互式分区
parted -l ##查看分区表
parted /dev/vdb mklabel msdos/gpt ##设定设备分区方式(msdos=MBR;gpt=GPT)
parted /dev/vdb mkpart primary 1 100 ##划分容量为100M的第一个分区
parted /dev/vdb rm 分区号 ##删除分区
3.常见文件系统类型
磁盘划分出来的分区是不可使用的,只是划分出来了设备,但这个设备上没有文件系统(用来管理文件的软件),所以需要对设备先进行格式化。
blisk -l | grep /dev/vdb
mkfs.xfs /dev/vdb1 ##将设备格式化为xfs文件系统
mkfs.ext4 /dev/vdb3 ##将设备格式化为ext4文件系统
mkfs.xfs -K /dev/vdb6 ##将设备格式化为xfs文件系统(-K表示不舍弃空数据块)
udevadm settle ##同步磁盘设备分区表
五、swap分区
作用:充当内存的仓库,缓冲区。程序在运行时所有数据都在内存RAM中,当RAM使用量超过了限额程序运行会出错,为了使得系统更加稳定,我们可以在硬盘上划分一部分空间来作为内存缓冲区,即swap分区;当内存超过限额,内核会把内存中闲置的数据存放到swap中,当程序需要swap中的数据时,内核就会将swap分区中的数据交还给内存进程处理。
swap分区大小的建议:
HIBERNATE:关机时自动备份内存数据的物理存储空间,一般为关闭状态。
swap管理命令:
swapon -s ##查看swap分区信息
创建swap分区
创建分区并设定分区的类型为linuxswap
mkswap /dev/vdb2 ##格式化设备文件系统为swap格式
swapon /dev/vdb2 -p 0---32767 ##添加设备,- p 指定设备的优先级(数字大优先级高)
以上操作为临时操作
swapoff /dev/vdb2 ##删除swap分区中的指定设备
永久添加swap分区
vim /etc/fstab
/dev/vdb1 swap swap pri=4 0 0 ##pri优先级
swapon -a ##使系统重新读取此文件
六、磁盘配额
作用:设定用户能写入指定设备的最大额度,可以避免因系统中某个用户过度使用磁盘空间而造成其他用户无法正常工作。
设定方法:
临时配额:
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
实验:
1.fdisk /dev/vdb交互式对设置/dev/vdb分区,新建一个大小为100M的/dev/vdb1设备
2.格式化设备为xfs文件系统,挂载设备到/westos目录,挂载完成后修改目录权限
3.切换用户目录到/westos,dd创建文件直到设备空间被占满,这显然是不合理的
4.切换回超级用户,卸载/dev/vdb1重新挂载并激活配额参数usrquota,mount查看挂载信息可以看到挂载到/dev/vdb1的配额参数被激活
5.为westos用户设定磁盘配额为20M(默认单位为K),此时普通用户上传文文件大小受限制,用户westos只能写入大小为20M的数据。
6.切换用户,此时,用户westos只能写入20M以下的数据
永久配额:
vim /etc/fstab
/dev/vdb1 /westos xfs defaults,usrquota 0 0
编写完需要执行 mount -a 以重新读取此文件,然后在执行 edquota -u username 命令对指定用户进行配额。
关闭配额:
quotaoff -uv /dev/vdb(v表示显示过程 u表示显示激活状态)