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

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

나는 디스크 파티션에 레이블을 부착하기 위한 e2label과 친구 프로그램에 대해 알고 있습니다.

e2label /dev/sda1 bla

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

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

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

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

EDIT3: GPT 파티션에는 parted 등으로 설정할 수 있는 part레이블도 있습니다. 보다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'

( scsi-*SATA 및 SAS 드라이브를 포함하여 "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/cdromPCI 버스 주소로 식별되는 장치에 대한 심볼릭 링크를 생성하는 것입니다. /dev/bay1예를 들어 베이 번호? 경험이 없어서 HDD를 식별하고 위와 유사한 구문을 사용하여 다음과 같은 심볼릭 링크를 추가하면 원하는 것을 달성할 수 있습니다 . 규칙 작성에 관한 다음 기사가 udev도움이 될 수 있습니다.

udev 규칙 작성

메모

slm의 답변 덕분에 이 솔루션은 내부 디스크가 아닌 HDD 베이 전용 라벨을 만든다는 점에 유의하세요. 따라서 레이블을 사용 /dev/bay1하고 /dev/bay2베이 1에 하드 디스크 A가 있고 베이 2에 하드 디스크 B가 있는 경우 /dev/bay1디스크 A와 /dev/bay2디스크 B를 참조합니다. 어떤 이유로 A와 B 디스크를 바꾸는 경우, /dev/bay1디스크 B를 참조하고 디스크 A를 참조 하게 됩니다 /dev/bay2. 귀하의 질문에 따르면 이것이 귀하의 의도라고 믿습니다. 내가 틀렸다면 정정해주세요.

답변3

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

그렇습니다. ext2/3/4 파일 시스템이 에 직접 있다면 에 /dev/sda있는 파일 시스템과 동일하게 레이블을 지정할 수 있습니다 /dev/sda1.

이제 직접 파일 시스템이 없지만 /dev/sda예를 들어 /dev/sdaGPT, MBR, LVM 등을 사용하여 여러 파티션으로 분할된 경우에는 당연히 사용할 수 없습니다 e2label /dev/sda.

GPT 파티셔닝에서는 파티션에 이름을 지정할 수 있으므로 디스크를 식별하는 데 도움이 되는 이름으로 1섹터의 큰 파티션을 생성할 수 있습니다. 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" 

관련 정보