현재 마운트 해제 된 드라이브에 대한 정보를 얻는 가장 좋은 방법은 무엇입니까?


38

첫째, 상황 : 이동식 SSD 드라이브를 수용하는 2 개의 eSATA 드라이브 베이가있는 Linux 컴퓨터가 있습니다. 사용자 가이 베이에 넣은 드라이브를 쉽게 마운트 / 마운트 해제 / 포맷 / 백업 / 기타 할 수있게 해주는 작은 GUI 응용 프로그램을 작성하려고합니다.

모두 대부분 작동합니다. 그러나 하나의 작은 문제는 드라이브가 성공적으로 마운트 될 때까지 삽입 된 드라이브에 대한 정보를 찾는 방법을 모른다는 것입니다.

예를 들어, 사용자가 마운트 할 수없는 드라이브 (예 : 포맷되지 않았거나 예기치 않은 파일 시스템으로 포맷 된 드라이브)를 삽입하면 모든 앱에서 "드라이브를 마운트하지 못했습니다"라고 말할 수 있습니다.

드라이브가 포맷되지 않은 경우 사용자가 포맷을 원할 수도 있지만 드라이브에 인식 할 수없는 파일 시스템의 데이터가 포함되어 있으면 포맷하지 않을 것입니다 .... 또는 최소한 그렇게하면 잠재적으로 귀중한 데이터가 지워질 것이라고 경고하고 싶습니다.

그래서 내 질문은 : 드라이브를 이미 마운트 할 필요가없는 드라이브에서 기본 정보 (특히 파일 시스템 유형)를 쿼리하는 방법이 있습니까? 또는 마운트 시도 중 하나가 성공할 때까지 다양한 알려진 파일 시스템으로 마운트하려고 시도하고, 그렇지 않은 경우 모호한 "주의"메시지를 표시해야합니까?

중요한 경우 드라이브 베이에 드라이브를 마운트하는 데 사용하는 경로는 다음과 같습니다.

/dev/disk/by-path/pci-0000:00:1f.2-scsi-2:0:0:0
/dev/disk/by-path/pci-0000:00:1f.2-scsi-1:0:0:0

답변:


55

드라이브가 마운트 해제 된 경우 수행 할 수있는 몇 가지 작업이 있습니다.

fdisk -l또는 같은 명령을 사용 sfdisk -l하여 파티션을 나열 할 수 있습니다 . 설정이 올바른 파티션 인 경우 파티션 유형만으로도 유용한 정보를 얻을 수 있습니다 .y

# sfdisk -l

Disk /dev/sda: 4177 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+     30      31-    248976   83  Linux
/dev/sda2         31    4176    4146   33302745   8e  Linux LVM
/dev/sda3          0       -       0          0    0  Empty
/dev/sda4          0       -       0          0    0  Empty

시스템에 존재하는 경우 vol_id파티션에 대해 명령 을 사용하여 유용한 세부 정보 (Debian의 udev 패키지의 일부)를 반환 할 수 있습니다 . 일반적으로 실제로 어떤 파일 시스템이 사용되고 있는지 알려줍니다.

# vol_id /dev/sda1

ID_FS_USAGE=filesystem
ID_FS_TYPE=ext3
ID_FS_VERSION=1.0
ID_FS_UUID=32c44d53-9025-4d10-8f36-75c166547bd5
ID_FS_UUID_ENC=32c44d53-9025-4d10-8f36-75c166547bd5
ID_FS_LABEL=
ID_FS_LABEL_ENC=
ID_FS_LABEL_SAFE=

이 명령 lshw -class disk은 드라이브 유형에 대한 세부 정보를 제공합니다. 드라이브의 실제 일련 번호가 궁금한 경우이 기능을 사용할 수 있습니다.

# lshw -class disk

  *-disk
       description: ATA Disk
       product: VBOX HARDDISK
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/sda
       version: 1.0
       serial: VB169e93fb-d1e0fd97
       size: 32GiB (34GB)
       capabilities: partitioned partitioned:dos
       configuration: ansiversion=5 signature=000d39f8

