文章目录
一、设备识别
设备接入系统后都是以文件的形式存在
设备文件名称:
设备名称 | 系统识别名称 | 解释 |
---|---|---|
SATA/SAS/USB | /dev/sda,/dev/sdb | 其中s= SATA, d=DISK a=第一块,b第二块 |
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 | 查看正在被系统挂载的设备 |
cat /proc/partitions | 查看系统识别设备 |
举例说明命令的作用:
首先,添加一块新的SATA硬盘,以便观察实验效果
1、fdisk -l
2、
3、
二、设备挂载
在系统中有设备id的设备是可以被系统使用的,即是可以挂载的
挂载的理解:可以将电脑看作一个目录,挂载就是把设备插到目录上(类似于将U盘插到电脑上)
相关命令:
1、mount -o 挂载参数 device 挂载点 #挂载设备
2、umount 设备或挂载点 #卸载设备
例如:umount /boot=umount /dev/mvme0n1p1
3、mount #查看挂载信息
mount -o rw /dev/nvme0n1p1 /boot
mount -o rw /dev/nvme0n1p1 /boot #读写挂载
mount -o remount,ro /boot #转换挂载参数由读写变为只读
4、在卸载时当出现设备正忙:
fuser -kvm 设备或挂载点 #-k 结束进程, -v 显示详细信息 -m 显示进程
命令举例:
1、挂载与卸载
2、mount查看挂载信息,转换挂载参数
3、当别的窗口正在使用该文件时卸载设备,会出现设备正忙的情况,此时需要先结束使用设备的进程,然后再进行卸载
注意:以上设备挂载都是临时挂载
设备永久挂载
1、vim /etc/fstab #设备挂载策略文件
文件内容:
设备 挂载点 文件系统类型 挂载参数 是否备份 是否检测
/dev/sr0 /westos iso9660 defaults 0 0
此文件在编写完成后不会马上生效,需要执行mount -a
2、mount -a #重新读取/etc/fstab文件
3、此文件内容编写错误会导致系统启动失败
按照提示在操作界面输入超级用户密码,然后注释错误,最后重启系统即可,
重启以后需要将该文件修改正确,负责下次系统依然会启动失败
1、文件编写内容示例:
2、
3、模拟问题:删除挂载文件/wei,重启系统后会出问题
解决办法:按照提示在操作界面输入超级用户密码,会得到一个shell,在shell中输入vim /etc/fstab从而修改设备挂载策略文件,注释掉错误的地方,最后reboot重启系统即可,重启以后需要将该文件修改正确,否则下次系统依然会启动失败
三、设备中文件的查找
find命令
find
-name
-user
-group
-type #类型
-perm #权限
-exec #执行
-maxdepth #最大查的深度
-mindepth #最小查找深度
-o #或者
-a #并且
-not #反选
更多参数可用man find查看
例如:
find /etc/ -name passwd
find /etc/ -maxdepth 1 -name passwd
find /etc/ -maxdepth 2 -name passwd
find /etc/ -maxdepth 2 -mindepth 2 -name passwd
注意:有多个参数时,-maxdepth参数放在前面,否则查找会失败
find /mnt -user westos
find /mnt -not -user westos #查找不属于westos用户的目录和文件
find /mnt -user westos -o -user lee #查找属于westos或者lee用户的文件
find /mnt -user westos -a -group lee
find /mnt -type d #查找类型为目录的
find /mnt -type f #查找类型为文件的
find /mnt -perm 111 #查找权限为111的文件或目录
find /mnt -perm -111 #文件权限u位有1且g位有1且o位有1
find /mnt -perm /111 #文件权限u或g或o含有1
find /mnt -perm /111 -type f -exec chmod ugo-x {} \;
#{}表示find命令查找结果 ,\是为了转译”;“,代表”;“是命令的一部分而不是代码结束符
命令举例:
1、
2、
3、
4、
5、
四、磁盘分区
问:什么是磁盘分区?
答:磁盘分区是将整个磁盘存储空间分成几个独立的区域,用于安装操作系统、安装应用程序和存储文件
问:为什么要进行磁盘分区?
答:更容易管理和控制系统,因为相关的文件和目录都放在一个分区中。
系统效率更高
可以限制用户运用硬盘的份额(磁盘空间的大小)
更容易备份和恢复
分区方式:
MBR(Master Boot Record):主引导记录的分区方式
GPT(GUID Partition Table):全局唯一标识磁盘分区表
分区方式 | 位数 | 分区表大小 | 支持分区个数 | 支持单个分区大小 |
---|---|---|---|---|
传统分区方式 (MBR) | 32 | 64 | 主分区4个 ,所有分区16个 | 2.2TB |
UEFI (GPT) | 64 | 128 | 理论上无限制,但 windows为128 | 8ZB(1ZB=1024EB,1EB=1024TB) |
MBR分区方式
主分区:主分区表记录分区的信息并可以直接使用的分区
扩展分区:主分区表记录的分区,不可直接使用,只是逻辑分区的容器(是因为分区表的长度不够,所以做了一个容器,这个容器就叫扩展分区)
逻辑分区:扩展分区之上划分的分区叫做逻辑分区,当扩展分区被删掉,所有的逻辑分区也将消失
分区方法
1、fdisk 设备名称 #直接输入该命令进入分区信息
例如:fdidk /dev/sda #对/dev/sda设备进行分区
2、
m #获得帮助
d #删除
l #列出所有分区类型
n #新建
p #显示分区表
t #更改分区类型
w #保存更改
q #退出
n #新建
3、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表示退出不保存
4、partprobe #同步分区表
或
udevadm settle #同步分区表(rhel8中推荐使用该命令)
注意:如果设备在划分好后wq退出保存后,用cat /proc/partitions命令查看是否有该设备,如果没有,需要同步分区表
partx -d /dev/sda #清理分区表
partx -a /dev/sda #重新加载分区表
注意:同步分区表以后如果用cat /proc/partitions命令查看依然没有该设备,
则可以选择先清理分区表,然后重新加载分区表
5、mkfs.xfs /dev/sda1 #格式化设备为xfs文件系统
相当与在/dev/sda1上安装设备管理软件
注意:磁盘分区后,必须经过格式化以后才能使用
1、
2、m 查看帮助
3、划分分区示例
注意:MBR分区方式只能划分四块分区,而GPT分区方式可以划分至少128块分区
4、
5、格式化设备为xfs文件系统,相当与在/dev/sda1上安装设备管理软件,格式化后磁盘可以正常使用
6、
mbr分区方式转换成GPT分区方式
注意:转换以后MBR上的数据会全部消失,因为分区方式本来就不一样
1、parted /dev/sda
(parted) mklabel
2、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
3、fdisk /dev/sda #更新/etc/fdisk
1、
2、
五、swap分区
swap分区作用:
程序在运行时所有数据是在RAM(内存)中,内存大小是有限的,当RAM使用量超过了限额,系统会卡死,所有的进程都会停止进入等待状态。为了使系统更加稳定,我们在硬盘上划分一部分空间来作内存缓冲区swap,当内存使用超过限额时,内核会把内存中闲置的数据存放到swap分区中,当程序需要swap分区中的数据时内核将swap分区中的数据再交还给内存进行处理
swap分区大小建议:
物理内存大小 | swap分区建议大小 | 当HIBERNATE开启时swap分区大小 |
---|---|---|
2GiB以下 | 物理内存两倍 | 物理内存3倍 |
2-8GiB | 等于物理内存 | 物理内存2倍 |
8-64GiB | 4GiB | 物理内存1.5倍 |
64GiB以上 | 4GiB | HIBERNATE不开 |
管理swap分区
创建swap分区:
1、创建swap分区:
创建分区并设定分区的类型为Linuxswap
2、udevadm settle #同步分区表
3、mkswap /dev/sda1 #格式化设备为swap格式
swapon -s #查看swap分区信息
swapon -a /dev/sda1 #将设备投入使用
4、swapon /dev/sda1 -p 0-32767 # -p表示指定swap的优先级(优先级范围0~32767)
注意:调整优先级时先关闭分区:swapoff /dev/sda1
注意:以上操作都为临时操作,如果要永久创建swap分区需要修改文件,具体如下:
vim /etc/fstab
文件内容:
/dev/sda1 swap swap pri=4 0 0
然后:
swapon -a #激活swap分区
删除swap分区:
vim /etc/fstab
/dev/sda1 swap swap pri=4 0 0 ##将该文件中写的此行删除
然后:
swapoff /dev/sda1
彻底删除:
fdisk /dev/sda
然后d删除退出保存
udevadm settle设备即可永久删除
swap分区管理示例:
1、 创建分区并设定分区的类型为Linuxswap
2、同步分区表
3、将设备格式化
4、修改swap分区的优先级
永久添加swap分区:
文件里的内容如下:
番外:
问:假如现在一个服务器的系统中swap分区已经不足了,必须要扩大,但是现在系统中的磁盘已经没有可用的磁盘来进行分区了,那么如何解决呢???
答:df -H 可以查看系统中的磁盘使用情况,找到一个剩余空间比较多的目录,然后用文件的方式划分出来一部分空间,临时充当swap分区,然后再去买一块硬盘即可,具体用文件方式充当swap分区方法如下:
六、磁盘额度分配(磁盘配额)
问:什么是磁盘配额?
答:磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
问:磁盘配额的作用是什么?
答:磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要,但对单机用户来说意义不大。
设定磁盘配额方法:
临时设定用户配额:
1、mount /dev/sda1 /pub/ -o usrquota #挂载设备并激活配额参数
2、quotaon -uv /dev/sda1 #激活配额
edquota -u westos #设定用户westos的配额
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 - westos
cd /pub
dd if=/dev/zero of=/pub/leefile bs=1M count=30 #截取数据失败,只能写入20M数据
关闭配额:
1、quotaoff -uv /dev/sda1
2、vim /etc/fstab #删除文件中的配额参数usrquota
具体示例如下:将100M的磁盘空间分配给5个用户,公平来讲,每个用户分配20M的存储空间
1、创建一个分区大小为100M的分区,并将其挂载到/pub目录下
2、设定用户的配额
<1>、先卸载刚才的挂载,重新挂载设备并激活配额参数
<2>、激活配额并设定用户westos的配额
设定用户westos的配额为20M
3、永久设定用户配额,需要编写文件 vim /etc/fstab
七、逻辑卷
逻辑卷(Logical Volume):是由逻辑磁盘形成的虚拟盘,也可称为磁盘分区
逻辑卷管理器LVM:(Logical Volume Manager)
逻辑卷管理器解决的主要问题如下:
解决分区空间不够用或者分区空间绰绰有余的情况。基本磁盘分区的边界是不能随意扩展的。分区大小是在刚刚划分分区的时候就决定了。
逻辑卷的工作原理:
逻辑卷(lv)是将几个磁盘分区或者块设备(pv,pv的id必须是8e的,pv可以位于不同的磁盘分区里,pv大小可以不一)组织起来形成一个大的扩展分区(vg,卷组,一个vg至少要包含一个pv),该扩展分区不能直接用,需要将其划分成逻辑卷(lv)才能使用,lv可以格式化成不同的文件系统,挂载后直接使用。 lv的扩展和缩减是不会影响原有数据的,但逻辑卷缩减的风险大于逻辑卷扩展的风险。逻辑卷可以支持快照功能。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载文件系统来调整卷大小或数据迁移,这样可以减少操作成本.
LVM工作原理形象描述:
解释:购买来的叫物理分区(即分区)(购买的橙子),安装某些软件进行管理过后的物理分区叫物理卷(榨成汁),用很多物理卷组成的叫物理卷组(将所有橙汁倒在一个更大的杯子),从物理卷组里划分出来的分区叫逻辑卷(将大杯子的橙汁倒出来一部分),将逻辑卷挂载到设备,当逻辑卷的容量不够了,就从物理卷组中取,当物理卷组中的容量不够了,就将物理卷再往里面添加,当物理卷没有了,就去买硬盘。
涉及到的一些名字词:
名词 | 解释 |
---|---|
pv | 物理卷 被处理过的物理分区 |
pe | 物理扩展 设定存储最小单元(LVM是由整数个pe组成) |
vg | 物理卷组 捆绑pv到一个组中 |
lv | 逻辑卷 分配最终的使用设备 |
lvm设备建立
模拟问题:假现在有一台存储微信数据的服务器,每天都要给它的磁盘中增添大量的数据,它的磁盘总有一天会被填满,那怎么在设备不变的情况下,去扩大设备的容量呢???
解决方法:建立lvm设备
LVM的建立:
为了使实验效果看的更清楚,打开一个shell建立监控:
watch -n 1 "pvs;echo ====;vgs;echo =====;lvs;echo =====;df -h /weixindata"
1、建立物理分区(方法见四)并设定分区类型为lvm
2、创建pv和vg
pvcreate /dev/sda2
#创建pv
vgcreate vg0 -s 2M /dev/sda2
#创建vg -s设定pe大小位2M,vg0为vg的名字,任意取
3、
lvcreate -L 100M -n weilv vg0
#创建lvm -L:指定大小lv大小 -n:指定名称,名称任意
mkfs.xfs /dev/mapper/vg0-weilv
#格式化设备,mapper是虚拟设备存放的位置
mount /dev/vg0/weilv /weixindata/
#挂载设备
lvm的拉伸
当lvm不够用时,需要扩大它的存储容量,即进行lvm的拉伸
情况1.当vg中的容量充足
lvextend -L 200M /dev/mapper/vg0-weilv
或
lvextend -L 200M /dev/vg0/weilv
#拉伸设备
xfs_growfs /weixindata/ (rhel7可以使用该命令)
xfs_growfs /dev/mapper/vg0-weilv(rhel8只能使用该命令)
#拉伸文件系统,在rhel7中可以用设备或挂载点;在rhel8中只能用挂载点
resize2fs /dev/mapper/vg0-weilv
#当文件系统为ext类型时使用此命令
情况2.当vg中的容量不足
需要先建立物理分区(方法见四)并设定分区类型为lvm,然后再扩大lvm
1、建立物理分区,并将分区类型改为lvm
2、扩大lvm
pvcreate /dev/sda3 #创建pv
vgextend vg0 /dev/sda3 #扩大vg
lvextend -L 2500M /dev/vg0/weilv #拉伸设备
xfs_growfs /weixindata/ #扩大文件系统
3、可以看到LVM拉伸成功
lvm的缩减
xfs文件系统不支持缩减,ext文件系统支持缩减
1、将设备作成ext文件系统
umount /dev/vg0/weilv #卸载之前的设备
mkfs.ext4 /dev/vg0/weilv #将文件系统制作成ext类型的文件系统
mount #查看文件系统类型
2、缩减步骤:
umount /weixindata #卸载设备,因为缩减不支持在线(拉伸支持在线)
e2fsck -f /dev/vg0/weilv #检查设备上的数据
resize2fs /dev/vg0/weilv 1500M #缩减文件系统(不能缩减太小,否则会损坏数据)
lvreduce -L 1500M /dev/vg0/weilv #缩减lvm到指定大小
mount /dev/vg0/weilv /weixindata/ #挂载设备
如果有闲置的设备可以将其取出:
vgreduce vg0 /dev/sda3 #清除掉闲置设备
pvremove /dev/sda3 #将闲置设备从lvm中取出
ext4文件系统拉伸:
ext4文件系统拉伸时对于设备的管理命令都是相同的,ext4文件系统的拉伸命令如下:
resize2fs /dev/mapper/vg0-weilv
lvm删除:
umount /dev/mapper/vg0-weilv #卸载设备
lvremove /dev/vg0/weilv #删除lvm
vgremove vg0 #删除vg
pvremove /dev/sda2 #删除pv
结束!!!