利用kvm安装虚拟机-设置存储位置与大小
1 实验目的
- 理解linux系统中的存储与文件系统
- 掌握使用查询磁盘使用信息与状态的命令
- 理解存储管理的底层逻辑
- 管理存储三大金刚—MBR分区、GPT分区与逻辑卷管理(分区、物理卷、卷组、逻辑卷、文件系统、挂载等)
- 掌握与设置KVM的存储池,创建虚拟机存储资源
2 实验环境
2.1、硬件环境
- ubuntu 22.04 server
- AMD EPYC 7502
- 内存三星 RECC DDR4 16G 3200
- SATA 16TB 企业级 机械硬盘
- 网卡板载双口千兆
2.2、软件环境
- KVM(确保按照之前的步骤安装好)
- openssh-serevr
- net-tools
3 实验内容与结果
3.1、linux系统中的存储与文件系统
1. 存储(Storage)
定义
存储是指用于保存数据的物理设备或介质,包括硬盘驱动器(HDD)、固态硬盘(SSD)、光盘、磁带、USB闪存驱动器与机械硬盘等。
存在的意义
存储设备为操作系统和应用程序提供了持久性数据存储的基础。与计算机内存(RAM)不同,存储设备中的数据在系统关闭后依然保存。Linux操作系统依赖这些存储设备来保存系统文件、用户数据、配置文件、日志等。
应用
- 持久存储:保存系统和用户数据,确保数据在断电或重启后仍然存在。
- 数据备份:利用存储设备进行数据的备份,以防止数据丢失。
- 扩展存储:通过网络附加存储(NAS)或存储区域网络(SAN)扩展存储容量。
2. 存储硬件接口
定义
存储硬件接口是指计算机系统与存储设备(如硬盘、固态硬盘、光驱等)之间用于数据传输和控制的标准化连接方式 。
存在的意义
不同的存储硬件接口适用于不同的应用场景,从高性能服务器到便携式外部存储设备。选择合适的接口类型对于优化系统性能和满足特定需求至关重要 。
应用
1. SATA (Serial ATA)
- 定义: SATA 是一种广泛使用的存储接口标准,用于连接硬盘驱动器和光驱等设备。
- 特点:
- 速度较快,常见版本有 SATA I (1.5 Gbps)、SATA II (3.0 Gbps) 和 SATA III (6.0 Gbps)。
- 支持热插拔,即在系统运行时可以插拔设备。
- 广泛应用于个人电脑和服务器中。
2. PATA (Parallel ATA)
- 定义: PATA 是一种早期的存储接口,也被称为 IDE (Integrated Drive Electronics) 接口。
- 特点:
- 使用并行传输方式,每次传输多个比特的数据。
- 传输速度相对较慢,通常在 133 MB/s 左右。
- 现在已经被 SATA 所取代,较少使用。
3. SCSI (Small Computer System Interface)
- 定义: SCSI 是一种用于连接计算机与高性能存储设备(如硬盘、磁带机、光盘驱动器等)的接口标准。
- 特点:
- 支持多设备链路(多达16个设备)。
- 常用于服务器和高性能计算机系统中。
- 具有多种速度和连接类型,如 Ultra SCSI、Ultra-320 SCSI、Serial Attached SCSI (SAS) 等。
4. SAS (Serial Attached SCSI)
- 定义: SAS 是基于 SCSI 的一种串行接口,用于连接硬盘驱动器等存储设备。
- 特点:
- 提供比传统 SCSI 更高的传输速度,常见速度如 3.0 Gbps、6.0 Gbps 和 12.0 Gbps。
- 适用于企业级存储系统,如服务器和存储阵列。
- 支持更多设备连接,通常比 SATA 更加可靠和耐用。
5. NVMe (Non-Volatile Memory Express)
- 定义: NVMe 是一种为 SSD 设计的高性能存储接口协议,利用 PCIe 总线来连接存储设备。
- 特点:
- 通过 PCIe 通道提供超高速度的数据传输,常见为 PCIe 3.0 x4 或 PCIe 4.0 x4,速度可达几千MB/s。
- 低延迟、高并发访问,适合高性能计算和数据密集型应用。
- 逐渐成为高端存储设备的主流接口。
6. PCIe (Peripheral Component Interconnect Express)
- 定义: PCIe 是一种高速串行计算机扩展总线标准,用于连接计算机主板与高性能硬件设备,包括存储设备。
- 特点:
- 提供非常高的带宽,通常用于 NVMe SSD 的连接。
- 支持多通道传输,带宽随通道数增加。
- 用于高性能工作站和服务器中的存储扩展。
7. USB (Universal Serial Bus)
- 定义: USB 是一种广泛使用的通用串行总线接口,常用于连接外部存储设备,如U盘、外置硬盘等。
- 特点:
- 速度随着版本提高,常见版本有 USB 2.0(480 Mbps)、USB 3.0(5 Gbps)、USB 3.1(10 Gbps)、USB 3.2 和 USB 4(最高40 Gbps)。
- 适用于便携式存储设备。
- 支持热插拔,使用广泛。
8. Thunderbolt
- 定义: Thunderbolt 是由英特尔与苹果合作开发的一种高速数据传输接口,常用于连接外部存储和显示设备。
- 特点:
- 通过 PCIe 和 DisplayPort 协议提供高速数据传输,速度可达 40 Gbps。
- 支持菊花链连接多个设备。
- 常用于高端笔记本电脑、工作站等设备中。
3. 文件系统(File System)
定义
文件系统是操作系统用来组织和管理存储设备中数据的方式。它定义了如何在存储设备上命名、存储、组织和访问文件和目录。
存在的意义
文件系统是存储管理的核心,它决定了数据的存取速度、数据完整性、以及空间利用率。没有文件系统,操作系统无法有效地管理存储设备上的数据。
应用
- 数据管理:通过目录结构组织文件,提供文件的读取、写入和删除等操作。
- 文件权限管理:通过文件系统设定文件和目录的权限,确保数据安全。
- 数据恢复和完整性:高级文件系统如EXT4、XFS、Btrfs等,支持数据的快照、日志记录和恢复,确保数据的完整性和可靠性。
常见的Linux文件系统类型
- EXT4:扩展文件系统的第四版,是Linux中最常用的文件系统之一,具有良好的性能和稳定性。
- XFS:一种高性能的日志文件系统,适用于大文件和高吞吐量的环境。
- Btrfs:支持快照、子卷管理和高效的存储池管理,是一种现代化的文件系统。
- 不能提出解决方案
3.2、使用查询磁盘使用信息与状态的命令
1. df
(Disk Free)
- 功能: 显示文件系统的磁盘空间使用情况,包括总空间、已用空间、可用空间以及文件系统挂载点。
- 常用选项:
df -h
: 以人类可读的格式(如KB、MB、GB)显示磁盘使用情况。df -T
: 显示文件系统的类型。df -i
: 显示inode使用情况。
df -h
列解释:
- Filesystem: 这是设备或挂载点的名称,指示了哪一个存储设备或逻辑卷在使用。例如,
/dev/mapper/ubuntu--vg-ubuntu--lv
表示一个逻辑卷,而/dev/sda1
表示一个物理分区。 - Size: 文件系统的总大小。
- Used: 已用的磁盘空间。
- Avail: 可用的磁盘空间。
- Use%: 已使用空间的百分比。
- Mounted on: 文件系统挂载到的目录,即在文件系统中这个磁盘或分区的入口。
详细解释:
**udev**
和**tmpfs**
:- 这些是虚拟文件系统。
udev
是一种设备管理器,tmpfs
是基于内存的文件系统,提供临时文件存储。tmpfs
显示有 126GB 的空间,但这些都是内存中的临时存储,并不会消耗物理磁盘空间。
- 这些是虚拟文件系统。
**/dev/mapper/ubuntu--vg-ubuntu--lv**
:- 这是一个逻辑卷管理器(LVM)创建的卷。它有 98GB 的总空间,已用 13GB,剩余 81GB,使用率为 14%。该卷挂载在根目录
/
下,这是系统的主文件系统。
- 这是一个逻辑卷管理器(LVM)创建的卷。它有 98GB 的总空间,已用 13GB,剩余 81GB,使用率为 14%。该卷挂载在根目录
**/dev/nvme0n1p2**
** 和 ****/dev/nvme0n1p1**
:- 这些是 NVMe SSD 分区。
p2
可能是系统的引导分区(1.6GB 总空间,使用率为 12%),而p1
可能是 EFI 系统分区(1.1GB,总空间使用率为 1%)。
- 这些是 NVMe SSD 分区。
**/dev/sda1**
** 到 ****/dev/sda9**
:- 这些是传统的 SATA 硬盘分区,每个分区大小为 492GB(
/dev/sda9
为 10TB),几乎没有使用空间(每个分区仅使用了 28KB)。这些分区挂载在/vmdirs/vm1
到/vmdirs/vm9
目录下,可能是为虚拟机准备的。
- 这些是传统的 SATA 硬盘分区,每个分区大小为 492GB(
**/dev/mapper/vg01-lv01**
:- 这是另一个 LVM 卷,大小为 98GB,挂载在
/mnt
目录下,使用了 8KB。
- 这是另一个 LVM 卷,大小为 98GB,挂载在
**/dev/loop***
:- 这些是 loopback 设备,通常用于挂载 ISO 文件或其他类型的镜像文件。在这张截图中,多个 loop 设备(如
loop0
,loop1
等)对应的都是 Snap 包的挂载点(如/snap/core20/...
),这些文件系统都已满。
- 这些是 loopback 设备,通常用于挂载 ISO 文件或其他类型的镜像文件。在这张截图中,多个 loop 设备(如
2. du
(Disk Usage)
- 功能: 显示目录或文件的磁盘使用情况,特别适合查找占用大量磁盘空间的目录或文件。
- 常用选项:
du -h
: 以人类可读的格式显示磁盘使用情况。du -sh
: 显示指定目录或文件的总大小。du -a
: 显示目录及其子目录中所有文件的大小。
du -sh /path/to/directory
3. lsblk
(List Block Devices)
- 功能: 显示系统中所有的块设备信息,包括硬盘、分区、挂载点等。
- 常用选项:
lsblk -f
: 显示文件系统信息。lsblk -d
: 仅显示磁盘,不显示分区。
lsblk -f
列解释:
- NAME: 设备或分区的名称。
- MAJ: 设备的主次设备号,主要用于识别设备。
- RM: 是否为可移除设备(0表示不可移除,1表示可移除)。
- SIZE: 设备或分区的总大小。
- RO: 设备是否为只读(1表示只读,0表示可读写)。
- TYPE: 设备的类型,可以是
disk
(物理磁盘)、part
(分区)、lvm
(逻辑卷)或loop
(loop设备)。 - MOUNTPOINT: 设备挂载到的目录。如果设备未挂载,则此列为空。
详细说明:
**loop***
:- 这些是 loopback 设备,通常用于挂载镜像文件或其他类型的只读文件系统。在这个系统中,多个 loop 设备都用于挂载 Snap 包,如
/snap/core20/...
和/snap/lxd/...
。这些设备的大小在 38M 到 908M 之间。
- 这些是 loopback 设备,通常用于挂载镜像文件或其他类型的只读文件系统。在这个系统中,多个 loop 设备都用于挂载 Snap 包,如
**sda**
** 和 其分区 (**sda1**
到**sda10**
)**:**sda**
是一个物理硬盘,总大小为 14.6TB。**sda1**
** 到 ****sda9**
: 这些是该硬盘的分区,每个分区大小为 500GB,其中sda9
的大小为 1TB。所有这些分区都挂载在/vmdirs/vm*
目录下,可能用于虚拟机存储。**sda10**
: 这是另一个分区,大小为 10TB,未挂载。
**vg01-lv01**
**,**vg01-ubuntu1**
, ****vg01-ubuntu20.04--2**
:- 这些是 LVM 逻辑卷。
vg01
是卷组的名称,这些逻辑卷大小分别为 100GB、40GB 和 20GB。 vg01-lv01
挂载在/vmdirs/vmmnts/vmmnt1
,vg01-ubuntu1
和vg01-ubuntu20.04--2
可能未显示挂载点,但可能被用于不同的虚拟机或容器。
- 这些是 LVM 逻辑卷。
**nvme0n1**
** 和其分区 (**nvme0n1p1**
,**nvme0n1p2**
,**nvme0n1p3**
)**:**nvme0n1**
是一块 NVMe SSD,大小为 931.5GB。**nvme0n1p1**
: 大小为 1.1GB,挂载在/boot/efi
,通常用于 EFI 分区。**nvme0n1p2**
: 大小为 2GB,挂载在/boot
,用于存储引导文件。**nvme0n1p3**
: 大小为 928.5GB,未挂载,可能是一个数据分区。
**ubuntu--vg-ubuntu--lv**
:- 这是另一个LVM逻辑卷,大小为100GB,挂载在
/
,是系统的根文件系统。
- 这是另一个LVM逻辑卷,大小为100GB,挂载在
总结:
- **主物理磁盘 **
**sda**
: 被分为多个 500GB 和 1TB 大小的分区,大多挂载在/vmdirs/vm*
,可能为虚拟机的存储。 - **NVMe SSD **
**nvme0n1**
: 被分为三个分区,其中一个用于 EFI 系统分区,一个用于/boot
,剩下的未挂载。 - LVM 卷: 系统使用 LVM 进行逻辑卷管理,有多个卷被创建和使用,包括根文件系统和一些未显示挂载点的卷。
4. fdisk
- 功能: 用于显示和管理磁盘分区表信息。它可以查看磁盘的分区布局。
- 常用选项:
fdisk -l
: 显示系统中所有磁盘的分区信息。
sudo fdisk -l
5. blkid
- 功能: 显示块设备的属性信息,包括UUID、文件系统类型等。
- 常用选项:
blkid
: 显示系统中所有块设备的UUID、文件系统类型等信息。
blkid
6. parted
- 功能: 用于管理磁盘分区,支持GPT和MBR分区表格式。
- 常用命令:
parted /dev/sdX print
: 打印指定磁盘的分区表信息(将/dev/sdX
替换为实际的磁盘设备名,如/dev/sda
)。
sudo parted /dev/sda print
1. sudo parted /dev/sda print
输出解释:
- Model: 设备的型号,这里显示为
ATA ST16000NM000J-2T
,这是一个 16TB 的物理硬盘。 - Disk /dev/sda: 磁盘设备名称,总容量为 16.0TB。
- Sector size (logical/physical): 扇区大小,逻辑大小为 512B,物理大小为 4096B。
- Partition Table: 分区表类型,这里为
gpt
(GUID Partition Table),一种常见的用于大容量磁盘的分区表格式。 - Disk Flags: 显示磁盘的标志,这里没有特别的标志。
分区信息:
每个分区的信息包含以下几项:
- Number: 分区编号,从1到10。
- Start 和 End: 分区的起始和结束位置(以GB为单位)。
- Size: 分区大小。
- File system: 文件系统类型,这些分区都使用
ext4
文件系统,这是Linux中常用的文件系统。 - Name: 分区的名称,这里所有分区的名称均为
Linux filesystem
,表示它们用于Linux系统。
从这个表格可以看到 /dev/sda
被分成了10个分区,每个分区大约 537GB(第9个分区 sda9
为 1.1TB,第10个分区 sda10
为 4.4TB)。
2. sudo parted /dev/sda10 print
输出解释:
- Error: 系统提示
/dev/sda10
有一个未识别的磁盘标签(unrecognised disk label
),这表明系统无法识别或读取该分区的分区表。 - Model: 设备型号未知,因为分区标签未被识别。
- Disk /dev/sda10: 这个设备的大小为 1074GB(应当是指该分区的大小,而不是整个磁盘)。
- Sector size: 扇区大小与
/dev/sda
相同,逻辑为 512B,物理为 4096B。 - Partition Table: 分区表类型未知(
unknown
),这与之前的错误一致,表明系统无法识别该分区的分区表。
总结:
- /dev/sda: 这是一个16TB的硬盘,分为10个分区,分区表类型为GPT。大多数分区都有 ext4 文件系统。
- /dev/sda10: 这个分区大小为 4.4TB,但是系统无法识别其分区表,可能是由于分区表损坏、不兼容或者没有正确格式化的原因。
7. smartctl
(这个以后配合iostat,写个python脚本来监控磁盘,是不是可以搞个软著之类的)
- 功能: 用于检查磁盘的健康状态,支持S.M.A.R.T.(Self-Monitoring, Analysis, and Reporting Technology)技术。这个需要预先安装smartmontools这个工具才可以用。
- 常用选项:
smartctl -a /dev/sdX
: 显示指定磁盘的所有S.M.A.R.T.信息。smartctl -H /dev/sdX
: 显示指定磁盘的健康状态。
sudo apt-get update
sudo apt-get install smartmontools
sudo smartctl -a /dev/sda
sudo smartctl -H /dev/sda
最后得到下面的结果:
aiseon@aiseon:/$ sudo smartctl -a /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-187-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: ST16000NM000J-2TW103
Serial Number: WR605W32
LU WWN Device Id: 5 000c50 0f1f71e7f
Firmware Version: SN04
User Capacity: 16,000,900,661,248 bytes [16.0 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 7200 rpm
Form Factor: 3.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ACS-4 (minor revision not indicated)
SATA Version is: SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Mon Aug 12 11:35:03 2024 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 559) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: (1344) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x70bd) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 078 067 044 Pre-fail Always - 58449530
3 Spin_Up_Time 0x0003 091 091 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 9
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 100 253 045 Pre-fail Always - 594615
9 Power_On_Hours 0x0032 098 098 000 Old_age Always - 1923
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 9
18 Unknown_Attribute 0x000b 100 100 050 Pre-fail Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 070 061 000 Old_age Always - 30 (Min/Max 25/39)
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 3
193 Load_Cycle_Count 0x0032 099 099 000 Old_age Always - 3773
194 Temperature_Celsius 0x0022 030 040 000 Old_age Always - 30 (0 25 0 0 0)
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0023 100 100 001 Pre-fail Always - 0
240 Head_Flying_Hours 0x0000 100 100 000 Old_age Offline - 193 (84 196 0)
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 537776577
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 8956703
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
8. iostat
- 功能: 用于监控系统的磁盘I/O统计信息。
- 常用选项:
iostat -d
: 显示磁盘设备的I/O统计信息。iostat -x
: 显示详细的设备利用率统计。
sudo apt install sysstat
iostat -d
列解释:
- Device: 设备名称,如
dm-0
、loop0
、nvme0n1
、sda
等。这些设备可能是物理磁盘、逻辑卷(dm-*
)、或者 loop 设备。 - tps (transfers per second): 每秒传输的次数,表示每秒处理的 I/O 请求数量(读或写)。
- kB_read/s: 每秒读取的数据量,以千字节为单位。
- kB_wrtn/s: 每秒写入的数据量,以千字节为单位。
- kB_dscd/s: 每秒丢弃的数据量,以千字节为单位。这个列一般用于显示在某些情况下,I/O操作被丢弃的情况。
- kB_read: 从系统启动到现在,总共读取的数据量(以千字节为单位)。
- kB_wrtn: 从系统启动到现在,总共写入的数据量(以千字节为单位)。
- kB_dscd: 从系统启动到现在,总共丢弃的数据量(以千字节为单位)。
详细解释:
**dm-***
** 设备**:- 这些是设备映射器(Device Mapper)提供的设备,通常是LVM逻辑卷或加密卷。
- 例如
dm-0
的读写速率较低,读取约为 0.23kB/s,写入约为 6.38kB/s,总共读取了 887827 kB,写入了 24363784 kB。
**loop***
** 设备**:- 这些是loopback设备,通常用于挂载镜像文件或其他类型的虚拟文件系统。
- 大多数
loop*
设备没有明显的读写操作。
**nvme0n1**
:- 这是一个 NVMe 固态硬盘设备。
- 读写性能较好,每秒读取 0.35 kB,写入 6.44 kB,总读取量为 1353838 kB,总写入量为 24561313 kB。
- 有 33.42 kB/s 的数据被丢弃,总共丢弃了 127549232 kB。
**sda**
:- 这是一个传统的 SATA 磁盘设备。
- 它的读写速率较高,每秒读取 1.14 kB,写入 70.46 kB,总共读取 4349223 kB,写入 26888304 kB。
- 没有丢弃的数据。
总结:
- tps(每秒传输次数):
sda
和dm-0
是最活跃的设备,处理的 I/O 请求次数较多。 - 读写速率:
sda
的写入速度较快(70.46 kB/s),而nvme0n1
具有相对较高的读取和写入速率,但其读写量较小。 - 总读写量:
sda
和dm-0
已经处理了大量数据,特别是写入操作。 - 丢弃数据:
nvme0n1
丢弃了较大数量的数据,这可能是由于某些缓存策略或系统特性导致的。
9. mount
- 功能: 显示当前系统中已挂载的文件系统及其挂载点信息。
mount
列解释:
- 设备: 表示挂载的设备名称或文件系统来源。例如,
/dev/sda1
表示第一个硬盘分区,tmpfs
表示一个基于内存的临时文件系统。 - 挂载点: 设备被挂载到系统中的目录。例如,
/
是根目录,/boot/efi
是EFI分区的挂载点。 - 文件系统类型: 表示文件系统的类型,例如
ext4
、tmpfs
、vfat
、squashfs
等。 - 挂载选项: 指定了挂载时使用的选项,这些选项影响文件系统的行为,例如
rw
(读写)、ro
(只读)、relatime
(访问时间记录策略)等。
详细解释:
- 系统文件系统:
sysfs
、proc
、udev
、devpts
、tmpfs
等是一些虚拟文件系统,通常用于系统和内核内部的通信和管理。它们挂载在/sys
、/proc
、/dev
、/run
等目录下。- 这些文件系统通常具有
rw
(读写)和nosuid
(禁止SUID位)、noexec
(禁止执行)等选项,以增强系统的安全性。
- 根文件系统:
/dev/mapper/ubuntu--vg-ubuntu--lv
是系统的根文件系统,挂载在/
目录上,文件系统类型为ext4
,使用rw, relatime
选项,允许读写并启用了相对访问时间记录。
- 引导分区:
/dev/nvme0n1p1
和/dev/nvme0n1p2
是引导分区,分别挂载在/boot/efi
和/boot
目录下,文件系统类型为vfat
和ext4
。它们被挂载为只读或启用了errors=remount-ro
选项,以确保引导分区在发生错误时自动重新挂载为只读。
- 虚拟机存储:
sda1
到sda9
被挂载在/vmdirs/vm*
目录下,文件系统类型为ext4
。这些分区可能用于虚拟机存储。
- LVM卷:
/dev/mapper/vg01-lv01
是一个逻辑卷,挂载在/vmdirs/vmmnts/vmmnt1
。文件系统类型为ext4
,并且启用了读写和相对访问时间记录。
- Snap 包挂载点:
- 多个
loop
设备用于挂载 Snap 包,例如/var/lib/snapd/snaps/core20_1828.snap
。这些挂载点使用squashfs
文件系统类型,这是一个只读的文件系统,用于分发只读的应用程序镜像。
- 多个
- 临时文件系统:
tmpfs
挂载在多个系统目录下,如/run
、/run/user/1000
,用于存储临时文件和用户会话数据。这些文件系统都是基于内存的,具有rw
和nosuid
等选项。
总结:
- 系统中的文件系统:这张截图显示了系统中各种文件系统的挂载状态,包括系统文件、虚拟机存储、Snap包、临时文件系统等。
- 挂载选项:大多数文件系统都启用了
rw
(读写)和relatime
(相对访问时间记录)选项,以确保性能和数据一致性。 - 虚拟化相关:有多个挂载点和分区用于虚拟机存储和管理,这表明系统中可能运行着多个虚拟机或容器。
10. cat /proc/partitions
- 功能: 直接查看系统中的分区信息。
cat /proc/partitions
- …
- …
3.3、理解存储管理的底层逻辑
1、存储管理各层级
- 存储设备是指任何看起来像磁盘的东西。它可以是硬盘、U盘、SSD、以硬件形式实现的外部RAID,甚至还可以是为远程设备提供块级访问的网络服务。具体的硬件并不重要,只要设备允许随机访问、能够处理块级IO、可以描述成设备文件即可。
- 分区是存储设备中大小固定的子区域。每个分区都有自己的设备文件,其行为表现和独立的存储设备差不多。出于效率上的考虑,实现分区的通常也是负责底层设备的驱动程序分区方案要古用设备起始位置上的少量数据块,用于记录每个分区数据块的起止范围。
- 与逻辑卷管理器(Logical Vlume Manager,LVM)关联的卷组和逻辑卷。这些系统将物理设备聚集成称为卷组(volume group)的存储池。管理员然后可以将池再进一步划分成逻辑卷,其方式与划分硬盘分区大致相同。例如,一块6TB的硬盘和一块2TB 的硬盘可以聚集成一个8TB的卷组,然后再划分成2个4TB的逻卷。至少有一个卷将包括来自两块硬盘的数据块。
2、两种存储管理方法对比
逻辑卷管理(LVM)与传统的硬盘分区在管理和使用磁盘空间方面有许多不同。以下是逻辑卷管理与分区之间的主要比较点:
1. 灵活性
- 逻辑卷管理(LVM):提供极高的灵活性,允许在不影响数据的情况下动态调整磁盘分区大小。可以轻松地扩展或缩小逻辑卷,甚至可以跨多个物理硬盘。
- 传统分区:一旦设置,修改分区大小通常更复杂,可能需要格式化和数据迁移,特别是在减小分区大小时。
2. 容量管理
- LVM:可以将多个物理硬盘或分区组合成一个或多个逻辑卷,实现磁盘空间的统一管理。这使得空间利用更加高效和灵活。
- 传统分区:每个分区通常绑定到单个物理硬盘上,每个分区的容量受限于所在硬盘的大小。
3. 性能
- LVM:在某些配置中,如使用条带化的LVM,可以提升读写性能,因为可以并行地从多个物理磁盘读写数据。
- 传统分区:性能通常受限于单个硬盘的性能,不支持跨多个硬盘的数据并行处理。
4. 数据安全和恢复
- LVM:提供更多的数据恢复选项,如快照功能,允许在特定时间点创建数据的一致性副本,这对于数据备份和恢复非常有用。
- 传统分区:通常缺乏动态的数据保护和恢复功能,数据备份需要依靠其他软件或手动处理。
5. 复杂性和易用性
- LVM:配置和管理相对复杂,需要一定的学习和技术背景。
- 传统分区:相对简单易懂,多数操作系统在安装时都会提供图形化的分区工具。
总的来说,LVM提供了比传统硬盘分区更高的灵活性和管理便利,但这也伴随着更高的复杂性。对于需要高度灵活性和高效空间管理的环境(如大型服务器或数据中心),LVM是一个非常合适的选择。对于普通用户或小型系统,传统分区可能因其简单性而更受青睐。
3、硬盘分区方案
1. Windows系统
对于Windows系统,通常的分区方案较为简单:
- 系统分区(C: 驱动器):安装操作系统、应用程序和系统文件。其大小依据软件安装需求而定,但通常建议至少为100GB。
- 数据分区(D: 驱动器及其他):用于存储个人文件如文档、图片、视频等。这有助于在系统出错时,数据能够保持安全。
2. Linux系统
基本分区方案
适用于个人电脑和小型服务器,主要包括:
- 根分区 (
/
):存储操作系统、所有程序、服务及大部分数据。建议大小至少20GB。 - 交换分区 (
swap
):虚拟内存分区,推荐大小为物理内存的1到2倍,尤其是内存较小的系统。 - 家目录分区 (
/home
):存储用户数据和个人文件,分开可以在重新安装系统或升级时保护用户数据不被覆盖。
高级分区方案
适用于需要高稳定性和可扩展性的企业级服务器和高性能工作站:
- 根分区 (
/
):包含核心系统文件,建议大小30GB以上。 - 家目录分区 (
/home
):用户数据,根据用户数量和数据量进行调整。 - 交换分区 (
swap
):同基本方案。 - 引导分区 (
/boot
):存放内核和启动相关文件,大小建议500MB至1GB。 - 临时文件分区 (
/tmp
):临时文件存储,大小约10GB,可以使用高速存储介质如SSD。 - 日志文件分区 (
/var
):存储系统日志文件,大小根据系统活动量配置,通常5GB起步。 - 用户程序分区 (
/usr
):存放用户级程序,大小根据安装的应用程序数量,通常设置20GB以上。
特殊需求分区方案
针对特定应用或高安全需求设计:
- 数据库分区 (
/var/db
or/data
):为数据库服务配置的专用分区,大小和性能根据数据库负载配置。 - 加密分区:对敏感数据使用加密分区,保护数据安全。
- 日志隔离分区 (
/var/log
):独立存储系统和应用日志,避免日志文件填满根分区。
3. 多操作系统双启动
对于需要同时安装Windows和Linux的双启动系统,可以采用以下分区方案:
- Windows系统分区:如上所述设置C:驱动器和D:驱动器。
- Linux根分区、家目录分区、交换分区和**/boot分区**:根据Linux分区建议进行设置。
- 共享数据分区(可选):使用NTFS或exFAT格式,使得两个操作系统都能访问和存储文件。
4. 高性能或特殊需求系统
对于服务器或需要高性能的工作站,可以考虑使用LVM或RAID配置:
- LVM:提供高度灵活的分区管理,支持在线调整分区大小。
- RAID:通过多硬盘的数据冗余或条带化,提高数据安全性或读写速度。
设计考虑
在设计分区方案时,应考虑以下因素:
- 备份与恢复:确保重要数据分区与系统分区分离,便于数据备份和系统恢复。
- 硬盘大小与用途:根据硬盘容量和用途合理规划分区大小。
- 性能需求:对于高性能需求,考虑使用SSD硬盘,或通过RAID配置来提升性能。
3.4、管理存储三大金刚—MBR分区、GPT分区与逻辑卷管理(理解分区、物理卷、卷组、逻辑卷、文件系统、挂载等)
1、MBR分区
1.1、fdisk工具简介
- 分区表类型:
fdisk
支持 MBR (Master Boot Record) 分区表。 - 磁盘大小支持:由于MBR的限制,
fdisk
支持的最大磁盘大小为 2TB。 - 场景:适用于较老的系统或较小的磁盘,以及兼容性要求较高的环境,如一些老旧的服务器或个人计算机。
- 例子:
- 在一个小于2TB的硬盘上创建一个新的分区。
- 在旧系统上修改启动分区。
1.2、fdisk分区实战
打开终端,然后运行 sudo fdisk /dev/sda
来开始对 /dev/sda
磁盘进行分区操作。你需要输入管理员密码。
1.创建一个主分区和一个扩展分区:
- 删除已有分区(如果需要):
- 输入
d
并选择要删除的分区号,如果需要清空所有分区,重复这个步骤。
- 输入
- 创建一个主分区:
- 输入
n
选择创建新分区。 - 输入
p
选择创建主分区。 - 输入分区号
1
。 - 输入第一个扇区(直接按 Enter 使用默认值)。
- 输入最后一个扇区或者分区大小,如
+500G
。
- 输入
- 创建一个扩展分区:
- 输入
n
。 - 输入
e
选择创建扩展分区。 - 输入分区号
2
。 - 输入第一个扇区(直接按 Enter 使用默认值)。
- 输入最后一个扇区(直接按 Enter 使用剩余空间)。
- 输入
- 在扩展分区内创建逻辑分区:
- 输入
n
创建新的逻辑分区。 - 输入分区号
5
(逻辑分区号从 5 开始)。 - 输入第一个扇区(直接按 Enter 使用默认值)。
- 输入最后一个扇区或者分区大小,如
+500G
。 - 重复此步骤,直到创建足够的逻辑分区。
- 输入
- 写入分区表并退出:
- 输入
w
写入更改并退出 fdisk。
- 输入
- 分区以后的操作:
2.创建文件系统
对每个新分区创建 **ext4**
文件系统:
bash
复制代码
sudo mkfs.ext4 /dev/sda1
for i in $(seq 5 14); do
sudo mkfs.ext4 /dev/sda$i
done
3. 挂载分区
为每个分区创建挂载点并挂载:
bash
复制代码
sudo mkdir -p /mnt/vm1
sudo mount /dev/sda1 /mnt/vm1
for i in $(seq 5 14); do
sudo mkdir -p /mnt/vm$i
sudo mount /dev/sda$i /mnt/vm$i
done
4. 自动挂载设置
编辑 **/etc/fstab**
文件,使得这些分区在启动时自动挂载:
bash
复制代码
echo "/dev/sda1 /mnt/vm1 ext4 defaults 0 2" | sudo tee -a /etc/fstab
for i in $(seq 5 14); do
echo "/dev/sda$i /mnt/vm$i ext4 defaults 0 2" | sudo tee -a /etc/fstab
done
5. 验证挂载
使用以下命令来检查是否所有分区都已经挂载:
bash
复制代码
df -H | grep /mnt/vm
2、GPT分区
2.1、gdisk工具简介
- 分区表类型:
gdisk
支持 GPT (GUID Partition Table) 分区表。 - 磁盘大小支持:GPT支持的磁盘大小远超2TB,理论上可以支持到18EB(Exabytes)。
- 场景:适用于现代大容量硬盘和需要多个分区的情况。GPT还提供更高的数据完整性和更复杂的分区功能。
- 例子:
- 在一个新购买的大于2TB的硬盘上进行分区。
- 在需要创建多个分区,且每个分区可能需要大于2TB的环境中使用。
2.2、gdisk分区实战
1. 安装 gdisk
如果你的系统还没有安装 gdisk
,你可以通过以下命令安装:
sudo apt update
sudo apt install gdisk
2. 使用 gdisk
创建 GPT 分区
打开终端,运行以下命令开始对 /dev/sda
磁盘进行操作:
sudo gdisk /dev/sda
创建分区:
- 输入
**o**
来创建一个新的空的 GUID 分区表(GPT)。- 系统会提示是否要清除所有内容,输入
Y
确认。
- 系统会提示是否要清除所有内容,输入
- 输入
**n**
创建新分区:- 选择分区编号,从 1 开始。
- 输入第一个扇区(直接按 Enter 使用默认值)。
- 输入最后一个扇区或者分区大小,如
+500G
。 - 输入分区类型代码(对于 Linux 文件系统,通常是 8300)。
- 重复上述步骤,直到创建 10 个 500GB 的分区。
- 输入
**w**
写入更改并退出**gdisk**
。- 系统会提示是否要写入更改,输入
Y
确认。
- 系统会提示是否要写入更改,输入
3. 格式化分区
创建好分区后,为每个分区创建 ext4
文件系统:
for i in $(seq 1 10); do
sudo mkfs.ext4 /dev/sda$i
done
4. 挂载分区
为每个分区创建挂载点并挂载:
for i in $(seq 1 10); do
sudo mkdir -p /mnt/vm$i
sudo mount /dev/sda$i /mnt/vm$i
done
5. 自动挂载设置
编辑 /etc/fstab
文件,使得这些分区在启动时自动挂载:
for i in $(seq 1 10); do
echo "/dev/sda$i /mnt/vm$i ext4 defaults 0 2" | sudo tee -a /etc/fstab
done
6. 验证挂载
使用以下命令来检查是否所有分区都已经挂载:
df -H | grep /mnt/vm
使用 gdisk
可以轻松管理超过 2TB 的大硬盘。确保在对硬盘操作前备份所有重要数据,以避免数据丢失。如果需要进一步的帮助,请随时询问。
7.删除分区
- 启动
**gdisk**
: 打开终端,然后输入以下命令来操作/dev/sda
磁盘:
sudo gdisk /dev/sda
- 查看现有分区: 输入
p
来显示磁盘的分区表。这将列出所有现有分区及其详细信息。 - 删除分区:
- 输入
d
来删除分区。 - 系统会询问你要删除哪个分区。输入你想要删除的分区编号。如果想删除所有分区,重复此步骤,直到所有分区都被删除。
- 输入
- 写入更改并退出
**gdisk**
:- 输入
w
来写入更改到磁盘。 - 系统会警告你这将修改磁盘布局,询问你是否确定。输入
Y
确认你的操作。
- 输入
注意事项
- 数据安全: 删除分区会导致该分区数据的永久丢失。在执行这些操作之前,请确保你已经备份了所有重要数据。
- 操作确认: 在确认写入更改之前,
gdisk
不会修改磁盘。如果你在写入更改前退出(使用q
命令),之前的操作将不会影响磁盘。
实际例子
这是一个使用 gdisk
删除分区的命令行会话示例:
sudo gdisk /dev/sda
Command (? for help): p
Disk /dev/sda: 31251759104 sectors, 14.6 TiB
Model: ST16000NM000J-2T
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): D7B61323-7E6E-4C75-9F3B-8421FC5E6FEB
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 31251759070
Partitions will be aligned on 2048-sector boundaries
Total free space is 31251759037 sectors (14.6 TiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1026047 500.0 MiB EF00 EFI System
2 1026048 104857600 49.0 GiB 0700 Microsoft basic data
Command (? for help): d
Partition number (1-2): 1
Command (? for help): d
Partition number (1-2): 2
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
3、逻辑卷管理
逻辑卷管理(LVM)是一种高级的磁盘管理技术,它允许更灵活的磁盘分区和管理。与传统的硬盘分区相比,LVM提供了更高级的特性,如磁盘空间的动态调整、快照、多个物理硬盘的组合等。
LVM最上层是由单个硬盘和分区(物理卷)组成的存储池(称为卷组)。卷组然后被划分为逻辑卷,后者是用来存放文件系统的块设备。物理卷需要使用pvcreate添加LVM标签,这里的物理卷不需要和物理设备有直接的对应关系。它们可以是硬盘,也可以是分区或RAID。LVM 对此并不在意。
linux的LVM 涉及几个截然不同的阶段:
- 创建(其实是定义)和初始化物理卷;
- 将物理卷添加到卷组;
- 在卷组中创建逻辑卷。
IMV命令开头的字母可以清晰地表示出其所操作的抽象级别:pv命令处理物理卷,vg命令理卷组,Iv命令处理逻辑卷。
3.1、核心功能包括:
- 卷组(Volume Group, VG):一个或多个物理硬盘组成的存储池。
- 物理卷(Physical Volume, PV):实际硬盘或硬盘分区,用作LVM的一部分。
- 逻辑卷(Logical Volume, LV):从卷组中划分出来的,用户可以格式化和挂载使用的部分。
- **文件系统 (File System) **是操作系统用来管理文件和目录的方式 。
- **格式化 (Formatting) **是准备存储设备以供使用的过程,它实际上是在硬盘或其他存储设备上创建文件系统的过程。
- **挂载 (Mounting) **是将特定的存储设备(如硬盘、USB驱动器、CD等)连接到系统的目录树的过程。在Linux中,所有文件和目录都从根目录(
/
)开始,挂载操作使得存储设备的内容变得可访问,通过将设备内容映射到目录结构中的某个点(挂载点) 。
3.2、LVM的优势
- 灵活性:可以在不中断服务的情况下扩展或缩减逻辑卷的大小。
- 容错性:可以跨多个物理硬盘创建逻辑卷,增加数据的冗余性和安全性。
- 管理便利:可以方便地管理大量的硬盘和分区。
- 快照功能:允许创建逻辑卷的快照,便于备份和恢复数据。
3.3、实际应用示例
- 动态扩展存储空间
- 场景:一个Web服务器使用了LVM来管理存储。随着网站内容的增加,原有的存储空间不足。
- 操作:管理员无需停机,即可向卷组添加新的物理硬盘,并动态扩展逻辑卷的大小,增加存储空间。
- 数据备份与恢复
- 场景:数据库服务器需要定期备份数据,以防数据丢失。
- 操作:管理员可以使用LVM的快照功能,快速创建数据库逻辑卷的时间点副本。如果数据库发生故障,可以从快照迅速恢复。
- 测试环境管理
- 场景:需要在同一硬件上部署多个测试环境,而这些环境需要隔离。
- 操作:通过LVM,管理员可以轻松创建和管理多个逻辑卷,每个逻辑卷用于不同的测试环境,互不影响。
LVM的这些特性使得它非常适合需要高度灵活性和可扩展性的企业级应用,特别是在数据中心和大型服务器环境中。通过利用LVM,管理员可以更有效地管理硬盘空间,提高系统的可靠性和性能。
3.4、逻辑卷管理实战
首先,您需要确保 `sda8` 没有被挂载,以便安全地进行格式化和物理卷的创建。如果被挂载,则需要先卸载分区,不能成功卸载可以强制卸载,这一步会将之前sda8上的数据全部删除。
1. 卸载分区
首先,您需要卸载已挂载的 sda8
分区:
sudo umount /dev/sda8
如果系统提示分区正在使用中,您可能需要使用 -l
(懒卸载) 或 -f
(强制卸载) 选项:
sudo umount -l /dev/sda8 # 懒卸载
# 或者
sudo umount -f /dev/sda8 # 强制卸载
2. 创建物理卷(将sda8分区标记为LVM物理卷)
执行卸载操作后,将 sda8
初始化为LVM的物理卷:
sudo pvcreate /dev/sda8
3. 创建卷组(将物理设备加入卷组,可以加入多个物理设备)
然后创建名为 demo
的卷组,并加入 sda8
,检查添加是否成功:
sudo vgcreate demo /dev/sda8
sudo vgdisplay demo
# 卸载之前挂在的内容
sudo umount /dev/sda7
#将sda7标记为物理卷
sudo pvcreate /dev/sda7
#将新的物理卷加入卷组
sudo vgextend demo /dev/sda7
#验证更改,查看所有卷组
sudo vgs
# 或者更详细的信息
sudo vgdisplay demo
4. 创建逻辑卷
在卷组 demo
内创建一个100G的逻辑卷 lv_demo
:
sudo lvcreate -n lv_demo -L 100G demo
5. 格式化逻辑卷
选择文件系统进行格式化,这里以 ext4
为例:
sudo mkfs.ext4 /dev/demo/lv_demo
6. 挂载逻辑卷
创建挂载点并挂载逻辑卷:
sudo mkdir /vmdirs/demo
sudo mount /dev/demo/lv_demo /vmdirs/demo
7. 自动挂载配置
编辑 /etc/fstab
文件,sudo vim /etc/fstab以在启动时自动挂载逻辑卷,然后使用lsblk命令检查:
/dev/demo/lv_demo /vmdirs/demo ext4 defaults 0 2
8. 扩展已存在的逻辑卷 lv_demo 到200G
大致思路是:先检查之前的卷组空间是否足够,然后扩展空间,或者直接设置逻辑卷空间为200G,然后扩展文件系统以使用新的空间,最后到挂载点验证新空间。
# 检查卷组 demo 中是否有足够的未分配空间来扩展逻辑卷,
sudo vgdisplay demo
#在输出中查找 Free PE / Size(未分配的物理扩展大小)来确认是否有至少100GB的可用空间
# 扩展逻辑卷
sudo lvextend -L +100G /dev/demo/lv_demo (添加)
sudo lvresize -L 200G /dev/demo/lv_demo (直接设置)
# 调整文件系统大小
sudo resize2fs /dev/demo/lv_demo
# 验证新空间
df -h /vmdirs/demo
3.5、常见的逻辑卷管理命令
类别 | 功能 | 命令 | 示例 |
---|---|---|---|
物理卷 | 创建 | pvcreate | sudo pvcreate /dev/sda3 |
显示 | pvdisplay | sudo pvdisplay | |
修改 | pvchange | sudo pvchange --addtag fast /dev/sda3 | |
移除 | pvremove | sudo pvremove /dev/sda3 | |
卷组 | 创建 | vgcreate | sudo vgcreate vg_name /dev/sda3 |
显示 | vgdisplay | sudo vgdisplay | |
扩展 | vgextend | sudo vgextend vg_name /dev/sda4 | |
缩减 | vgreduce | sudo vgreduce vg_name /dev/sda3 | |
移除 | vgremove | sudo vgremove vg_name | |
**** 逻辑卷 | 创建 | lvcreate | sudo lvcreate -n lv_name -L 10G vg_name |
显示 | lvdisplay | sudo lvdisplay | |
修改 | lvchange | sudo lvchange -an /dev/vg_name/lv_name | |
扩展 | lvextend | sudo lvextend -L +5G /dev/vg_name/lv_name | |
缩减 | lvreduce | sudo lvreduce -L -5G /dev/vg_name/lv_name | |
移除 | lvremove | sudo lvremove /dev/vg_name/lv_name |
3.5、掌握与设置KVM的存储池,创建虚拟机存储资源
1. 安装必要的软件
确保安装了KVM和相关的管理工具,如libvirt
和virsh
:
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
2. 启动并配置libvirt服务
确保libvirtd
服务已启动并设置为开机启动:
sudo systemctl enable --now libvirtd
3. 创建基于LVM的存储池
首先,您需要确认LVM的卷组(如demo
)或逻辑卷的详细信息,因为创建存储池需要这些信息。
创建存储池指向LVM卷组:
virsh pool-define-as --name demo-vg --type logical --source-name demo --target /dev/demo
--name demo-vg
指定存储池的名称。--type logical
表示这是一个基于逻辑卷的存储池。--source-name demo
指定LVM卷组名称。--target /dev/demo
指定LVM卷组设备的路径。
启动并自动激活存储池:
virsh pool-start demo-vg
virsh pool-autostart demo-vg
这些命令启动存储池并设置为开机自动启动。
4. 验证存储池状态
使用以下命令检查存储池的状态和详细信息:
virsh pool-list --all
virsh pool-info demo-vg
5. 创建虚拟磁盘(可选)
如果您需要在此存储池中创建一个新的虚拟磁盘,可以使用以下命令:
virsh vol-create-as --pool demo-vg --name mylv --format raw --allocation 20G --capacity 20G
--pool demo-vg
指定存储池名称。--name mylv
指定虚拟磁盘名称。--format raw
指定磁盘格式。--allocation 20G
和--capacity 20G
指定磁盘的预分配和最大容量。
6. 使用虚拟磁盘创建虚拟机(可选)
您可以使用创建的虚拟磁盘来配置虚拟机的存储选项。
在使用virt-manager可视化界面工具创建磁盘时候,可以检测到对应的存储池,还有之前创建的逻辑卷和虚拟磁盘,这个mylv虽然创建,但是还没有进行格式化和挂载 ,如果用这个存储来安装虚拟机,会报错。
4 遇到的问题和解决方案
4.1、遇到的问题与解决方案
1、不理解MBR分区、GPT分区与逻辑卷管理,更不清楚分区、物理卷、卷组、逻辑卷、文件系统、挂载的作用,有什么效果,需要注意什么?
针对问题一,系统阅读一些书籍关于linux存储的介绍,先在头脑里大致构建出大致的知识框架,然后利用这框架,精确定义与描述自身的困惑,然后使用chatgpt辅助,对每个命令进行实操。
2、如何系统的去理解知识并内化成自身的东西?
自己借助数据库增删改的逻辑,我要操作磁盘乃至任何东西,这三样是我的基本操作,我通过这三个操作出发,衍生出许多其他操作,并以此为框架展开。同时对于概念,自己映射到现实,然后思考那是什么,优缺点,适合场景,从而帮助自己选择最佳方案。
5 总结
本次实验历时2天,让自己感受到存储的魅力,也让自己了解到linux底层存储的设计,以及一些分区、逻辑卷管理、格式化与挂载的知识,懂得看电脑存储设置,并在最后运用到KVM中设置虚拟机存储大小。
6 参考链接与书籍
- http://notes.maxwi.com/2016/11/29/kvm-create-and-manage/index.html
- https://cloud-atlas.readthedocs.io/zh-cn/latest/kvm/libvirt/storage/libvirt_lvm_pool_resize_vm_disk.html
- https://midoq.github.io/2022/05/30/Ubuntu20-04%E6%9B%B4%E6%8D%A2%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F%E6%BA%90/
- https://www.freecodecamp.org/chinese/news/how-to-exit-vim/