fstabのUUID + fstabでUUIDを設定できない状況

fstabのUUID + fstabでUUIDを設定できない状況

ディスカッション - Redhat Linuxシステムがあります。私の質問は、/ etc / fstabファイルのUUID設定に関するものです。この場合、UUIDはオペレーティングシステムにリスクをもたらします。

私が知っている限り、ソフトウェアRAID1を使用している場合、/ etc / fstabでUUIDを使用することはできません。

なぜ?これは、RAIDボリューム自体とミラーの最初の要素が同じファイルシステムUUIDを持つように見えるためです。イメージが破損しているか、その他の理由でmdデバイスが起動時に機能しない場合、システムはランダムなベースディスクをマウントしてイメージを破損します。

だから私の質問は

RAIDレベル(番号)とは何ですか?必然ではないUUIDはfstabにありますか?

攻撃レベル情報 -https://en.wikipedia.org/wiki/Standard_RAID_levels

ベストアンサー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になるようにするには、本当に懸命に努力する必要があります。

おすすめ記事