Linux磁盘管理
一.磁盘管理
添加磁盘小技巧:重要小技巧哟
#添加新硬盘的操作
echo "- - -" > /sys/class/scsi_host/host0/scan;
echo "- - -" > /sys/class/scsi_host/host1/scan;
echo "- - -" > /sys/class/scsi_host/host2/scan;
块设备的字符设备
#块设备 b开头
[root@centos7 ~]# ll /dev/sda
brw-rw----. 1 root disk 8, 0 8月 10 14:17 /dev/sda
#字符设备c开头
[root@centos7 ~]# ll /dev/null
crw-rw-rw-. 1 root root 1, 3 8月 10 14:17 /dev/null
创建这些设备的命令 mknod
,不太用的.
mknod /dev/null-device 1 3 #不太用
1.1 分区mbr&gpt
- mbr:一个分区最大2个T,现在场景越来越大,不够的.
- gpt:分区支持128个分区,一个分区最大8Z-64Z,(与快大小有关)
mbr的分区备份,还原
dd if=/dev/sda of=/dev/mbr bs=1 count=64 skip=446
ll /data/mbr #这个准备备份到异地.
hexdump -C /data/mbr #查看内容和hexdump -C /data/sda -n 512
#搞破坏,破坏分区表
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
#进入救援模式,把备份mbr拷贝过来
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
sync #记得一下
1.2 BIOS和UEFI
- bios: 太小,不知道图形化.不能支持多国家语言.不直接支持gpt分区.所以win10安装的时候需要弄一下硬盘,把它变成gpt分区
- uefi:可以各种骚操作.
1.3 管理分区
查看分区lsblk
[root@centos7 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 15G 0 part
├─centos-root 253:0 0 13.4G 0 lvm /
└─centos-swap 253:1 0 1.6G 0 lvm [SWAP]
sr0 11:0 1 10G 0 rom
分区工具
fdisk 管理mbr分区
gdisk 管理GPT分区
parted 高级操作,可以交互或非交换方式.危险
重新设置内存中的内核分区表版本,使用除了centos6以为的其他版本.
partprobe
centos6的刷新内存中的分区表
#删除内存中6-7的分区表
partx -d --nr 6-7 /dev/sda
二.文件系统管理
2.1.1常见的文件系统
- ext2
- ext3
- ext4:最大16TB的文件,用的最多的.
- xfs:支持8eb,也用的很多
- swap
- iso9660光盘
查看文件系统
lsblk -f
查看内科支持的文件系统
ls /lib/modules/`uname -r`/kernel/fs
2.2 mkfs格式化硬盘
#sda3在这里是一个新的分区
mkfs.xfs /dev/sda3
#新分的分区才能看到uuid,查看uuid的方法是
blkid
#查看文件系统的inode等信息.不太用的.
dump2fs /dev/sda3 #只能看ext的
#xfs的
xfs_info /dev/sdbxx
#查看
tune2fs -l /dev/sdb3
2.3 文件系统检测和修复
2.3.1 修复命令
fsck
fsck $设备
fsck -t $设备
#FS_TYPE:ext4,xfs等等
#常用选项
-f 修复文件
-n 只检查
-d 允许修复只读的挂在设备,在单用户模式下修复 / 时使用,然后立即reboot
e2fsck:ext的
-y 自动回答yes
-f 强制修复
-p 自动进行安全的修复文件系统的问题
xfs_repair: xfs文件系统的
-f 修复文件,
-n 只检查
-d 允许修复只读的挂在设备,在单用户修复 / 时使用,然后立即reboot
2.3.2 实例
1)破坏ext的文件系统
#这里假设sdb2刚格式化好.挂载
mount /dev/sdb2 /mnt
cp /etc/fstab /mnt/f1
ls #看一下里面的内容
#破坏分区,将sdb2设备的最前的字节改成0,就破坏了分区.
dd if=/dev/zero of=/dev/sdb2 bs=1 count=1
ls #在看看能不能看到
#开始修复,先取消挂载.一定要先取消挂载.不然后果很严重
umount /mnt
e2fsck /dev/sdb2 -y
#再挂载,看看
mount /dev/sdb2 /mnt
ls /mnt/
三.挂载
3.1 临时挂载
挂载mount
命令
mkdir /mnt/sdb3
mount /dev/sdb3 /mnt/sdb3
查看谁在用这个文件夹,并t掉他
fuser -v /mnt/sdb1/
#踢掉他用这个文件夹
fuser -km /mnt/sdb1
测试挂载点
findmnt 文件系统|分区
3.2 永久挂载
目录:/etc/fstab
立即生效: mount -a
四.其他相关磁盘操作
- 特殊空间swap
- 外围设备
- du与df
- dd命令的适用
4.1 特殊空间swap
那硬盘的分区用来当内存,只有当内存不够用的时候,才会用起来.
格式化为swap:mkswap
修改/etc/fstab,立即临时生效:swapon -a
查看swap组成:swap -s
4.1.1 实例禁用swap
1)控制内存利用率,10g就立刻使用10个G的内存空间
dd if=/dev/zero of=/dev/null bs=10G count=1
dd if=/dev/zero of=/dev/null bs=2G count=1
2)修改/etc/fstab
,swapoff -a
4.1.2 拿文件当swap
#创建纯0文件,以下是创建2G的0文件
dd if=/dev/zero of=/swapfile bs=1M count=2048
ll -h /swapfile
chmod a= /swapfile
mkswap /swapfile
vim /etc/fstab #用文件名的形式写挂在
swapon -a
4.2 外围设备
4.2.1 弹出光驱
reject #弹出光盘
reject -t #插入光盘
4.2.2 光盘制作成iso镜像
cp /dev/cdrom /data/centos8.iso
4.2.3 iso刻到U盘里
使用rufus
4.2.4 usb查看
yum install -y usbutils
lsusb
4.3 du与df
du和df所看到的内容是不一样的.
du是文件夹大小;存在跨设备的情况
df 是文件系统的占用空间
4.3.1 特殊文件
#创建空洞文件前看一下
[root@centos7 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 14G 1.4G 13G 11% /
devtmpfs 908M 0 908M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.9M 911M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 184M 0 184M 0% /run/user/0
#创建空洞文件,选择跳过1024个块创建0个块
[root@centos7 ~]# cd /
[root@centos7 /]# dd if=/dev/zero of=/bigfiles bs=1M count=0 seek=1024
记录了0+0 的读入
记录了0+0 的写出
0字节(0 B)已复制,0.000422449 秒,0.0 kB/秒
#创建后查看一下,发现他不占df -h的空间,但是文件又显示1G这么大.
[root@centos7 /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 14G 1.4G 13G 11% /
devtmpfs 908M 0 908M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.9M 911M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 184M 0 184M 0% /run/user/0
[root@centos7 /]# ll /bigfiles
-rw-r--r--. 1 root root 1073741824 8月 18 09:09 /bigfiles
[root@centos7 /]# ll -h /bigfiles
-rw-r--r--. 1 root root 1.0G 8月 18 09:09 /bigfiles
4.3.2 du
#查看文件夹的总大小,而不分别看文件夹里面的细节
[root@centos7 /]# du -sh /
du: 无法访问"/proc/20379/task/20379/fd/4": 没有那个文件或目录
du: 无法访问"/proc/20379/task/20379/fdinfo/4": 没有那个文件或目录
du: 无法访问"/proc/20379/fd/3": 没有那个文件或目录
du: 无法访问"/proc/20379/fdinfo/3": 没有那个文件或目录
1.4G /
面试题:什么情况下df>du,什么时候du>df
刚刚创建好格式化挂在的时候,df>du
当一个文件夹涉及到两个挂在分区的时候,du>df
4.4 dd
实例
#准备
[root@centos7 ~]# echo abcedfg > f1.txt
[root@centos7 ~]# echo 1234567890 > f2.txt
[root@centos7 ~]# cat f1.txt
abcedfg
[root@centos7 ~]# cat f2.txt
1234567890
#没有conv选项
[root@centos7 ~]# dd if=f1.txt of=f2.txt bs=1 count=2 skip=3 seek=4
记录了2+0 的读入
记录了2+0 的写出
2字节(2 B)已复制,0.000564555 秒,3.5 kB/秒
[root@centos7 ~]# cat f2.txt
1234ed[root@centos7 ~]#
#有conv选项
[root@centos7 ~]# echo 1234567890 > f2.txt
[root@centos7 ~]# dd if=f1.txt of=f2.txt bs=1 count=2 skip=3 seek=4 conv=notrunc
记录了2+0 的读入
记录了2+0 的写出
2字节(2 B)已复制,0.000530675 秒,3.8 kB/秒
[root@centos7 ~]# cat f2.txt
1234ed7890
[root@centos7 ~]#
五、RAID
常用raid:0、1、5、6、7、10、01、50
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构