파티션 대신 디스크 장치에 레이블을 지정할 수 있나요?

파티션 대신 디스크 장치에 레이블을 지정할 수 있나요?

나는 e2label과 친구 프로그램이 디스크 파티션에 레이블을 부착하는 데 사용된다는 것을 알고 있습니다.

e2label /dev/sda1 bla

내가 하고 싶은 것은 뭔가 다른 것입니다. 즉, 파티션이 아닌 하드 드라이브용 레이블(예: /dev/sda)을 만들고 싶습니다.

가능합니까? 그렇다면 어떻게?

편집: 배경: HD 베이가 여러 개인 상황에서 물리적 베이의 도어에 (종이) 라벨을 붙이고 거기에 넣은 디스크에 논리적으로 동일한 라벨을 붙이고 싶습니다.

편집 2: 이것은 Ubuntu Linux 12.04 서버에 관한 것입니다.

EDIT3: GPT 파티션에도 partlabel이 있는데, 이는 parted 등을 사용하여 설정할 수 있습니다. 바라보다https://serverfault.com/q/681088/76442

답변1

귀하의 원래 질문에 대한 좋은 답변이 이미 있으므로 디스크 표시와 관련된 질문의 배경에 초점을 맞추겠습니다.

저는 드라이브의 일련 번호를 사용하여 핫 스왑 베이의 레이블을 인쇄합니다. 이는 드라이브를 고유하고 일관되게 식별하는 가장 좋은 방법입니다. 어떤 베이나 어떤 컨트롤러가 연결되어 있어도 변경되지 않습니다.

Linux를 사용하는지 아니면 다른 Unix를 사용하는지 언급하지 않았지만 Linux에서는 /를 보면 제조사, 모델 및 일련 번호가 포함된 디스크 목록(및 제외하려는 파티션)을 얻을 수 있습니다. dev/disk/by-id/ 디렉토리. 다음 bash 별칭이 이에 유용하다는 것을 알았습니다.

alias list_disks='find /dev/disk/by-id/ -iname 'scsi-*' | grep -v -- -part | while read disk ; do echo $(readlink $disk | sed -e s:../../:: ) $(basename $disk); done'

(일치 항목은 SATA 및 SAS 드라이브를 포함하여 모든 "scsi와 유사한" 드라이브를 찾습니다. 또한 scsi-*SATA 드라이브만 있는 시스템에서도 작동합니다.)ata-*

예를 들어, 내 ZFS 서버 시스템 중 하나에서는 다음 출력이 생성됩니다.

# 디스크 목록 유형 |
sdb scsi-SATA_WDC_WD10EACS-00Z_WD-WCASJ2195141
sdc scsi-SATA_WDC_WD10EACS-00Z_WD-WCASJ2114122
sdd scsi-SATA_ST31000528AS_9VP4P4LN
sde scsi-SATA_ST31000528AS_6VP3FWAG
sdf scsi-SATA_ST31000528AS_9VP509T5
sdg scsi-SATA_ST31000528AS_9VP4RPXK
sdh scsi-SATA_OCZ-VECTOR_OCZ-0974C023I4P2G1B8
sdi scsi-SATA_OCZ-VECTOR_OCZ-8RL5XW08536INH7R
sdj scsi-SATA_ST31000528AS_9VP18CCV
SDK scsi-SATA_WDC_WD10EARS-00Y_WD-WMAV50933036

보시다시피 /dev/disk/by-id 목록에는 각 드라이브의 제조업체와 모델은 물론 일련 번호도 포함되어 있습니다. 이는 LSI SAS-2008 컨트롤러의 SATA 포트 또는 SAS 포트에 연결되는 SATA 드라이브입니다.

라벨 프린터를 연결하면 출력물을 기반으로 라벨을 쉽게 인쇄할 수 있습니다 list_disks. 나는 오래된 수동 라벨 프린터를 사용했습니다. 왜냐하면 그것이 제가 가진 전부였기 때문입니다. 인쇄된 라벨에는 제조업체/모델이 아닌 일련 번호만 포함되어 있습니다(필요한 경우 드라이브를 식별하는 데 충분함). 레이블은 드라이브에 장애가 발생하여 교체해야 할 때 유용합니다.

