ubuntu(linux)硬盘与硬件资源管理教程
2022年5月31日大约 3 分钟约 788 字
硬盘
分区与挂载
# 查看块信息与挂载信息
lsblk -f
sudo fdisk -l
df -Tha
df -Th /
# 格式化磁盘
mkfs -t ext4 /dev/sda6
# 修改卷标
e2label /dev/sda1 "my_test"
# 向U盘中写入ISO镜像
sudo dd if=/dev/sr0 of=/dev/sdb bs=4M
sudo dd if/home/xxx/xxx.iso of=/dev/sdb bs=4M
# 写入ISO前可以效验一下md5
md5sum /dev/sr0
# 显示挂载信息
mount -l
# 按`/etc/fstab`内容自动挂载
mount -a
# 挂载光盘
mount /dev/cdrom /media/cdrom
# 挂载镜像
mount -o loop /root/Ubuntu.iso /mnt
# 单用户模式下根目录重新挂载为读写
mount -o remount,rw,auto /
# 将一个目录挂载到另一个目录,类似于符号链接(进入/mnt/home就是进入/home)
mount --bind /home /mnt/home
# 强制对磁盘检查
fsck -C -f /dev/sda1
# 检查分区坏道
badblocks -vs /dev/sda1
# 测试硬盘性能
hdparm -Tt /dev/sda
parted分区命令
parted命令的操作都是实时生效的,每操作一步都应小心
创建单分区的虚拟硬盘
dd if=/dev/zero of=/tmp/test.img bs=1M count=128
mkfs.ext4 -q /tmp/test.img
mount -o loop /tmp/test.img /mnt/
df -h
创建多分区的虚拟硬盘
# 创建raw格式的虚拟硬盘
dd if=/dev/zero of=/tmp/test.img bs=1M count=2048
# 虚拟硬盘映射到回环设备
losetup /dev/loop0 test.img
# 给硬盘分区
parted /dev/loop0
mklabel gpt
print
mkpart "EFI System Partition" fat32 0% 512MB
mkpart "primary" ext4 512MB 60%
mkpart primary 60% 100%
set 1 boot on # 设置EFI启动标识
set 1 efi on # 设置EFI启动标识,这两个命令一样
name 3 'DATA_DISK'
quit
# 格式化分区
mkfs.vfat -F 32 -q /dev/loop0p1
mkfs.ext4 -q /dev/loop0p2
mkfs.ext4 -q /dev/loop0p3
# 查询硬盘分区情况
parted /tmp/test.img print
fdisk -l /dev/loop0
# 挂载硬盘分区
mount /dev/loop0p1 /mnt/
mount /dev/loop0p2 /media/
# 卸载
umount /mnt/
umount /media/
losetup -d /dev/loop0
# 查询ext4文件系统每个区段与superblock信息
dumpe2fs /etc/sda2
vfat 是 fat 的扩展,支持长文件名。vFAT向后兼容FAT,但允许文件具有更长的名称,只有在支持vFAT的操作系统上运行的支持vFAT的应用程序才能看到这些文件。
mkfs.fat和mkfs.vfat 本貭上是同个工具,生成的文件系统没区别是因為 vfat 和 fat-32 在实現上是沒区別的,只是 vfat 通过 fat-32 中的一些隐藏路径表示长文件名,而在 fat-32 中这些隐藏路径会當成是空的。
GPT没有主分区和扩展分区的概念,简单的说都是主分区,最多128个。
GPT没有活动分区概念,UEFI也不依赖活动分区标记。只需要在Fat32格式分区做'esp'标识。
查看内存、系统运行时长、磁盘读写、文件占用
# 查看内存使用
free -th
# 查看系统运行时长
uptime
# 查看磁盘读写情况
vmstat -S m 1 -d
# 查看内存和CPU读写情况
vmstat -S m 1
# 查找文件占用的进程
fuser -uv /var/gdm/.gdminfo
# 查找目录被访问的进程
fuser -uvm /proc
# 交互式强制删除占用文件的进程
fuser -ki /var/gdm/.gdminfo
# 查找某用户的某进程占用的文件
lsof -u xiong | grep bash
# 查找某目录下被进程打开的文件
lsof +d /dev