当前位置: 首页 > news >正文

linux命令-磁盘管理-6

大纲

命令核心功能适用场景关键参数/示例
lsblk列出块设备(磁盘/分区/挂载点)快速查看存储拓扑lsblk -f 显示文件系统类型和UUID
fdiskMBR分区表管理(≤2TB磁盘)传统磁盘分区fdisk /dev/sda 进入交互式分区
gdiskGPT分区表管理(>2TB磁盘)大容量磁盘分区gdisk /dev/sdb 创建GPT分区
parted支持MBR/GPT,可调整分区大小非交互式分区、分区表转换parted /dev/sdc print 查看分区表
partprobe通知内核重读分区表(无需重启)分区后刷新系统识别partprobe /dev/sda 更新指定磁盘
dd按块复制数据(备份/恢复/创建镜像)分区备份、制作启动盘dd if=/dev/sda1 of=backup.img

逻辑卷管理器LVM相关命令

操作类型物理卷(PV)命令卷组(VG)命令逻辑卷(LV)命令
创建pvcreate /dev/sdb1vgcreate myvg /dev/sdb1lvcreate -L 10G -n mylv myvg
查看信息pvdisplayvgdisplay myvglvdisplay /dev/myvg/mylv
扩展-vgextend myvg /dev/sdc1lvextend -L +5G /dev/myvg/mylv
缩减-vgreduce myvg /dev/sdc1lvreduce -L 15G /dev/myvg/mylv
删除pvremove /dev/sdb1vgremove myvglvremove /dev/myvg/mylv
扫描pvscanvgscanlvscan

lsblk

列出块设备

  • 示例

    [root@localhost cron.d]# lsblk
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda               8:0    0  100G  0 disk 
    ├─sda1            8:1    0    1G  0 part /boot        # 引导分区
    └─sda2            8:2    0   99G  0 part ├─centos-root 253:0    0 94.1G  0 lvm  /            # lvm分区 └─centos-swap 253:1    0  4.9G  0 lvm  [SWAP]       # swap
    sr0              11:0    1  4.3G  0 rom  
    sdb               8:16   0   50G  0 disk              # 说明没有被使用
    

fdsik|gdisk

小于2tib的使用fdisk分区即可,大于2tib的使用gdisk分区, 一个用法

  • 说明, 分区看扩展说明

    命令说明
    fdisk创建MBR分区
    gdisk创建GPT分区
    parted高级分区操作
    partprobe重新设置内存中的内核分区表版本
  • 示例

    [root@localhost ~]# fdisk /dev/sdb磁盘 /dev/sdb:32.2 GB, 32212254720 字节,62914560 个扇区命令(输入 m 获取帮助):n      <--- 开始创建
    Partition type:p   primary (0 primary, 0 extended, 4 free)e   extendedSelect (default p): p     <--- 创建主分区
    分区号 (1-4,默认 1):1
    ----->  回车两次就是全部大小  <-----  命令(输入 m 获取帮助):p      <-----   打印查看一下
    磁盘 /dev/sdb:32.2 GB, 32212254720 字节,62914560 个扇区设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048    62914559    31456256   83  Linux命令(输入 m 获取帮助):w      <-----   最后要保存
    The partition table has been altered!Calling ioctl() to re-read partition table.
    正在同步磁盘。# 格式化
    ~]# mkfs.xfs /dev/sdb1 
    meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1966016 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=7864064, imaxpct=25=                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=3839, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0~]# tail -n 1 /etc/fstab 
    /dev/sdb1  /opt  xfs defaults 0 0~]# mount -a
    ~]# df -Th
    /dev/sdb1               xfs        30G   33M   30G    1% /opt
    

parted

parted的操作都是实时生效的,小心使用, 慎用 实时操作

~]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: Number  Start   End     Size    Type     File system  标志1      1049kB  32.2GB  32.2GB  primary  xfs

partprobe

将修改分区立即生效

  • 创建分区立即 ~]# partprobe
  • 查询是否生效 ~]# cat /proc/partitions

dd