ext2 / 3와 같은 특정 파일 시스템이 있다고 확신하면 파일 시스템 특정 tune2fs 도구를 사용하여 자세한 내용 을 확인할 수 있습니다 .

# tune2fs -l /dev/sda1

tune2fs 1.41.3 (12-Oct-2008)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          8cbdf102-05c7-4ae4-96ea-681cf9b11914
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      filetype sparse_super
Default mount options:    (none)
Filesystem state:         not clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              124496
Block count:              248976
Reserved block count:     12448
Free blocks:              212961
Free inodes:              124467
First block:              1
Block size:               1024
Fragment size:            1024
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         4016
Inode blocks per group:   502
Last mount time:          Thu Oct  7 15:34:42 2010
Last write time:          Thu Oct  7 15:34:42 2010
Mount count:              4
Maximum mount count:      30
Last checked:             Wed Sep 15 09:29:03 2010
Check interval:           0 (<none>)
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           128

또 다른 유용한 도구는 lsblk 입니다.

# lsblk 

NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                   8:0    0    30G  0 disk 
└─sda1                8:1    0    30G  0 part 
  ├─vg1-root (dm-0) 254:0    0  23.3G  0 lvm  /
  └─vg1-swap (dm-1) 254:1    0   1.9G  0 lvm  [SWAP]
sr0                  11:0    1  1024M  0 rom  

parted를 설치했다면 다음과 같은 명령을 실행할 수 있습니다

parted /dev/sda print all

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32.3kB  255MB   255MB   primary  ext2         boot 
 2      255MB   34.4GB  34.1GB  primary               lvm  

Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/vg1root: 32.6GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system  Flags
 1      0.00B  32.6GB  32.6GB  ext3              

어쨌든 나는 udev 또는 parted 소스를 살펴 보는 것이 좋습니다 .


12
'vol_id'는 그 이후로이 위대한 답변을 우연히 발견하는 사람들을 위해 'blkid'로 이름이 바뀌 었습니다.
Dave S.

lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial
sjas

멋진 답변 !!
Sufiyan Ghori

5

또 다른 유용한 명령은 blkid유사한 정보를 반환 vol_id하지만 장치를 전달하지 않고 시스템의 모든 장치를 검색 할 수 있다는 것입니다.

blkid캐시 된 정보를 사용하지 않고 모든 장치 를 강제 로 검색 하려면 다음을 실행하십시오 blkid -c /dev/null(블록 장치에 대한 읽기 권한이 필요하므로 일반적으로 루트로 실행해야합니다)


익명 사용자가 추가하고 싶었습니다. 이것은 모두 유용하지만 'vol-id'는 이제 완전히 'blkid'로 대체되었습니다. SuSE 나 데비안 모두 더 이상 저장소에 'vol-id'가 없습니다. 실행 whereis blockid명령 줄 (또는에서 man blockid로드 될 경우), 당신은 발견 할 것이다. 루트로 실행 : blkid /dev/sdb1제공 (예 /dev/sdb1: SEC_TYPE="msdos" LABEL="DR-05" UUID="8031-5963" TYPE="vfat":) 맨 페이지도 살펴볼 가치가 있습니다.
Chris S

1

다음은 IBM 의 제안입니다 . SCSI-SCSI 장치의 핫 추가, 제거, 재검색 : SCSI 장치 재검색 . 새 장치의 SCSI 주소를 다시 스캔 한 다음 / var / log / messages의 정보를 읽을 수 있습니다. 드라이브를 마운트하지 않고도 일부 다른 디스크 도구도 작동합니다.

echo 1 > /sys/bus/scsi/drivers/sd/<SCSI-ID>/block/device/rescan

실제로 어제 약간 다른 것을 시도했지만 작동했습니다 (RHEL4 시스템).

cd /sys/bus/scsi/devices
echo > 0\:0\:0\:0/rescan

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.