답변2

이것이 우리가 이야기하고 있는 Linux라면 udev원하는 것을 달성하기 위해 이를 사용하여 장치에 대한 심볼릭 링크를 생성할 수 있다고 생각합니다. 을 보면 다음 내용으로 /etc/udev/rules.d불리는 파일이 있다는 것을 알 수 있습니다 .70-persistent-cd.rules

SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1"

/dev/cdrom그 목적은 PCI 버스 주소로 식별되는 장치에 대한 심볼릭 링크를 생성하는 것입니다 . HDD(베이 번호? 경험이 없어서)를 사용하여 HDD를 식별하고 위와 유사한 구문을 사용하여 심볼릭 링크(예:)를 추가하면 /dev/bay1원하는 것을 달성 할 수 있습니다. 규칙 작성에 관한 다음 기사가 udev도움이 될 수 있습니다.

udev 규칙 작성

노트

답변을 주신 slm에게 감사드립니다. 이 솔루션은 디스크가 아닌 HDD 베이에만 라벨을 지정한다는 점에 유의하세요. 따라서 레이블을 사용 /dev/bay1하고 /dev/bay2A 드라이브가 베이 1에 있고 드라이브 B가 베이 2에 있는 경우 /dev/bay1디스크 A는 참조되고 /dev/bay2디스크 B는 참조됩니다. 어떤 이유로 A와 B 디스크가 교체된 경우 귀하의 /dev/bay1질문 에 따르면 /dev/bay2이것이 귀하의 의도라고 생각됩니다. 내가 틀렸다면 정정해주세요.

답변3

파티션에 레이블을 지정하는 것이 아니라 파일 시스템에 레이블을 지정하는 것입니다. 이러한 파일 시스템은 파일의 파티션, 전체 디스크, 네트워크 블록 장치에 있을 수 있습니다. 상관없습니다.

그렇습니다. ext2/3/4 파일 시스템이 바로 위에 있으면 해당 /dev/sda파일 시스템과 동일한 레이블을 붙일 수 있습니다 /dev/sda1.

이제 직접 파일 시스템이 없지만 /dev/sda예를 들어 /dev/sda(GPT, MBR, LVM 등을 사용하여) 여러 파티션으로 분할된 경우 분명히 e2label /dev/sda.

GPT 파티션에서는 파티션 이름을 지정할 수 있으므로 대규모 단일 섹터 파티션을 만들고 이 이름을 사용하여 디스크를 식별할 수 있습니다. c의 명령을 사용하여 이 작업을 수행 할 수 있습니다 gdisk.

답변4

파티션 대신 디스크에 레이블을 지정할 수 있는지 여부에 대한 질문에 대답하려면 '아니오'입니다. 나는 이것을 할 수 있는 어떤 방법도 모른다.

@JosephR이 설명한 방법을 사용할 수 있지만 이 설정은 시스템에 따라 다르므로 해당 HDD를 다른 시스템으로 가져가면 그가 제안한 "레이블"이 손실됩니다. 의미 있는 방식으로 디스크에 연결되어 있지 않습니다.

그런데 이 명령을 사용하여 다른 드라이브의 레이블 및 UUID 설정을 볼 수 있습니다 blkid.

$ blkid
/dev/sda1: LABEL="SYSTEM_DRV" UUID="XXXXXX" TYPE="ntfs" 
/dev/sda2: LABEL="Windows7_OS" UUID="XXXXXX" TYPE="ntfs" 
/dev/sda3: LABEL="Lenovo_Recovery" UUID="XXXX" TYPE="ntfs" 
/dev/sda5: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext4" 
/dev/sda6: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXfG93LA" TYPE="LVM2_member" 
/dev/mapper/vg_grinchy-lv_root: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="ext4" 
/dev/mapper/vg_grinchy-lv_swap: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="swap" 
/dev/mapper/vg_grinchy-lv_home: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="ext4" 

관련 정보