1.了解文件系统
(1)概念
一个操作系统用于明确存储设备或分区上的文件的方法和数据结构,也就是在储存设备上组织文件的方法。windows系统中支持FAT和NTFS文件系统,Linux中支持ext1、ext2、ext3、ext4、XFS等文件系统。
(2)Linux文件系统的运行逻辑
Linux文件系统根据存储文件的不同属性,比如文件的实际内容、权限(rwx)与文件属性(拥有者、工作组等)将这两部分数据分别存放在不同的区块之中。
Linux文件系统主要含有的区块分别是:inode;数据区块;超级区块
①inode(索引节点)
专门记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所存再的区块号码
例如:ls -il /tmp

②数据区块
记录文件的实际数据内容,文件过大时,会占用多个区块
③超级区块
记录此文件系统下的整体信息,包括inode与数据区块的总量、使用量、剩余量,以及文件系统的格式与相关信息等
2.文件系统操作
(1)查看磁盘及目录的容量
①“df”命令:查看文件系统的整体磁盘使用量
命令格式:df 【-option】 目录/文件名
例如:df -h /tmp
常用参数:
-a:列出所有的文件系统,包括系统特有的/proc等文件系统

-h:以易读的容量格式(KB,MB,GB)来表示

-i:不用磁盘容量,而以inode的数量来显示;

②“du”命令:查看文件的磁盘使用量(常用在查看目录所占磁盘空间)
命令格式:du 【-option】 文件/文件名
例如:du -ah /etc/v2ray-agent/xray/access.log
常用参数:
-a:统计所有的文件及目录容量,默认下du只列出目录的容量


-h:以易读的容量格式显示

-s:仅列出总量,而不列出每个各别的目录占用容量

-k:以KBytes单位显示
-m:以MBytes单位显示
(2)硬链接与符号链接
①硬链接
从以上的学习中,我们得知,Linux的文件系统中,一个文件会占用一个inode,文件的内容由inode的记录来指向,文件的名字与目录有关,而内容则与inode有关。而硬链接,就是建立一个或多个指向同一个inode,但是文件名不同的文件。多个硬链接之间,删除其中一个关联文件,只要其他目录还有关联文件,数据就不会被删除。

②符号链接
符号链接就类似于windows里的快捷方式,建立的符号链接和源文件的inode不同,也就是说是两个不同的文件。

③“ln”命令:建立硬链接或符号链接
命令格式:ln 【-sf】 源文件 目标文件
例如:ln -s /tmp/bashrc /tmp/bashrc_sd
常用参数:
-s:ln命令默认不加参数的情况是建立硬链接,而加入-s后,就是建立符号链接
-f:如果目标文件存在,就主动将目标文件删除之后再建立
3.查看磁盘分区及内容
(1)观察磁盘分区状态
①“lsblk”命令:列出所有储存设备的信息
lsblk=list block device
命令格式:lsblk 【-d f i m p t】 【device】
例如:lsblk
输出信息解答:
NAME:设备文件名
RM:是否为可卸载设备
SIZE:容量
RO:是否是只读设备
TYPE:是磁盘(disk),还是分区(partition),还是只读存储器(ROM)输出
MOUNTPOINT:挂载点
常用参数:
-d:仅列出磁盘本身,不列出分区数据

-f:同时列出该磁盘内的文件系统名称

-i:使用ASCII字符输出
-m:同时输出该设备在/dev下的权限信息

-p:列出设备的完整名
②“blkid”命令:如同lsblk -f,列出文件系统与设备的名称、UUID数据和文件系统名称

③“parted”命令:列出磁盘的分区表类型及分区信息
命令格式:parted 【device】 print
例如:parted /dev/vda print

Partition Table表示分区格式,msdos就是MBR分区,gpt的话就是gpt分区
4.学会如何为硬盘分区及建立挂载点
(1)gdisk分区命令
通过【lsblk】命令的查询,我们可以得到当前这个硬盘的分区信息

可知我们的硬盘的路径为/dev/sda,接下来,我没就可以使用这个硬盘来进行我们的分区操作,不过在分区操作进行前,我们需要查看这个硬盘的分区表格式,看看是MBR分区,还是GPT分区
使用【parted】命令,查看磁盘分区表类型
例:parted /dev/sda print

