目录
一.硬盘结构
- 硬盘的物理结构,盘片:硬盘有个多个盘片,每个盘片2面,磁头:每面一个磁头
- 硬盘的数据结构,扇区:盘片被分为多个扇形区域且每个扇区存放512字节的数据,磁道:同一盘片不同半径的同心圆,柱面:不同盘片相同半径构成的圆柱面
- 硬盘存储容量=磁头数*磁道数(柱面数)*每道扇区数*每扇区字节数
- 可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
- 磁盘的接口类型可以分为IDE(并口),SATA(串口),SCSI(服务器专用)
二.MBR
- MBR(主引导记录)位于硬盘第一个物理扇区处(相当于目录)
- MBR中包含硬盘的主引导程序和硬盘分区表
- 分区表有4个分区记录区,每个分区记录区占16个字节
三.Liunx中的硬盘和分区
- Linux中将硬盘、分区等设备均表示为文件
- 例:/dev/sda5 。/dev代表硬件设备所在的目录 ,/ sda5 中sd表示SCSI设备,另外还有hd表示IDE设备,a表示磁盘序列,5代表分区。
- 硬盘中的主分区和扩展分区数目为4个(主分区必须要有一个),其序列号在1~4
- 扩展分区可以再分为逻辑分区,且逻辑分区的序号始终从5开始
四.文件系统类型
- XFS文件系统,存放文件和目录数据的分区,CentOS7系统中默认使用的文件系统
- SWAP交换文件系统,为Linux系统建立交换分区
- EXT4文件系统,CentOS6系统中默认使用的文件系统
- EXT3文件系统,CentOS5系统中默认使用的文件系统
- FAT16,windows系统使用的文件系统,MS—DOS和win95采用的磁盘分区格式,采用16位的文件分配表,只支持2GB的磁盘分区,最大单文件2GB,且磁盘利用率低
- FAT32,windows系统使用的文件系统,(即Vfat)采用32位的文件分配表,支持最大分区128GB,最大文件4GB
- NTFS,windows系统使用的文件系统,支持最大分区2TB,最大文件2TB,安全性和稳定性非常好,不易出现文件碎片
五.管理磁盘及分区---fdisk命令
- fdisk -l ,查看当前系统中所有硬盘设备及其分区的信息
[root@localhost ~]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 33556479 10485760 83 Linux
/dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris
/dev/sda4 41945088 83886079 20970496 5 Extended
/dev/sda5 41947136 62918655 10485760 83 Linux
[root@localhost ~]#
- fdisk 【磁盘路径】,查看或者管理磁盘分区
- 交互模式中常用指令,如下
- -m 帮助信息 ;-p 显示分区信息; -n 新建一个分区; -d 删除分区; -t 转换文件系统id,即转换格式 ;-w 保存信息 ;-q 退出
- 实例
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xfa0d0f0b 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): e
分区号 (3,4,默认 3):
起始 扇区 (14682112-41943039,默认为 14682112):
将使用默认值 14682112
Last 扇区, +扇区 or +size{K,M,G} (14682112-41943039,默认为 41943039):
将使用默认值 41943039
分区 3 已设置为 Extended 类型,大小设为 13 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (14684160-41943039,默认为 14684160):
将使用默认值 14684160
Last 扇区, +扇区 or +size{K,M,G} (14684160-41943039,默认为 41943039):
将使用默认值 41943039
分区 5 已设置为 Linux 类型,大小设为 13 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfa0d0f0b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 14682111 2097152 83 Linux
/dev/sdb3 14682112 41943039 13630464 5 Extended
/dev/sdb5 14684160 41943039 13629440 83 Linux
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 33556479 10485760 83 Linux
/dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris
/dev/sda4 41945088 83886079 20970496 5 Extended
/dev/sda5 41947136 62918655 10485760 83 Linux
[root@localhost ~]#
注:添加一块20G的硬盘,通过fidsk中的辅助功能,创建一个5G大小和2G大小的主分区,创建一个13G的扩展分区,在扩展分区里再创建一个13G的逻辑分区,其中只有主分区和逻辑分区存储数据,而扩展分区不行
六.创建文件系统
- 在Linux系统里中,使用fdisk工具在硬盘中建立分区以后,还需要对分区进行格式化并挂载到系统中的指定目录,然后才能用于存储文件、目录等数据
- 创建文件系统的过程,也就是格式化分区的过程,也可以看作启用这个分区,要不然无法使用
- Linux系统中使用mkfs(make Filesystem,创建文件系统)命令工具可以格式化XFS、EXT4、FAT等不同类型的分区
- 使用mkswap命令可以格式化Swap交换分区
- mkfs命令,可以加载不同的程序来创建各种类型的分区
- 实例
[root@192 ~]# ls /sbin/mkfs*
/sbin/mkfs /sbin/mkfs.ext2 /sbin/mkfs.fat /sbin/mkfs.vfat
/sbin/mkfs.btrfs /sbin/mkfs.ext3 /sbin/mkfs.minix /sbin/mkfs.xfs
/sbin/mkfs.cramfs /sbin/mkfs.ext4 /sbin/mkfs.msdos
[root@192 ~]#
- mkfs命令的使用格式:mkfs -t 文件系统类型 分区设备 或者 mkfs.文件系统类型 分区设备
- 实例(扩展分区不能使用,不用格式化,其ID为5)
[root@192 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, 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@192 ~]# mkfs ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
mkfs.ext2: invalid blocks '/dev/sdb2' on device 'ext4'
[root@192 ~]# mkfs -t ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@192 ~]# mkfs -t xfs /dev/sdb5
meta-data=/dev/sdb5 isize=512 agcount=4, agsize=851840 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=3407360, 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@192 ~]#
注:一般不在Linux系统创建Windows中的文件类型,如果要在Linux系统中创建FAT文件系统,应该先用fdisk工具添加分区之后将ID改为b
- 创建swap分区,swap分区的作用类似Windows系统中的虚拟内存,可以一定程度上缓解物理内存不足的情况,当Liunx主机运行的服务较多时,可以为其增加新的swap分区
- 使用mkswap命令工具可以在指定分区上创建交换文件系统,目标分区应该先通过fdisk工具将ID设为82
[root@192 ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 33556479 10485760 83 Linux
/dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris
/dev/sda4 41945088 83886079 20970496 5 Extended
/dev/sda5 41947136 62918655 10485760 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfa0d0f0b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 14682111 2097152 83 Linux
/dev/sdb3 14682112 41943039 13630464 5 Extended
/dev/sdb5 14684160 41943039 13629440 83 Linux
[root@192 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
分区号 (1-3,5,默认 5):5
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 33556479 10485760 83 Linux
/dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris
/dev/sda4 41945088 83886079 20970496 5 Extended
/dev/sda5 41947136 62918655 10485760 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfa0d0f0b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 14682111 2097152 83 Linux
/dev/sdb3 14682112 41943039 13630464 5 Extended
/dev/sdb5 14684160 41943039 13629440 82 Linux swap / Solaris
[root@192 ~]#
- 再使用mkswap + 分区设备,创建交换分区
[root@192 ~]# mkswap /dev/sdb5
mkswap: /dev/sdb5: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 13629436 KiB
无标签,UUID=78a5bd52-c1c0-405a-b9ca-d74018a50963
[root@192 ~]#
- 创建新的交换分区,可以使用swapon进行启用,反之使用swapoff进行停用指定的交换分区
七.挂载、卸载文件系统
- 在安装Linux系统的过程中,自动建立或识别的分区通常会由系统自动完成挂载,如“/”,“boot”分区等
- 但是对于后来新增加的硬盘分区,则需要管理员手动进行挂载,实际上用户访问的是经过格式化后建立的文件系统
- 挂载一个分区时,还必须为其指定一个目录作为挂载点,这个目录在磁盘a中
- 实例
[root@192 ~]# ls /opt
rh
[root@192 ~]# mkdir /opt/day01
[root@192 ~]# echo "hello world" > /opt/day01/day02.txt
[root@192 ~]# cat /opt/day01/day02.txt
hello world
[root@192 ~]# mount /dev/sdb1 /opt/day01
[root@192 ~]# cat /opt/day01/day02.txt
cat: /opt/day01/day02.txt: 没有那个文件或目录
[root@192 ~]# echo "I have a pen" > /opt/day01/night02.txt
[root@192 ~]# cat /opt/day01/night02.txt
I have a pen
[root@192 ~]#
[root@192 ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 10G 3.3G 6.8G 33% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 482M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /opt/day01
[root@192 ~]#
注:由上述代码可以看到,当我们在磁盘a中创建目录和文件时,可以看到文件内容,但是当我们把这个文件作为磁盘b1的挂载时,就看不到原来的文件了,而且当我们在这个目录创建文件时,这个文件是在磁盘b1下的。
- umount命令,使用挂载点目录或对应的设备的文件名作为卸载参数
- 实例
[root@192 ~]# umount /opt/day01
[root@192 ~]# cat /opt/day01/day02.txt
hello world
[root@192 ~]# cat /opt/day01/night02.txt
cat: /opt/day01/night02.txt: 没有那个文件或目录
[root@192 ~]#
注:由上可以看见解挂/opt/day01这个目录点之后,可以看到之前在磁盘a这个目录创建的文件day02.txt,而看不到磁盘b1下创建的文件night02.txt
- 挂载ISO镜像文件,“iso”镜像文件通常被视为一种特殊的“回环”文件系统,因此在挂载时需要添加 “-o look”
- 设置自动挂载文件系统
- 系统中的/etc/fstab 文件可以视为mount命令的配置文件,其中储存了文件系统的静态挂载数据
- Linux系统每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统
[root@192 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Oct 23 22:05:20 2019
#
# 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
#
UUID=9e75472e-24a7-4fb6-9241-dee91acdffe0 / xfs defaults 0 0
UUID=df84cc7f-d73a-417c-a237-5d5b111d5028 /boot xfs defaults 0 0
UUID=3ba6579a-fce9-4e27-9a82-e50ce18e0899 /home xfs defaults 0 0
UUID=7ad95712-3079-41f4-969d-91d003d2bfa7 swap swap defaults 0 0
[root@192 ~]#
- 其中各个部分的含义
- 第一字段是设备分区,第二字段是挂载点,第三字段是文件系统类型,第四字段中的defaults 代表能读能写(权限功能),第一个0容灾备份(可靠性),第二个0 (启动检查序列)
- 实例(需要重启才能看到,是否被自动挂载)
[root@192 ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 10G 3.3G 6.8G 33% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 482M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
tmpfs tmpfs 98M 24K 98M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
[root@192 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Oct 23 22:05:20 2019
#
# 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
#
UUID=9e75472e-24a7-4fb6-9241-dee91acdffe0 / xfs defaults 0 0
UUID=df84cc7f-d73a-417c-a237-5d5b111d5028 /boot xfs defaults 0 0
UUID=3ba6579a-fce9-4e27-9a82-e50ce18e0899 /home xfs defaults 0 0
UUID=7ad95712-3079-41f4-969d-91d003d2bfa7 swap swap defaults 0 0
/dev/sdb1 /opt/day01 xfs defaults 0 0
注:在vi编辑器里操作时要注意编写格式!使用df -hT,命令可以看到当前系统中挂载的各个文件系统的磁盘使用情况。
下面代码是重启之后的情况!
[root@192 ~]# init 6
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(centos7-1) at 23:47:24.
Type `help' to learn how to use Xshell prompt.
[D:\~]$
Connecting to 192.168.43.133:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Fri Nov 1 23:18:26 2019
[root@192 ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 10G 3.3G 6.8G 33% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 482M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /opt/day01
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
tmpfs tmpfs 98M 8.0K 98M 1% /run/user/42
[root@192 ~]#