linux存储的基本管理
环境:在虚拟机添加硬盘。
Linux中:在系统中用超级用户身份,打开虚拟机管理器,选择灯泡,选择overview硬件管理,调整为5G,此时在linux中就有两个硬盘。
VMware中:点击虚拟机的设置,选择添加,添加硬盘,sata硬盘,创建,大小5G,选择位置,即完成。
一、设备识别
-
设备文件名称(设备接入系统后都是以文件的形式存在)
设备文件名称 类型 SATA/SAS/USB /dev/sda,/dev/sdb ##s=SATA,d=DISK,a=第几块 IDE /dev/hd0,/dev/hd1 ##h=hard VIRITIO-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
##/dev/sda是指接在SATA、SCSI第一个接口上的硬盘。实际使用中一般都会有分区,也就是/dev/sda1, /dev/sda2这样的。
-
2、设备查看
df ##可以查看被挂载的设备,显示的时候没有单位 df -h ##可以显示单位,2的n次方计算大小 df -H ##可以显示单位,10的n次方计算大小 lsblk ##看到设备使用情况 blkid ##表示查看设备id,有id 的设备就是被系统处理过的。设备管理方式。 cat /proc/partitions ##查看系统中识别了的设备,系统中的设备有没有不一定能被看到,有的存在但是不被识别。 fdisk -l ##查看系统中真实设备情况,查看磁盘分区情况
设备挂载(让我们的设备被我们的目录所读取)
umount /boot ##卸载设备。当设备卸载后,/boot将不能读取/dev/sda1中的东西。
mount /dev/sda1 /boot ##挂载,此时这个硬盘第一分区的东西在boot里面可以看见。
我们挂载后进入这个目录,紧接着想要卸载的时候就会显示正忙。卸载的时候看见busy,表示设备正在被系统程序使用,无法完成卸载。需要把设备上的进程都结束掉
fuser -vm /mnt ##查看设备上运行的程序有哪些。
结束进程
kill -9 id ##方法1
fuser -kvm /mnt ##方法2.来解决程序占用问题,结束设备上运行的大多数进程。
##此时我们去卸载,就可以卸载成功。
挂载时候的挂载参数
mount /dev/sda1 /mnt ##如此挂载可以进行编辑删除
umount /mnt ##卸载
mount -o ro /dev/sda1 /mnt ##这就是只读挂载的方式,只能看 。
mount ##查看到系统中所有设备的挂载信息。在最后一行就是手动挂载的信息
mount | tail -n 1 ##直接查看最后一行
mount -o remount,rw /mnt ##这个方式可以使得我们的挂载参数直接改变。直接写挂载点,不写设备。
##当进入这个目录时,卸载这个设备就会显示正忙
##结束此进程就可以进行卸载
分区(分区必须用超级用户)
分区方式有两个MBR和GPT
-
MBR分区方式
主分区:主分区表记录分区信息并可以使用的分区
扩展分区:分区容器
逻辑分区:分区容器中的分区 -
fdisk /dev/sdb可以进入这个分区
m ##获得帮助 g ##gpt分区方式 p ##查看 o ##mbr分区方式 n ##新建分区 #主分区。选择分区位置(一般默认回车就好)。在last填写划分+100M 大小 #当四个主分区出现,系统就会告诉你,必须把一个主分区转换为扩展分区。此时只要删掉一个分区就可以继续建立新的主分区 #e是扩展分区,起始块和结束块都是默认的。划分扩展的时候把所有容量都给他 l ##列出所有分区类型 t ##更改分区类型 q ##退出分区,不会同步到硬盘 wq ##退出,可以同步到硬盘 udevadm settle ##同步分区表到系统 cat /proc/partitions ##查看系统 d ##删除分区,删除设备时候,一定要确保设备在系统中未被使用,否则系统很有可能崩溃。 #分区全部删除完了之后,用fdisk -l 查看分区,看见分区标签还在 dd if=/dev/zero of=/dev/sdb bs=1M count=1 ##使用此命令,分区标签就没了,分区完全就被清楚了。
上述是交互模式建立
下述是非交互
parted /dev/vdb mklabel msdos ##设置分区方式
parted /dev/vdb mklabel gpt ##设置分区方式gpt
parted /dev/sdb mkpart primary 1 100 ##主分区从1到100
fdisk -l ##查看
parted /dev/sdb mkpart primary 101 200
parted /dev/sdb rm 1 ##删掉分区1
##分区全部删除完了之后,用fdisk -l 查看分区,看见分区标签还在
##分区标签取消,分区完全被清除了。
-
GPT分区方式
划分出一个分区。此时分区挂载不能被使用。设备必须安装文件系统才可以直接被使用。mkfs.xfs /dev/sdb1 ##无数据,直接格式化系统 mkfs.xfs /dev/sdb1 -f ##上面有数据,强制格式化文件系统 mount /dev/sdb1 /mnt ##挂载 blkid ##查看id 上述这种挂载是临时的,重启后就没了 永久挂载如下 vim /etc/fstab ##编辑此文件 mount -a ##使策略生效 man 5 fstab 可以查看帮助
如果永久挂载的文件写错了,会导致系统启动失败。输入超级用户密码,就会进入一个shell,编辑此文件就好。
chmod 1777 /mnt ##所有人都能给/mnt写东西
su - li
dd if=/dev/zero of=/dev/sdb bs=1M count=100 ##切换到li用户,用此命令截取数据
su -
cd /mnt
ll
touch haha ##切换到超级用户下,在mnt下面建立东西,发现li用户把这个设备全部沾满了
可以设定每个用户在一个磁盘中能够存放的大小不能超过多少,这就是磁盘配额
mount -o usrquota /dev/sdb1 /mnt ##激活磁盘配额
mount | tail -n 1 ##查看
edquota -u li ##编辑磁盘配额的大小
blocks soft hard inodes soft hard
li在这个上面存放多少 存放的软件 能够写入最大数据最大的大小 能够建立文件个数的软件 硬件个数
##hard默认单位是k ,我们需要自定义这个大小,设定51200则就是是50M,li用户在/dev/sdb1这个硬盘中写入的东西不能超过50M
##如果想让磁盘配额永久激活需要写到fstab中,否则开机时配额不会自动激活
##如果不想要这个配额了,删掉自动激活的那个fstab ,卸载掉。
##切换到li用户截取数据,发现超过设定大小截取数据就会报错。
find命令的使用
建立一些文件并且修改其中一些参数方便后面实验使用
watch -n 1 ls -l /mnt ##做出一个监控(在做实验之前将/mnt中的内容清理干净)
touch westosfile{1..5}
chmod 000 westosfile*
chown li westosfile1
chgrp westos westosfile2
chown westos.li westosfile3
chmod ug+w westosfile1
chmod ugo+w westosfile2
chmod 755 westosfile3
chmod 666 westosfile4
chmod 700 westosfile5
mkdir westosdir
找文件
find /mnt -name westosfile1 ##用文件名字方式查找
find /mnt -type d ##用文件类型 ,这个时候mnt本身也找出来了
find /mnt -mindepth 2 -type d ##设置查找对象的查找深度。例如:我们只是查找/mnt中几层
find /etc -maxdepth 1 - name passwd
find /mnt -user root ##用文件用户名字的方式
find /mnt -group westos ##查找组
find /mnt -user westos -a -group lee ##用户和组都是指定的
find /mnt -user westos -o -group lee ##用户和组分别满足的
find /mnt -not -user root -o -group lee ##查找用户不是root,但组是lee
touch /mnt/westosfile3 ##改时间
find /mnt -cmin 1 ##文件被修改的时间一分钟内
find /mnt -cmin +1 ##文件被修改的时间超过了1min
find /mnt -cmin -1 ##文件被修改的时间一分钟之内
文件大小
dd if=/dev/zero of=/mnt/westosfile bs=1M count=10 ##截取指定大小文件
find /mnt -size 20M ##文件大小是20M
find /mnt -size -20 ##文件大小小于20M
find /mnt -size +20M ##文件大小大于20M
权限
find /mnt -perm 222 ##精确到权限是222 ,是并且的关系 ,其他的权限没有开
find /mnt -perm /222 ##三个位中一个写的权限打开就可以了
find /mnt -perm -222 ##ugo位都必须打开w权限 ,并且的关系
find /mnt -perm -002 ##找到o有写的权限
find /mnt -perm -002 -exec rm -rf {} \; ##\是为了告诉;是find命令中的命令格式。exec是处理find查找出来的文件