Day02 磁盘管理和文件管理
Day02 磁盘管理和文件管理
1. 磁盘分区和格式化
1.1 Linux磁盘分区和表示方法
三种磁盘类型:
- 主分区:可以直接进行使用,已经分配了空间,编号从1~4。
- 扩展分区:也是主分区,但不能直接使用,相当与存在未分配空间的容器。
- 逻辑分区:在拓展分区下创建,逻辑分区的数据不受主引导扇区的限制,(eg:
STAT
和SCSI
接口类型的磁盘在linux
中最多创建12个),编号从5开始。
编号的设定原因:在主引导扇区(MBR)中,用来存放扇区信息的大小为64字节,而每一个分区要占用的大小为16字节,所以一个磁盘最多有4个分区,编号从1~4,则逻辑分区从5开始。
表示方法:
硬盘:对于
SATA
和SCSI
接口的磁盘,以sdx
来命名磁盘,x可以为a,b,c,d...
,分别代表第块磁盘。分区:以磁盘设备文件名为基础,后面添加上分区对应的数字序号。eg:
sda1
:代表第一块磁盘的第一个分区,sda2
:代表第一块磁盘的第二个分区。
1.2 Linux的文件系统
windows中常用的的文件系统:
特性 | FAT32 | NTFS(目前主流) |
---|---|---|
最大文件大小 | 4GB | 16EB |
最大分区大小 | 32GB(实际2TB) | 256TB(windows限制) |
兼容性 | 跨平台 | windows最好 |
安全行 | 较差,无权限管理 | 可以进行加密,或者日志记录 |
使用场景 | u盘,旧设备 | 固态,机械硬盘 |
linux中常用的文件系统:
特性 | ext4 | XFS |
---|---|---|
最大文件大小 | 16TB | 8EB |
使用的场景 | 通用 | 大文件/高并发 |
我们可以通过命令来查看当前系统中可以使用的文件系统类型:
sudo cat /etc/filesystems
其中
iso9660
是光盘类型的文件,同时还存在一种特殊类型的文件系统,swap
文件系统专门给swap分区使用,一般设置成虚拟机物理内存2倍,当我们安装linux
系统,如果是系统自动分区,则会自动的创建swap
分区。
1.3 查看分区信息
fdisk -l |
- Boot:表示是否为引导块,为*,则代表为引导分区
- Start:扇区的起始位置
- End:扇区的终止位置
- Blocks:扇区的空间大小
- ID:扇区对应的编号,其中83代表为XFS分区,8e代表LVM分区,82代表交换分区。
- System:对应的文件系统,
Linux
是XFS文件系统,Linux LVM
是逻辑卷。
1. 4磁盘的创建和与格式化
1.4.1 创建
1.4.2 fdisk进行分区
根据上面所学的知识,我们应该可以猜到进行磁盘分区的命令:
sudo fdisk /dev/sdb #我们需要对第二块磁盘进行分区 |
常用的一些参数:
⭐️实验测试:创建一个主分区,一个拓展分区,一个逻辑分区。
查看是否分区成功:
先看在磁盘分区保存后的情况。
在判断系统内核是否已经识别到新的磁盘分区
cat /proc/partitions
1.4.3 格式化
利用mkfs
命令来个磁盘分区进行格式化,需要注意的是在格式化时会将所有的数据进行擦除。
使用语法:
mkfs -t 文件系统类型 磁盘分区文件名 |
将sdb1格式化成ext4文件系统
mkfs -t ext4 /dev/sdb1 |
将sdb5格式化成xfs文件系统
mkfs -t xfs /dev/sdb5 |
2.临时挂载
我们知道在Linux中一个皆文件,所以当我们需要对新的磁盘分区进行访问时,需要将将其挂载到某个目录上,通过这个目录来访问磁盘中的数据。
/
和/boot
系统会自动的对磁盘分区进行挂载,而在其他的目录下则需要手动的进行挂载。Linux
中存在两个默认的挂载点,/media
:用来实现自动挂载的,/mnt
:用来实现手动的挂载。
使用语法:
mount [-t 文件类型] 设备文件名 挂载点 #进行挂载 |
注意事项:作为挂载点的目录,会自动的隐藏起来,则无法进行查看,所以最好创建空目录来作为挂载点
流程:先挂载到
/home
下,查看文件信息,在卸载,再查看文件信息
2.1 挂载测试
2.1.1 挂载硬盘
我们在/mnt
下创建一个目录为/test
来作为挂载点。
查看系统中已经挂载的设备:
df
-h : 人性化显示,eg:100MB,100Gb等
-T :显示挂载信息
2.1.2 挂载光驱、u盘和iso文件
我们将/dev/cdrom
挂载到/mnt/cdrom
上
挂载u盘和iso
文件都是类似的方法,但iso
文件在挂载时要添加参数
mount -o loop iso文件 # 挂载iso文件 |
3. 卸载
通过卸载挂载点目录的位置来进行卸载即可。
umont /mnt/cdrom #卸载光驱所在的挂载点目录 |
注意事项:当我们在进行卸载时,可能会经常遇到如下的报错:
翻译过来就是设被处于忙碌的状态,可能的原因有进程正在使用文件,或者你处在挂载目录下,进行卸载。解决方法就是kill
使用该问文件的进程,或者退出当前目录下即可。
4.永久的进行挂载
我们需要注意的是在Linux
一般通过命令来进行设置的选项都是临时的,想要永久的进行保存,就要通过文件来进行修改。挂载相关的文件是/etc/fstab
(file system table)文件系统表。
正方形框起来的一个部分为一个字段,一共有6个字段,从左往右分别为
- 挂载的设备名称:可以用
UUID
或者文件设备名 - 挂载点目录
- 文件系统的类型
- 挂载选项:一般设置成
defalts
- 存储设备是否需要进行dump配备:0为不要,1为要。
- 系统启动后是否进行自动检测和检测的顺序: 0代表不检测,1代表先检测,然后在2,若存在多个需要检测的分区,则都设置成2.
4.1 永久挂载测试
**流程:**将sdb1和sdb5进行挂载,挂载完毕后重新启动虚拟机,再查看挂载是否成功。
1.查看设备文件的id
sudo /blkid 设备文件名
2.修改
/etc/fstab
3.重新运行配置文件并查看
mount -a #默认情况下修改了/etc/fstab 是要重启才能生效的,但是也可以用该命令让器立即生效,(-a all:会自动的检测/etc/fstab中未必挂载的磁盘,从而实现挂载。)
5. 磁盘配额
5.1 基本概念
磁盘配额主要是针对用户和用户组来进行设置的,只在指定的文件系统内有效。常见的两方面的限制为磁盘容量和文件个数。
- 磁盘容量以
kb
为单位,限制用户所用的磁盘容量的大小。 - 文件个数,限制用户所能创建的文件个数。
其中又存在软限制和硬限制:
- 软限制:宽限期(默认7天,可以修改)内可以短暂的超出限制,但是会发出警告。
- 硬限制:不存在宽限期,超出限制,禁止写入同时发出警告。
5.2 设置配额
注意事项:
在进行配额之前一定要先查看是否将
SELINUX
关闭,这个一种内核安全模块,会限制用户的访问范围,此时会导致用户无法进行添加的磁盘进行配额设置。
- 查看当前
Selinux
的状态
sestatus
- 修改对应的配置文件
vim /etc/selinux/config
- 重启然后再查看状态
生成配额文件
quotacheck -acug
-a :检测/etc/fstab下所有启动配额的文件系统,添加了a选项,则不用再在后面添加分区
-c :强制创建新的配额文件(覆盖)
-u/-g :检测用户/用户组配额
-v :详细的执行过程编辑配置文件
edquota -u 用户名
-u 用户名 :用来对用户进行配额
-g 用户组名 :用来对用户组进行配额,注意当存在多个用户组是,只对第一个用户组生效。会跳转到如下界面
- 参数1:分区名
- 参数2:磁盘空间大小
- 参数3:软限制的大小,默认为
KB
- 参数4:硬限制的大小,默认为
KB
- 参数5:文件的个数
- 参数6: 软限制的文件的个数
- 参数7:硬限制的文件的个数
启动配额文件
sudo quotaon -augv
-a :检测/etc/fstab下所有启动配额的文件系统,添加了a选项,则不用再在后面添加分区
-u/-g :检测用户/用户组配额
-v :详细的执行过程
5.3 测试配额
我们在上面设置了磁盘的硬限制为100MB,文件个数的软限制为2,硬限制为3.
⭐️生成指定大小的文件:
通过dd命令来生成,dd的作用是用来数据备份和迁移的。
语法:
dd if=文件路径 of=文件路径 bs=1000 count=100 #生成100MB的文件
if:input file
of: output file
bs: (block size)磁盘块的大小,单位为
kb
count: 磁盘块的个数
生成60MB大小的文件
编辑user1的配额文件,同时将这100MB的文件多次的复制到
/mnt/test
下查看结果- user1的配置文件:
edquota -u user1
切换到user1用户,并移动文件,这里的rubush是自己创建的一个目录
cp /rubush/smallfile s1
5.4 查看用户或分区的信息
语法
用法1:针对用户
quota -u/g 用户名/用户组名
-v: 详细信息
-s : 人类习惯的单位,eg:`MB`用法2:针对分区
repquota
-a :检查`/etc/fstab`中的所有挂载了的分区
-u 用户名 :单个用户
-g 用户组名 :单个用户组
-v :详细信息
-s :人类习惯的方式
6. LVM(逻辑卷管理)
LVM:(Logic Volume Manage
)逻辑卷管理。建立在物理磁盘和分区之间的逻辑层。最大的特点是可以动态的对磁盘进行管理。因为在传统的磁盘管理上,想要进行对容量进行改变,只能先初始化磁盘,在进行改变。而
LVM
则不需要。
6.1 四大组成部件
PV(
physical volum
):物理卷:处理逻辑卷管理的最顶层,可以为物理分区,或物理磁盘,或者为raid。VG(
volume grop
):卷组:建立在物理卷之上,卷组中最少要存在一个物理卷,当卷组创建后能够动态的添加删除物理卷。
LV(
logic volum
):逻辑卷:建立在卷组之上,把卷组中未进行使用的空间来分配给逻辑卷,逻辑卷创建后也可以进行动态的添加和删除容量。同时一个LV
可以来自一块分区,也可能来自多块分区。但是要注意一个逻辑卷是不能来自多个卷组的。PE(
physical extent
):物理块,LVM的最小存储单位,默认为.
拓展知识点:
- 磁盘的最小存储单位:sector(扇区),默认大小为
- 文件系统的最小存储单位:block(块),默认大小为
结构图:
6.2 常用的LVM命令
功能 | PV | VG | LV |
---|---|---|---|
display(产看详细信息) | pvdisplay | vgdisplay | lvdisplay |
create(创建) | pvcreate | vgcreate | lvcreate |
scan(扫描) | pvscan | vgscan | lvscan |
remove(移除) | pvremove | vgremove | lvremove |
extend(拓展) | vgextend | lvextend | |
reduce(减少) | vgreduce | lvreduce |
6.3 项目测试
**目标:**将/dev/sdb5
和/dev/sdb6
合并成卷组vg0
,在将vg0
分成逻辑卷lv0
和lv1
,在利用/dev/sdb7
对逻辑卷lv0
进行增加容量。
查看当前的磁盘信息
sudo fdisk -l
创建物理卷
sudo pvcreate /dev/sdb5
sudo pvcreate /dev/sdb6
sudo pvcreate /dev/sdb7创建卷组
语法:
vgcreate [选项] 卷组名 物理卷
选项:
-s PE: 执行物理块的大小,默认为4KB,一般不进行修改sudo vgcreate vg0 /dev/sdb5 /dev/sdb6
创建逻辑卷
语法:
lvcreate [选项] 逻辑卷大小 [-n 逻辑卷名称] 卷组名
选项:
-L :大小
-l :指定PE的个数来进行创建,一般不用
-n :逻辑卷名称sudo lvcreate -L +600M -n lv1 vg0
sudo lvcreate -L +500M -n lv2 vg0格式化逻辑卷,并进行永久的挂载
之前学习过了如何格式化和挂载,就不再演示。但是存在一个问题需要注意。
对lv1进行增加200MB的容量
先查看vg0的容量情况:
先对卷组进行扩容
语法:
sudo vgextend 卷组名 物理卷
sudo vgextend /vg0 /dev/sdb7 #将sdb7添加到vg0中
sudo vgdisplay #产看卷组情况在对逻辑卷进行扩容
语法:
sudo lvextend [选项] [ 逻辑卷名]
选项:
-L :大小
-l :指定PE的个数来进行创建,一般不用
-n :逻辑卷名称sudo lvextend -L +200M /dev/vg0/lv1
由于文件系统在扩容后无法进行识别,需要对文件系统进行扩容
对于ext4文件系统:
sudo resize2fs /dev/vg0/lv1
对于xfs文件系统:
sudo xfs_growfs