Linux系统常见磁盘扩容操作(Common Disk Expansion Operations in Linux Systems)
Linux系统常见磁盘扩容操作
目录说明
一、准备工作:获取目标磁盘信息
(1)确认分区表格式和文件系统
二、扩容已有MBR分区
(1)分区后扩容
-
-
ext为例
-
xfs为例
-
三、扩容已有GPT分区
(1)分区后扩容
-
-
ext为例
-
xfs为例
-
四、未分区扩容
-
-
ext为例
-
xfs为例
-
五、LVM
(1)通过LVM创建逻辑卷
-
-
ext为例
-
xfs为例
-
(2)扩容逻辑卷
方式一:扩容磁盘以扩容逻辑卷容量
-
-
-
ext为例
-
xfs为例
-
-
方式二:新增磁盘以扩容逻辑卷容量
-
-
-
ext为例
-
xfs为例
-
-
一、准备工作:获取目标磁盘信息
(1)确认分区表格式和文件系统
运行以下命令确认数据盘的分区表格式
[root@itgank ~]#fdisk -lu /dev/sda
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 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: 0x9277b47b
Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux
注意:Disk label type的值为dos则分区是MBR,若该结果的值为gpt则分区是GPT
运行以下命令确认已有分区的文件系统类型
[root@itgank ~]# blkid /dev/vdb1
/dev/vdb1: UUID="e97bf1e2-fc84-4c11-9652-73********24" TYPE="ext4"
注意:TYPE的值为ext4则文件系统类型为ext4,若该结果的值为xfs则文件系统类型为xfs
ext*文件系统使用resize2fs命令扩容文件系统 xfs文件系统使用 xfs_growfs命令扩容文件系统
说明
为了防止数据丢失,不建议扩容已挂载的分区和文件系统。请先取消挂载(umount)分区,完成扩容并正常使用后,重新挂载(mount)。针对不同的Linux内核版本,推荐以下操作方式:
-
实例内核版本小于3.6:先取消挂载该分区,再修改分区表,最后扩容文件系统。
-
实例内核版本大于等于3.6:先修改对应分区表,再通知内核更新分区表,最后扩容文件系统。
二、扩容已有MBR分区
fdisk命令主要用于 MBR分区表的操作
-
MBR: MBR 分区表支持最多四个主分区,其中一个可以是扩展分区,该扩展分区可以包含多个逻辑分区。由于 MBR 使用32位的扇区偏移值来寻址,因此 MBR 分区表的最大容量为2 TB
(1)分区后扩容
/dev/sdb有10G,只有一个分区/dev/sdb1。将其扩大至20G,将新增的10G划分至已有的/dev/sdb1内
ext为例
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 ext4 9.8G 37M 9.2G 1% /data
执行以下命令,安装growpart扩容工具
yum install cloud-utils-growpart -y
[root@itgank ~]# echo 1 > /sys/block/sdb/device/rescan #如果数据盘扩容后容量大小未变执行此命令让内核扫描并重新识别连接到sdb磁盘的所有磁盘驱动器
[root@itgank ~]# growpart /dev/sdb 1
CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=41940959 end=41943007
[root@itgank ~]# resize2fs /dev/sdb1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/sdb1 is mounted on /data; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/sdb1 is now 5242619 blocks long.
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 ext4 20G 44M 19G 1% /data
如果不使用growpart命令 手动扩容如下
[root@itgank ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p #查看分区
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x2e714d05
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
Command (m for help): d #删除当前1分区 切记不要w保存退出 会造成数据丢失
Selected partition 1
Partition 1 is deleted
Command (m for help): n #选择分区类型
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #选择主分区
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x2e714d05
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
Command (m for help): w #以上操作保存退出 如果中途命令输入错误 ctrl+c回退所有命令 重头再开始
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)
Syncing disks.
[root@itgank ~]# partprobe
[root@itgank ~]# resize2fs /dev/sdb1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/sdb1 is mounted on /data; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/sdb1 is now 5242624 blocks long.
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 ext4 20G 44M 19G 1% /data
xfs为例
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 xfs 9.8G 37M 9.2G 1% /data
执行以下命令,安装growpart扩容工具
yum install cloud-utils-growpart -y
[root@itgank ~]# echo 1 > /sys/block/sdb/device/rescan #如果数据盘扩容后容量大小未变执行此命令让内核扫描并重新识别连接到sdb磁盘的所有磁盘驱动器
[root@itgank ~]# growpart /dev/sdb 1
CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=41940959 end=41943007
[root@itgank ~]# xfs_growfs /dev/sdb1
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 xfs 20G 44M 19G 1% /data
如果不使用growpart命令 手动扩容如下
[root@itgank ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p #打印分区表
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x2e714d05
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
Command (m for help): d #删除分区
Selected partition 1
Partition 1 is deleted
Command (m for help): n #选择主分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #默认选择primary
Partition number (1-4, default 1): #默认选择1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x2e714d05
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
Command (m for help): w #保存修改并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)
Syncing disks.
[root@itgank ~]# partprobe
[root@itgank ~]# xfs_growfs /dev/sdb1
meta-data=/dev/sdf isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 xfs 20G 44M 19G 1% /data
三、扩容已有GPT分区
parted命令主要用于 GPT分区表的操作
-
GPT: GPT 分区表支持更大的硬盘容量。它使用64位的逻辑块地址,因此可以支持超过2 TB的硬盘容量
(1)分区后扩容
ext为例
/dev/sdf1有10G。将数据盘容量扩大至20G,将新增的10G划分至已有的/dev/sdf1内
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 20M 1.9G 2% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata ext4 689G 69M 658G 1% /data
/dev/sdf1 ext4 9.8G 37M 9.2G 1% /aaa
[root@itgank ~]# parted /dev/sdf
GNU Parted 3.1
Using /dev/sdf
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the
disk is smaller. Fix, by moving the backup to the end (and removing the old backup)?
Fix/Ignore/Cancel? Fix #若界面提示Fix/Ignore/Cancel?和Fix/Ignore?,均输入Fix即可
Warning: Not all of the space available to /dev/sdf appears to be used, you can fix the GPT to use all of the space (an extra 20971520
blocks) or continue with the current setting?
Fix/Ignore? Fix
Model: VMware Virtual disk (scsi)
Disk /dev/sdf: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 10.7GB 10.7GB ext4 primary
(parted) rm 1 #删除1分区
(parted) mkpart primary 1049kB 100% #原分区的起始扇区为1049kB,且要将扩容后的总容量全部分配给该分区
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdf: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 21.5GB 21.5GB ext4 primary
(parted) quit #退出
Information: You may need to update /etc/fstab.
[root@itgank ~]# resize2fs /dev/sdf1
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/sdf1' first.
[root@itgank ~]# e2fsck -f /dev/sdf1 #检测磁盘
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdf1: 11/655360 files (0.0% non-contiguous), 83137/2620928 blocks
[root@itgank ~]# resize2fs /dev/sdf1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/sdf1 to 5242368 (4k) blocks.
The filesystem on /dev/sdf1 is now 5242368 blocks long.
[root@itgank ~]# mount /dev/sdf1 /aaa
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 20M 1.9G 2% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata ext4 689G 69M 658G 1% /data
/dev/sdf1 ext4 20G 44M 19G 1% /aaa
xfs为例
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 20M 1.9G 2% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata ext4 689G 69M 658G 1% /data
/dev/sdf1 xfs 10G 33M 10G 1% /aaa
[root@itgank ~]# parted /dev/sdf
GNU Parted 3.1
Using /dev/sdf
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the
disk is smaller. Fix, by moving the backup to the end (and removing the old backup)?
Fix/Ignore/Cancel? fix
Warning: Not all of the space available to /dev/sdf appears to be used, you can fix the GPT to use all of the space (an extra 20971520
blocks) or continue with the current setting?
Fix/Ignore? fix
Model: VMware Virtual disk (scsi)
Disk /dev/sdf: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 10.7GB 10.7GB xfs primary
(parted) rm 1
(parted) mkpart primary 1049kB 100%
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdf: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 21.5GB 21.5GB xfs primary
(parted) quit
Information: You may need to update /etc/fstab.
[root@itgank ~]# mount /dev/sdf1 /aaa
[root@itgank ~]# xfs_growfs /aaa
meta-data=/dev/sdf1 isize=512 agcount=4, agsize=655232 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2620928, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2620928 to 5242368
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 20M 1.9G 2% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata ext4 689G 69M 658G 1% /data
/dev/sdf1 xfs 20G 33M 20G 1% /aaa
[root@itgank ~]#
四、未分区扩容
/dev/sdb有10G,未分区直接挂载。将数据盘容量扩大至20G,将新增的10G划分至已有的/dev/sdb内
ext为例
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb ext4 9.8G 37M 9.2G 1% /data
[root@itgank ~]# echo 1 > /sys/block/sdb/device/rescan
[root@itgank ~]# resize2fs /dev/sdb
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/sdb is mounted on /data; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/sdb is now 5242880 blocks long.
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb ext4 20G 44M 19G 1% /data
xfs为例
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb xfs 9.8G 37M 9.2G 1% /data
[root@itgank ~]# echo 1 > /sys/block/sdb/device/rescan
[root@itgank ~]# xfs_growfs /dev/sdb
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb xfs 20G 44M 19G 1% /data
五、LVM
(1)通过LVM创建逻辑卷
三块大小为100G的磁盘,通过LVM创建逻辑卷并挂载目录
ext为例
[root@itgank ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 55G 0 disk
├─sda1 8:1 0 800M 0 part /boot
├─sda2 8:2 0 39.2G 0 part
│ ├─centos-root 253:0 0 52.2G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
├─sda3 8:3 0 5G 0 part
│ └─centos-root 253:0 0 52.2G 0 lvm /
└─sda4 8:4 0 10G 0 part
└─centos-root 253:0 0 52.2G 0 lvm /
sdb 8:16 0 100G 0 disk
sdc 8:32 0 100G 0 disk
sdd 8:48 0 100G 0 disk
sr0 11:0 1 1024M 0 rom
[root@itgank ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[root@itgank ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@itgank ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
[root@itgank ~]# vgcreate vgdata /dev/sdb
Volume group "vgdata" successfully created
[root@itgank ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 3 2 0 wz--n- <54.21g 0
vgdata 1 0 0 wz--n- <100.00g <100.00g
[root@itgank ~]# vgextend vgdata /dev/sdc
Volume group "vgdata" successfully extended
[root@itgank ~]# vgextend vgdata /dev/sdd
Volume group "vgdata" successfully extended
[root@itgank ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 3 2 0 wz--n- <54.21g 0
vgdata 3 0 0 wz--n- <299.99g <299.99g
[root@itgank ~]# lvcreate -l 100%FREE -n lvdata vgdata
Logical volume "lvdata" created.
[root@itgank ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <52.21g
swap centos -wi-ao---- 2.00g
lvdata vgdata -wi-a----- <299.99g
[root@itgank ~]# mkfs -t ext4 /dev/vgdata/lvdata
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
19660800 inodes, 78640128 blocks
3932006 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2227175424
2400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@itgank ~]# mount /dev/vgdata/lvdata /data
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata ext4 296G 65M 281G 1% /data
[root@itgank ~]# vim /etc/fstab #末尾添加
/dev/mapper/vgdata-lvdata /data ext4 defaults 0 0
xfs为例
[root@itgank ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 55G 0 disk
├─sda1 8:1 0 800M 0 part /boot
├─sda2 8:2 0 39.2G 0 part
│ ├─centos-root 253:0 0 52.2G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
├─sda3 8:3 0 5G 0 part
│ └─centos-root 253:0 0 52.2G 0 lvm /
└─sda4 8:4 0 10G 0 part
└─centos-root 253:0 0 52.2G 0 lvm /
sdb 8:16 0 100G 0 disk
sdc 8:32 0 100G 0 disk
sdd 8:48 0 100G 0 disk
sr0 11:0 1 1024M 0 rom
[root@itgank ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[root@itgank ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@itgank ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
[root@itgank ~]# vgcreate vgdata /dev/sdb
Volume group "vgdata" successfully created
[root@itgank ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 3 2 0 wz--n- <54.21g 0
vgdata 1 0 0 wz--n- <100.00g <100.00g
[root@itgank ~]# vgextend vgdata /dev/sdc
Volume group "vgdata" successfully extended
[root@itgank ~]# vgextend vgdata /dev/sdd
Volume group "vgdata" successfully extended
[root@itgank ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 3 2 0 wz--n- <54.21g 0
vgdata 3 0 0 wz--n- <299.99g <299.99g
[root@itgank ~]# lvcreate -l 100%FREE -n lvdata vgdata
Logical volume "lvdata" created.
[root@itgank ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <52.21g
swap centos -wi-ao---- 2.00g
lvdata vgdata -wi-a----- <299.99g
[root@itgank ~]# mkfs -t xfs /dev/vgdata/lvdata
[root@itgank ~]# mount /dev/vgdata/lvdata /data
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata xfs 296G 65M 281G 1% /data
[root@itgank ~]# vim /etc/fstab #末尾添加
/dev/mapper/vgdata-lvdata /data xfs defaults 0 0
(2)扩容逻辑卷
方式一:扩容磁盘以扩容逻辑卷容量
其中一块磁盘扩容到200G 如何扩容逻辑卷
ext为例
[root@itgank ~]# pvresize /dev/sdb
Physical volume "/dev/sdb" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@itgank ~]# lvextend -l +100%FREE /dev/vgdata/lvdata
Size of logical volume vgdata/lvdata changed from <299.99 GiB (76797 extents) to <399.99 GiB (102397 extents).
Logical volume vgdata/lvdata successfully resized.
[root@itgank ~]# resize2fs /dev/vgdata/lvdata
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vgdata/lvdata is mounted on /data; on-line resizing required
old_desc_blocks = 38, new_desc_blocks = 50
The filesystem on /dev/vgdata/lvdata is now 104854528 blocks long.
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata ext4 394G 72M 375G 1% /data=
xfs为例
[root@itgank ~]# pvresize /dev/sdb
Physical volume "/dev/sdb" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@itgank ~]# lvextend -l +100%FREE /dev/vgdata/lvdata
Size of logical volume vgdata/lvdata changed from <299.99 GiB (76797 extents) to <399.99 GiB (102397 extents).
Logical volume vgdata/lvdata successfully resized.
[root@itgank ~]# xfs_growfs /dev/vgdata/lvdata
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata xfs 394G 72M 375G 1% /data
方式二:新增磁盘以扩容逻辑卷容量
新增一块200G磁盘sde 如何增加到逻辑卷
ext为例
t@itgank ~]# pvcreate /dev/sde
Physical volume "/dev/sde" successfully created.
[root@itgank ~]# vgextend vgdata /dev/sde
Volume group "vgdata" successfully extended
[root@itgank ~]# lvextend -l +100%FREE /dev/mapper/vgdata-lvdata
Size of logical volume vgdata/lvdata changed from <499.99 GiB (127997 extents) to 699.98 GiB (179196 extents).
Logical volume vgdata/lvdata successfully resized.
[root@itgank ~]# resize2fs /dev/mapper/vgdata-lvdata
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vgdata-lvdata is mounted on /data; on-line resizing required
old_desc_blocks = 63, new_desc_blocks = 88
The filesystem on /dev/mapper/vgdata-lvdata is now 183496704 blocks long.
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 20M 1.9G 2% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vgdata-lvdata ext4 689G 69M 658G 1% /data
xfs为例
[root@itgank ~]# pvcreate /dev/sde
Physical volume "/dev/sde" successfully created.
[root@itgank ~]# vgextend vgdata /dev/sde
Volume group "vgdata" successfully extended
[root@itgank ~]# lvextend -l +100%FREE /dev/mapper/vgdata-lvdata
Size of logical volume vgdata/lvdata changed from <499.99 GiB (127997 extents) to 699.98 GiB (179196 extents).
Logical volume vgdata/lvdata successfully resized.
[root@itgank ~]# xfs_growfs /dev/mapper/vgdata-lvdata
[root@itgank ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 20M 1.9G 2% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 53G 3.2G 50G 6% /
/dev/sda1 xfs 797M 151M 647M 19% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0/dev/mapper/vgdata-lvdata xfs 689G 69M 658G 1% /data
相关文章:
Linux系统常见磁盘扩容操作(Common Disk Expansion Operations in Linux Systems)
Linux系统常见磁盘扩容操作 目录说明 一、准备工作:获取目标磁盘信息 (1)确认分区表格式和文件系统 二、扩容已有MBR分区 (1)分区后扩容 ext为例 xfs为例 三、扩容已有GPT分区 (1)分区…...
【UE5 C++】“ProceduralMeshComponent”的使用记录
效果 如下所示,通过“ProceduralMeshComponent”创建了一个自定义形状的Mesh,并且该Mesh包含碰撞信息,然后2s后更新Mesh形状。 步骤 1. 在“xxx.Build.cs”中引入“ProceduralMeshComponent”模块 2. 新建一个Actor类,这里命名为…...
源代码加密之零日攻击
# SDC沙盒:有效防御零日攻击的多层防护体系 在当今复杂多变的网络安全环境中,零日攻击已成为企业面临的重大威胁之一。零日攻击利用尚未被公众发现或尚未被软件供应商修复的漏洞进行攻击,具有极高的隐蔽性和破坏性。SDC沙盒作为一种先进的数…...
Vue2 集成VTK.js 并显示3D影像
Vue2 集成VTK.js 并显示3D影像(核心代码) 作者:coder_fang vtk.js目前官网只有vue3的示例,对于已有vue2系统的集成,需要使用指定版本的vtk,itk等库并修改部分配置即可。 需要的主要库和版本: vue:2.3.4; vtk-v32.9.0.min.js,itk-wasm.min.…...
本地git操作
一、初始化与基础操作 1. 初始化仓库 git init # 当前目录新建仓库 git init <目录名> # 指定目录初始化 2. 查看状态 git status # 显示工作区和暂存区状态 git status -s # 简洁版状…...
AI的出现,是否能替代IT从业者?
*AI在IT领域中的应用已成趋势,IT 从业者们站在这风暴之眼,面临着一个尖锐问题:AI 是否会成为 “职业终结者”?有人担忧 AI 将取代 IT 行业的大部分工作,也有人坚信 IT 从业者的专业技能与创新思维无可替代。那么&#…...
3、组件:魔法傀儡的诞生——React 19 组件化开发全解析
一、开篇:魔法傀儡的觉醒 "每个React组件都像一具魔法傀儡,"邓布利多校长挥动魔杖,空中浮现出闪烁的代码字符,"它们能自主思考、协同工作,甚至能跨越时空(服务器与客户端)执行任…...
Vue 解决 Error: please transfer a valid prop path to form item!
在 Vue.js 中使用表单验证库(如 VeeValidate 或 Element UI 的表单组件时),遇到错误信息 "please transfer a valid prop path to form item!" 通常指的是在表单项的属性绑定中,路径(prop path)不…...
day29 第八章 贪心算法 part03
134. 加油站 “可以换一个思路,首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈,说明 各个站点的加油站 剩油量rest[i]相加一定是大于等于零的。 每个加油站的剩余量rest[i]为gas[i] - cost[i]。 i从0开始累加rest[i],和记为curSum…...
贪心算法(19)(java)重构字符串
题目:给定一个字符串 s ,检查是否能重新排布其中的字母,使得两相邻的字符不同。 返回 s 的任意可能的重新排列。若不可行,返回空字符串 "" 。 示例 1: 输入: s "aab" 输出: "aba"示例 2: 输入:…...
Linux下C语言与OpenGL游戏开发指南
1. 为什么选择 Linux C OpenGL? 跨平台兼容性:OpenGL 是跨平台的图形 API,编写的代码稍作修改即可在 Windows/macOS 上运行。 性能控制:C 语言提供底层内存管理和硬件访问能力,适合高性能游戏开发。 开源生态&…...
深入 Java 正则表达式源码:透视 Matcher.group(int) 的分组提取机制
在 Java 中,正则表达式无疑是文本处理的重要工具。而 Matcher.group(int group) 是其中非常关键的一个方法,它用于提取正则中的分组内容。今天我们不仅通过一个例子来看它的使用方法,还会结合底层源码,深入理解它背后的机制。 实…...
解决 Spring Boot 启动报错:数据源配置引发的启动失败
启动项目时,控制台输出了如下错误信息: Error starting ApplicationContext. To display the condition evaluation report re-run your application with debug enabled. 2025-04-14 21:13:33.005 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporte…...
【深度学习的骨架与脉搏】语义分割的卷积神经网络·U-Net
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀《深度学习理论直觉三十讲》_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 …...
ELK+Filebeat 深度部署指南与实战测试全解析
一、介绍 ELK: ELasticsearch ,Logstash,Kibana三大开源框架首字母简写,市面上也被称为Elastic Stack。 Elasticsearch 是一个基于 Lucene 的分布式搜索平台框架,通过 Restful 方式进行交互,具备近实时搜索能力。像百度、Google 这类大数据全…...
Java设计模式之中介者模式:从入门到架构级实践
一、什么是中介者模式? 中介者模式(Mediator Pattern)是一种行为型设计模式,其核心思想是通过引入一个中介对象来封装多个对象之间的交互关系。这种模式将原本复杂的网状通信结构转换为星型结构,类似于现实生活中的机…...
L2TP通道基础实验
目录 实验拓扑: 一、需求配置LAC设置: 界面设置: 编辑LNS设置: 建立静态路由:编辑 策略配置: 二、测试 通讯测试: 实验拓扑: 一、需求配置 LAC设置: [LAC]l2…...
关于字节跳动旗下的豆包(DouBao)软件的详解、核心功能以及与同类产品的对比分析
以下是关于豆包(DouBao)软件的详解、核心功能以及与同类产品的对比分析: 一、豆包(DouBao)详解 豆包是字节跳动推出的一款多功能人工智能助手,主打“智能助手场景化工具”结合,覆盖日常生活、…...
如何在本地修改 Git 项目的远程仓库地址
✅ 场景说明 你当前的 Git 项目地址是: http://192.168.0.16/xxx.git你希望把它改成: http://192.168.0.22:8099/xxx.git🧩 操作步骤 步骤 ①:进入项目所在目录 你已经在正确路径下了: cd C:\Develop\xxx确认这个…...
Gitea 1.23.7 速配
复用容器内的postgresql CREATE USER gitea WITH PASSWORD gitea; CREATE DATABASE gitea; GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea; docker-compose.yml 内容 gitea:image: gitea/gitea:latestcontainer_name: giteaenvironment:- GITEA__server__HTTP_ADDR0.0.0.…...
JavaScript — 函数定义
介绍 JavaScript函数是执行特定任务的代码块,可通过多种方式定义。传统函数声明使用function关键字,后接函数名和参数列表,这种声明会被提升至作用域顶部。函数表达式则将匿名或具名函数赋值给变量,遵循变量作用域规则࿰…...
Allure安装与使用【macOS】
安装: brew install allure 安装插件: pip install allure-pytest2.8.16 生成一个html格式的报告,步骤: 执行生成json,制定结果保存目录 pytest --alluredirreport test_demo.py 查看测试保报告方式 将json转成h…...
FireCrawl爬虫工具, Craw4ai
FireCrawl是一款开源的AI爬虫工具,专门用于Web数据提取,并将其转换为Markdown格式或其他结构化数据。FireCrawl特别适合处理使用JavaScript动态生成的网站,能够自动抓取网站及其所有可访问的子页面内容,并将其转换为适合大语言…...
【Python爬虫】详细入门指南
目录 一、简单介绍 二、详细工作流程以及组成部分 三、 简单案例实现 一、简单介绍 在当今数字化信息飞速发展的时代,数据的获取与分析变得愈发重要,而网络爬虫技术作为一种能够从互联网海量信息中自动抓取所需数据的有效手段,正逐渐走入…...
Cesium.Cesium3DTileset设置贴地,tileset.readyPromise.then报错
tileset.readyPromise.then(function(tileset) { }); 用的readyPromise函数,却报错了,通过参考别人的博客内容发现最终修改的是 modelMatrix这个参数的内容,所以直接舍弃使用readyPromise函数,在代码中等 viewer.scene.primitiv…...
卫星电话扬帆智慧海洋,构筑蓝海通信新生态
海洋,承载着全球90%的贸易运输量,更是我国“向海图强”战略的核心战场。但是,全球95%的海洋区域仍处于蜂窝网络覆盖的“真空地带”,近海信号不稳、远洋通信中断的难题长期制约着海洋经济的纵深发展。技术革新是推动发展的强大引擎…...
大模型不是在推理,只是在复述??
目的 看见一篇论文Recitation over Reasoning: How Cutting-Edge Language Models Can Fail on Elementary School-Level Reasoning Problems?,论文中建立了一个推理题库,通过将推理问题进行改写(通过只改写几个字,颠覆整个问题…...
安全编码课程 实验7 并发
实验项目:C 多线程中的数据竞争与同步机制 实验要求: 1. 编写基础代码:模拟账户余额取款 创建一个全局共享变量 int balance 100,表示初始余额; 创建两个线程 Thread A 和 Thread B,尝试各自取出 100 元&a…...
【vue】2.16简单案例
一、高亮显示点击文字 使用vue绑定页面 设置默认样式 使用for循环数组数据展示,并取得索引 创建点击事件并传承,创建num变量 方法中num传进来的参数, 在内容中使用:class和三元运算符,当numkey时是true显示,…...
多线程进阶知识篇(一)
文章目录 一、开启线程1. start()2. run() 二、单核/多核CPU1. 单核CPU2. 多核CPU3.烧水问题 三、操作线程的命令四、并发的本质五、线程上下文切换1. 定义2. 原因 一、开启线程 1. start() 调用 start() 方法会启动一个新的线程,每次调用 start(),线程…...
【benepar】benepar安装会自动更新pytorch
直接pip install benepar,安装benepar0.2.0时会自动更新torch的版本 解决方法:去https://pypi.org/project/benepar/0.1.3/找历史版本 我的适配版本:python3.9,torch1.11.0(cuda11.3),对应的ben…...
智能云图库-1-项目初始化
项目中的异常处理 自定义异常 在exception包下新建错误码枚举类: Getter public enum ErrorCode {SUCCESS(0, "ok"),PARAMS_ERROR(40000, "请求参数错误"),NOT_LOGIN_ERROR(40100, "未登录"),NO_AUTH_ERROR(40101, "无权限&q…...
每日算法-250414
每日算法学习记录 - 240414 记录今天学习和解决的两道 LeetCode 算法题,主要涉及二分查找的应用。 162. 寻找峰值 题目描述 思路分析 核心思想:二分查找 题目要求找到数组中的任意一个峰值。峰值定义为比其相邻元素都大的元素。题目还隐含了一个条件…...
鸿蒙NEXT开发格式化工具类(ArkTs)
import { i18n } from kit.LocalizationKit;/*** 格式化工具类* 提供电话号码格式化、归属地查询、字符转换等功能。* author: 鸿蒙布道师* since: 2025/04/14*/ export class FormatUtil {/*** 判断传入的电话号码格式是否正确。* param phone - 待验证的电话号码* param coun…...
HarmonyOS 第2章 Ability的开发,鸿蒙HarmonyOS 应用开发入门
第2章 Ability的开发 本章内容 本章介绍HarmonyOS的核心组件Ability的开发。 2.1 Ability概述 2.2 FA模型介绍 2.3 Stage模型介绍 2.4 Ability内页面的跳转和数据传递 2.5 Want概述 2.6 实战:显式Want启动Ability 2.7 实战:隐式Want打开应用管理 2.8 小结 2.9 习题 2.1 Abili…...
CS5346 - Interactivity in Visualization 可视化中的交互
文章目录 Visualization representation interactionInteraction (交互)Benefits (好处)Typical Interaction Techniques(交互技术)SelectFilteringAbstract / Elaborate几何放缩(Geometric zoom)语义放缩࿰…...
AI与我共创WEB界面
记录一次压测后的自我技术提升 这事儿得从机房停电说起。那天吭哧吭哧做完并发压测,正准备截Zabbix监控图写报告,突然发现监控曲线神秘失踪——系统组小哥挠着头说:“上次停电后,zabbix服务好像就没起来过…” 我盯着空荡荡的图表界面,大脑的CPU温度可能比服务器还高。 其…...
python蓝桥杯备赛常用算法模板
一、python基础 (一)集合操作 s1 {1,2,3} s2{3,4,5} print(s1|s2)#求并集 print(s1&s2)#求交集 #结果 #{1, 2, 3, 4, 5} #{3}(二)对多维列表排序 1.新建列表 list1[[1,2,3],[2,3,4],[0,3,2]] #提取每个小列表的下标为2的…...
代码随想录第17天:二叉树
一、二叉搜索树的最近公共祖先(Leetcode 235) 由于是二叉搜索树,节点的值有严格的顺序关系:左子树的节点值都小于父节点,右子树的节点值都大于父节点。利用这一点,可以在树中更高效地找到最低公共祖先。 c…...
第8篇:Linux程序访问控制FPGA端HEX<一>
Q:如何从DE1-SoC_Computer系统的ARM A9处理器访问FPGA端的七段数码管呢? A:DE1-SoC_Computer系统中有2个连接FPGA端HEX外设的并行端口HEX5_HEX4和HEX3_HEX0,每个端口有一个32位只读Data寄存器。地址为0xFF200020的寄存器驱动4个数…...
Android 添加一个自己的系统服务SystemService
Android 系统服务(System Services)是 Android 操作系统的核心组件,运行在系统层面,为应用程序提供底层硬件访问、系统资源管理以及跨应用功能支持。这些服务在后台持续运行,由系统进程(如 system_server&a…...
git安装(windows)
通过网盘分享的文件:资料(1) 链接: https://pan.baidu.com/s/1MAenYzcQ436MlKbIYQidoQ 提取码: evu6 点击next 可修改安装路径 默认就行 一般从命令行调用,所以不用创建。 用vscode,所以这么选择。...
C# visionpro联合编程中遇到的问题之 R6025 - pure virtual function call
C# visionpro联合编程中遇到的问题之 R6025 - pure virtual function call R6025 pure virtual function call解决方法步骤 1: 获取所有相机步骤 2: 遍历并关闭相机完整代码 R6025 pure virtual function call 如果错误 “R6025 - pure virtual function call” 发生在关闭窗体…...
OTA技术(一):原理与实现方案
目录 一.引言 二.核心原理 2.1 定义与分类 2.2 系统架构 2.3 典型的升级流程 三.嵌入式系统中的OTA实现方案 3.1 存储空间划分 3.2 关键技术 一.引言 在智能手机上点击系统更新、电动汽车解锁新功能、智能家居设备自动修复漏洞……这些场景背后都离不开一项关键技术——…...
strings.LastIndexAny 使用详解
目录 1. 官方包 2. 支持版本 3. 官方说明 4. 作用 5. 实现原理 6. 推荐使用场景和不推荐使用场景 推荐场景 不推荐场景 7. 使用场景示例 示例1:官方示例 示例2:日志清洗(去除末尾的乱码或非法字符) 8. 性能对比 性能…...
大型商场运营新变革:AcrelCloud - 3200 预付费系统应用全解析
一、方案概述 在现代商业运营和物业管理中,大型商场、商业小区以及大集团和大物业面临着复杂的费用收取和管理难题。安科瑞的 AcrelCloud - 3200 远程预付费管控云平台,借助先进的预付费电表等设备,为解决这些问题提供了高效的一体化解决方案…...
鸿蒙开发07-interface
在 ArkTS(HarmonyOS Ability Runtime TypeScript)中,interface(接口)是一种强大的类型工具,它主要用于定义对象的结构,为对象的属性和方法提供类型约束,帮助开发者编写更加规范、可维…...
Java从入门到“放弃”(精通)之旅——方法的使用⑤
Java从入门到“放弃”(精通)之旅🚀——方法的使用⑤ 📖引言: 在编程领域,代码如同精密的齿轮相互咬合驱动程序运转。随着项目规模渐长,重复的代码片段如同冗余的齿轮,不仅增加负重…...
5 C 程序全流程解析:编写、预处理、编译、汇编、链接、运行与 GCC 指令详解
1 C 程序运行机制流程概述 通过以上步骤,我们可以将一个 C 语言源代码文件逐步转换为一个可执行的二进制程序。这一过程涉及多个关键工具和步骤,每一步都承担着特定的任务,发挥着独特的作用。深入理解这些步骤,不仅有助于我们更好…...
leetcode:1351. 统计有序矩阵中的负数(python3解法)
难度:简单 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非严格递减顺序排列。 请你统计并返回 grid 中 负数 的数目。 示例 1: 输入:grid [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]] 输…...