第7章 存储管理
1、存储方式
1.1存储连接方式
存储设备按连接方式可分为以下三种类型:
(1) 本地存储
- 直接插在服务器上的硬盘,系统文件存放在本地。
- 介绍主要集中在本地存储。
(2)外部存储
- 移动硬盘等设备,使用USB接口连接。
- 外部存储可采用多种接口,如SCSI线、SATA线、SAS线、FC线。
(3) 网络存储
- 通过以太网络或FC网络连接。
- 针对大规模数据存储,连接到专门的设备或存储集群,用户可通过网络访问和使用数据。
1.2存储工作原理
1.2.1硬盘类型
(1) 固态硬盘(SSD)
- 采用电子存储介质,无机械结构。
- 极高的存储性能,适用于移动办公环境
- 优点:
- 耐用、抗震抗摔。
- 无噪音、低功耗。
- 小巧轻便,可设计多种形状和接口。
- 缺点:
- 价格昂贵,容量相对较小。
(2) 机械硬盘(HDD)
- 包括盘片、读/写磁头、控制电机等机械部件。
- 优势:
- 技术成熟,容量大。
- 相对低廉的价格。
- 劣势:
- 数据查找时间、延迟时间、磁盘寻道时间存在。
- 较大且相对脆弱。
1.2.2工作原理
-
固态硬盘
- 由集成电子存储芯片阵列构成,包括存储单元和控制单元。
- 读/写速度快,无机械运动。
-
机械硬盘
- 盘片占主要区域,读/写磁头、控制电机、磁头控制器、数据转换器等附属。
- 盘面分成扇区,以前为512字节,现在为4096字节。
- 寻道过程移动磁头到数据区域,盘面高速旋转。
-
柱面和扇区
- 多张盘面组成柱面,盘面可含多个扇区。
- 以前分区按柱面,现在按扇区。
1.3 存储比较
-
固态硬盘优势
- 无机械结构,数据存取速度快。
- 耐用、抗震抗摔。
- 无噪音、低功耗。
- 小巧轻便,可设计多种形状和接口。
-
机械硬盘优势
- 技术成熟,容量大。
- 相对低廉的价格。
-
未来趋势
- 随着科技进步,固态硬盘逐渐取代机械硬盘。
1.4硬盘规格
-
尺寸
- 3.5英寸、2.5英寸、1.8英寸(1英寸=2.54厘米)。
-
插拔方式
- 热插拔和非热插拔,服务器硬盘通常支持热插拔。
-
接口类型
- IDE——SATA(串行ATA)硬盘。
- SCSI——SAS(串行连接SCSI)硬盘。
- 其他——PCIe(高速串行计算机扩展总线标准)、FC(光纤通道)硬盘。
1.4硬盘分区
2、基本分区与逻辑卷
基本分区与逻辑卷是存储管理中的两种不同概念。基本分区相对于逻辑卷来说具有一些劣势,例如无法灵活扩容。但在一些特定场景,如存放引导文件的boot分区,仍然需要使用基本分区。本节将介绍基本分区的创建,包括MBR和GPT两种分区方式。
2.1 添加新硬盘
在虚拟机中为系统添加两块10GiB虚拟硬盘sdb与sdc,并使用lsblk
命令查看新添加的两块硬盘。
2.2 MBR分区
MBR分区表创建
使用fdisk
命令以MBR(Master Boot Record)分区表形式创建分区。首先查看已有硬盘sda的分区情况:
[root@qfedu ~]# fdisk -l /dev/sda
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cf332
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
sda硬盘已分完所有存储空间,现在使用fdisk
对sdc硬盘进行分区:
[root@qfedu ~]# fdisk /dev/sdc
在fdisk
命令交互界面中,输入“n”参数尝试创建新的分区。
Command (m for help): n
选择分区类型,此处选择主分区,按回车键。
Select (default p):
选择分区编号,按回车键。
Partition number (1-4, default 1):
系统提示定义扇区的起始位置,直接按回车键。
First sector (2048-20971519, default 2048):
定义扇区的终止位置,输入“+100M”表示定义为100MiB。
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +100M
查看分区信息,输入“p”:
Command (m for help): p
可以看到刚创建的主分区信息,名称为/dev/sdc1。
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 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
Disk label type: dos
Disk identifier: 0xb9ba9e95
Device Boot Start End Blocks Id System
/dev/sdc1 2048 206847 102400 83 Linux
保存并退出,输入“w”:
Command (m for help): w
使用lsblk
查看所有分区信息,可以找到硬盘sdc上新创建的主分区/dev/sdc1。
[root@qfedu ~]# 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 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
└─sdc1 8:33 0 100M 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
继续使用fdisk
对sdc硬盘进行分区,创建扩展分区和逻辑分区。
[root@qfedu ~]# fdisk /dev/sdc
在fdisk
命令交互界面中,输入“n”参数尝试创建新的分区。
Command (m for help): n
``
`
选择分区类型,此处选择扩展分区,按回车键。
```bash
Partition type:
p primary (1 primary, 1 extended, 2 free)
e extended
选择分区编号,按回车键。
Select (default p): e
起始扇区使用系统默认值,直接按回车键。
First sector (206848-20971519, default 206848):
定义扇区的终止位置,选择使用默认值。
Last sector, +sectors or +size{K,M,G} (206848-20971519, default 20971519):
查看分区信息,可以看到刚创建的扩展分区/dev/sdc2。
Command (m for help): p
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 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
Disk label type: dos
Disk identifier: 0xb9ba9e95
Device Boot Start End Blocks Id System
/dev/sdc1 2048 206847 102400 83 Linux
/dev/sdc2 206848 20971519 10382336 5 Extended
继续创建逻辑分区,输入“n”:
Command (m for help): n
选择分区类型,此处选择逻辑分区,按回车键。
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
选择分区编号,按回车键。
Adding logical partition 5
First sector (208896-20971519, default 208896):
定义扇区的终止位置,选择使用默认值。
Last sector, +sectors or +size{K,M,G} (208896-20971519, default 20971519): +5G
查看分区信息,可以看到刚创建的逻辑分区/dev/sdc5。
Command (m for help): p
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 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
Disk label type: dos
Disk identifier: 0xb9ba9e95
Device Boot Start End Blocks Id System
/dev/sdc1 2048 206847 102400 83 Linux
/dev/sdc2 206848 20971519 10382336 5 Extended
/dev/sdc5 208896 10694655 5242880 83 Linux
保存并退出,输入“w”:
Command (m for help): w
使用lsblk
查看所有分区信息,可以找到硬盘sdc上新创建的3个分区:主分区sdc1、扩展分区sdc2、逻辑分区sdc5。
[root@qfedu ~]# 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 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
├─sdc1 8:33 0 100M 0 part
├─sdc2 8:34 0 1K 0 part
└─sdc5 8:37 0 5G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
使用ll
命令查看新分区的设备文件:
[root@qfedu ~]# ll /dev/sdc*
brw-rw----. 1 root disk 8, 32 4月 27 18:27 /dev/sdc
brw-rw----. 1 root disk 8, 33 4月 27 18:27 /dev/sdc1
brw-rw----. 1 root disk 8, 34 4月 27 18:27 /dev/sdc2
brw-rw----. 1 root disk 8, 37 4月 27 18:27 /dev/sdc5
在虚拟机或云主机上,分区后不需要重启系统,内核会自动识别设备的新分区并为它创建设备文件。在真实的物理硬盘上,如果设备文件未显示,可以使用partprobe
命令强制内核读取分区表,为新设备创建设备文件。
2.3 创建GPT分区
使用 gdisk
对硬盘 /dev/sdb
进行分区
(1) 打开 gdisk
工具:
[root@qfedu ~]# gdisk /dev/sdb
(2) 创建新的 GPT 分区表:
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
(3) 输入 n
进行分区:
Command (? for help): n
(4) 选择分区编号,默认为 1,按回车键:
Partition number (1-128, default 1):
(5) 定义起始扇区和终止扇区(使用默认值),设置分区大小为 +100M:
First sector (34-20971486, default = 2048):
Last sector (2048-20971486, default = 20971486): +100M
(6) 修改分区类型,默认为 Linux filesystem,直接回车:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
(7) 查看分区信息:
Command (? for help): p
Disk /dev/sdb: 20971520 sectors, 10.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): A6D674D2-BE7F-4BD8-B69C-2AA2B5E349DE
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 10280893 sectors (4.9 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 206847 100.0 MiB 8300 Linux filesystem
(8) 继续创建第二个分区:
Command (? for help): n
选择分区编号,默认为 2,按回车键:
Partition number (2-128, default 2):
定义起始扇区和终止扇区(使用默认值),设置分区大小为 +5G:
First sector (34-20971486, default = 206848):
Last sector (206848-20971486, default = 20971486): +5G
修改分区类型(直接回车):
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
查看分区信息:
Command (? for help): p
Disk /dev/sdb: 20971520 sectors, 10.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): A6D674D2-BE7F-4BD8-B69C-2AA2B5E349DE
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 10280893 sectors (4.9 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 206847 100.0 MiB 8300 Linux filesystem
2 206848 10692607 5.0 GiB 8300 Linux filesystem
(9) 保存并退出:
Command (? for help): w
输入 y
确认写入 GPT 数据。
查看新分区
使用 partprobe
更新分区表:
[root@qfedu ~]# partprobe /dev/sdb
使用 lsblk
查看所有分区信息:
[root@qfedu ~]# 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 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 100M 0 part
└─sdb2 8:18 0 5G 0 part
sdc 8:32 0 10G 0 disk
├─sdc1 8:33 0 100M 0 part
├─sdc2 8:34 0 1K 0 part
└─sdc5 8:37 0 5G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
使用 ll
查看新分区的设备文件:
[root@qfedu ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8,
16 4月 27 10:29 /dev/sdb
brw-rw----. 1 root disk 8, 17 4月 27 10:29 /dev/sdb1
brw-rw----. 1 root disk 8, 18 4月 27 10:29 /dev/sdb2
2.4 创建文件系统
(1) 使用 EXT4 格式化分区 /dev/sdb1
[root@qfedu ~]# mkfs.ext4 /dev/sdb1
(2) 使用 EXT4 格式化分区 /dev/sdb2
[root@qfedu ~]# mkfs.ext4 /dev/sdb2
(3) 使用 XFS 格式化分区 /dev/sdc1
[root@qfedu ~]# mkfs.xfs /dev/sdc1
(4) 使用 XFS 格式化分区 /dev/sdc5
[root@qfedu ~]# mkfs.xfs /dev/sdc5
2.5 挂载分区
(1)临时挂载分区
[root@qfedu ~]# mkdir /data01
[root@qfedu ~]# mkdir /data02
[root@qfedu ~]# mount /dev/sdb1 /data01
[root@qfedu ~]# mount /dev/sdb2 /data02
(2)查看挂载信息
[root@qfedu ~]# df -h
(3)创建空目录并查看空间占用
[root@qfedu ~]# mkdir /data01/dir01
[root@qfedu ~]# mkdir /data02/dir02
[root@qfedu ~]# ll /data01
[root@qfedu ~]# ll /data02
(4) 使挂载持久化
编辑 /etc/fstab
文件,将以下内容添加到文件末尾:
UUID=c69dd0e1-d6d3-41a0-ab3e-6e73f3c9682d /data01 ext4 defaults 0 0
UUID=756ea871-0d1b-47e9-9259-af158b1f681e /data02 ext4 defaults 0 0
UUID=57cae45c-ad33-42dc-87fb-7787ca5efc58 /data03 xfs defaults 0 0
UUID=1a7a02f3-7fde-4939-9281-aa333ba27aa1 /data04 xfs ro 0 0
使用 mount -a
使配置生效:
[root@qfedu ~]# mount -a
(5) 查看挂载信息
[root@qfedu ~]# df -Th
(6) 存储数据测试
尝试复制 /etc/hosts
文件到新挂载的目录:
[root@qfedu ~]# cp -rf /etc/hosts /data03
[root@qfedu ~]# cp -rf /etc/hosts /data04
(7)检查挂载权限:
[root@qfedu ~]# mount