在Windows系统中,买了一块新的硬盘加到电脑之后,需要对分区进行格式化才能使用,Linux系统中也是一样,首先我们要了解一下什么是文件系统。
分区很复杂,但是为了好理解不妨先简化介绍。首先来看图 14-1,记住这是一个分区
当对一个分区格式化时,分区被分成两部分。
(1)右侧部分被划分成很多小格子,每个小格子称为block,默认大小为4KB。
(2)左侧部分为inode,用于记录文件的属性,每个文件都会占用一个 inode。
每个block中只能存储一个文件,假设一个文件aa只有1KB存放在2号block中,则2号block还剩余3KB的空间,但是这3KB的空间也不会存储其他数据了。所以,此文件大 小为1KB,占用空间为4KB,在Windows中会见到图14-2所示的情况。
前面讲了inode记录的是某文件的属性信息,如图14-3所示
10号 inode记录了aa文件的属性,包括aa文件的名称、大小、权限等,及其所在的block,可以在10号inode中给aa文件再起一个名称bb,如图14-4所示。
此时对10号inode来说,用两个名称aa和 bb来记录2号block中的文件,所以 aa和 bb对应的是同一个文件,那么aa和 bb就是硬链接关系。练习:先拷贝一个测试文件,命令如下。
[root@RHEL8 ~]# cp /etc/hosts aa
[root@RHEL8 ~]#
查看aa的属性,命令如下
[root@RHEL8 ~]# ls -lh aa
总用量 4.0K
-rw-r--r--. 1 root root 158 12月 4 11:06 hosts
[root@RHEL8 ~]#
此处的加粗字1,指的是aa文件只有一个硬链接,即存储在 block中的文件只有一个名称aa。下面对aa做硬链接,命令如下。
[root@RHEL8 ~]# ln aa bb
查看aa和bb的属性,命令如下。
[root@RHEL8 ~]# ls -lh aa bb
-rw-r--r--. 2 root root 0 12月 4 11:13 aa
-rw-r--r--. 2 root root 0 12月 4 11:13 bb
[root@RHEL8 ~]#
硬链接数显示为2,说明存储在 block中的那个文件有两个名称aa和 bb。aa和 bb是在同 一个inode上记录的两个名称,通过ls -i可以查看aa和 bb分别是在哪个inode上记录的,命令如下。
[root@RHEL8 ~]# ls -i aa; ls -i bb
135226345 aa
135226345 bb
[root@RHEL8 ~]#
可以看到, inode值是--样的。即在同-个inode上用两个名称来记录 block中的那个文件。换言之就是aa和bb对应的是同一个文件,修改aa之后会发现.bb的内容也做了相同的修改,修改bb之后会发现aa也做了相应的修改。
使用fdisk -1命令查看所有分区信息,命令如下。
[root@node1 ~]# fdisk -l
磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a3800
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 4196351 2097152 83 Linux
/dev/sda2 4196352 8390655 2097152 82 Linux swap / Solaris
/dev/sda3 8390656 209715199 100662272 83 Linux
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@node1 ~]#
分区的语法为“fdisk /devl/硬盘”,这里是对硬盘进行分区,而不是对分区再进行分区
[root@node1 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x79818f62 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):
此处进入分区的界面,按提示输入“m”可以获取帮助,常见的命令如下。(1)p:打印分区表。(2)n:添加一个分区。(3)d:删除一个分区。 (4)1:列出分区类型。(5)t:转换分区类型。(6)q:不保存直接退出。(7)w:保存并退出。
查看现有分区信息,此处输入“p”,命令如下。
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x79818f62
设备 Boot Start End Blocks Id System
命令(输入 m 获取帮助):
此处并没有看到/dev/sdb1、/dev/sdb2等内容,说明并不存在任何分区。按【n】键创建一个分区,命令如下。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
直接在硬盘上划分的分区有主分区(标记为p)和扩展分区(标记为e),逻辑分区(标记为 1)只能在扩展分区上创建,且扩展分区最多只能创建一个扩展分区。所以,在硬盘中没有扩展分区时,选择分区类型时只能选择p和e这两种。如果已经存在 了扩展分区,就不能再创建第二个扩展分区了,但可以在扩展分区上创建逻辑分区,所以可 选择的分区类型有p和1。先创建主分区或扩展分区都可以,这里先创建主分区,输入“p”,按【Enter】键。主 分区加扩展分区最多只能创建出来4个,所以分配的编号只能是1~4,这里选择默认的1,然后按【Enter】键。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-104857599,默认为 2048):
硬盘总共有41943039个扇区,第一个分区从哪个扇区开始呢?默认为2048,直接按【Enter】键,我们就从2048扇区开始
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-104857599,默认为 2048):
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-104857599,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-104857599,默认为 104857599):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
创建好分区之后,将分区进行格式化。格式化的语法如下
mkfs ‐f 文件系统 ‐选项 /dev/分区
或
mkfs.文件系统 ‐选项 /dev/分区
练习:把/dev/sdb1格式化为XFS文件系统,命令如下。
[root@node1 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, 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@node1 ~]#
从上面的 bsize=4096可以看到,block的大小默认设置为了4KB,如果指定为1KB,需要 加上-b size=1024选项,命令如下。
[root@node1 ~]# mkfs.xfs -b size=1024 /dev/sdb1
mkfs.xfs: /dev/sdb1 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@node1 ~]#
再次格式化时,因为/dev/sdbl已经存在文件系统了,所以再次格式化失败,需要加上-f 选项表示强制格式化,命令如下。
[root@node1 ~]# mkfs.xfs -f -b size=1024 /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=524288 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=1024 blocks=2097152, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=1024 blocks=10240, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@node1 ~]#
记住,block size的大小只能在格式化时指定,不可以后期修改。