Linux云计算 |【第一阶段】ENGINEER-DAY2
主要内容:
磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间
KVM虚拟化 实操前骤:
1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】
2)选择20GB,点击创建完成,显示磁盘2
3)KVM虚拟机的独创磁盘接口vda/vdb(优点:传输快,缺点:与实际的磁盘接口不符)
4)列出当前系统识别的硬盘(lsblk)
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
VMware虚拟化 实操前骤:
1)关闭虚拟机CentOS7,打开【编辑虚拟机设置】,进行添加设备
2)点击“添加”
3)添加硬盘
4)选择SCSI磁盘
5)选择创建新虚拟磁盘
6)设置磁盘大小
7)设置指定磁盘文件的路径
8)设置指定磁盘文件的路径
9)查看是否有硬盘2
一、磁盘结构及概念
磁盘结构是指计算机存储设备(如硬盘、固态硬盘等)的物理和逻辑组织方式
- 步骤:识别硬盘(HDD/SSD) -> 分区规划 -> 文件系统格式化 -> 挂载使用
- 类似:毛坯楼层 — 打隔断 — 装修 — 入驻
1、物理结构
机械硬盘(HDD)
- 盘片(Platter):硬盘通常由多个盘片组成,每个盘片都有两面,每面都有一个读写头
- 磁道(Track):每个盘片上的同心圆环称为磁道
- 扇区(Sector):磁道被划分为若干个扇区,每个扇区通常存储512字节或4096字节的数据
- 柱面(Cylinder):所有盘片上同一位置的磁道组成一个柱面
固态硬盘(SSD)
- 闪存芯片(Flash Memory Chip):SSD使用闪存芯片来存储数据,没有机械部件
- NAND单元:闪存芯片由多个NAND单元组成,每个单元可以存储一个或多个比特的数据
2、逻辑结构
分区(Partition)
- 主分区(Primary Partition):硬盘上可以有多个主分区,每个主分区可以独立格式化并安装操作系统
- 扩展分区(Extended Partition):扩展分区可以包含多个逻辑分区
- 逻辑分区(Logical Partition):扩展分区内的分区称为逻辑分区
文件系统(File System)
- 引导块(Boot Block):存储引导程序,用于启动操作系统
- 超级块(Super Block):存储文件系统的元数据,如块大小、空闲块数量等
- inode表(Inode Table):存储文件的元数据,如文件大小、权限、时间戳等
- 数据块(Data Block):存储文件的实际数据
[root@localhost ~]# lsblk //列出当前系统识别的硬盘
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
注意:vda*/vdb*命名为KVM虚拟机独有的磁盘接口,实际磁盘接口表现为sda*/sdb*
3、磁盘管理
格式化(Formatting)
- 低级格式化(Low-level Formatting):初始化磁盘的物理结构,创建磁道和扇区
- 高级格式化(High-level Formatting):创建文件系统,初始化超级块、inode表和数据块
分区表(Partition Table)
- MBR(Master Boot Record):传统的分区表格式,支持最多4个主分区或3个主分区加1个扩展分区
- GPT(GUID Partition Table):现代的分区表格式,支持更多分区,更大的磁盘容量,并且更可靠
4、磁盘性能
- 寻道时间(Seek Time):硬盘读写头移动到指定磁道所需的时间
- 旋转延迟(Rotational Latency):盘片旋转到指定扇区所需的时间
- 传输速率(Transfer Rate):数据从磁盘传输到内存的速率
5、磁盘调度算法
- 先来先服务(FCFS):按请求到达的顺序进行服务
- 最短寻道时间优先(SSTF):选择当前磁头位置最近的请求进行服务
- 电梯算法(SCAN):磁头在磁盘上按一个方向移动,直到没有请求为止,然后反向移动
- 循环扫描(C-SCAN):磁头在磁盘上按一个方向移动,直到没有请求为止,然后返回起点重新开始
6、计算机容量单位
一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示,它们之间的关系是:
- 1KB (Kilobyte 千字节)=1024B,
- 1MB (Megabyte 兆字节 简称“兆”)=1024KB,
- 1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
- 1TB (Terabyte 万亿字节 太字节)=1024GB,
- 1PB (Petabyte 千万亿字节 拍字节)=1024TB,
- 1EB (Exabyte 百亿亿字节 艾字节)=1024PB,
- 1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB,
- 1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,
- 1BB (Brontobyte 一千亿亿亿字节)= 1024 YB.
二、磁盘分区规划
主流分区方案(分区模式): MBR 与 GPT
注意:分区规划中,MBR分区模式与GPT分区模式不共存;
MBR / msods分区模式
- 分区类型:主分区、扩展分区(占用所有剩余空间)、逻辑分区
- 一般分区规划:① 1~4个主分区,② 0~3个主分区+1个扩展分区(n个逻辑分区)
- MBR分区模式 最大支持容量为2.2TB的磁盘
- 最多只能有 4个主分区,扩展分区可以没有,最多只有1个
- 扩展分区不能格式化,空间也不能直接存储数据(目的为产生逻辑分区存储数据)
- 可以用于存储数据的分区:主分区与逻辑分区
1、fdisk分区工具
- 格式:fdisk -l /dev/sda //查看分区表
- 格式:fdisk 硬盘设备 (例如:/dev/sda)
步骤1:
[root@localhost ~]# fdisk -l /dev/vdb ## 查看分区表
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节[root@localhost ~]# fdisk /dev/vdb ## 对硬盘进行分区规划
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x6ab34c3a 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):p ## 查看现有的分区表(类似fdisk -l /dev/vdb )
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a设备 Boot Start End Blocks Id System命令(输入 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-41943039,默认为 2048): ## 默认起始大小2048
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G //设置大小为2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):n
Partition type:p primary (1 primary, 0 extended, 3 free)e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 6293503 1048576 83 Linux命令(输入 m 获取帮助):w ## 保存更改并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。[root@localhost ~]# lsblk ## 查看分区表,挂载目录
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
├─vdb1 252:17 0 2G 0 part
└─vdb2 252:18 0 1G 0 part
2、partprobe识别新分区表
当硬盘的分区表被更改以后,需要将分区表的变化及时通知Linux内核,建议reboot,否则在访问分区时可能会找不到准确的设备;
注意:因磁盘已有分区设备正在运行,需要通过reboot或partprobe 刷新分区表
步骤2:
[root@localhost ~]# fdisk /dev/vdb ## 对硬盘进行分区规划
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 6293503 1048576 83 Linux命令(输入 m 获取帮助):n
Partition type:p primary (2 primary, 0 extended, 2 free)e extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (6293504-41943039,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039):+2G
分区 3 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):n
Partition type:p primary (3 primary, 0 extended, 1 free)e extended
Select (default e): ## 创建扩展分区
Using default response e
已选择分区 4
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 15 GiB ## 注意将剩余空间给扩展分区命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (10489856-41943039,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-41943039,默认为 41943039):+900M
分区 5 已设置为 Linux 类型,大小设为 900 MiB命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (12335104-41943039,默认为 12335104):
将使用默认值 12335104
Last 扇区, +扇区 or +size{K,M,G} (12335104-41943039,默认为 41943039):+2G
分区 6 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 6293503 1048576 83 Linux
/dev/vdb3 6293504 10487807 2097152 83 Linux
/dev/vdb4 10487808 41943039 15727616 5 Extended
/dev/vdb5 10489856 12333055 921600 83 Linux
/dev/vdb6 12335104 16529407 2097152 83 Linux命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。[root@localhost ~]# partprobe ## 刷新分区表
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。[root@localhost ~]# fdisk -l /dev/vdb ## 查看已有的分区表
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 6293503 1048576 83 Linux
/dev/vdb3 6293504 10487807 2097152 83 Linux
/dev/vdb4 10487808 41943039 15727616 5 Extended
/dev/vdb5 10489856 12333055 921600 83 Linux
/dev/vdb6 12335104 16529407 2097152 83 Linux
##注意:/dev/vdb4为扩展分区,不存储数据,以Extended往上为主分区,以Extended往下为逻辑分区;[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
├─vdb1 252:17 0 2G 0 part /mypart1
├─vdb2 252:18 0 1G 0 part /mypart2
├─vdb3 252:19 0 2G 0 part
├─vdb4 252:20 0 512B 0 part
├─vdb5 252:21 0 900M 0 part
└─vdb6 252:22 0 2G 0 part
三、格式化分区
格式化分区是指在存储设备(如硬盘、固态硬盘、USB闪存驱动器等)上创建文件系统的过程。这个过程使得操作系统能够识别和使用该分区来存储和管理文件。格式化分区通常包括以下几个步骤:
-
低级格式化(Low-level Formatting):这是在制造过程中或使用特殊工具进行的操作,它将磁盘划分为磁道和扇区,为每个扇区分配一个地址。低级格式化通常不需要用户手动执行,因为它在磁盘出厂时已经完成
-
分区(Partitioning):在磁盘上创建一个或多个分区,每个分区可以独立使用。分区可以使用工具如
fdisk
、gdisk
或图形界面工具如GParted
来完成。分区表(如 MBR 或 GPT)记录了这些分区的位置和大小 -
高级格式化(High-level Formatting):这是用户通常所说的“格式化”,它涉及在分区上创建文件系统。文件系统定义了数据如何存储和检索,包括目录结构、文件元数据(如权限、时间戳)和数据块的分配方式。常见的文件系统包括 NTFS、FAT32、exFAT、HFS+、APFS、ext3、ext4 等(补充:ext4适合存储数据个数多、容量小,xfs适合存储单个数据容量大)
格式化分区的主要目的是:
- 准备存储设备:使操作系统能够识别和使用该设备
- 创建文件系统:定义数据存储和组织的规则
- 清除数据:格式化分区通常会删除分区上的所有数据,使其无法恢复(尽管在某些情况下,专业数据恢复服务可能仍然能够恢复部分数据)
1、mkfs格式化工具
- 格式:[mkfs.ext3] 分区设备路径
- 格式:[mkfs.ext4] 分区设备路径
- 格式:[mkfs.xfs] 分区设备路径
[root@localhost ~]# mkfs. //双击[Tab]可查看文件系统类型
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
2、创建文件系统(格式化分区设备)
用途:按照需要的不同的文件系统类型进行格式化分区
步骤3:
① /dev/vdb1 ==> EXT4类型
[root@localhost ~]# mkfs.ext4 /dev/vdb1 //格式化分区为ext4文件系统
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, 294912Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
② /dev/vdb2 ==> XFS类型
[root@localhost ~]# mkfs.xfs /dev/vdb2 //格式化分区为xfs文件系统
meta-data=/dev/vdb2 isize=512 agcount=4, agsize=65536 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, 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
③ 查看UUID和文件系统
[root@localhost ~]# blkid /dev/vdb1 //查看UUID和文件系统
/dev/vdb1: UUID="b88a568a-6e22-473e-a8ba-2f459ce4dfa3" TYPE="ext4"
[root@localhost ~]# blkid /dev/vdb2
/dev/vdb2: UUID="842a2040-bdb8-4bcb-ac49-2f338fd6bea6" TYPE="xfs"
3、blkid识别文件系统类型工具
用途:查看分区设备的UUID和文件系统类型
格式:blkid 分区设备路径 (例如:/dev/vdb1)
例如:
[root@localhost ~]# blkid /dev/vdb1
/dev/vdb1: UUID="b88a568a-6e22-473e-a8ba-2f459ce4dfa3" TYPE="ext4"
[root@localhost ~]# blkid /dev/vdb2
/dev/vdb2: UUID="842a2040-bdb8-4bcb-ac49-2f338fd6bea6" TYPE="xfs"
四、访问文件系统
1、访问已格式化的分区
使用mount命令挂载,并访问已格式化的分区测试
注意:挂载的分区设备对应一个分区,不能多个分区设备同时挂载同一个访问点;
步骤4:
[root@localhost ~]# mkdir /mypart1 /mypart2
[root@localhost ~]# mount /dev/vdb1 /mypart1/
[root@localhost ~]# mount /dev/vdb2 /mypart2/
[root@localhost ~]# df -h | grep mypart
/dev/vdb1 2.0G 6.0M 1.8G 1% /mypart1
/dev/vdb2 1014M 33M 982M 4% /mypart2
2、df 工具检查使用情况
用途:显示正在挂载的设备信息(文件系统或对应分区设备、使用容量、挂载点)
格式:df [-h]
选项:[-h] 显示单位(K、M、G)
例如:
[root@localhost ~]# df -h /
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 4.4G 13G 26% /
注意:不添加访问点,因目录创建在根目录下,则占用根目录的设备的存储空间
3、开机自动挂载(永久挂载)
配置文件 /etc/fstab 。实现开机自动挂载
记录格式:分区设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序
部分记录说明:
- 参数:defults,命令的集合
- 备份标记:0,代表不备份(系统的dump可备份分区文件,但效率及成功率低)
- 检测顺序:0,磁盘设备检测
- mount -a 作用:
① 检测/etc/fstab文件配置是否错误,按照Linux系统识别方法进行挂载
② 检测/etc/fstab中,配置书写完成,但当前没有挂载的设备,将进行自动挂载
步骤5:
[root@localhost ~]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Mar 1 14:53:18 2021
#
# 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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=2ac42f49-b787-4b0f-8137-68b1424e033b /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/vdb1 /mypart1 ext4 defaults 0 0
/dev/vdb2 /mypart2 xfs defaults 0 0
验证1:
[root@localhost ~]# mount -a //无报错信息则不方便识别,需进行卸载挂载点验证
验证2:
根据配置文件自动挂载验证,若不能自动挂载则说明有问题
[root@localhost ~]# umount /mypart1
[root@localhost ~]# umount /mypart2
[root@localhost ~]# df -h | grep mypart
[root@localhost ~]# mount -a //根据配置文件自动挂载
[root@localhost ~]# df -h | grep mypart
/dev/vdb1 2.0G 6.0M 1.8G 1% /mypart1
/dev/vdb2 1014M 33M 982M 4% /mypart2
[root@localhost ~]# reboot //重启(非必须)
常见报错1:文件系统类型写错
[root@localhost ~]# vim /etc/fstab
/dev/vdb1 /mypart1 ext3 defaults 0 0
[root@localhost ~]# mount -a
mount: 文件系统类型错误、选项错误、/dev/vdb1 上有坏超级块、缺少代码页或助手程序,或其他错误有些情况下在 syslog 中可以找到一些有用信息- 请尝试dmesg | tail 这样的命令看看。
常见报错2:挂载点目录写错
[root@localhost ~]# vim /etc/fstab
/dev/vdb2 /mypart3 xfs defaults 0 0
[root@localhost ~]# mount -a
mount: 挂载点 /mypart3 不存在
常见报错3:在挂载点目录下umount
[root@localhost mypart2]# umount /mypart2
umount: /mypart2:目标忙。(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)
常见报错4:挂载的分区设备不存在
[root@localhost ~]# vim /etc/fstab
/dev/vdc2 /mypart3 xfs defaults 0 0
[root@localhost /]# mount -a
mount: 特殊设备 /dev/vdc2 不存在
如果/etc/fstab文件有误又进行重启,【进入维护模式】修复办法:
重启后,因系统无法找到分区设备,将进入交互界面再修改配置
1.输入root密码
2.修改/etc/fstab配置文件
3.确认无误后,进行reboot重启
步骤总结:
步骤1:识别硬盘lsblk
步骤2:分区规划fdisk、fdisk -l(MBR分区模式)
步骤3:刷新分区表partprode
步骤4:格式化文件系统mkfs,ext4 mkds.xfs(blkid查看文件系统)
步骤5:挂载mount,修改/etc/fstab开机自动挂载(mount -a、df -h查看挂载磁盘信息)
补充:/dev/sda5表示含义:
① SCSI接口设备第一块的第一个逻辑分区;
② SCSI接口设备第一块的第5个分区
五、GPT分区模式及Parted工具
GPT分区模式(GPT,GUID Partition Table)
- 全局唯一标识分区表;
- 突破固定大小64字节的分区表限制;
- 最多可支持128个主分区,最大支持18EB磁盘;(1EB=1024PB=1024x1024TB)
注意:一块硬盘只能有一个分区方案,MBR与GPT不能共存;
注意:工作环境中,分区尽量不大于10个,不易维护;
1、parted分区指令工具(可划分MBR也可划分GPT)
格式:parted 硬盘设备 [指令]...
指令:
- [ help ] //查看指令帮助
- [ mktable msdos|gpt] //建立指定模式分区表(可指定MBR或GPT)
- [ mkpart 分区名称 文件系统类型 start end ] //指定大小或百分比%作为起始、结束位置
- [ print ] //查看分区表
- [ rm 序号 ] //删除指定的分区
- [ quit ] //退出交互环境
注意:划分分区时,起始点与结束点位置需要计算首尾,非fdisk+容量大小方式;
正常报错提示:
[root@localhost images]# parted /dev/vdb //对磁盘进行分区
错误: /dev/vdb: unrecognised disk label //正常报错:提示没有指定分区模式
...
注意:fdisk分区工具没有报错,因fdisk未指定分区模式时默认为MBR分区模式
例如1:
[root@localhost images]# parted /dev/vdb //对磁盘进行分区
GNU Parted 3.1
使用 /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.(parted) print //查看分区表
错误: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:(parted) mktable gpt //指定分区模式为GPT (parted) print //查看分区表
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志(parted) mkpart //划分磁盘分区
分区名称? []? haha //说明分区名称(随便写)
文件系统类型? [ext2]? ext4 //说明文件系统类型(仅说明。不会进行格式化)
起始点? 0 //指定起始点位置
结束点? 10G //指定结束点位置
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore //因需划分系统保留数据空间,选择忽略即可 (parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志1 17.4kB 10.0GB 10000MB haha
例如2:
(parted) unit //双击[Tab]可查看显示的单位
align-check mklabel print resizepart toggle
disk_set mkpart quit rm unit
disk_toggle mktable rescue select version
help name resize set
(parted) unit GB //选择GB为显示单位(parted) print //查看size大小,已显示GB单位
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志1 0.00GB 10.0GB 10.0GB haha
(parted) mkpart //划分第2个分区
分区名称? []? haha
文件系统类型? [ext2]? ext4
起始点? 10G
结束点? 20G
(parted) mkpart //划分第3个分区
分区名称? []? xixi
文件系统类型? [ext2]? ext4
起始点? 20G
结束点? 30G
(parted) quit //与fdisk不同,无w保存概念,划分分区时已编写磁盘操作
信息: You may need to update /etc/fstab.[root@localhost images]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 80G 0 disk
├─vdb1 252:17 0 9.3G 0 part //进律GIB:1024 GB:1000
├─vdb2 252:18 0 9.3G 0 part
└─vdb3 252:19 0 9.3G 0 part
例如3:通过命令方式进行分区划分
[root@localhost /]# parted /dev/vdb mkpart haha ext4 40G 50G
信息: You may need to update /etc/fstab.
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 80G 0 disk
├─vdb1 252:17 0 9.3G 0 part
├─vdb2 252:18 0 9.3G 0 part
├─vdb3 252:19 0 9.3G 0 part
└─vdb4 252:20 0 9.3G 0 part
例如4:通过命令方式进行分区划分,大小位置可用%表示(需要计算,计算错误则报错)
[root@localhost /]# parted /dev/vdb mkpart xixi ext4 50G 100%
信息: You may need to update /etc/fstab.
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 80G 0 disk
├─vdb1 252:17 0 9.3G 0 part
├─vdb2 252:18 0 9.3G 0 part
├─vdb3 252:19 0 9.3G 0 part
├─vdb4 252:20 0 9.3G 0 part
└─vdb5 252:21 0 33.4G 0 part
提示:重新指定分区模式,则删除磁盘所有内容并提示是否重新指定分区模式
(parted) mktable gpt
警告: The existing disk label on /dev/vdb will be destroyed and all data on this
disk will be lost. Do you want to continue?
是/Yes/否/No?
注意:如果磁盘内容不重要,可根据mktable gpt方式重置分区
常见报错:Unit选择进律单位,指令输入有误
(parted) unit
Unit? [compact]? unit GB
parted: invalid token: unit
常见报错:# rm -rf /dev/vdb
硬盘设备是特殊存在,若要去掉硬盘,需要拔掉硬件;做磁盘分区的删除操作必须用磁盘工具进行删除(例如:fdisk、parted)
常见报错:错误的文件系统类型,会报错
文件系统类型? [ext2]? cd
parted: invalid token: cd
常见报错:新划分磁盘分区的起始点位置在其它磁盘的起始结束点位置当中
(parted) mkpart
分区名称? []? xixi
文件系统类型? [ext2]?
起始点? 11G
结束点? 30G
警告: You requested a partition from 11.0GB to 30.0GB (sectors
21484375..58593750).
The closest location we can manage is 20.0GB to 30.0GB (sectors
39061504..58593750).
Is this still acceptable to you?
是/Yes/否/No? n
注意:若新划分磁盘分区的起始点可以不再前一块磁盘的结束点位置创建,但计算位置大小麻烦,不建议此方式划分。
六、SWAP交换空间
用途:利用硬盘的空闲空间充当内存的空间,创建新的分区;当物理内存即将占满,CPU可以将内存中的数据暂时放入交换空间中,缓解真实物理内存的压力;(CPU--->内存--->硬盘)
交换空间最好为内存的2倍,交换空间最大不会超过16G
案例1:利用硬盘分区方式制作交换空间(分区扩展)
1、创建Swap分区
首先添加20G硬盘进行(MBR分区模式)规划分区,划分2个2G的主分区、1个3G的主分区、2个4G的逻辑分区;
步骤1:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdc 252:32 0 20G 0 disk
...[root@localhost ~]# fdisk /dev/vdc
命令(输入 m 获取帮助):n
Partition type:p primary (0 primary, 0 extended, 4 free)e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):n
Partition type:p primary (1 primary, 0 extended, 3 free)e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):n
Partition type:p primary (2 primary, 0 extended, 2 free)e extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+3G
分区 3 已设置为 Linux 类型,大小设为 3 GiB命令(输入 m 获取帮助):n
Partition type:p primary (3 primary, 0 extended, 1 free)e extended
Select (default e):
Using default response e
已选择分区 4
起始 扇区 (14682112-41943039,默认为 14682112):
将使用默认值 14682112
Last 扇区, +扇区 or +size{K,M,G} (14682112-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 13 GiB命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (14684160-41943039,默认为 14684160):
将使用默认值 14684160
Last 扇区, +扇区 or +size{K,M,G} (14684160-41943039,默认为 41943039):+4G
分区 5 已设置为 Linux 类型,大小设为 4 GiB命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (23074816-41943039,默认为 23074816):
将使用默认值 23074816
Last 扇区, +扇区 or +size{K,M,G} (23074816-41943039,默认为 41943039):+4G
分区 6 已设置为 Linux 类型,大小设为 4 GiB命令(输入 m 获取帮助):p
磁盘 /dev/vdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb90c96e4设备 Boot Start End Blocks Id System
/dev/vdc1 2048 4196351 2097152 83 Linux
/dev/vdc2 4196352 8390655 2097152 83 Linux
/dev/vdc3 8390656 14682111 3145728 83 Linux
/dev/vdc4 14682112 41943039 13630464 5 Extended
/dev/vdc5 14684160 23072767 4194304 83 Linux
/dev/vdc6 23074816 31463423 4194304 83 Linux命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdc 252:32 0 20G 0 disk
├─vdc1 252:33 0 2G 0 part
├─vdc2 252:34 0 2G 0 part
├─vdc3 252:35 0 3G 0 part
├─vdc4 252:36 0 1K 0 part
├─vdc5 252:37 0 4G 0 part
└─vdc6 252:38 0 4G 0 part
2、格式化交换分区
格式:mkswap 分区设备 //格式化交换分区
注意:若有多个交换分区设备,优先级越大,当内存不够时就先使用哪个分区的设备
步骤2:
[root@localhost ~]# mkswap /dev/vdc1 //格式化交换分区
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=5ffda770-30ab-45fe-b9a2-7c276241e759[root@localhost ~]# blkid /dev/vdc1 //查看文件系统类型
/dev/vdc1: UUID="5ffda770-30ab-45fe-b9a2-7c276241e759" TYPE="swap"
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO //PRIO数值越大,代表优先级越大
/dev/dm-1 partition 2G 56.5M -1
3、启用/关闭交互分区
- 格式:swapon 或 swapon -s //查看交换分区
- 格式:swapon 分区设备 //启用交互分区
- 格式:swapoff 分区设备 //停用交换分区
- 格式:swapon -a //检测交换分区的书写(类似mount -a)
步骤3:
[root@localhost ~]# swapon /dev/vdc1 //启用交换分区
[root@localhost ~]# swapon //查看交换空间组成的成员信息
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 56.5M -1
/dev/vdc1 partition 2G 0B -2
[root@localhost ~]# free -m //显示内存和交换空间(m代表mb)total used free shared buff/cache available
Mem: 991 689 72 5 229 115
Swap: 4095 56 4039[root@localhost ~]# swapoff /dev/vdc1 //停用交换分区
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 56.1M -1
[root@localhost ~]# free -mtotal used free shared buff/cache available
Mem: 991 688 73 5 229 116
4、开机自启交换分区挂载
步骤4:修改/etc/fstab配置文件
注意:swapon -a专门检测/etc/fstab文件充当交换分区的设备
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 56.1M -1[root@localhost ~]# vim /etc/fstab
/dev/vdc1 swap swap defaults 0 0
[root@localhost ~]# swapoff /dev/vdc1
[root@localhost ~]# swapon
NAME TYPE SIZE USED/ PRIO
/dev/dm-1 partition 2G 55.9M -1
[root@localhost ~]# swapon -a //检测交换分区的书写
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 55.9M -1
/dev/vdc1 partition 2G 0B -2
补充:逻辑卷/dev/centos/swap对应交换空间中的/dev/dm-1设备(逻辑卷充当了交换空间)
[root@localhost ~]# lvscanACTIVE '/dev/centos/swap' [2.00 GiB] inheritACTIVE '/dev/centos/root' [<17.00 GiB] inherit[root@localhost ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 58800 -1
/dev/vdc1 partition 2097148 0 -2[root@localhost ~]# ls -l /dev/centos/swap
lrwxrwxrwx. 1 root root 7 3月 10 16:45 /dev/centos/swap -> ../dm-1
七、扩展Swap空间
利用文件方式创建Swap空间(生成较大的文件占用硬盘空间,并把占用空间提供给交换空间)
格式:dd if=源设备 of=目标设备 bs=块大小 count=块数 //记录读写数据
备注:dd if=数据的源头 of=生成的文件 bs=每次读写数据的大小 count=次数
- /dev/zero设备:拥有无限的数据
注意:swapon支持文件
注意:dd命令一直读写数据,直到系统存储满才结束,of可以协助生成文件
案例2:利用文件方式制作交换空间(文件扩展)
1、创建Swap文件
步骤1:
[root@localhost ~]# dd if=/dev/zero of=/opt/sw.txt bs=1M count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,12.4918 秒,172 MB/秒
[root@localhost ~]# ls -lh /opt/sw.txt
-rw-r--r--. 1 root root 2.0G 3月 10 19:26 /opt/sw.txt
2、格式化交换文件(swap文件系统)
格式:mkswap [-f] 交换文件
选项:[-f] 标识强制执行(force)的意思(与RPM选项相同)
步骤2:
[root@localhost ~]# mkswap /opt/sw.txt //格式化交换文件
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=64da8ee5-86d7-4be4-b05f-ad5e0901aaa8[root@localhost ~]# swapon /opt/sw.txt //启用交换文件
swapon: /opt/sw.txt:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 69308 -1
/dev/vdc1 partition 2097148 0 -2
/opt/sw.txt file 2097148 0 -3
3、开机自动挂载
# vim /etc/fstab
/opt/1.txt swap swap defaults 0 0
小结:
本篇章节为 【第一阶段】ENGINEER-DAY2 的学习笔记,可以初步了解到 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间。除此之外推荐参考相关学习网址:
- 菜鸟教程 - 学的不仅是技术,更是梦想!
Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解
相关文章:
Linux云计算 |【第一阶段】ENGINEER-DAY2
主要内容: 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间 KVM虚拟化 实操前骤: 1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】 2)选择2…...
9.11和9.9哪个大?
没问题 文心一言 通义千问...
学懂C语言(十二):C语言中的二进制原理及应用
目录 1. 二进制原理 1.1 什么是二进制? 1.2 如何在C语言中表示二进制? 2. 二进制的表示 2.1 二进制和其他进制的转换 2.2 C语言中的二进制表示 3. 二进制运算 3.1 位运算符 3.2 计算过程示例 4. 应用示例 4.1 使用位运算实现开关 5. 总结 C语…...
科研绘图系列:R语言雨云图(Raincloud plot)
介绍 雨云图(Raincloud plot)是一种数据可视化工具,它结合了多种数据展示方式,旨在提供对数据集的全面了解。雨云图通常包括以下几个部分: 密度图(Density plot):表示数据的分布情况,密度图的曲线可以展示数据在不同数值区间的密度。箱线图(Box plot):显示数据的中…...
优化教学流程和架构:构建高效学习环境的关键步骤
在教育领域,设计和优化教学流程和架构是提高学习效果和学生参与度的关键。本文将探讨如何通过合理的教学流程和有效的架构来构建一个高效的学习环境。 ### 1. 理解教学流程和架构的重要性 教学流程指的是教学活动的组织和顺序,而教学架构则是指支持教学…...
js | this 指向问题
https://juejin.cn/post/6844904083707396109 任何函数运行的时候,都会创建一个context对象,context对象有一个this对象,在运行的时候决定。任何函数都对应一个reference类结构体(具体叫啥有点忘了),简单就…...
《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》
《昇思 25 天学习打卡营第 15 天 | 基于MindNLPMusicGen生成自己的个性化音乐 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 MusicGen概述 MusicGen是由Meta AI的Jade Copet等人提出的一种基于单个语言模型&…...
Gitee 使用教程1-SSH 公钥设置
一、生成 SSH 公钥 1、打开终端(Windows PowerShell 或 Git Bash),通过命令 ssh-keygen 生成 SSH Key: ssh-keygen -t ed25519 -C "Gitee SSH Key" 随后摁三次回车键(Enter) 2、查看生成的 SSH…...
理解Cookie、Session和Token
在现代Web开发中,用户身份认证和会话管理是至关重要的部分。理解Cookie、Session和Token的区别和应用场景,有助于我们设计出更加安全和高效的Web应用。本文将详细探讨这三者的工作原理、优缺点以及使用场景。 1. Cookie 1.1 什么是Cookie? …...
概率论原理精解【1】
文章目录 测度概述集类笛卡尔积定义例子 多集合的笛卡尔积定义计算方法注意事项 有限笛卡尔积的性质1. 定义2. 性质2.1 基数性质2.2 空集性质2.3 不满足交换律2.4 不满足结合律2.5 对并和交运算满足分配律 3. 示例4. 结论 参考链接 测度 概述 所谓测度,通俗的讲就…...
数据结构(二叉树-1)
文章目录 一、树 1.1 树的概念与结构 1.2 树的相关术语 1.3 树的表示 二、二叉树 2.1 二叉树的概念与结构 2.2特殊的二叉树 满二叉树 完全二叉树 2.3 二叉树的存储结构 三、实现顺序结构二叉树 3.1 堆的概念与结构 3.2 堆的实现 Heap.h Heap.c 默认初始化堆 堆的销毁 堆的插入 …...
巴黎奥运会倒计时 一个非常不错的倒计时提醒
巴黎奥运会还有几天就要开幕了,大家应该到处都可以看到巴黎奥运会的倒计时,不管是电视上,还是网络里,一搜索奥运会,就会看到。倒计时其实是一个我们在生活中很常用的一个方法,用来做事情的提醒,…...
【Python】使用库 -- 详解
库就是别人已经写好了的代码,可以让我们直接拿来用。 一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在…...
Web3D:WebGL为什么在渲染性能上输给了WebGPU。
WebGL已经成为了web3D的标配,市面上有N多基于webGL的3D引擎,WebGPU作为挑战者,在渲染性能上确实改过webGL一头,由于起步较晚,想通过这个优势加持,赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…...
SpringBoot面试高频总结01
1. 什么是SpringBoot? SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序。 相比于传统的Spring框架,S…...
Linux 工作队列(Workqueue):概念与实现
目录 一、工作队列的概念1.1 什么是工作队列1.2 为什么使用工作队列 二、工作队列的实现2.1 定义和初始化工作队列2.2 工作队列API 三、工作队列的应用3.1 延迟执行任务3.2 处理复杂的中断任务 四、工作队列的类型4.1 普通工作队列4.2 高优先级工作队列 五、总结 在Linux内核中…...
前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法
文章目录 1.了解禁止查看,爬取原理1.1.JS代码,屏蔽屏蔽键盘和鼠标右键1.2.查看源码时,通过JS控制浏览器窗口变化2.百度文库是如何防止抓包2.1.HTPPS2.2. 动态加载为什么看不到?如何查看动态加载的内容?3.禁止复制,如果解决3.1.禁止复制原理3.2.如何破解1.了解禁止查看,爬…...
51单片机嵌入式开发:14、STC89C52RC 之HX1838红外解码NEC+数码管+串口打印+LED显示
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单…...
在不同环境中,Java应用程序和MySQL等是如何与Docker进行交互和操作的?
1. 本地开发环境 在本地开发环境中,可以使用Docker Compose来管理和运行Java应用程序容器和MySQL容器。通常,会创建一个docker-compose.yml文件,定义需要的服务及其配置。 以下是一个示例docker-compose.yml文件: version: 3 services:app…...
《DRL》P10-P15-损失函数-优化(梯度下降和误差的反向传播)
文章目录 损失函数交叉熵损失多类别分类任务概述真实标签的独热编码交叉熵损失函数 L p 范式 \mathcal{L}_{p}\text{ 范式} Lp 范式均方误差平均绝对误差 优化梯度下降和误差的反向传播 简介 本文介绍了神经网络中的损失函数及其优化方法。损失函数用于衡量模型预测值与真实值…...
Spring Boot项目的404是如何发生的
问题 在日常开发中,假如我们访问一个Sping容器中并不存在的路径,通常会返回404的报错,具体原因是什么呢? 结论 错误的访问会调用两次DispatcherServlet:第一次调用无法找到对应路径时,会给Response设置一个…...
<数据集>手势识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:2400张 标注数量(xml文件个数):2400 标注数量(txt文件个数):2400 标注类别数:5 标注类别名称:[fist, no_gesture, like, ok, palm] 序号类别名称图片数框数1fist597…...
【Vue3】选项式 API
【Vue3】选项式 API 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。…...
2、如何发行自己的数字代币(truffle智能合约项目实战)
2、如何发行自己的数字代币(truffle智能合约项目实战) 1-Atom IDE插件安装2-truffle tutorialtoken3-tutorialtoken源码框架分析4-安装openzeppelin代币框架(代币发布成功) 1-Atom IDE插件安装 正式介绍基于web的智能合约开发 推…...
百日筑基第二十三天-23种设计模式-创建型总汇
百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类: 创建型模式,共五种:单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式,共…...
张量的基本使用
目录 1.张量的定义 2.张量的分类 3.张量的创建 3.1 根据已有数据创建张量 3.2 根据形状创建张量 3.3 创建指定类型的张量 1.张量的定义 张量(Tensor)是机器学习的基本构建模块,是以数字方式表示数据的形式。PyTorch就是将数据封装成张量…...
Oracle(14)什么是唯一键(Unique Key)?
唯一键(Unique Key)是数据库表中的一个或多个列,它们的值必须在整个表中唯一,但允许包含NULL值。唯一键的主要目的是确保表中每一行的数据在指定的列(或列组合)中是唯一的,以防止重复数据的出现…...
PostgreSQL的引号、数据类型转换和数据类型
一、单引号和双引号(重要): 1、在mysql没啥区别 2、在pgsql中,实际字符串用单引号,双引号相当于mysql的,用来包含关键字; -- 单引号,表示user_name的字符串实际值 insert into t_user(user_nam…...
Mad MAD Sum-Codeforces Round 960 (Div. 2)
题目在这里 大意: MAD函数返回出现次数 ≥ 2 \geq2 ≥2的最大整数 b i b_i bi M A D ( a [ 1 , 2 , . . . i ] ) MAD(a[1,2,...i]) MAD(a[1,2,...i]) 每次操作把 a i a_i ai进行上述操作,直到全变为0为止,对每次操作的数组进行求和,记…...
Flutter 插件之 package_info_plus
当使用Flutter开发应用时,通常需要获取应用程序的基本信息,例如包名、版本号和构建号。Flutter提供了一个名为 package_info_plus 的插件,它能方便地帮助我们获取这些信息。 1. 添加依赖 首先,需要在项目的 pubspec.yaml 文件中添加 package_info_plus 的依赖。打开 pubs…...
可以做bim实操题的网站/小程序推广方案
Creo5中如何进行单位的换算 提到绘图单位,在机械行业,默认的图纸单位都是:mm。因为我们国家的机械制图国家标准做了规定。但是都必须在图形右下方的标题栏中进行注明 但是作为初学者,有的时候,建立新文件的时候,没有…...
网站建设维护公司地址/线上宣传渠道和宣传方式
文章目录1.禁止滚动2.tableView的高度等于内容(所有cell)的高度3.如果cell的高度会根据内容变化,那边就不能用tableView.estimatedRowHeight来自动行高,需要提前手动算出cell的高度1.禁止滚动 tableView.isScrollEnabled falseiOS UITableView 禁止滑动…...
做湘菜的网站/seo关键词优化技术
删除iphone中/System/Library/PrivateFrameworks/IAP.framework/Support/目录下的iapd文件 进入/SYSTEM/Library/LaunchDaemons/ 目录然后删除 com.apple.iapd.plist 文件转载于:https://www.cnblogs.com/ctacy/p/6114191.html...
怎么在网站做推广/网站加速器
Redis有自己的内存分配器,当key-value对象被移除时,Redis不会马上向操作系统释放其占用内存。redis之所以这样的设计有两个原因。 OS可能会将释放内存交换到虚拟内存,但OS的虚拟内存又是物理文件,其IO读写效率较低,从而…...
网站开发设计工具/网站关键词排名分析
对于该教程而言,缺少了删除已存在的电影记录的功能。因此,我在这里给出删除功能的代码供大家参考学习。 另外,需要注意的是要为VS2008打上SP1服务包,不然就不能使用ADO.NET Entity Data Model功能了。附按本教程制作的MovieDataba…...
专业型企业网站有哪些/广东网站营销seo费用
传送门 分析 从1道m进行匹配,找到第一个不能继续匹配的点即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstd…...