udev가 내 RAID 카드를 자동으로 화이트리스트에 추가하는 이유는 무엇입니까? 이 화이트리스트의 목적은 무엇입니까?

udev가 내 RAID 카드를 자동으로 화이트리스트에 추가하는 이유는 무엇입니까? 이 화이트리스트의 목적은 무엇입니까?

저는 udev 사용법을 배우고 있는데, 실행하면 udevadm test --action="add" /sys/block/sdc다음과 같은 내용이 표시되는 것을 발견했습니다.

GROUP 6 /usr/lib/udev/rules.d/50-udev-default.rules:59
IMPORT 'scsi_id --export --whitelisted -d /dev/sdc' /usr/lib/udev/rules.d/60-persistent-storage.rules:50
starting 'scsi_id --export --whitelisted -d /dev/sdc'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_SCSI=1'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_VENDOR=NVMe'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_VENDOR_ENC=NVMe\x20\x20\x20\x20'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_MODEL=Dell_Ent_NVMe_v2'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_MODEL_ENC=Dell\x20Ent\x20NVMe\x20v2'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_REVISION=.2.0'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_TYPE=disk'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_SERIAL=236435330529024120025384100000002'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_SERIAL_SHORT=36435330529024120025384100000002'
'scsi_id --export --whitelisted -d /dev/sdc'(out) 'ID_SCSI_SERIAL=S6CSNA0R902412      '
Process 'scsi_id --export --whitelisted -d /dev/sdc' succeeded.

이 예에서 sdc는 PERC H755에 있는 가상 디스크입니다. 아직 udev에서 아무것도 변경하지 않았습니다.

위의 내용은 RAID0(패스스루/JBOD 모드)을 사용할 때 표시되는 내용입니다. RAID 5를 생성하면 다음과 같이 표시됩니다.

probe /dev/sda raid offset=0
LINK 'disk/by-id/wwn-0x6f4ee080160bd5002ab7652100a1691a' /usr/lib/udev/rules.d/60-persistent-storage.rules:97
IMPORT '/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw' /usr/lib/udev/rules.d/61-scsi-sg3_id.rules:17
starting '/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_TPGS=0'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_TYPE=disk'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_VENDOR=DELL'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_VENDOR_ENC=DELL\x20\x20\x20\x20'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_MODEL=PERC_H755N_Front'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_MODEL_ENC=PERC\x20H755N\x20Front'
'/usr/bin/sg_inq --export --inhex=/sys/block/sda/device/inquiry --raw'(out) 'SCSI_REVISION=5.16'

내 질문은 udev가 PERC 화이트리스트를 어떻게 "결정"하고 화이트리스트의 목적이 무엇인지입니다.

연구 완료

일반적으로 udev 화이트리스트와 관련된 결과를 Google에서 검색해 보았지만 내가 찾을 수 있는 유일한 결과는 화이트리스트가 일반적으로 작동하는 방식이 아니라 USB 장치 화이트리스트에 관한 것뿐이었습니다.

답변1

--whitelisted 옵션은 "시험 실행"과 반대되는 "습식 실행"을 수행하는 것으로 보입니다. 왜냐하면 이 옵션이 없으면 scsi_id아무 것도 수행하지 않는 것처럼 보이기 때문입니다.

출처 보기:https://github.com/systemd/systemd/blob/bab787396444466e5a71e5f01b1924646959f6e0/src/udev/scsi_id/scsi_id.c#L407

static int scsi_id(char *maj_min_dev) {
        int good_dev;
        (...)

        per_dev_options(&dev_scsi, &good_dev, &page_code);
        if (!good_dev) {
                retval = 1;
                goto out;
        }
        (...)
out:
        return retval;


static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *page_code) {

        (...)

        while (retval == 0) {
                option = getopt_long(newargc, newargv, "bgp:", options, NULL);
                if (option == -1)
                        break;

                switch (option) {
                case 'b':
                        *good_bad = 0;
                        break;

                case 'g':
                        *good_bad = 1;
                        break;


static void help(void) {
               (...)
               "  -b --blacklisted                 Treat device as blacklisted\n"
               "  -g --whitelisted                 Treat device as whitelisted\n"
               (...)

이것은 우분투 22 시스템에서 가져온 것입니다:

root@trybase:~# /usr/lib/udev/scsi_id /dev/sdc 
root@trybase:~# /usr/lib/udev/scsi_id  --whitelisted /dev/sdc 
35000c500c7869d5b

관련 정보