如何知道 md raid1 和 hdparm 的磁盘 uuid 是什么?

如何知道 md raid1 和 hdparm 的磁盘 uuid 是什么?

我有 md0(raid 1)阵列,并想在系统启动期间关闭它们的写入缓存(ubuntu 12.04 服务器)。

md0:/dev/sda/dev/sdc

BLKIDD:

/dev/sda: UUID="3e502de5-696d-f4b4-470e-XXX" TYPE="linux_raid_member" 
/dev/sdb1: UUID="4ba40aae-65e2-416b-8f17-XXX" TYPE="ext2" 
/dev/sdb5: UUID="LNt5uO-ZFik-eQ0g-BEhP-FDLi-XXX" TYPE="LVM2_member" 
/dev/md0: UUID="a7eb2443-c3be-45e6-a3eb-XXX" TYPE="ext4" 
/dev/mapper/mydev-root: UUID="b560f808-db97-4a56-bbf1-XXX" TYPE="ext4" 
/dev/sdc: UUID="3e502de5-696d-f4b4-470e-XXX" TYPE="linux_raid_member" 
/dev/mapper/mydev-swap_1: UUID="49b806fe-95a6-4ddf-9c47-XXX" TYPE="swap" 

hdparm -W 0 /dev/sda(或 /dev/sdc)工作正常,但这些字母可能会在启动期间发生变化。我想通过 disk-uuid 使用它。

**stat /dev/disk/by-uuid/*

 File: `/dev/disk/by-uuid/4ba40aae-65e2-416b-8f17-XXX' -> `../../sdb1'
 File: `/dev/disk/by-uuid/a7eb2443-c3be-45e6-a3eb-XXX' -> `../../md0'
 File: `/dev/disk/by-uuid/49b806fe-95a6-4ddf-9c47-XXX' -> `../../dm-1'
 File: `/dev/disk/by-uuid/b560f808-db97-4a56-bbf1-XXX' -> `../../dm-0'

如果我使用 hdparm -W 0 /dev/disk/by-uuid/a7eb2443-c3be-45e6-a3eb-XXX – 这会失败。

/sdb1 -- system hdd
/dm-0 -- /boot on sdb1
/dm-1 -- /root on sdb1

我正在尝试使用本机 /etc/hdparm.conf 来禁用磁盘上的 write_cache。

我不想写一些脚本来检查我应该使用 hdparm 的哪个 /dev/sdX,所以我想问该怎么做。请帮忙。

答案1

您尝试hdparm在对应于 RAID 阵列 (md0) 的 by-uuid 设备文件上使用。请尝试在对应于物理磁盘的文件上运行它。

答案2

类似这样的一行程序将在用于 md raid 的所有设备上运行“hdparm -W 0”。

blkid | awk -F: '/linux_raid_member/ {print $1}' | xargs -r -n 1 hdparm -W 0

如果您使用分区而不是整个磁盘进行 raid,那么您需要从设备名称中去掉分区号(并按唯一顺序排列它们,这样您就不会对 sda1、sda2、sda3 获得三次 sda):

blkid | awk -F: '/linux_raid_member/ {print $1}' | sed -e 's/[0-9]\+$//' | sort -u | xargs -r -n 1 hdparm -W 0

与往常一样,首先通过在 hdparm 之前立即插入 echo 来测试单行命令将要做什么。如果输出看起来正常,则再次运行它而不使用 echo。

相关内容