两个关于linux下硬盘的冷知识

本文介绍了如何在Linux中直接对新硬盘进行格式化和挂载,跳过MBR和GPT分区步骤,使用loop模式。实验结果显示,不创建分区直接格式化硬盘为ext4文件系统后,可以正常挂载和使用。此外,文章还探讨了将新硬盘挂载到已有数据路径下的情况,表明这种操作不会覆盖原有数据,原有文件仍然安全。
摘要由CSDN通过智能技术生成

一、除了MBR和GPT分区表以外的loop模式

问:基本上所有的教程都在教你用fdisk和parted工具(或者其他工具)对新加的硬盘进行分区操作,有没有想过是否可以不通过MBR和GPT方式进行分区表写入,直接进行格式化后挂载使用?
答:可以。
直接上测试过程和结果:
新加一个1G的盘
我在虚拟机下加了个1G的硬盘
看不到新加的盘
通过fdisk -l命令查看不到新加的盘,因为是热添加方式又没有重启过,所有需要手动扫描下控制器的接口:

echo "- - -" > /sys/class/scsi_host/host2/scan
fdisk -l

上面的host2是我环境下的,可能是host0、host1等等。如果不出来多试几次。
新加的1G盘
不做任何分区操作,直接进行ext4文件系统的格式化:

mkfs.ext4 /dev/sdd
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: db073028-f809-40b1-92eb-ea83cb753c9a
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

格式化完成后,就可以直接直接挂载这个硬盘了。
我们将这个硬盘挂载到/mnt下看下结果

mount /dev/sdd /mnt/
df -h

在这里插入图片描述
挂载成功,使用没有任何问题。
还没结束,回到问题上,那什么是loop模式。
我们fdisk -l查看下磁盘类型:
磁盘分区模式
可以看到sdb这个硬盘的Disklabel type是dos,也就是MBR分区表,sdc为gpt分区表,但是sdd却没有Disklabel type标识。我们可以通过parted /dev/sdd查看。

parted /dev/sdd
GNU Parted 3.4
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  1074MB  1074MB  ext4

ok,现在我们看到这个盘有个Partition Table标签为loop,这个loop其实就是整盘模式标识,意思为直接将整个物理硬盘进行格式化。使用起来没有任何不同,因为现在很少有人直接这样使用了,且也不推荐这样直接格式化硬盘,所有相信知道的人应该不多了吧。

二、将一个新的硬盘挂载到已有数据的路径下会发生什么?

一种可能:原来路径下的文件出现在新硬盘下的存储下。
另一种可能:文件被覆盖,看不到之前路径下的文件。如果是这样,之前路径下文件是被覆盖写入(丢失),还是依然不变?
带着上面的问题,直接上测试:

[root@alma9 ~]# touch /opt/123.txt | echo "aaaaa" > /opt/123.txt
[root@alma9 ~]# cat /opt/123.txt
aaaaa
[root@alma9 ~]#

在/opt/下创建123.txt文件并写入"aaaaa"。
在将上一个问题创建的硬盘sdd挂载到/opt下面,并创建456.txt写入“bbbbb”

[root@alma9 ~]# mount /dev/sdd /opt/
[root@alma9 ~]# ls /opt/
lost+found
[root@alma9 ~]# touch /opt/456.txt | echo "bbbbb" > /opt/456.txt
[root@alma9 ~]# cat /opt/456.txt
bbbbb
[root@alma9 ~]#

发现其实看不到之前创建的123.txt文件,在将sdd卸载掉看123.txt还在吗。

[root@alma9 ~]# umount /dev/sdd
[root@alma9 ~]# ls /opt/
123.txt
[root@alma9 ~]# cat /opt/123.txt
aaaaa
[root@alma9 ~]#

原来的123.txt还在,里面内容也没有被覆写掉。

总结: 在有数据的路径下挂载硬盘,不会覆写掉原有数据,因为原有的数据是存在另外的磁盘上,而重新在挂载磁盘后,写入的文件是写到新磁盘的存储空间里,不会影响到另外磁盘上的数据。
所以如果磁盘空间快使用完并且磁盘之前未做lvm处理的情况,需要在占用空间较多路径下扩展空间,应该先拷贝数据后,在将新磁盘挂载到原路径下,在粘贴回到原路径下磁盘空间中,以确保应用的正确运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值