我可以使用/dev/sda
和/dev/sdb
来进行 RADI1 配置吗?
或者我首先必须用单个 Linux raid 分区对它们进行分区?
答案1
是的,您可以这样做,但它可能会导致令人讨厌的副作用。
我旁边有一个系统,我将整个设备用作 md RAID 成员。每次启动时,它都会抱怨这些设备上的分区损坏。
这是因为当驱动器属于 RAID 组时,数据将被写入驱动器的最开始处。然后系统会在启动时检查设备时尝试将该数据解释为分区表。
到目前为止,这还没有给我带来任何问题。它只是延迟了启动过程,而且看起来真的很可怕。
我只是调出日志来显示我所说的内容。这是我启动服务器时通过控制台运行的内容。
请注意,整个设备/dev/sda
都是RAID 阵列的一部分。/dev/sdd
包含系统根分区。/dev/sdf
/dev/sdj
/dev/sde
11 月 24 日 11:41:52 转储内核:[49.717165] sd 0:0:0:0: [sda] 2930277168 512 字节硬件扇区(1500302 MB) 11 月 24 日 11:41:52 转储内核:[49.717172] sd 0:0:0:0:[sda] 写保护已关闭 11 月 24 日 11:41:52 转储内核:[49.717173] sd 0:0:0:0:[sda] 模式感知:00 3a 00 00 11 月 24 日 11:41:52 转储内核:[49.717182] sd 0:0:0:0:[sda] 写入缓存:已启用,读取缓存:已启用,不支持 DPO 或 FUA 11 月 24 日 11:41:52 转储内核:[49.717209] sd 0:0:0:0: [sda] 2930277168 512 字节硬件扇区(1500302 MB) 11 月 24 日 11:41:52 转储内核:[49.717213] sd 0:0:0:0:[sda] 写保护已关闭 11 月 24 日 11:41:52 转储内核:[49.717214] sd 0:0:0:0:[sda] 模式感知:00 3a 00 00 11 月 24 日 11:41:52 转储内核:[49.717221] sd 0:0:0:0:[sda] 写入缓存:已启用,读取缓存:已启用,不支持 DPO 或 FUA 11 月 24 日 11:41:52 转储内核:[49.717222] sda:未知分区表 11 月 24 日 11:41:52 转储内核:[49.724463] sd 0:0:0:0:[sda] 连接的 SCSI 磁盘 11 月 24 日 11:41:52 转储内核:[49.724504] sd 1:0:0:0: [sdb] 2930277168 512 字节硬件扇区(1500302 MB) 11 月 24 日 11:41:52 转储内核:[49.724510] sd 1:0:0:0:[sdb] 写保护已关闭 11 月 24 日 11:41:52 转储内核:[49.724512] sd 1:0:0:0:[sdb] 模式感知:00 3a 00 00 11 月 24 日 11:41:52 转储内核:[49.724519] sd 1:0:0:0:[sdb] 写入缓存:已启用,读取缓存:已启用,不支持 DPO 或 FUA 11 月 24 日 11:41:52 转储内核:[49.724547] sd 1:0:0:0:[sdb] 2930277168 512 字节硬件扇区(1500302 MB) 11 月 24 日 11:41:52 转储内核:[49.724551] sd 1:0:0:0:[sdb] 写保护已关闭 11 月 24 日 11:41:52 转储内核:[49.724552] sd 1:0:0:0:[sdb] 模式感知:00 3a 00 00 11 月 24 日 11:41:52 转储内核:[49.724559] sd 1:0:0:0:[sdb] 写入缓存:已启用,读取缓存:已启用,不支持 DPO 或 FUA 11 月 24 日 11:41:52 转储内核:[49.724561] sdb:驱动程序“sr”需要更新 - 请使用 bus_type 方法 11 月 24 日 11:41:52 转储内核:[49.734320] 未知分区表
这只是 RAID 阵列中的前两个驱动器。您已经可以看到unknown partition table
其中的错误。所有 RAID 成员都会打印相同的错误。
一旦完成。这将开始:
11 月 24 日 11:41:52 转储内核:[50.145507] 尝试访问设备末端以外的区域 11 月 24 日 11:41:52 转储内核:[50.145513] sdc:rw=0,want=7018997372,limit=2930277168 11 月 24 日 11:41:52 转储内核:[50.145515] 设备 sdc3 上的缓冲区 I/O 错误,逻辑块 4250167552 11 月 24 日 11:41:52 转储内核:[50.145626] 尝试访问设备末端以外的区域 11 月 24 日 11:41:52 转储内核:[50.145627] sdc:rw=0,want=7018997373,limit=2930277168 11 月 24 日 11:41:52 转储内核:[50.145628] 设备 sdc3 上的缓冲区 I/O 错误,逻辑块 4250167553
您会看到它抱怨sdc3
实际上不存在的内容(因为整个sdc
设备都用作 RAID 成员。
下次我启动机器时,它可能会抱怨不同的驱动器,或者根本没有抱怨。这取决于下次我启动时设备上存在什么数据而不是分区表。
最糟糕的是什么?我现在无法移动到分区,因为我必须将每个 RAID 成员磁盘缩小一点点(这样我才能分区),而这需要重新创建整个 RAID 阵列。
答案2
是的,如果您使用 md 进行 RAID,则可以使用整个块设备而无需对其进行分区。请参阅mdadm 手册页了解详情。
答案3
是的,但我建议您对磁盘进行分区,并在最后留出一些剩余空间。
例如,如果您用另一个 2TB 磁盘替换一个 2TB 磁盘,其大小可能与另一个磁盘不完全相同。因此,如果您要替换的磁盘小于原始磁盘,您可能无法将其添加到 raid。
保留了一些空闲空间后,就很容易创建匹配的分区,因为您只需将空闲空间调小或调大即可(并且您始终可以将“浪费的”空间分配给交换)。