Linux学习笔记--9(文件系统与硬盘挂载)

从 “/” 目录开始

Linux系统中一切都是文件。在Windows操作系统中,想要找到一个文件,要依次进入该文件所在的磁盘分区(也叫盘符),然后再进入该分区下的具体目录,最终找到这个文件。但是在Linux系统中并不存在C、D、E、F等盘符,Linux系统中的一切文件都是从“根”目录(/)开始的,并按照文件系统层次标准(FHS)采用倒树状结构来存放文件,以及定义了常见目录的用途。
但是,FHS对于用户来讲只能算是一种道德上的约束,有些用户就是懒得遵守,依然会把文件到处乱放。
另外,Linux系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT均代表不同的目录,并且文件名称中不得包含斜杠(/)。
在这里插入图片描述
Linux系统中常见的目录名称以及相应内容
在这里插入图片描述
Linux中查看文件可以有绝对路径与相对路径。
绝对路径指的是从根目录(/)开始写起的文件或目录名称,
相对路径则指的是相对于当前路径的写法,就是没有从(/)根目录开始。
如:

# 绝对路径查看
[root@linuxprobe ~]# cat /etc/fstab   

# 相对路径查看
[root@linuxprobe ~]# cd /etc
[root@linuxprobe etc]# cat fstab

物理设备的命名规则

系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。
常见的硬件设备及其文件名称
在这里插入图片描述
硬盘的分区编号也很有讲究:
主分区或扩展分区的编号从1开始,到4结束;
逻辑分区从编号5开始。
来分析一下/dev/sda5这个设备文件名称包含哪些信息
在这里插入图片描述
首先,/dev/目录中保存的应当是硬件设备文件;
其次,sd表示的是存储设备;
然后,a表示系统中同类接口中第一个被识别到的设备;
最后,5表示这个设备是一个逻辑分区。
总之,“/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件”。

硬盘的相关知识

硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用446字节,分区表占用64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。
在这里插入图片描述
为解决分区个数不够的问题,可将第一个扇区的分区表中16字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另外一个分区。即扩展分区其实并不是一个真正的分区,而更像是一个占用16字节分区表空间的指针,一个指向另外一个分区的指针。用户一般会选择使用(3+1)3个主分区加1个扩展分区的方法,然后在扩展分区中创建出数个逻辑分区,从而来满足多分区(大于4个)的需求。
在这里插入图片描述
扩展分区,严格地讲它不是一个实际意义的分区,而仅仅是一个指向其他分区的指针,这种指针结构将形成一个单向链表。因此扩展分区自身不能存储数据,用户需要在其指向的对应分区(称之为逻辑分区)上进行操作。

文件系统

Linux系统支持数十种文件系统,而最常见的文件系统ext2,ext3,ext4,xfs。
Ext2:是Linux系统的第一个商业级文件系统,但由于不包含日志读写功能,数据丢失的可能性很大,因此大家能不用就不用,或者顶多建议用于SD存储卡或U盘。
Ext3:是一款日志文件系统,它会把整个硬盘的每个写入动作的细节都预先记录下来,然后再进行实际操作,以便在发生异常宕机后能回溯追踪到被中断的部分。Ext3能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能100%地保证资料不会丢失。
Ext4:Ext3的改进版本,作为RHEL 6系统中默认的文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block(块),从而极大地提高了读写效率。现在很多主流服务器也会使用Ext4文件系统。
XFS:是一种高性能的日志文件系统,而且是RHEL 7/8中默认的文件管理系统。它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只需花费极低的计算和存储性能。它支持的最大存储容量为18EB。

在Linux中数据是有两个部分组成,inode 和 block。
Linux只是把每个文件的权限与属性记录在inode中,而且每个文件占用一个独立的inode表格,该表格的大小默认为128字节,里面记录着一些属性相关的内容:
该文件的访问权限(read、write、execute);
该文件的所有者与所属组(owner、group);
该文件的大小(size);
该文件的创建或内容修改时间(Ctime);
该文件的最后一次访问时间(Atime);
该文件的修改时间(Mtime);
文件的特殊权限(SUID、SGID、SBIT);
该文件的真实数据地址(point)。