知道是gpt分区后,我们就可以使用gdisk命令来给硬盘进行分区了
命令格式:gdisk 硬盘路径
例如:gdisk /dev/sda

进入gdisk的界面后,可以使用【?】来查询具体的命令

常用命令:
p:展示当前硬盘的分区情况

n:添加新的磁盘分区
d:删除一个磁盘分区
l:查询可用的文件系统编号信息
w:保存并写入
q:直接退出
①.案例演示
我想要在/dev/sda里多分出两个分区,分别是1GB的xfs Linux和window的vfat分区,如何操作?
首先我们已知/dev/sda是gpt分区了,所以直接可以使用gdisk命令
gdisk /dev/sda
然后输入n参数,接着依照提示输入分区的序号,这里默认是4,我们就输入4

接着会让我们输入起始的扇区,这里我们默认就好

然后接着会让我们输入终止扇区,这里我们要手动输入该分区的大小,使用【+1G】这种格式来建立一个我们想要的分区大小

接着,我们要输入这个分区的文件系统编号,linux常用的为8200(swap)、8300、8e00;Windos常用的为0700,这里我先创建一个Linux的文件信息系统,输入8300
输入完后按p,可见我们已经创建好了一个Linux使用的文件系统分区

接着我们按照上边的步骤在创建一个windows的文件系统分区,然后输入【w】保存分区信息!

但是此时我们使用【lsblk】命令查询会发现我们创建的分区还没有被写进内核里,所以我们要使用【partprobe -s】来更新内核内容

此时我们完成了硬盘的分区,如果要删除分区的话,就使用d参数
(2)mkfs格式化磁盘(创建文件系统)
创建了新的硬盘分区后,我们还不能直接在分区上挂载目录,我们需要先对硬盘进行一个格式化,为其选定一个文件系统(xfs或ext4等。。)
命令格式:mkfs.xfs 设备路径
mkfs.ext4 设备路径
例如:mkfs.xfs /dev/sda5

格式化后通过【blkid】查询,可见已经将其格式化为了xfs文件系统格式

这里我们要记住其UUID,这对我们后边进行目录挂载很有用
(3)文件系统的挂载与卸载
挂载点是一个目录,这个目录就是进入磁盘分区的入口,其实就相当于windows中的磁盘的盘符
①.文件系统的挂载
文件系统在进行挂载时,使用【mount】命令
命令格式:mount -a
mount UUID=“” 挂载点
mount 设备名(/dev/sda5) 挂载点
mount LABEL=“” 挂载点
例如:mount UUID=“17b3cf6d-e04a-4646-bd10-9ffc6995b0bc” /backups
常用参数
-a:自动挂载,依照配置文件/etc/fstab的数据将所有未挂载的磁盘挂载上来
-o:后面可以接一些挂载时额外加上的参数,比如帐号、密码、读写权限
例如:ro,rw:挂载系统变为只读(ro),或只写(ow)
remount:重新挂载时经常使用的参数
--bind:讲一个目录额外挂载到另外一个目录
例:mount --bind /var /data/var
将/var挂载到/data/var上,也就是说进入/data/var就等于进入/var
案例演示:
我们继续使用上边我们格式化好的两个文件系统,我们将其分别挂载在/backups和/winbk这两个目录上
我们使用绑定UUID的方法来进行挂载,首先我们使用【blkid 】命令查看/dev/sda4的UUID

在知道UUID后,我们使用【mkdir】命令分别创建/backups和/winbk这两个文件夹
然后使用命令:amount UUID=“17b3cf6d-e04a-4646-bd10-9ffc6995b0bc” /backups 挂载linux分区
windows分区的命令也差不多,挂载后使用lsblk查询结果

/dev/sda4和/dev/sda5就分别挂载到/backups和/winbk上了,现在进入/backups就等于进入了/dev/sda4里
②.文件系统的卸载
命令格式:umount 【-f l n】 设备名或挂载点
例:umount -f /dev/sda4 或umount -f /backups

常用参数:
-f:强制卸载
-l:立刻卸载文件系统,比-f更强
-n:不更新/etc/mtab的情况下卸载
Comments NOTHING