ディスカッション - Redhat Linuxシステムがあります。私の質問は、/ etc / fstabファイルのUUID設定に関するものです。この場合、UUIDはオペレーティングシステムにリスクをもたらします。
私が知っている限り、ソフトウェアRAID1を使用している場合、/ etc / fstabでUUIDを使用することはできません。
なぜ?これは、RAIDボリューム自体とミラーの最初の要素が同じファイルシステムUUIDを持つように見えるためです。イメージが破損しているか、その他の理由でmdデバイスが起動時に機能しない場合、システムはランダムなベースディスクをマウントしてイメージを破損します。
だから私の質問は
RAIDレベル(番号)とは何ですか?必然ではないUUIDはfstabにありますか?
ベストアンサー1
私たちはArchLinuxとmdadmのテストを続けます。ただし、まずパーティションベースの配列では、メンバーパーティションに固有のUUIDがあるため、これは重要ではありません。したがって、理論的には、これはディスク全体のメンバーにのみ適用されます。
要約:これは、古いメタデータチャンクの場合でも実際には問題ではありません。これは私が知らない古いソフトウェアのバグかもしれません。しかし、最新のArchLinuxには影響しません。
#uname -sr
Linux 4.14.7-1-ARCH
#modprobe raid1
#mdadm --create --verbose /dev/md0 --metadata 0.9 --level=mirror --raid-devices=2 /dev/sdb /dev/sdd
mdadm: size set to 102336K
mdadm: array /dev/md0 started.
#cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdd[1] sdb[0]
102336 blocks [2/2] [UU]
unused devices: <none>
#mdadm --detail --scan >> /etc/mdadm.conf
fdisk /dev/md0
lsblk /dev/md0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 100M 0 disk
└─md0 9:0 0 100M 0 raid1
└─md0p1 259:0 0 98.9M 0 md
sdd 8:48 0 100M 0 disk
└─md0 9:0 0 100M 0 raid1
└─md0p1 259:0 0 98.9M 0 md
md0 8:0 0 100M 0 raid1
└─sda2 8:2 0 98.9M 0 md
mdstat -> [UU]
#blkid /dev/md0
/dev/md0: PTUUID="d49d8666-e580-8244-8c82-2bc325157e66" PTTYPE="gpt"
#blkid /dev/sdd
/dev/sdd: UUID="b3d82551-0226-6687-8279-b6dd6ad00d98" TYPE="linux_raid_member"
#blkid /dev/sdb
/dev/sdb: UUID="b3d82551-0226-6687-8279-b6dd6ad00d98" TYPE="linux_raid_member"
#mkfs.ext4 /dev/md0p1
mke2fs 1.43.7 (16-Oct-2017)
creating filesystem with 101292 1k blocks and 25376 inodes
Filesystem UUID: 652bcf77-fe47-416e-952c-bbOa76a78407
Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
#mount /dev/md0p1 /mnt
#lsblk -o NAME,UUID,MOUNTPOINT /dev/sdb /dev/sdd
NAME UUID MOUNTPOINT
sdb b3d82551-0226-6687-8279-b6dd6ad00d98
└─md0
└─md0p1 652bcf77-fe47-416e-952c-bbOa76a78407 /mnt
sdd b3d82551-0226-6687-8279-b6dd6ad00d98
└─md0
└─md0p1 652bcf77-fe47-416e-952c-bbOa76a78407 /mnt
今まではそんなに良くなった。これには、メンバーデバイスをRAIDデバイスとして正しく識別するだけでなく、2つの一致するパーティションレベルのUUIDもあります。実際、これは同じコンテナデバイスmd0の一部であり、同じマウントポイントをリストします。 sdd または sdb の汎用パーティションコンテナはリストされません。 md0 デバイス自体に UUID はありません。そのメンバーだけがUUIDを持ち、それらのUUIDは実際には同じです。
#echo "UUID=652bcf77-fe47-416e-952c-bbOa76a78407 /mnt ext4 rw,relatime,data=ordered 0 2" >> /etc/fstab
umount /mnt
mount /mnt
cd /mnt
fallocate -l 50MiB data
mdstat -> [UU]
raidメンバーのファイルシステムUUIDを要求しているので、mdadmを実行せずにシステムを実行しましょう。
#cd
#umount /mnt
#mdadm --stop /dev/md0
mdadm: stopped /dev/md0
#lsblk /dev/sdb /dev/sdd
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 100M 0 disk
sdd 8:48 0 100M 0 disk
これで、システムはパーティションテーブルがなく、したがってコンテナではないので、これは正しいrawディスクだと思います。しかし、それが何であるかを尋ねる場合:
#blkid /dev/sdd
/dev/sdd: UUID="b3d82551-0226-6687-8279-b6dd6ad00d98" TYPE="linux_raid_member"
マウントしようとすると、まだlinux_raid_memberです。
#mount /dev/sdd /mnt
mount /mnt: unknown filesystem type "linux raid member"
どうですか?
#mount /mnt
mount: /mnt can't find UUID=652bcf77-fe47-416e-952c-bbOa76a78407
sddはコンテナではないため、調査するファイルシステムがないため、これは意味があります。しかし、私が実行した場合:
#mdadm --assemble --scan && mount /mnt
mdadm: /dev/md0 has been started with 2 drives.
再度停止して mdadm.conf を削除すると、次のようになります。
#umount /mnt && mdadm --stop /dev/md0
#modprobe -r raid1
#rm /etc/mdadm.conf
#modprobe raid1
#mdadm --assemble --scan
mdadm: /dev/md/0 has been started with 2 drives.
md0デバイス名の私の設定はもはや適用されず、自動的に/ dev / md / 0に作成されます。それでは、再起動してsystemd / Linuxがfstabで何をしているのか見てみましょう。
#mdadm --stop /dev/md/0
mdadm: stopped /dev/md/0
#systemctl reboot
#dmesg | grep md0
[ 14.550231] md/raidl:md0: active with 2 out of 2 mirrors
[ 14.550261] md0: detected capacity change from 0 to 104792064
[ 14.836905] md0: p1
[ 16.909057] EXT4-fs (md0p1): mounted filesystem with ordered data mode. Opts: data=ordered
#lsblk /dev/md0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
md0 9:0 0 100M 0 raidl
└─md0p1 259:0 0 98.9M 0 md /mnt
再度raid = noautoDetectカーネルパラメータを使用してください。これにより、すべてのRAIDやすべてのスーパーブロック/メタデータバージョンなどを自動的に検出できないLinuxバージョンもエミュレートされます。しかし、fstabから要求されたので、まだraidをマウントし、mod raid1を強制的にロードします。それでは、modprobe.blacklist = raid1を使ってブラックリストにもう一度登録してみましょう。
わかった、どうしたの? :
したがって、LinuxはRAIDサポート機能がなくても、これがRAIDタイプのデバイスであることを知っています。マウントしようとすると、raidデバイスを正しく検出し、fstabを使用するとファイルシステムのスーパーブロックにあるにもかかわらずUUIDが見つかりません。
そしてまた! fstab または mdadm には情報がありません。
#mount /dev/sdd /mnt
mount: /mnt: unknown filesystem type "linux_raid_member".
ここで重要なのは、Linuxプロービングが賢いということだけではないと思います。 fdisk Warmなどのツールを使用することに加えて、パーティションテーブル領域は追加情報で埋められます。このエラーがメンバーディスクの1つのファイルシステムUUIDになるようにするには、本当に懸命に努力する必要があります。