Linux文件系统与磁盘分区

一、磁盘

虚拟机添加一块磁盘,不过一般添加完之后,如果想要能够识别,需要重启虚拟机,不过也可以通过命令的方式识别。

[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host2/scan
[root@localhost ~]# fdisk -l

1.磁盘的构成
在这里插入图片描述
在这里插入图片描述
2.磁盘的物理构成

扇区、磁道、磁头、柱面

分区:就是记录每一个分区的起始柱面和结束柱面。

分区信息存放在0柱面0磁头1扇区上:
MBR主引导记录(446字节)+DPT磁盘分区表(64字节)+结束标志(2个字节)
硬盘的主引导记录(MBR)是不属于任何一个操作系统,它先于所有的操作系统而被调入内存并发挥作用,然后才将控制权交给主分区(活动分区)内的操作系统,并用主分区信息表来管理硬盘。

二、文件系统

文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。
1.基本概念
block:数据存储的最小单元。
inode:索引节点,全局唯一编号。除了记录文件的属性,还具有指针功能,指向文件内容放置的块。(里面保存的是文件的权限、所有者、所属组等基本信息。)

(1)文件的拥有者与用户组(owner/group);

(2)文件的访问模式(read/write/excute);

(3)文件的类型(type);

(4)文件建立或状态改变的时间(ctime)、最近一次的读取时间(atime)、最近修改时间(mtime);

(5)文件的大小;

(6)定义文件属性的标志(flag),如setUID...;

(7)文件真正内容的指针(pointer);

2.完整的文件系统图
在这里插入图片描述
(1)boot block
也称为boot sector。它位于分区上的第一个块,占用1024字节,并非所有分区都有这个boot sector,只有装了操作系统的主分区和逻辑分区才有。里面存放的是boot loader,这段boot loader称为VBR(主分区装操作系统时)或EBR(扩展分区装操作系统时),这里的Boot loader和MBR上的boot loader是存在交错关系的。开机启动时,首先加载MBR中的boot loader,然后定位到操作系统所在分区的boot sector上加载此处的boot loader。
(2)group description
既然文件系统划分了块组,那么每个块组的信息和属性元数据又保存在哪里呢?ext文件系统为每一个块组信息使用32字节描述,这32个字节称为块组描述符,所有块组的块组描述符组成块组描述符表GDT(group descriptor table)。但是不是每个块组中都存放了块组描述符。
ext文件系统的存储方式是:将它们组成一个GDT,并将该GDT存放于某些块组中,存放GDT的块组和存放superblock和备份superblock的块相同,也就是说它们是同时出现在某一个块组中的。读取时也总是读取Group0中的块组描述符表信息。
(3)superblock
记录整个文件系统相关信息。

(1)block与inode的总量;

(2)未使用和已使用的inode/block数量;

(3)文件系统的载入时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等文件系统的相关信息;

(4)有效位的值,已载入为0,未载入为1;

(4)block bitmap(块位图)
此处记录block是否使用。在向硬盘存储数据时,文件系统需要知道哪些块是空闲的,哪些块是已经占用的。位图只使用0和1标识对应block是空闲还是被占用,0和1在位图中的位置和block的位置一一对应,第一位标识第一个块,第二个位标识第二个块,依次下去直到标记完所有的block。1G的文件只需要128个block做位图就能完成一一对应。通过扫描这100多个block就能知道哪些block是空闲的,速度提高了很多。但是要注意,bitmap的优化针对的是写优化,因为只有写才需要找到空闲block并分配空闲block。对于读而言,只要通过inode找到了block的位置,cpu就能迅速计算出block在物理磁盘上的地址。
(5)inode bitmap
此处记录inode是否使用。标识inode号是否被分配的位图称为inode bitmap简称imap。这时要为一个文件分配inode号只需扫描imap即可知道哪一个inode号是空闲的。
(6)inode table
每个inode的数据存放区。一个文件系统中可以说有无数多个文件,每一个文件都对应一个inode。难道每一个仅128字节的inode都要单独占用一个block进行存储吗?更优的方法是将多个inode合并存储在block中,对于128字节的inode,一个block存储8个inode,对于256字节的inode,一个block存储4个inode。这就使得每个存储inode的块都不浪费。在ext文件系统上,将这些物理上存储inode的block组合起来,在逻辑上形成一张inode表(inode table)来记录所有的inode。
(7)block group
对用户是不可见的,子逻辑区域,有个超级标示区。为了解决bmap、inode table和imap太大的问题,引入块组概念,在物理层面上的划分是将磁盘按柱面划分为多个分区,即多个文件系统;在逻辑层面上的划分是将文件系统划分成块组。每个文件系统包含多个块组,每个块组包含多个元数据区和数据区,元数据区就是存储bmap、inode table、imap等的数据,数据区就是存储文件数据的区域。
(8)data block
每个block的数据存放区。
3.软链接和硬链接
(1)硬链接
在某个目录下的block中增加一个文件关联数据,不会用到inode与磁盘空间。
硬链接创建后,用户数据中存储的是文件本身记录,其他的用户数据和元数据都和原文件一样,唯一不同的是文件名。所以硬链接就是同一个文件有了多个文件名,但是多个文件名都指向了同一个inode。这样看来,硬链接就是有多个别名的同一个文件。
硬链接特点

(1)有相同的inode;

(2)有相同的数据记录;

(3)只能在已经存在文件上创建硬链接;

(4)删除其中任何一个,其他硬链接不受影响;

(5)只能对文件进行创建,为了避免循环引用;

(6)不能跨文件系统,可以在不同目录下;

(7)创建硬链接可以增加文件被链接的次数;

(2)软链接
建立一个独立的文件,这个文件会让数据的读取指向它连接的文件内容。软链接创建后,用户数据中存储的并不是文件本身的记录,而是一个指向原文件路径的一个指针。但是它有自己的inode序列。所以软链接其实就是一个新的文件,但是这个文件很特殊,因为他的用户数据中放的不是文件内容,而是一个指向其他文件的指针。
软链接特点

(1)多个软链接有多个不同的inode;

(2)不仅可以对文件创建,还可以对目录创建软链接;

(3)软链接可以跨文件系统创建;

(4)删除软链接并不会影响原文件,但是原文件被删除,这个软链接就成了一个死链接;

(5)不会增加被链接文件的链接次数;

(6)其大小为指定路径所包含的字符个数;

三、磁盘分区

1.磁盘分区简介
传统的硬盘分区都是MBR格式,MBR分区位于0扇区,它一共有512字节,前446字节是grub引导程序,中间64字节是分区表,每个分区需要16个字节表示,因此主分区和扩展分区一共只能有4个分区,超过4个的分区只能从扩展分区上再设置逻辑分区来表示。每个分区的大小无法超过2T。MBR的最后2个字节是结束符号。
GPT格式打破了MBR的限制,可以设置多达128个分区,分区的大小根据操作系统的不同有所变化,但是都突破了2T空间的限制。支持高达18EB(1EB=1024PB、1PB=1024TB)的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区ID(GUID)。与MBR分区的磁盘不同,GPT的分区信息是在分区中,而不像MBR一样在主引导扇区。为保护GPT不受MBR类磁盘管理软件的危害,GPT在主引导扇区建立了一个保护分区(Protective MBR)的MBR分区表,这种分区的类型标识为0xEE,这个保护分区的大小在Windows下为128MB,Mac OS X下为200MB,在Windows磁盘管理器里名为GPT保护分区,可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。
在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。
2.分区工具
(1)fdisk命令
常用内部参数

p:显示当前硬件的分区,包括没有保存的改动;

n:创建一个新的分区;

d:删除一个分区;

w:保存并退出;

q:不保存退出;

t:修改分区类型(文件系统类型);

l:显示所支持的所有类型;

使用方法

[root@localhost ~]# fdisk /dev/sdb

根据提示进行相关选项选择。保存退出后,如内核尚未识别,可以通过命令partprobe /dev/sdb手动触发识别。
(2)gdisk命令
创建分区和fdisk创建分区操作类似。

[root@localhost ~]# yum -y install gdisk
[root@localhost ~]# gdisk /dev/sdb
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,磁盘分区是将磁盘分割成不同的区域,以便于对数据进行管理和存储。磁盘分区可以提高系统的性能和可靠性,并且可以更好地组织文件和目录。 要在Linux系统中进行磁盘分区,可以使用fdisk或parted等工具。下面是一个基本的磁盘分区示例: 1. 打开终端并以root用户登录。 2. 运行fdisk命令并指定要分区的磁盘。例如,分区/dev/sda: ``` fdisk /dev/sda ``` 3. 创建一个新分区表。这将删除磁盘上的所有分区和数据: ``` Command (m for help): o ``` 4. 创建一个新分区。这可能需要根据您的需求多次重复。例如,创建一个主分区: ``` Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): First sector (2048-20971519, default 2048): Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): ``` 5. 设置分区类型和标识符。例如,将分区设置为Linux文件系统类型: ``` Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 83 ``` 6. 保存分区表并退出: ``` Command (m for help): w ``` 7. 格式化新分区,例如,格式化/dev/sda1为ext4文件系统: ``` mkfs.ext4 /dev/sda1 ``` 8. 挂载新分区: ``` mount /dev/sda1 /mnt/newpartition ``` 以上是一个基本的磁盘分区示例。请注意,这只是一个简的示例,实际情况可能会更加复杂。在进行磁盘分区之前,请务必备份您的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值