dd 命令:convert and copy a file

  • 参数

    参数含义使用示例示例说明
    if输入文件 (Input File)dd if=/dev/sda of=disk.img bs=4M将整个磁盘 /dev/sda 备份到 disk.img 文件,块大小为4MB
    of输出文件 (Output File)dd if=ubuntu.iso of=/dev/sdb status=progress将ISO镜像写入U盘设备 /dev/sdb,并显示传输进度
    bs同时设置输入/输出块大小dd if=/dev/urandom of=random.data bs=1M count=10生成10MB的随机数据文件,读写块大小均为1MB
    count仅复制指定块数dd if=/dev/sda2 of=partition.img bs=4M count=50仅复制磁盘分区前50个4MB块(共200MB)生成镜像
  • 示例

    • 磁盘克隆与恢复

      dd if=/dev/nvme0n1 of=/dev/sda bs=128K status=progress conv=noerror,sync 
      # 说明:克隆整个NVMe固态硬盘到SATA硬盘,128KB块提升速度,noerror,sync 确保遇到坏块继续复制并用空数据填充。
      
    • 提取文件片段

      dd if=video.mp4  skip=10240 bs=1K count=512 of=fragment.h264
      # 说明:从视频文件跳过前10MB(10240×1KB),提取后续512KB数据(如关键帧)。
      
    • 安全擦除磁盘,慎用,别把引导干崩咯

      dd if=/dev/urandom of=/dev/sdb bs=4M status=progress
      # 说明:用随机数据覆盖整个磁盘,防止恢复(多次执行可增强安全性)。
      
  • ⚠️ 重要注意事项

    • 数据安全of 参数目标若为磁盘(如 /dev/sda)会直接覆盖数据,操作前务必确认设备路径!
    • 块大小优化bs 值影响性能,通常设置为4K~8M(如SSD用128K,HDD用1M)。
    • 进度监控:添加 status=progress 可实时查看传输速率与进度(较新版本支持)。

lvm

逻辑卷管理器(LVM), 物理卷是用固定大小的物理区域(Physical Extent,PE)

  • 说明:dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

    • 设备名:/dev/dm-#

    • 软链接:

      /dev/mapper/VG_NAME-LV_NAME
      /dev/mapper/vol0-root
      /dev/VG_NAME/LV_NAME
      /dev/vol0/root
      
  • 先来个创建的示例

    # 先搞两块磁盘
    [root@localhost ~]# lsblk 
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb               8:16   0   30G  0 disk 
    sdc               8:32   0   20G  0 disk # 使用前不要格式化磁盘,不用分区, 创建pv
    [root@localhost ~]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created.
    [root@localhost ~]# pvcreate /dev/sdcPhysical volume "/dev/sdc" successfully created.# 创建vg , 这里先创建,然后在把另一块也给它扩进去
    [root@localhost ~]# vgcreate myvg /dev/sdbVolume group "myvg" successfully created
    [root@localhost ~]# vgsVG     #PV #LV #SN Attr   VSize   VFree  centos   1   2   0 wz--n- <99.00g   4.00mmyvg     1   0   0 wz--n- <30.00g <30.00g# 如果没两块就略过它
    [root@localhost ~]# vgextend myvg /dev/sdcVolume group "myvg" successfully extended
    [root@localhost ~]# vgsVG     #PV #LV #SN Attr   VSize   VFree centos   1   2   0 wz--n- <99.00g  4.00mmyvg     2   0   0 wz--n-  49.99g 49.99g# 创建lv
    [root@localhost ~]# lvcreate -l 100%free  -n mylv myvgLogical volume "mylv" created.[root@localhost ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertmylv myvg   -wi-a-----  49.99g                                                 # 格式化磁盘
    [root@localhost ~]# mkfs.xfs /dev/myvg/mylv 
    meta-data=/dev/myvg/mylv         isize=512    agcount=4, agsize=3276288 blks
    ....# 查看磁盘
    [root@localhost ~]# lsblk 
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb               8:16   0   30G  0 disk 
    └─myvg-mylv     253:2    0   50G  0 lvm  
    sdc               8:32   0   20G  0 disk 
    └─myvg-mylv     253:2    0   50G  0 lvm  [root@localhost ~]# mount /dev/myvg/mylv /mnt/
    [root@localhost ~]# df -Th
    文件系统                类型      容量  已用  可用 已用% 挂载点
    /dev/mapper/myvg-mylv   xfs        50G   33M   50G    1% /mnt# 如果lv用的是扩展~]# lvextend -l +100%FREE /dev/test1/mytest1 Size of logical volume test1/mytest1 changed from 20.00 GiB (5119 extents) to 29.99 GiB (7678 extents).Logical volume mytest1 successfully resized.# 使用要使用resizefs2命令重新加载逻辑卷的大小才能生效~]# resize2fs /dev/test1/mytest1   # 如果出现大小了 就不用这个命令了
    
  • 缩减逻辑卷

    umount /dev/VG_NAME/LV_NAME
    e2fsck -f /dev/VG_NAME/LV_NAME
    resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
    lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
    mount
    