文件的实际内容则保存在block块中(大小一般是1KB、2KB或4KB),一个inode的默认大小仅为128字节,记录一个block则消耗4字节。当文件的inode被写满后,Linux系统会自动分配出一个block,专门用于像inode那样记录其他block块的信息,这样把各个block块的内容串到一起,就能够让用户读到完整的文件内容了。
所以,大家日常删除数据并不是删除block里面的实际内容,而是删除了Inode。
在文件的隐藏权限中chattr 参数 -s 则是彻底从硬盘删除,不可恢复(用零块填充原文件所在的硬盘区域)

虚拟文件系统(Virtual File System,VFS)

Linux内核中的软件层为用户程序提供了一个虚拟文件系统(Virtual File System,VFS)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。
实际文件系统在VFS下隐藏了自己的特性和细节,这样用户在日常使用时会觉得“文件系统都是一样的”,也就可以随意使用各种命令在任何文件系统中进行各种操作了。
VFS的架构示意图
在这里插入图片描述

硬盘挂载

mount命令

mount命令用于挂载文件系统,格式为“mount文件系统 挂载目录”。
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型

# mount /dev/cdrom /media/cdrom

在工作中要挂载一块网络存储设备,该设备的名字可能会变来变去。这时推荐用UUID(Universally Unique Identifier,通用唯一识别码)进行挂载操作。UUID是一串用于标识每块独立硬盘的字符串,具有唯一性及稳定性,特别适合用来挂载网络设备。
使用blkid命令,blkid命令用于显示设备的属性信息,英文全称为“block id”,语法格式为“blkid [设备名]”。

[root@linuxprobe ~]# blkid
/dev/sda1: UUID="0f755a58-9244-490c-9d6a-19148b2bf65d" TYPE="xfs" PARTUUID="d4652570-01"
/dev/sda2: UUID="McIrea-ld7A-g3G9-cZUG-BhXJ-lpDn-YT9MVJ" TYPE="LVM2_member" PARTUUID="d4652570-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="82daab81-75bc-403f-a1c8-d1a75d809704" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="ca17f1cd-1660-458f-b386-6605316f6487" TYPE="swap"
[root@linuxprobe ~]# 

# 用UUID进行挂载
[root@linuxprobe ~]# mount UUID=2019-04-04-08-40-23-00 /media/cdrom

这样挂载重启后就丢失了,如果想永久挂载需要写入/etc/fstab文件中。
填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”

用于挂载信息的指定填写格式中,各字段所表示的意义在这里插入图片描述
如:

