linux系统中的磁盘管理
1.为什么要进行磁盘管理?
磁盘管理是一项计算机使用时的常规任务,它是以一组磁盘管理应用程序的形式提供给用户的
它们位于"计算机管理"控制台中.它包括查错程序和磁盘碎片整理程序以及磁盘整理程序
2.本地存储设备的识别
fdisk -l | 查看系统真实存在的设备 |
---|---|
cat /proc/partition | 查看被系统已经识别的设备 |
blkid | 查看系统可以使用的设备 |
df | 查看系统正在挂载使用的设备 |
实验环境:在真机里面查看本地存储设备(因为牵扯到u盘)
(1)fdisk -l ##查看系统真实存在的设备
(2)cat /proc/partition ##查看被系统已经识别的设备
(3)blkid ##查看系统可以使用的设备
(4)df ##查看系统正在挂载使用的设备
查看系统真实存在的硬盘设备,看到的不一定是系统识别的
存在的,不一定是识别的
识别的,不一定是使用的
使用的,不一定是正在用的
这三个都不一样,均用不同的命令去查看
系统真实存在的不一定能被识别,能识别的不一定能被用,能用的不一定是正在用
3.设备的挂载和卸载
(1).设备名称
/dev/xdx 包括:/dev/hd0;/dev/hd1; /dev/sda; /dev/sdb; /dev/sda1; /dev/sda2; /dev/sdb1
/dev/sr0 光驱 包括: /dev/cdrom
/dev/mapper/*虚拟设备
(2).设备的挂载
mount 设备目录 挂载点目录:将一个东西挂载到另外一个地方,使它生效
umount /dev/sdb1 ##卸载这个东西
mount /dev/sdb1 /westos ##挂载sdb1到westos
mount -o ro /dev/sdb1 /mnt ##只读挂载
mount ##查看挂载信息,只读还是可以读写
mount -o remount,rw /dev/sdb1 | /mnt ##重新读写挂载
(3).解决设备正忙情况(比如u盘里面的东西打开正在用)
[[email protected] ~]# umount /dev/sdb1 (u盘的设备名称 /dev/sdb1)
umount: /dev/sdb1: target is busy. ##有程序在使用此设备
卸载u盘设备的时候提示该设备正在忙,不能卸载
解决方法1
fuser -kvm /dev/sdb1(查看使用并且强制解决使用)
umount /dev/sdb1(此时就可以直接卸载了)
解决方法2
lsof /dev/sdb1(查看使用情况)
kill -9 4934
umount /dev/sdb1
当设备正在忙时怎么解决?总结
插上u盘,df查看挂载情况
cd 进入u盘挂载目录,打开一个文件或者进入一个目录
重新打开一个shell执行如下操作:
umount /dev/sdb1 发现不能卸载,发现正在忙
fuser -vm /dev/sdb1 查看进程
lsof /dev/sdb1 查看进程
以上两种情况查看出来进程id之后,可以使用kill -9 id号码结束进程
fuser -kvm /dev/sdb1 查看并且结束
umount /dev/sdb1 此时发现就可以卸载了
4.磁盘分区的基础知识
有两种分区方式:mbr(以前电脑) gpt(现在电脑)
硬盘 0磁道 1扇区的 512个字节中记录的信息如下
512=446 字节 + 64 字节 + 2 字节
^ ^ ^
mbr(主引导记录) mpt(主分区标) 55aa(硬盘的有效性标实)
dos或者mbr方式分区的分区表如下:主分区+扩展分区(扩展分区里面的分区块叫逻辑分区)不能超过16个(id=0~16)
dos(mbr)单个分区大小不能超过2t
1个分区占用16个字节
1块硬盘上最多可以划分4个主分区
5.给硬盘进行分区的具体步骤如下:
实验环境:开启一个新的虚拟机server
(1).fdisk -l 查看可以进行分区的硬件设备
(2)fdisk /dev/vdb 进入它的分区界面
按下m:查看各个参数的功能(知道常用的即可)
(3)建立主分区
(4)再次按下n继续进行分区
(5)当系统已经有三个主分区时,现在需要划分扩展分区
(6)此时再利用fdisk -l就可以看到/dev/sdb已经分区好
注意:
再次进入分区界面建立的就是逻辑分区了
主分区个数+扩展分区个数+逻辑分区个数不能超过16个
6.给分区设备安装文件系统
主分区和扩展分区格式化之后才能用
先格式化再挂载,df才能查看得到
有以下三种文件系统类型:
ext3 rhel5及之前的版本 最多支持32TB的文件系统和2t文件,实际2tb文件系统,16G文件
ext4 rhel6 1EB 16TB
xfs rhel7 18EB 9eb 7G/s 4G/s
步骤一:df查看挂载状态
步骤二:mkfs.xfs /dev/vdb1格式化这个分区
步骤三:mount /dev/vdb1 /mnt将这个分区挂载在一个目录上才能生效,df查看挂载状态
注意:以上是临时的生效方式
步骤四:umount /mnt取消这个临时挂载,df查看挂载状态
步骤五:设置永久挂载
步骤六:mount -a(挂载),df查看挂载状态
注意:如果文件写的有问题,系统起不来的时候怎么办?
进入文字界面,给一个root密码,然后进入shell
vim /etc/fstab (将文件改成正确的格式)
exit退出
如果还不行,在真机里面打开shell poweroff虚拟机,再start就好了
7.swap分区管理
(1)什么是swap分区?
swap分区建立是当内存不够用时用这个分区
(2)swap分区的建立
先在划分分区再设定分区标签为82(在划分分区的时候按下t设置标签为82)
步骤一:先划分一个分区(必须有分区存在,之前的步骤)
步骤二:将刚才划分的主分区该为swap分区
步骤三:将刚才建立的swap分区格式化才能生效
mkswap /dev/vdb1
步骤四:swapon -a /dev/vdb1 **swap分区 ;swapon -s 查看swap分区
注意:以上设置是临时的,在配置文件里面写才是永久的
步骤五:设置永久的swap分区
vim /etc/fstab,写入以下内容:
/dev/vdb1 swap(类型) swap(用途) defaults 0 0
设置优先级有两种方法:
临时:swapon -a /dev/vdb1 -p 5
永久:vim /etc/fstab
/dev/vdb1 swap swap defaults,pri=5 0 0
(3)swap分区的删除
步骤一:vim /etc/fstab,删除这个文件里面的东西
步骤二:swapoff /dev/vdb1,swapon -s 此时再查看就没有了
8.配额(每个分区设备的容量有限制才比较公平)
配额是针对分区的
限制某个用户使用的分区大小
设定一个额度
步骤一:建立一个挂载目录
步骤二:建立一个主分区/dev/vdb2
步骤三:mount -o usrquota /dev/vdb2 /public 挂载分区
步骤四:chmod 777 /public 先挂载再给权限(否则权限会变小)
如果先给权限,然后挂载在/public这个目录上面,/public这个目录的权限会随被挂载的内容的权限变小
给student用户满权限,student用户才能在主分区上面截取分区自己使用
步骤五:quotaon -uv /dev/vdb2 加载这个服务才会识别额度
步骤六:edquota -u studnet 让这个用户有这个限制(这里面的东西不用改,改了也没有用,只改hard容量,单位是k)
1024k=1M 10240k=10M 102400k=100M 20480k=20M
以上是临时设置
步骤七:以下是永久设置
vim /etc/fstab
/dev/vdb1 /public xfs defaults,usrquota 0 0
如果设置临时的话reboot之后,所有的都要重新设置,还要挂载
如果永久设置的话reboot之后,只需要重新挂载就能使用
df -H 所有已经挂载的使用情况
du -sh /westos
步骤八:测试:切换到普通用户下面执行
[[email protected] ~]$ dd if=/dev/zero of=/public/studentfile bs=1M count=200(超过额度就会报错)
当student用户截取分区的时候如果超过管理员设置的分区额度就会报错
9.磁盘加密——基于文件系统底层的加密方式(别人就看不到我的东西了)
步骤一:先不能挂载,df查看,如果挂载的话就umount
步骤二:cryptsetup luksFormat /dev/vdb2 给自己的硬盘设备加密,设置一个有强度的密码
步骤三:blkid 查看可以系统的设备
步骤四:cryptsetup open /dev/vdb2 westos 开放这个设备,打开盖子,盖子名字随便写 ,输入YES
步骤五:ll /dev/mapper/westos 这是一个虚拟的设备
步骤六:mkfs.xfs /dev/mapper/westos 格式化这个虚拟的设备
步骤七:mount /dev/mapper/westos /mnt/ 挂载这个设备(加密之后挂载就需要密码)
步骤八:touch /mnt/file{1…10} 在这个设备里面建立文件
步骤九:umount /mnt/ 不想看了就直接卸载(卸载之后就可以重新加密设置别的密码了,但是直接改密码会破坏原来的加密文件)
步骤十:cryptsetup close westos 关闭盖子
再挂载,挂载的时候需要密码,挂载上了进去就可以随意操作
cryptsetup open /dev/vdb8 westos
mount /dev/mapper/westos /mnt/
这个和超级用户 普通用户没关系
10.使已经加密的磁盘在挂载的时候不再需要密码——加密设备的自动挂载
当存储设备是加密设备时,系统启动是不能自动挂载的
因为没有人为它输入密码,因此我们要使加密设备自动挂载,使加密设备开机挂载就能用
步骤一:vim /etc/fstab(挂载策略)
/dev/mapper/westos /mnt xfs defaults 0 0
步骤二:vim /etc/crypttab(解密文件)
westos /dev/vdb8 /root/westoskey
步骤三:vim /root/westoskey
2018westos(密码)
chmod 600 /root/diskpassword
步骤四:cryptsetup luksAddKey /dev/vdb8 /root/westoskey(使它开机的时候读取上面的文件,进行自动挂载)
步骤五:设置完之后,reboot,然后df查看是否自动挂载
如果上述三个文件有一个写的不对,系统reboot之后就会起不来
此时就需要给一个root密码,一一查看核对上述文件
11.删除加密设备的自动挂载
步骤一:vim /etc/fstab 删除改文件里面的东西
步骤二:vim /etc/crypttab 删除该文件里面的东西
步骤三:cryptsetup luksRemoveKey /dev/vdb1 /root/diskpassword
步骤四:彻底删除加密设备(只删设备,设备里面的文件会被破坏,因为没有办法进行解密)
umount /westos/先卸载
cryptsetup close westos
mkfs.xfs /dev/vdb1 -f 强制格式化
也可以fdisk /dev/vdb1 直接d删除所有的
partprobe 初始化分区设备