pv

  • 显示pv信息: pvs

    ~]# pvsPV         VG     Fmt  Attr PSize   PFree/dev/sda2  centos lvm2 a--  <99.00g 4.00m
    
  • 简要pv信息显示: pvdisplay

    [root@localhost ~]# pvdisplay --- Physical volume ---PV Name               /dev/sda2VG Name               centosPV Size               <99.00 GiB / not usable 3.00 MiBAllocatable           yes PE Size               4.00 MiBTotal PE              25343Free PE               1Allocated PE          25342PV UUID               ErBUzf-ov2g-yG25-MHED-wBKg-2x0S-LW3GXB
    
  • 创建pv: pvcreate /dev/DEVICE

    ~]# pvcreate /dev/sdcPhysical volume "/dev/sdc" successfully created.
    
  • 删除pv: pvremove /dev/DEVICE

    ~]# pvremove /dev/sdcLabels on physical volume "/dev/sdc" successfully wiped.
    

vg

  • 显示pv信息: vgs

    ~]# vgsVG     #PV #LV #SN Attr   VSize   VFreecentos   1   2   0 wz--n- <99.00g 4.00m
    
  • 简要vg信息显示: vgdisplay

    [root@localhost ~]# vgdisplay --- Volume group ---VG Name               centosSystem ID             Format                lvm2Metadata Areas        1Metadata Sequence No  3VG Access             read/writeVG Status             resizable....VG Size               <99.00 GiBPE Size               4.00 MiBTotal PE              25343Alloc PE / Size       25342 / 98.99 GiBFree  PE / Size       1 / 4.00 MiBVG UUID               ejf8np-8e5W-Tb4A-93bF-jea3-pzu6-OfMxfO
    
  • 创建vg: vgcreate 名称 磁盘|或分区

    # 先做pv, 再创建vg
    ~]# vgcreate myvg /dev/sdcVolume group "myvg" successfully created
    
  • 删除vg: vgremove 名称|磁盘

    ~]# vgremove myvgVolume group "myvg" successfully removed
    
  • 扩建vg

    [root@localhost ~]# pvsPV         VG     Fmt  Attr PSize   PFree  /dev/sda2  centos lvm2 a--  <99.00g   4.00m/dev/sdb   mydb   lvm2 a--  <30.00g <10.00g   <-- 已经用了lvs 只有10G空闲/dev/sdc   mydb   lvm2 a--  <20.00g <20.00g~]# vgextend mydb /dev/sdcVolume group "mydb" successfully extended     <-- 将sdc扩到mydb
    [root@localhost ~]# vgsVG     #PV #LV #SN Attr   VSize   VFree centos   1   2   0 wz--n- <99.00g  4.00mmydb     2   1   0 wz--n-  49.99g 29.99g     <-- sdc的20G就扩过来了
    
  • 缩减

    ~]# vgreduce mydb /dev/sdcRemoved "/dev/sdc" from volume group "mydb"
    [root@localhost ~]# vgsVG     #PV #LV #SN Attr   VSize   VFree  centos   1   2   0 wz--n- <99.00g   4.00mmydb     1   1   0 wz--n- <30.00g <10.00g
    

