永久命名未格式化的分区

永久命名未格式化的分区

简单来说:有没有办法为未格式化的分区赋予一个永久名称?

细节:我有一个类似数据库的应用程序,它读取和写入未格式化的分区(因为与写入常规文件相比,它可以使吞吐量提高 40%)。我打开的文件的名称是 /dev/sda3。

我最近发现设备的名称可能会在启动过程中发生变化。这是因为这些名称是按照引导加载程序发现它们的顺序按数字顺序分配给这些设备的。在稳定的环境中,更改并不常见,但我观察到它们确实发生过。它们可能会导致用户意外将数据写入错误的分区,从而损坏数据。可维护性也变得很麻烦,因为我必须不断验证我是否在向正确的设备写入数据。

解决这个问题的方法通常是使用持久设备名称。但是,似乎无法为未格式化的分区创建永久名称。我尝试了命令:“tune2fs -L newname /dev/sda3”,但出现以下错误:

tune2fs 1.42.8 (2013 年 6 月 20 日) tune2fs:超级块中的魔法数字错误

尝试打开 /dev/sda3 时找不到有效的文件系统

超级块。

那么,有没有什么方法至少可以达到与为未格式化的分区赋予永久名称相同的效果?谢谢!

答案1

如果您使用 GPT 分区表

GPT 分区表在分区条目。因此,您可以使用/dev/disk/by-partuuid/whatever而不是/dev/sdXY

ls -l /dev/disk/by-partuuid

(在 Ubuntu 18 上测试)

如果您使用 MBR 分配表

您可以使用驱动器序列号和分区号来访问驱动器分区,/dev/disk/by-id/whatever-partY而不是/dev/sdXY

ls -l /dev/disk/by-id

(在 Ubuntu 18 上测试)

但是,与 /dev/sdXY 一样,风险在于如果您在此磁盘上创建/删除分区,分区号可能会更改,并且您可能会覆盖此磁盘上的数据。分区标签和 UUID 都存储在文件系统中,因此如果您不使用文件系统,系统就无法消除在错误分区上写入的风险。

但至少,这样一来,你就可以确信它是正确的磁盘。


注意:只要系统启动,这些路径都是可以访问的。在启动过程中(即,如果您使用 initramfs 钩子和启动脚本来执行奇怪的操作),此路径的命名约定会略有不同。

相关内容