[root@linuxprobe ~]# vim /etc/fstab
[root@linuxprobe ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sat Apr  2 05:02:07 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=0f755a58-9244-490c-9d6a-19148b2bf65d /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/sr0 /media/cdrom iso9660 defaults 0 0

/dev/sr0 与 /dev/cdrom 是个链接

[root@linuxprobe ~]# ll /dev/cdrom
lrwxrwxrwx. 1 root root 3 Apr 23 08:07 /dev/cdrom -> sr0
[root@linuxprobe ~]# 

df 命令

df命令用于查看已挂载的磁盘空间使用情况,语法格式为“df -h”。

[root@linuxprobe ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               969M     0  969M   0% /dev
tmpfs                  984M     0  984M   0% /dev/shm
tmpfs                  984M  9.6M  974M   1% /run
tmpfs                  984M     0  984M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sr0               6.7G  6.7G     0 100% /media/cdrom
/dev/sda1             1014M  153M  862M  15% /boot
tmpfs                  197M   16K  197M   1% /run/user/42
tmpfs                  197M  3.5M  194M   2% /run/user/0
[root@linuxprobe ~]# 

umount命令

umount命令用于卸载设备或文件系统,语法格式为“umount [设备文件/挂载目录]”。

[root@linuxprobe ~]# umount /media/cdrom
[root@linuxprobe ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               969M     0  969M   0% /dev
tmpfs                  984M     0  984M   0% /dev/shm
tmpfs                  984M  9.6M  974M   1% /run
tmpfs                  984M     0  984M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sda1             1014M  153M  862M  15% /boot
tmpfs                  197M   16K  197M   1% /run/user/42
tmpfs                  197M  3.5M  194M   2% /run/user/0
[root@linuxprobe ~]# 

lsblk命令

lsblk命令用于查看已挂载的磁盘的空间使用情况,输入该命令后按回车键执行即可。

[root@linuxprobe ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sr0            11:0    1  6.6G  0 rom  /media/cdrom
[root@linuxprobe ~]# 

fdisk分区命令

fdisk命令用于新建、修改及删除磁盘的分区表信息,是一个交互式命令,语法格式为“fdisk磁盘名称”。

fdisk命令中的参数以及作用
在这里插入图片描述
如:

[root@linuxprobe ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sdb             8:16   0    5G  0 disk 
sr0            11:0    1  6.6G  0 rom  /media/cdrom
[root@linuxprobe ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xf61fd7a4.

Command (m for help): n
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): 
First sector (2048-10485759, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): +1G

Created a new partition 1 of type 'Linux' and of size 1 GiB.

Command (m for help): p
Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf61fd7a4

Device     Boot Start     End Sectors Size Id Type
/dev/sdb1        2048 2099199 2097152   1G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@linuxprobe ~]# 

分区后需要进行格式化,在Linux系统中用于格式化操作的命令是mkfs。在终端中输入mkfs名后再敲击两下用于补齐命令的Tab键,会有如下所示的效果:

[root@linuxprobe ~]# mkfs
mkfs         mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs     
[root@linuxprobe ~]# 

进行格式化及挂载当然如果需要永久挂载,则需要写入/etc/fstab

[root@linuxprobe ~]# file /dev/sdb1
/dev/sdb1: block special (8/17)
[root@linuxprobe ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@linuxprobe ~]# mkdir /newDisk
[root@linuxprobe ~]# mount /dev/sdb1 /newDisk
[root@linuxprobe ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               969M     0  969M   0% /dev
tmpfs                  984M     0  984M   0% /dev/shm
tmpfs                  984M  9.6M  974M   1% /run
tmpfs                  984M     0  984M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  3.9G   14G  23% /
/dev/sr0               6.7G  6.7G     0 100% /media/cdrom
/dev/sda1             1014M  153M  862M  15% /boot
tmpfs                  197M   16K  197M   1% /run/user/42
tmpfs                  197M  3.5M  194M   2% /run/user/0
/dev/sdb1             1014M   40M  975M   4% /newDisk
[root@linuxprobe ~]# 
[root@linuxprobe ~]# echo "/dev/sdb1 /newDisk xfs defaults 0 0" >> /etc/fstab

du 命令

du命令用查看分区或目录所占用的磁盘容量大小,语法格式为“du -sh目录名称”。

[root@linuxprobe ~]# du /newDisk
0	/newDisk
[root@linuxprobe ~]# cp anaconda-ks.cfg  /newDisk
[root@linuxprobe ~]# du /newDisk
4	/newDisk
[root@linuxprobe ~]# du -sh /newDisk
4.0K	/newDisk
[root@linuxprobe ~]# 

照片见证

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
B站上的韩顺平老师的《Linux学习笔记》系列课程非常值得推荐。通过这个课程,我学到了很多关于Linux操作系统的知识和技能。 首先,韩老师在课程中详细介绍了Linux的基本概念和特点。我清楚地了解到Linux是一个开源的操作系统,具有稳定性、安全性和可定制性强的特点。这让我对Linux有了更深入的理解,也更有信心去学习和使用它。 其次,韩老师从基础开始,逐步讲解了Linux的安装和配置。他用简单明了的语言和实际操作的示范,帮助我了解了如何在虚拟机上安装Linux系统,并设置网络、用户账户、文件系统等。这为我后续的学习和实践打下了坚实的基础。 此外,韩老师还讲解了Linux的常用命令和工具。他详细介绍了常用的文件和目录操作命令,比如cd、ls、mkdir、cp等。同时,他还讲解了grep、sed、awk等强大的文本处理工具的使用方法。这些内容帮助我更加高效地进行文件管理和数据处理。 最后,韩老师还介绍了Linux的网络管理和安全防护。他讲解了如何配置网络连接、使用ssh远程登录以及设置防火墙等内容。这些知识对我了解网络和保护系统安全非常有帮助。 总的来说,韩顺平老师的《Linux学习笔记》课程非常实用,对于初学者来说是入门学习Linux的好选择。他通过深入浅出的讲解和丰富的实操示范,让我可以轻松地学习Linux的基本知识和操作技巧。我相信通过学习这个课程,我会在Linux领域有更进一步的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值