Linux文件系统
概述
⽂件系统,顾名思义,是⼀个组织⽂件的“系统(system)”。 filesystem,⽂件系统是⽤来组织⽂件的。通俗⼀点理解的话,⽂件系统是⽤来存储⽂件的。
硬盘是不能直接存放⽂件或数据。
我们通过将硬盘格式化之后,指定格式化后的⽂件系统,才可以存放数据。
机器语⾔就是0和1组成的语⾔。数据存放在⽂件系统中也是010101010101010这种。
我们看数据看的是字符.
0-9,a-z
我们只需要知道⽂件系统是⽤来做什么的就ok了,这就是运维⼈员需要知道的。
不同的⽂件系统存放⽂件的⽅式也不相同。算法以及优化⽅式也可能不同,所以如果⼀个操作系统不⽀持某个⽂件系统,那么这个⽂件系统上的数据,也就⽆法被这个操作系统识别。
#windows的⽂件系统:
很多同学对于windows的理解就是C盘,D盘,E盘。
其实咱们同学应该都知道C盘,D盘,E盘这些盘的空间是来⾃于硬盘。
你插⼊⼀个新的移动硬盘或者U盘,也会被windows识别出来。
如果你安装过windows操作系统,你就知道C盘,D盘是怎么来的了。
windows的安装过程中,windows的安装程序所带的驱动会识别出你计算机的硬盘,然后你对硬盘进⾏分区(partition),“然后格式化”,然后安装操作系统。part的意思是“部分”,partition就是分区的意思。
对于Linux分区来说,只有格式化之后才能使用,不格式化是无法使用的。
Linux分区格式化之后就会变成文件系统,格式化的过程相当于对分区做了一个文件系统。
Linux常见的文件系统有ext系列,ext2,ext3,ext4。还有xfs,还有btrfs。
ext4的文件系统限制是,单个文件的大小不能超过1T
xfs的文件系统每个文件系统量最大支持8eb,单个文件可以支持16tb
从centos7和rhel7开始,默认的安装文件系统就是xfs了,也提供了xfs文件系统的支持。
对于文件系统来说,如果涉及到了文件系统性能的需求,首先你要知道的就是你要存储的文件类型 (特征)。
小文件特别多或者文件特别大,但是文件数量少。
分区
MBR分区
mbr的初始化当想建⽴第四个主分区的时候,会将剩下的所有空间划分成扩展分区,然后在扩展分区⾥⾯划出⼀部分作为逻辑分区。mbr主分区加扩展分区的数量最多等于4。mbr单分区⼤⼩不超过2T
MBR(主引导记录): 如果磁盘选择了以MBR的⽅式进⾏初始化,那么磁盘的第⼀个扇区⼀定是512B
主引导记录(master boot record,MBR)位于硬盘的第⼀物理扇区。由于历史原因,硬盘的⼀个扇区⼤⼩是512字节,包含最多446字节的启动代码、4个硬盘分区表项(每个表项16字节,共64字节)、2个签名字节(0x55,0xAA)。
将第一个扇区作为引导扇区
扇区(sector),⼀个扇区是512B。
GPT分区
gpt的初始化最多可以达到1024个主分区+扩展分区。GPT单分区最⼤分区18EB->18,874,368T
Linux的⽂件系统
通过命令⾏查看当前系统的硬盘(没有⽹络存储的情况)
[root@server ~]# ls /dev/nvme0* -l
brw-rw----. 1 root disk 259, 0 May 23 21:51 /dev/nvme0n1
b->block 块设备
brw-rw----. 1 root disk 259, 0 May 23 21:51 /dev/nvme0n1
nvme0n1表示第⼀块硬盘
nvme0n1p1表示第⼀块硬盘的第⼀个分区
nvme0n1p2表示第⼀块硬盘的第⼆个分区
[root@server ~]# ls /dev/sd* -l
brw-rw----. 1 root disk 8, 0 May 23 22:02 /dev/sda
在Linux系统当中,SATA硬盘和SCSI硬盘都会被设备成/dev/sd*。
IDE硬盘在早期的Linux版本会被识别成/dev/hd*
第⼀块IDE(ATA)硬盘是/dev/hda
第⼆块IDE硬盘是/dev/hdb
第三块IDE硬盘是/dev/hdc
。。。。
第⼆⼗六块IDE硬盘是/dev/hdz
第二十七块IDE硬盘是/dev/hdaa
第⼀块SATA或SCSI硬盘是/dev/sda
第⼆块SATA或SCSI硬盘是/dev/sdb
第三块SATA或SCSI硬盘是/dev/sdc
。。。。
第⼆⼗六块SATA或SCSI硬盘是/dev/sdz
⾮常重要
磁盘是有分区的
第⼀块磁盘的第⼀个分区就是/dev/sda1
第⼀块磁盘的第⼆个分区就是/dev/sda2
第⼀块磁盘的第三个分区就是/dev/sda3
第⼀块磁盘的第四个分区就是/dev/sda4
第⼀块磁盘的第五个分区就是/dev/sda5
第⼆块硬盘的第⼀个分区就是/dev/sdb1
公式就是第X块硬盘的第N个分区就是/dev/sdXn
X表示,a,b,c,d,e,f,g…z
N表示1,2,3,4,5,6…
linux磁盘使用步骤
Linux想使⽤磁盘的步骤和我们的windows⼀样。
加硬盘->分区->格式化->挂载
#通过命令⾏⽅式对磁盘进⾏分区(两种⽅式,第⼀种就是MBR,第⼆种就是GPT)
如果你采⽤MBR的⽅式进⾏分区就使⽤fdisk命令
如果你采⽤GPT的⽅式进⾏分区就使⽤gdisk命令
单个分区超过2T就用GPT,不超过2T就用MBR
还有其他分区的命令parted
1.⼿动创建分区(效率太低)
2.⾃动创建分区(有⼀定的操作性)
[root@server ~]# fdisk -l
查看当前所有磁盘的分区情况
[root@server ~]# fdisk -l /dev/nvme0n1
查看当前某块硬盘的分区情况
⼀个sectors等于512B
对于服务器来说,磁盘从使⽤⽬的来说分为3种,第⼀种是⽤来存放操作系统的,此类硬盘应该只存放操作系统以及系统配置⽂件,剩下任何数据都不应该主动存放在此硬盘中。第⼆种磁盘是⽤来存放本地⼤⽂件,⼀般这种磁盘我们叫做本地存储盘。第三种磁盘是⽤来存放本地⼤⽂件,但是该磁盘并没有在本地,⽽是使⽤了⽹络存储(SAN->storage area network),⼀般这种磁盘我们叫做⽹络存储。
交互式的命令
[root@server ~]# fdisk /dev/sda
Command (m for help): q
(quit,不保存的)
Command (m for help): w
(write保存)
Command (m for help): m
Generic
d
delete a partition(删除⼀个分区)
F
list free unpartitioned space
l
list known partition types(列出当前⽀持的分区种类)
n
add a new partition(添加⼀个新分区)
p
print the partition table(列出当前状态的所有分区)
t
change a partition type(修改分区类型,没有实际意义)
新的硬盘会提醒没有主引导记录,依次来判断之前是否格式化过
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): 1
主分区号为1
First sector (2048-41943039, default 2048): 2048
第一个扇区,文件系统的扇区要连续的,所以第一个扇区一定要使用默认的
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): 52048
最后一个扇区
Created a new partition 1 of type ‘Linux’ and of size 24.4 MiB.
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): 1
First sector (2048-41943039, default 2048): 2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): 2099199
2099199 = 2048+110241024*1024/512 +1
Created a new partition 1 of type ‘Linux’ and of size 1 GiB.
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +10G
可以直接按不同大小分区
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
保存退出,不保存,则会丢失
主分区与逻辑分区
采用mbr方式分区的时候,最多只有4个主分区,当分出来4个主分区之后,则无法进行逻辑分区,所以最多三个主分区,剩下的使用逻辑分区
当分三个主分区后,会默认将所有的剩余空间分为扩展分区
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (3,4, default 3):
First sector (4196352-41943039, default 4196352):
Last sector, +sectors or +size{K,M,G,T,P} (4196352-41943039, default 41943039): +1G
Created a new partition 3 of type ‘Linux’ and of size 1 GiB.
Command (m for help): p
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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: 0xca953d2f
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 4196351 2097152 1G 83 Linux
/dev/sda3 4196352 6293503 2097152 1G 83 Linux
Command (m for help): n
Partition type
p primary (3 primary, 0 extended, 1 free)
e extended (container for logical partitions)
Select (default e): e
Selected partition 4
First sector (6293504-41943039, default 6293504):
Last sector, +sectors or +size{K,M,G,T,P} (6293504-41943039, default 41943039):
Created a new partition 4 of type ‘Extended’ and of size 17 GiB.
Command (m for help): p
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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: 0xca953d2f
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 4196351 2097152 1G 83 Linux
/dev/sda3 4196352 6293503 2097152 1G 83 Linux
/dev/sda4 6293504 41943039 35649536 17G 5 Extended
再次新建的时候,就在逻辑分区上进行新建
Command (m for help): n
All primary partitions are in use.
Adding logical partition 5
First sector (6295552-41943039, default 6295552):
扩展分区留了2048个扇区来作为扩展分区表
6295552 - 6293504 =2048
自动分区
⾃动分区采⽤了输⼊重定向的⽅法
vim test
n
+2G
w
将fdisk中的操作,写到一个文本文件中,然后再通过输入重定向实现自动化分区
[root@da ~]# fdisk /dev/sda < test
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.
Command (m for help): All primary partitions are in use.
Adding logical partition 6
First sector (10491904-41943039, default 10491904): Last sector, +sectors or +size{K,M,G,T,P} (10491904-41943039, default 41943039):
Created a new partition 6 of type ‘Linux’ and of size 2 GiB.
Command (m for help): The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
fdisk /dev/sda -l 可以查看分区结果
超过2T的磁盘分区
使用gdisk命令进行分区