Linux Chapter06——存储结构与管理硬盘
FH:文件系统层次标准
一切从 “/” 开始
- Linux系统中的一切文件都是从"根"目录(/)开始的,并按照文件系统层次标准采用倒树状结构来存放文件。
- Linux系统中的文件和目录名称是严格区分大小写的
- /boot 存放开机所需文件——内核、开机菜单以及所需配置文件
- /dev 以文件形式存放任何设备与接口
- /etc 配置文件
- /home 用户主目录
- /bin 存放单用户模式下还可以操作的命令
- /lib 用到的函数库,以及/bin与/sbin下面的命令要调用的函数
- /sbin 开机过程中需要的命令
- /media 用于挂载设备文件的目录
- /opt 放置第三方软件
- /root 系统管理员的家目录
- /srv 网络服务的数据文件目录
- /tmp 共享临时目录
- /proc 虚拟文件系统
- /usr/local 用户自行安装的软件
- /usr/sbin Linux系统开机时不会使用到的软件/命令脚本
- /var 存放经常变化的文件
- /lost+found 文件系统发生错误,存放一些丢失的文件片段
物理设备的命名规则
- IDE设备 /dev/hd[a-d]
- SCSI/SATA /dev/sd[a-z]
- virtio /dev/vd[a-z]
- 软驱 /dev/fd[0-1]
- 打印机 /dev/lp[0-15]
- 光驱 /dev/cdrom
- 鼠标/dev/mouse
- 磁带机 /dev/st0
硬盘的编号遵循:主分区或扩展分区的编号从1开始,到4结束
逻辑分区编号从5开始
设备文件名称
/dev/目录中保存的应当是硬件设备文件
sd表示的是存储设备
a表示系统中同类接口中第一个被识别到的设备
- 硬盘设备是由大量的扇区组成的,每个扇区容量为512字节。
- 每个扇区容量为512字节:主引导记录446字节,分区表64字节,结束符占用2字节
-
分区表中每记录一个分区信息就要16字节,分区表一共64字节,所以一块硬盘只能有4个分区
硬盘分区
- 将第一个扇区的分区表中16个字节的空间指向另外一个分区,这就是扩展分区。也就是说扩展分区并不是一个真正的分区,而更像是一个占用16个字节分区表空间的指针——一个指向另外一个分区的指针,扩展分区自身并不能存储数据,用户需要在其指向的对应分区上进行操作
文件系统与数据资料
- Ext4 Ext4作为RHEL6系统中默认的文件管理系统。这种数据格式能够在发生意外后快速恢复被破坏的文件,强大的日志功能只需花费极低的计算和存储性能
- XFS 是一种高性能的日志文件系统,而且RHEL7/8中默认的文件管理系统。在宕机后可以快速恢复可能破坏的文件,强大的日志功能只需花费极低的计算和存储性能
挂载硬件设备
当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,这个关联动作就是挂载
mount
mount命令用于挂载文件系统,
格式为mount 文件系统 挂载目录
- -a 挂载所有在/etc/fstab中定义的文件系统
- -t 指定文件系统的类型
blkid
blkid用于显示设备的属性信息 “block id”
blkid[设备名]
[root@linuxprobe ~]# blkid
/dev/nvme0n1: PTUUID="f3bd0e1e" PTTYPE="dos"
/dev/nvme0n1p1: UUID="8682376e-1f17-40b5-a88e-88be7a68c995" TYPE="xfs" PARTUUID="f3bd0e1e-01"
/dev/nvme0n1p2: UUID="d70MTd-3R9h-JoWp-dufg-zpD6-ikrx-c69VdS" TYPE="LVM2_member" PARTUUID="f3bd0e1e-02"
/dev/sr0: UUID="2019-04-04-08-40-23-00" LABEL="RHEL-8-0-0-BaseOS-x86_64" TYPE="iso9660" PTUUID="0da1aba4" PTTYPE="dos"
/dev/mapper/rhel-root: UUID="27921068-979 f-4568-9028-44e902fd84b2" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="a57ea70c-1edb-4808-8586-7954ee33fcbf" TYPE="swap"
df
df用于查看已挂载的磁盘空间使用情况 df -h
umount
挂载文件系统是为了使用硬件资源,而卸载文件系统则意味着不再使用硬件的设备资源
unmount [设备文件/挂载目录]
lsblk
查看已挂载的磁盘空间使用情况,以树状图的形式列举硬盘和分区的使用情况
添加硬盘设备
fdisk
fsdisk用于新建、修改及删除磁盘的分区表信息
fdisk 磁盘名称
- m 查看全部可用参数
- n 添加新的分区
- d 删除某个分区信息
- l 列出所有可用的分区类型
- t 改变某个分区的类型
- p 查看分区表信息
- w 保存并退出
- q 不保存直接退出
mkfs
Linux系统中用格式化操作的命令是mkfs
如果要将分区为XFS的文件系统进行格式化,则命令应为mkfs.xfs /dev/sdb1
du
du命令用查看分区或目录所占用的磁盘容量大小,语法
du -sh 目录名称
du -sh /* 来查看在Linux系统根目录下所有一级目录分别占用的空间大小
添加交换分区
交换分区(swap)是一种通过在硬盘中预先划分一定的空间,然后把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用。主要是为了解决真实物理内存不足的问题,也就是让硬盘帮内存分担压力。但是由于交换分区是通过硬盘设备读写数据,速度肯定比物理内存慢。只有当真实的物理内存耗尽后才会调用交换分区的资源
- 在生产环境中,交换分区的大小一般为真实物理内存的1.5~2倍。
mkswap
mkswap用于对新设备进行交换分区格式化mkswap 设备名称
swapon
swapon用于激活新的交换分区设备,使用swapon把准备好的SWAP硬盘设备正式挂载到系统中。可以使用free -m
查看交换分区的大小变化
磁盘容量配额
由于硬件资源是固定且有限的,如果某些用户不断地在Linux系统上创建文件,硬盘空间总有一天会被占满。在这种情况下,root管理员就需要使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数,一旦达到这个最大值就不再允许继续使用。可以使用quota技术进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。quota技术还有软限制和硬限制
- 软限制:当达到软限制时会提示用户,但仍允许继续使用
- 硬限制:当达到硬限制时会提示用户,并且强制终止用户操作
xfs_quota
xfs_quota用于管理设备的磁盘容量配额,xfs_quota[参数]配额 文件系统
edquota
edquota用于管理系统磁盘配额
VDO
VDO是一种通过压缩或删除存储设备上的数据来优化存储空间的技术。VDO技术的关键就是对硬盘内原有的数据进行删重操作,在第一次正常上传文件时速度特别慢,在第二次上传相同的文件时仅作为一个数据指针,几乎可以达到秒传的效果
红帽公司在VDO介绍中,在部署虚拟机或容器时,建议采用逻辑存储与物理存储为10:1的比例进行配置。1TB物理存储对应10TB逻辑存储。部署对象存储时采用逻辑存储与物理存储为3:1,即使用1TB物理存储对应3TB逻辑存储
记录挖坑,将来填坑
软硬方式链接
Linux系统中的快捷方式,快捷方式就是指向原始文件的一个链接文件,可以让用户从不同的位置来访问原始的文件。原文件一旦被删除或剪切到其他地方,会导致链接文件失效
Linux系统中存在软链接和硬链接两种不同的类型
-
软链接:soft link 也叫符号链接(symbolic link),仅仅包含所链接文件的名称和路径。可以针对文件、目录设置软链接,跨文件系统进行链接也可以,类似于windows系统的快捷方式
软链接 -
硬链接:hard link 可理解为指向原始文件block的指针,系统会创建出一个与原来一模一样的inode信息块。所以硬链接文件与原始文件其实是一模一样的。每添加一个硬链接,该文件的inode个数就会增加1;而且当文件的inode个数为0时,才算彻底将它删除。由于硬链接实际上是指向原文件block的指针。因此即使原始文件被删除,依然可以通过硬链接文件来访问。
硬链接不能跨分区对目录文件进行硬链接
ln
ln用于创建文件的软硬链接,语法
ln [参数] 原始文件名 链接文件名
- -s 创建符号链接 如果不带-s参数,则默认创建硬链接
- -f 强制创建文件或目录的链接
- -i 覆盖前询问
- -v 显示创建链接的过程
案例:创建出一个文件,为其创建一个软链接
[root@linuxprobe ~]# echo "welcome to linux "> old.txt
[root@linuxprobe ~]# ln -sf old.txt new.txt
[root@linuxprobe ~]# cat old.txt
welcome to linux
[root@linuxprobe ~]# cat new.txt
welcome to linux
[root@linuxprobe ~]# ls -l old.txt
-rw-r--r--. 1 root root 18 Nov 28 10:45 old.txt
创建硬链接,相当于针对原始文件的硬盘存储位置创建了一个指针,新创建的这个硬链接就不再依赖于原始文件的名称等信息,原始文件删除后依然可以读取
[root@linuxprobe ~]# ln old.txt newhard.txt
[root@linuxprobe ~]# cat old.txt
welcome to linux
[root@linuxprobe ~]# cat newhard.txt
welcome to linux
[root@linuxprobe ~]# rm -rf old.txt
[root@linuxprobe ~]# cat newhard.txt
welcome to linux