一、磁盘分区机制
1. 原理介绍
- Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一
个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
2. 查看所有设备挂载情况
- lsblk命令 用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。
块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。
这个包带了几个其它工具,如dmesg。要安装lsblk,下载util-linux包。Fedora用户可以通过命令sudo yum install util-linux-ng来安装该包。 - 用法:lsblk [选项] [<设备> …]
- 选项:(lsblk -help 查看详细信息)
-a, --all 打印所有设备
-b, --bytes 以字节为单位而非易读的格式来打印 SIZE
-d, --nodeps 不打印从属设备(slave)或占位设备(holder)
-D, --discard 打印时丢弃能力
-e, --exclude <列表> 根据主设备号排除设备(默认:内存盘)
-I, --include <列表> 只显示有指定主设备号的设备
-f, --fs 输出文件系统信息
-h, --help 使用信息(此信息)
-i, --ascii 只使用 ascii 字符
-m, --perms 输出权限信息
-l, --list 使用列表格式的输出
-n, --noheadings 不打印标题
-o, --output <列表> 输出列
-p, --paths 打印完整设备路径
-P, --pairs 使用 key=“value” 输出格式
-r, --raw 使用原生输出格式
-s, --inverse 反向依赖
-t, --topology 输出拓扑信息
-S, --scsi 输出有关 SCSI 设备的信息
-h, --help 显示此帮助并退出
-V, --version 输出版本信息并退出
(1)lsblk
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 17G 0 part /
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
(2)lsblk -f
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 b2d0e89a-d0ac-4b4f-bd58-dd689031b79c /boot
├─sda2 swap b7a42115-6412-4c7f-bc2f-7b57b1db42e2 [SWAP]
└─sda3 ext4 ec5f2b29-e3b1-4012-b06c-52389cf626e0 /
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 /run/media/root/CentOS 7 x86_64
[root@localhost ~]#
3. Linux分区
1. 硬盘说明
- Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
- 对于IDE硬盘,驱动器标识符为**“hdx~”**,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘
了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。 - 对于SCSI硬盘则标识为**“sdx~”**,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE硬盘的表示方法一样。
2. 硬盘分区结构
硬盘中的主分区数目只有4个
因此主分区和扩展分区的序号也就限制在1~4
扩展分区在分为逻辑分区
逻辑分区的序号将始终从5开始
4 挂载的经典案例
1. 如何增加一块磁盘
(1)选择虚拟机—右击选择设置
注意:添加完以后必须重启虚拟机,否则lsblk查不到新添加的硬盘
(2)重启
[root@localhost ~]# reboot
(3)查看硬盘信息
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 17G 0 part /
sdb 8:16 0 1G 0 disk
sr0 11:0 1 4.4G 0 rom
[root@localhost ~]#
2. 分区
(1)分区命令:fdisk /dev/sdb
开始对/sdb分区 m 显示命令列表
m显示磁盘分区 同 fdisk -l
n 新增分区
d 删除分区
W写入并退出
说明:
开始分区后输入n,新增分区
然后选择p,分区类型为主分区
两次回车默认剩余全部空间
最后输入w写入分区并退出
若不保存退出输入q。
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xf9925f9a 创建新的 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):
Using default response p
分区号 (1-4,默认 1):1
起始 扇区 (2048-2097151,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):
将使用默认值 2097151
分区 1 已设置为 Linux 类型,大小设为 1023 MiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]#
(2)补充 fdisk 命令
- fdisk -l 查看当前磁盘的分区情况
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b4316
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 6293503 2097152 82 Linux swap / Solaris
/dev/sda3 6293504 41936895 17821696 83 Linux
磁盘 /dev/sdb:1073 MB, 1073741824 字节,2097152 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3bb79ae8
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2097151 1047552 83 Linux
[root@localhost ~]#
3. 格式化分区
(1)命令:mkfs -t ext4 /dev/sdb1
ext4:分区类型
[root@localhost ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261888 blocks
13094 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]#
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 b2d0e89a-d0ac-4b4f-bd58-dd689031b79c /boot
├─sda2 swap b7a42115-6412-4c7f-bc2f-7b57b1db42e2 [SWAP]
└─sda3 ext4 ec5f2b29-e3b1-4012-b06c-52389cf626e0 /
sdb
└─sdb1 ext4 b92fffe8-0a55-4ad8-b9d8-276bcea656e1
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
[root@localhost ~]#
4. 挂载
挂载:将一个分区与一个目录联系起来
注意:用命令行挂载重启后会失效,挂载关系是临时的
(1)mount 挂载
例如:mount /dev/sdb1 /newdisk
(2)umount 卸载
例如:umount /dev/sdb1 /newdisk
[root@localhost /]# mkdir newdisk
[root@localhost /]# mount /dev/sdb1 /newdisk/
[root@localhost /]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 b2d0e89a-d0ac-4b4f-bd58-dd689031b79c /boot
├─sda2 swap b7a42115-6412-4c7f-bc2f-7b57b1db42e2 [SWAP]
└─sda3 ext4 ec5f2b29-e3b1-4012-b06c-52389cf626e0 /
sdb
└─sdb1 ext4 b92fffe8-0a55-4ad8-b9d8-276bcea656e1 /newdisk
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
[root@localhost /]#
5. 设置永久挂载
通过修改etc/fstab实现挂载
添加完以后 执行mount -a 即刻生效
[root@localhost /]# vim etc/fstab
添加完以后重启
[root@localhost /]# mount -a
[root@localhost /]# reboot
重新连接以后挂载关系依然存在