目 录CONTENT

文章目录

Linux 硬盘操作

ABin
2024-07-31 / 0 评论 / 0 点赞 / 112 阅读 / 0 字

查看硬盘

ll /dev/sd*

示例输出:

brw-rw----. 1 root disk 8,  0  7月 31 18:43 /dev/sda
brw-rw----. 1 root disk 8,  1  7月 31 18:43 /dev/sda1
brw-rw----. 1 root disk 8,  2  7月 31 18:43 /dev/sda2
brw-rw----. 1 root disk 8,  3  7月 31 18:43 /dev/sda3
brw-rw----. 1 root disk 8, 16  7月 31 22:57 /dev/sdb
brw-rw----. 1 root disk 8, 17  7月 31 22:57 /dev/sdb1

查看硬盘分区信息

fdisk -l /dev/sdb

或者查看所有磁盘和分区:

lsblk

删除硬盘分区(以 /dev/sdb 为例)

fdisk /dev/sdb

交互过程:

  1. 输入 d 删除分区

  2. 输入分区号(例如 1)

  3. 重复删除所有分区

  4. 输入 w 保存并退出

清除硬盘分区表(慎用)

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

或者使用 wipefs

wipefs -a /dev/sdb

创建新分区

fdisk /dev/sdb

交互过程:

  1. 输入 n 创建新分区

  2. 输入分区号(默认即可)

  3. 指定起始扇区和结束扇区(默认即可)

  4. 输入 w 保存并退出

格式化分区

mkfs.ext4 /dev/sdb1

其他可选文件系统:xfs、btrfs、ntfs 等

挂载硬盘分区

mkdir -p /mnt/data
mount /dev/sdb1 /mnt/data

验证是否挂载成功:

df -h | grep /mnt/data

设置开机自动挂载

编辑 /etc/fstab 添加:

/dev/sdb1  /mnt/data  ext4  defaults  0  2

建议使用 UUID,查看 UUID:

blkid /dev/sdb1

示例:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/data ext4 defaults 0 2

卸载硬盘分区

umount /mnt/data

如果提示设备正忙:

lsof | grep /mnt/data

或使用 fuser 查看并终止进程

删除磁盘设备(模拟移除)

如果是热插拔设备,可以执行:

echo 1 > /sys/block/sdb/device/delete

查看磁盘 SMART 状态(监控健康)

smartctl -a /dev/sdb

需安装 smartmontools

扫描新插入的磁盘(不重启)

echo "- - -" > /sys/class/scsi_host/host0/scan

根据主机数量可能为 host1、host2 等

如果卸载硬盘的时候提示 umount: /disk: 目标忙.

1. 查找占用该挂载点的进程

使用 lsof

lsof +D /disk

显示正在访问 /disk 的文件的进程(可能很多)。

使用 fuser

fuser -vm /disk

会列出使用该目录的进程及用户。


🔒 2. 终止占用进程(谨慎操作)

强制终止所有占用进程

fuser -km /disk

这会发送 SIGKILL(-k)信号终止所有正在使用 /disk 的进程。

总结

以上命令适用于大多数基于 SCSI 的硬盘(包括 SATA/SAS)。操作硬盘需谨慎,强烈建议在执行删除、格式化前备份数据!

0

评论区