lv

  • 显示lv

     ~]# lvsLV   VG   Attr LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot centos -wi-ao---- <94.12gswap centos -wi-ao----  <4.88g
    
  • 查看lv的详细信息

    ~]# lvdisplay --- Logical volume ---LV Path                /dev/centos/swapLV Name                swapVG Name                centosLV UUID                u79zY2-R6vo-axdj-COdV-rTrZ-EABg-7vAzJ9LV Write Access        read/write...Block device           253:1
    
  • 创建LV

    # 语法
    [root@localhost ~]# lvcreate -L #[mMgGtT] -n NAME VolumeGroup
    [root@localhost ~]# lvcreate -l 60%VG -n mylv testvg
    [root@localhost ~]# lvcreate -l 100%FREE -n yourlv testvg# 使用示例
    [root@localhost ~]# lvcreate -l 100%free -n mylv mydbLogical volume "mylv" created.
    [root@localhost ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertmylv mydb   -wi-a----- <30.00g
    
  • 删除

    [root@localhost ~]# lvremove /dev/mydb/mylv 
    Do you really want to remove active logical volume mydb/mylv? [y/n]: yLogical volume "mylv" successfully removed
    
  • 缩减

    [root@localhost ~]# lvextend -L +10G /dev/mydb/mylv Size of logical volume mydb/mylv changed from <9.00 GiB (2303 extents) to <19.00 GiB (4863 extents).Logical volume mydb/mylv successfully resized.[root@localhost ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertmylv mydb   -wi-a----- <19.00g  <-- 缩减前30G
    

扩展

MBR

  • 理论

    • MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
    • MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)
  • 如何分区:按柱面

    • 0磁道0扇区:512bytes
    • 446bytes: boot loader 主引导分区
    • 64bytes:分区表,其中每16bytes标识一个分区
    • 2bytes: 55AA

GPT

  • GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
  • 使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
  • UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
http://www.dtcms.com/a/557658.html

相关文章:

  • rdpwsx!TSrvInitWD函数分析到rdpwd!WDWConfConnect
  • 购买一级域名做网站青岛seo关键词排名
  • 如何建网站保定自己做公司网站简单吗
  • 怎样理解网站建设与开发这门课红杉树装饰公司口碑怎么样
  • 用 Trae AI 编程打造我的个人成长空间:旅行、相册、我的信息模块全上线!
  • 临海 网站建设友情链接是什么意思
  • 意大利语网站建设软件工程学科评估
  • AutoCAD 2025软件安装包下载及安装教程
  • arcpy_pytho2.7_arcmap10.2乱码问题
  • MATLAB水滴下落湖水面泛起涟漪仿真
  • 【Python】For Midterm Review2(week1-6)
  • 智驾“请抬脚”提示感悟 - 当工程师思维遇见用户思维
  • AFFiNE:打破界限的知识平台,超越Notion与Miro!
  • 集团网站下分网站 模板wordpress企业网站 教程
  • 我在CSDN学MYSQL之----数据库基本概念和基本知识(下)
  • 神经符号系统架构:结合深度学习与符号推理的混合智能
  • wordpress 怎么学镇江网站关键字优化机构
  • JSP 点击量统计:技术与实践
  • QML学习笔记(五十)QML与C++交互:QML中单例C++对象
  • (108页PPT)金属加工行业智能工厂系统解决方案(附下载方式)
  • 网站建设情况说明搭建网站要什么显卡
  • C++11新特性基础知识点汇总
  • 网站icp查询系统山东seo网络营销推广
  • Vue.js 3的组合式API
  • 竞品对比分析:我们的系统 vs Reddit Answer
  • SQLite AND/OR 运算符
  • 物理仿真学习笔记 第一篇:绳子(弹簧振子系统,阻尼)
  • 柳州游戏网站建设seo综合查询网站
  • 网站推广的短视频推广wordpress 文章导入
  • SQL学习之常见函数和连接查询