Linux磁盘管理命令

avatar
作者
猴君
阅读量:0

磁盘管理

Linux 的磁盘服务提供了丰富的工具和技术,可以满足各种需求,从基本的文件系统管理到高级的磁盘阵列和逻辑卷管理。合理使用这些工具和技术,可以实现对磁盘存储的有效管理和优化,确保系统的稳定性和性能。

基于Ubuntu2404系统,VMware系统搭建

parted分区命令

Parted(Partition Editor)是一个功能强大的命令行工具,用于磁盘分区管理。它支持创建、删除、调整磁盘分区,以及显示磁盘的详细信息。

查看磁盘信息

parted -l 
root@huhy:~# parted -l Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:  Number  Start   End     Size    File system  Name  Flags  1      1049kB  2097kB  1049kB                     bios_grub  2      2097kB  96.6GB  96.6GB  ext4  3      96.6GB  98.8GB  2147MB  ext4   Error: /dev/sdb: unrecognised disk label Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags:  Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only. Error: /dev/sr0: unrecognised disk label Model: NECVMWar VMware SATA CD01 (scsi) Disk /dev/sr0: 2755MB Sector size (logical/physical): 2048B/2048B Partition Table: unknown Disk Flags:  root@huhy:~# 

parted -l 命令显示了系统中三个磁盘设备的信息:/dev/sda、/dev/sdb 和 /dev/sr0。/dev/sdb 没有识别到有效的分区表,需要对其进行初始化和分区操作。

选择磁盘:在操作之前,首先需要选择要操作的磁盘,这会进入Parted的交互模式,可以在此模式下执行具体的操作

parted /dev/sdb 

print;显示磁盘分区信息

(parted) print Error: /dev/sdb: unrecognised disk label Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: (parted) 

创建新的分区表,类型如下

  • gpt:GUID Partition Table,适用于现代系统和大容量磁盘。
  • msdos:适用于旧系统,最大支持 2TB 磁盘。
(parted) mklabel gpt 

创建新分区;一个50GB的 ext4 分区,名称primary(可自定义),除了使用绝对数值(如 0GB、50GB)外,还可以使用百分比、扇区、MB、TB 等单位来表示。

