나는 디스크 파티션에 레이블을 부착하기 위한 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/cdrom
PCI 버스 주소로 식별되는 장치에 대한 심볼릭 링크를 생성하는 것입니다. /dev/bay1
예를 들어 베이 번호? 경험이 없어서 HDD를 식별하고 위와 유사한 구문을 사용하여 다음과 같은 심볼릭 링크를 추가하면 원하는 것을 달성할 수 있습니다 . 규칙 작성에 관한 다음 기사가 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/sda
GPT, 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"