sda와 sdb는 계속해서 교환됩니다

sda와 sdb는 계속해서 교환됩니다

상자는 Ubuntu 16.04를 실행하는 HP 마이크로서버입니다. 최근에 부팅 장치를 64GB SSD로 "업그레이드"했습니다. 1TB SATA 드라이브도 있습니다.

/dev/sda1일반적으로 SSD의 기본 파티션으로 부팅하고 /dev/sda5파티션을 스왑하며 /dev/sdb1에 마운트된 1Tb HDD의 파티션을 가리킵니다 /mnt/media0.

문제는 때때로 모든 것이 변경된다는 것입니다. 이제 SSD는 /dev/sdb1이고 /dev/sdb5미디어 파티션은 이제 입니다 /dev/sda1.

/etc/fstab물론 이로 인해 스왑 및 미디어 마운트가 이전 이름 ​​아래에 나열되므로 실패하게 됩니다 /dev/sd*.

그래서 나는 가지고있다:

  1. BIOS를 확인했는데 항상 64GB SSD가 첫 번째 드라이브로, 1TB IDE가 두 번째 드라이브로 표시됩니다.

  2. 볼륨 레이블로 미디어 드라이브를 참조하도록 변경하려고 시도했지만 /etc/fstab이로 인해 Ubuntu가 부팅되지 않고 복구 모드로 전환되었습니다.

  3. 스왑 및 (ext4) 미디어 파티션을 참조하기 위해 UUID를 사용하도록 변경을 시도했습니다 /etc/fstab(사실 기본 파티션이 나열되었습니다).하지만그러다가 두 번째 문제에 부딪혔습니다.

각 파티션의 UUID를 찾기 위해 다음 명령을 실행하면...

ls /dev/disk/by-uuid
blkid

둘 다 첫 번째 항목(기본 파티션의 UUID)만 나열합니다. 사용된 미디어 파티션의 UUID만 볼 수 있습니다(사실 부팅 시 sdb1할당된 것 같습니다).

tune2fs -l /dev/sdb1

하지만 해당 UUID를 사용하면 /etc/fstabUbuntu가 부팅되지 않고 복구 모드로 들어갑니다.

그래서 내 질문은 다음과 같습니다.

  • 드라이브 간 교환을 가져오고 중지 /dev/sda할 수 있는 방법이 있습니까 ?/dev/sdb

  • 다른 파티션의 UUID를 시스템에서 볼 수 있도록 하려면 어떻게 해야 합니까 fstab?

  • 그리고/또는 스왑 및 미디어 파티션을 안정적으로 마운트할 수 있는 다른 방법이 있습니까?

답변1

에서 "디스크/ID별" 이름을 사용할 수 있습니다 /etc/fstab.

ls -l /dev/disk/by-id

이러한 장치 이름은 다른 파일(initrd, grub config)에서도 사용될 수 있습니다. 따라서 grub 구성을 업데이트하고 initrd를 다시 생성할 수도 있습니다.

답변2

다른 커널에는 udev를 지원하고 다른 커널에는 udev(eudev)를 지원하지 않기 때문에 하드 드라이브를 계속 교체합니다!

예, sysv, openrc 및 s6 init 교체(systemd 교체)를 시도하기 시작했을 때도 이 문제로 인해 어려움을 겪었습니다.

문제는 동일한 디스크에 서로 다른 Linux vmlinuz 이미지를 빌드할 때 grub 유틸리티와 해당 구성 파일에 있습니다. 특히 하나의 커널 빌드에는 활성화되고 다른 커널 빌드에는 활성화되지 않는 경우 GRUB_DISABLE_LINUX_UUID( /etc/default/grub등)에 문제가 있습니다.

==이유 #1==

그럼... 범인은 누구죠? 이전 비시스템. Non-systemd는 어떤 SATA/IDE 커넥터가 사용되는지에 관계없이 sda 드라이브가 항상 시작 디스크 레이블이 되도록 스왑을 수행합니다.

드라이브 정렬 은 ATA(SATA 또는 libata 라이브러리) 장치에 의해 수행되며, 재정렬 은 파일에서 제거 됩니다 drivers/scsi/ida_probe().GRUB_DEVICE_BOOT/etc/default/grub

==이유 #2==

CONFIG_SCSI_DEBUG"yes"(또는 "vmlinuz 부팅 매개변수에서"와 함께 initramfs를 사용하는 경우 "m" )를 지정 scsi_debug=add_host:1하면 기존 하드 드라이브의 "sd" 태그 인덱스의 인덱스 번호가 1씩 올라갑니다. 즉, 가 sda1됩니다 sdb1.

관련 정보