(parted) mkpart primary ext4 0GB 50GB 
(parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:  Number  Start   End     Size    File system  Name     Flags  1      1049kB  50.0GB  50.0GB  ext4         primary 

删除分区;通过Number删除

(parted) rm 1 
(parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:  Number  Start  End  Size  File system  Name  Flags  

调整分区大小:使用resizepart命令可以调整选定分区的大小

(parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:  Number  Start   End     Size    File system  Name  Flags  1      1049kB  50.0GB  50.0GB  ext4         huhy  (parted) resizepart 1 60GB (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:  Number  Start   End     Size    File system  Name  Flags  1      1049kB  60.0GB  60.0GB  ext4         huhy  

退出

(parted) quit 

查看验证

root@huhy:~# parted -l Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:  Number  Start   End     Size    File system  Name  Flags  1      1049kB  2097kB  1049kB                     bios_grub  2      2097kB  96.6GB  96.6GB  ext4  3      96.6GB  98.8GB  2147MB  ext4   Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:  Number  Start   End     Size    File system  Name  Flags  1      1049kB  60.0GB  60.0GB               huhy   Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only. Error: /dev/sr0: unrecognised disk label Model: NECVMWar VMware SATA CD01 (scsi) Disk /dev/sr0: 2755MB Sector size (logical/physical): 2048B/2048B Partition Table: unknown Disk Flags: 

mkfs磁盘格式化命令

mkfs(Make File System)命令用于在分区上创建文件系统。这是一个重要的命令,用于初始化磁盘或分区,使其能够存储文件和目录。

命令的基本语法如下:

mkfs [options] <filesystem> <device> 

常用选项

  • -t :指定文件系统类型。例如,-t ext4。
  • -V:显示版本信息。
  • -v:显示详细信息。
  • -c:检查坏块(有些文件系统不支持)。
  • -L
  • -n
  • -N :指定文件系统的节点数量。

常见文件系统类型

  • ext2/ext3/ext4:常用的 Linux 文件系统类型。
  • vfat:兼容 Windows 的 FAT 文件系统。
  • ntfs:Windows NT 文件系统。
  • xfs:高性能文件系统,适用于大文件和大容量存储。
  • btrfs:现代 Linux 文件系统,具有高级功能(快照、压缩等)。

格式化为 ext4 文件系统

mkfs -t ext4 /dev/sdb1 

命令通用,更简洁一点

mkfs.ext4 /dev/sdb1 
root@huhy:~# mkfs -t ext4 /dev/sdb1 mke2fs 1.47.0 (5-Feb-2023) Creating filesystem with 14648181 4k blocks and 3662848 inodes Filesystem UUID: 05f0f3aa-ce5b-40d3-8b81-2eda92e3a116 Superblock backups stored on blocks:         32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,         4096000, 7962624, 11239424  Allocating group tables: done Writing inode tables: done Creating journal (65536 blocks): done Writing superblocks and filesystem accounting information: done 

验证查看

root@huhy:~# blkid /dev/sdb1 /dev/sdb1: UUID="05f0f3aa-ce5b-40d3-8b81-2eda92e3a116" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="huhy" PARTUUID="c7b208a2-75dd-4910-9e32-b26df9b78040" 

格式化为 FAT 文件系统

mkfs -t vfat /dev/sdb1 

格式化为 NTFS 文件系统

mkfs -t ntfs /dev/sdb1 

格式化为 XFS 文件系统

mkfs -t xfs /dev/sdb1 

为分区设置卷标为 “MyData”:卷标是一种人类可读的标识符,可以帮助用户更轻松地识别和管理磁盘

mkfs.ext4 -L MyData /dev/sdb1 

需要输入y回车确定

root@huhy:~# mkfs.ext4 -L MyData /dev/sdb1 mke2fs 1.47.0 (5-Feb-2023) /dev/sdb1 contains a ext4 file system         created on Thu Jul 18 08:07:47 2024 Proceed anyway? (y,N) y Creating filesystem with 14648181 4k blocks and 3662848 inodes Filesystem UUID: 102ac9ce-d6ee-445b-874e-9ca5633dfa92 Superblock backups stored on blocks:         32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,         4096000, 7962624, 11239424  Allocating group tables: done Writing inode tables: done Creating journal (65536 blocks): done Writing superblocks and filesystem accounting information: done  root@huhy:~# blkid /dev/sdb1 /dev/sdb1: LABEL="MyData" UUID="102ac9ce-d6ee-445b-874e-9ca5633dfa92" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="huhy" PARTUUID="c7b208a2-75dd-4910-9e32-b26df9b78040" 

将磁盘还原成未格式化状态

使用 parted 删除所有分区

parted /dev/sdb 
(parted) rm 1 

使用 dd 清除分区表和文件系统元数据

dd if=/dev/zero of=/dev/sdb bs=512 count=2048 

dd命令

dd 是一个强大的 Unix/Linux 工具,用于低级别的数据复制和转换。它能够将数据从一个地方复制到另一个地方,同时可以进行一定程度的转换和处理。

基本语法

dd if=<输入文件> of=<输出文件> [options] 

常见选项

  • bs=:指定读写操作的块大小(以字节为单位)。例如 bs=4M 表示使用 4MB 的块大小。
  • count=:指定读取的块数。
  • skip=:指定在读取输入文件之前跳过的块数。
  • seek=:指定在写入输出文件之前跳过的块数。
  • conv=:指定转换选项,如 notrunc(不截断输出文件)、sync(同步输出到磁盘)、* noerror(忽略读取错误)、fsync(在完成后刷新数据到磁盘)。

复制一个磁盘

dd if=/dev/sda of=/dev/sdb bs=4M 

创建磁盘映像: 将 /dev/sda 复制到一个映像文件 disk.img

dd if=/dev/sda of=disk.img bs=4M 

恢复磁盘映像: disk.img 恢复到 /dev/sda

dd if=disk.img of=/dev/sda bs=4M 

清除磁盘前几个扇区:清除 /dev/sdb 的前 2048 个扇区

dd if=/dev/zero of=/dev/sdb bs=512 count=2048 

制作启动盘:将 ISO 文件写入到 USB 驱动器

dd if=ubuntu.iso of=/dev/sdX bs=4M 

备份 MBR(主引导记录):备份 /dev/sda 的前 512 字节(通常是 MBR)到一个文件:

dd if=/dev/sda of=mbr_backup.img bs=512 count=1 

恢复 MBR:将备份的 MBR 恢复到 /dev/sda

dd if=mbr_backup.img of=/dev/sda bs=512 count=1 

生成随机数据文件:如果把of换成指定盘,可直接填盘!!!

if=/dev/urandom of=random_data.img bs=1M count=100 

实时进度显示:dd 本身不显示复制进度,但可以使用 status=progress 选项(在 GNU coreutils 8.24 及以上版本中提供):

dd if=/dev/sda of=/dev/sdb bs=4M status=progress 

或者使用 pv(pipe viewer)来显示进度:

apt-get install pv dd if=/dev/sda | pv | sudo dd of=/dev/sdb bs=4M 

PV物理卷

物理卷是指真实的物理磁盘或分区,它们通过 LVM 的 pvcreate 命令初始化,以便被 LVM 管理和使用。物理卷通常对应于硬盘驱动器或分区,它们的内容可以直接被操作系统读取和写入

将物理设备初始化为物理卷

pvcreate /dev/sda1 

显示物理卷的信息

pvdisplay /dev/sda1 

扫描所有物理卷

pvscan 

从 LVM 中移除物理卷

pvremove /dev/sda1 

VG卷组

卷组是由一个或多个物理卷组成的逻辑单元,它们汇总成一个可供逻辑卷使用的磁盘池。卷组的创建通过 vgcreate 命令完成,可以动态地向其中添加或移除物理卷,从而灵活地管理存储空间。

创建卷组

vgcreate myvg /dev/sda1 /dev/sdb1 

向现有卷组添加物理卷

vgextend myvg /dev/sdc1 

从卷组中移除物理卷

vgreduce myvg /dev/sdb1 

显示卷组的信息

vgdisplay myvg 

扫描所有卷组

vgscan 

删除卷组

vgremove myvg 

LV逻辑卷

逻辑卷是从卷组中分配的逻辑存储空间单元,它类似于传统磁盘分区,但具有更多的灵活性和功能。逻辑卷的创建通过 lvcreate 命令完成,可以根据需要调整大小,并支持添加、删除和快照等高级操作。

创建逻辑卷:创建一个 10GB 的逻辑卷,myvg是存在的卷组

 lvcreate -L 10G -n mylv myvg 

或者创建一个使用卷组中所有剩余空间的逻辑卷

lvcreate -l 100%FREE -n mylv myvg 

扩展逻辑卷

lvextend -L +5G /dev/myvg/mylv 

将逻辑卷扩展到卷组中所有剩余空间

lvextend -l +100%FREE /dev/myvg/mylv 

缩小逻辑卷:将逻辑卷缩小到 5GB

lvreduce -L 5G /dev/myvg/mylv 

显示逻辑卷的信息

lvdisplay /dev/myvg/mylv 

删除逻辑卷

lvremove /dev/myvg/mylv 

重命名逻辑卷

lvrename /dev/myvg/oldlv /dev/myvg/newlv 

调整逻辑卷的大小:将逻辑卷调整到 15GB

lvresize -L 15G /dev/myvg/mylv 

将逻辑卷调整为卷组中所有剩余空间:

lvresize -l +100%FREE /dev/myvg/mylv 

演示;关系与工作流程

  • 初始化物理卷: 使用 pvcreate 命令将物理磁盘或分区标记为 LVM 的物理卷。

  • 创建卷组: 使用 vgcreate 命令创建一个卷组,并将一个或多个物理卷添加到其中。

  • 创建逻辑卷: 使用 lvcreate 命令从卷组中分配逻辑存储空间,并创建一个逻辑卷。

  • 文件系统操作: 在逻辑卷上创建文件系统,例如使用 mkfs 命令。

  • 挂载和使用: 将逻辑卷挂载到文件系统中,并开始使用。

  • 动态管理: 随着需求的变化,可以使用 lvextend、lvreduce 等命令调整逻辑卷的大小,或使用 vgextend、vgreduce 命令修改卷组的物理卷配置。

创建两个物理卷

root@huhy:~# lsblk NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS sda      8:0    0  100G  0 disk ├─sda1   8:1    0    1M  0 part ├─sda2   8:2    0   90G  0 part / └─sda3   8:3    0    2G  0 part /boot sdb      8:16   0  100G  0 disk ├─sdb1   8:17   0 27.9G  0 part └─sdb2   8:18   0 18.6G  0 part sr0     11:0    1  2.6G  0 rom root@huhy:~# pvcreate /dev/sdb1 /dev/sdb2 WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y   Wiping ext4 signature on /dev/sdb1.   Physical volume "/dev/sdb1" successfully created.   Physical volume "/dev/sdb2" successfully created. root@huhy:~# 

创建卷组: 将这两个物理卷添加到一个新的卷组 myvg

root@huhy:~# vgcreate myvg /dev/sdb1 /dev/sdb2   Volume group "myvg" successfully created 

创建逻辑卷: 在 myvg 卷组中创建一个 10GB 的逻辑卷 mylv

root@huhy:~# lvcreate -L 10G -n mylv myvg   Logical volume "mylv" created. root@huhy:~# 

创建文件系统: 为逻辑卷 mylv 创建 ext4 文件系统:

root@huhy:~# mkfs.ext4 /dev/myvg/mylv mke2fs 1.47.0 (5-Feb-2023) Creating filesystem with 2621440 4k blocks and 655360 inodes Filesystem UUID: 7e2c5e79-ff85-46be-964a-4b345b1239ce Superblock backups stored on blocks:         32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632  Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done 

创建挂载点并挂载逻辑卷 mylv

root@huhy:~# mkdir /mnt/mylv root@huhy:~# mount /dev/myvg/mylv /mnt/mylv root@huhy:~# lsblk NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS sda             8:0    0  100G  0 disk ├─sda1          8:1    0    1M  0 part ├─sda2          8:2    0   90G  0 part / └─sda3          8:3    0    2G  0 part /boot sdb             8:16   0  100G  0 disk ├─sdb1          8:17   0 27.9G  0 part │ └─myvg-mylv 252:0    0   10G  0 lvm  /mnt/mylv └─sdb2          8:18   0 18.6G  0 part sr0            11:0    1  2.6G  0 rom root@huhy:~# 

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!