Şu an takılmamış sürücüler hakkında bilgi almanın en iyi yolu nedir?


38

İlk olarak, durum: Çıkarılabilir SSD sürücülerini kabul eden iki eSATA sürücü yuvasına sahip bir Linux bilgisayarım var. Kullanıcının bu bölmelere koyduğu sürücüleri takmasını / çıkarmasını / biçimlendirmesini / yedeklemesini / vb. Yapmasını kolaylaştıran küçük bir GUI uygulaması yazmaya çalışıyorum.

Hepsi çoğunlukla işe yarıyor. Bununla birlikte, küçük bir sorun, takılan sürücü (ler) hakkında ne olduğunu, sürücüler başarıyla takılana kadar nasıl öğreneceğimi bilmememdir.

Örneğin, kullanıcı monte edemediğim bir sürücü eklerse (örneğin biçimlendirilmemiş veya beklenmeyen bir dosya sistemiyle biçimlendirilmişse), tüm uygulamam bunun hakkında söyleyebileceği "Sürücü takma hatası" diyebilir.

Bu çok tatmin edici değil, çünkü sürücü formatlanmamışsa, kullanıcı muhtemelen formatlamak isteyecektir ... ancak sürücü tanınmayan bir dosya sisteminden veri içeriyorsa, kullanıcı muhtemelen formatlamak istemeyecektir .... veya en azından, onu yaparak potansiyel olarak değerli verileri sileceği konusunda onu uyarmak istiyorum.

Öyleyse sorum şu: temel sürücüyü (özellikle dosya sistemi tipi) sürücünün monte edilmesini gerektirmeyen bir sürücüden sorgulamak için herhangi bir yöntem var mı? Yoksa, bağlantı kurma girişimlerinden biri başarılı oluncaya kadar bilinen çeşitli dosya sistemleriyle takmayı denemeli miyim, yoksa bunlardan hiçbiri yapmazsa belirsiz bir "dikkatli olun" mesajı vermeli miyim?

Önemli olması durumunda, sürücüleri sürücü bölmelerine takmak için kullandığım yollar şunlardır:

/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

Yanıtlar:


55

Sürücüler sökülürse, yapabileceğiniz birkaç şey vardır.

Bölümleri listelemek için fdisk -lveya benzeri bir komut kullanabilirsiniz sfdisk -l. Yalnızca bölüm türü, kurulumun doğru olduğu bölümler varsa size bazı yararlı bilgiler verebilir.

# 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

Sisteminizde mevcutsa, vol_idbazı yararlı ayrıntıları (Debian'daki udev paketinin bir parçası) döndürmek için komutu bir bölüme karşı kullanabilirsiniz . Bu genellikle size hangi dosya sisteminin kullanıldığını söyler.

# 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=

Komut lshw -class disksize sürücü tipi hakkında bazı bilgiler verecektir. Sürücünün asıl seri numarasını merak ediyorsanız, bunu kullanmak isteyebilirsiniz.

# 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

Üzerinde ext2 / 3 gibi belirli bir dosya sistemi bulunduğundan eminseniz, daha fazla ayrıntı incelemek için dosya sistemine özel tune2fs aracını kullanabilirsiniz.

# 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

Bir başka kullanışlı araç da 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  

Yüklü bölümlere ayırdıysanız, böyle bir komutu çalıştırabilirsiniz.

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              

Neyse, udev'e ya da parçalanmış kaynağa bir göz atmanı öneriyorum .


12
'vol_id' o zamandan beri 'blkid' olarak yeniden adlandırıldı, bu büyük cevabın yanına gelen herkes için.
Dave S.

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

harika cevap!
Sufiyan Ghori,

5

Bir başka yararlı komut ise blkid- benzer bir bilgi döndürür vol_idancak bir aygıtın iletilmesini gerektirmek yerine sistemdeki tüm aygıtları tarayabilir.

blkidÖnbelleğe alınmış bilgileri kullanmak yerine tüm cihazları taramaya zorlamak için, koş blkid -c /dev/null(blok aygıtlarda okuma iznine ihtiyacın var, böylece genellikle root olarak çalıştırman gerekir)


Anonim bir kullanıcı eklemek istedi: Bu tamamen kullanışlıdır, ancak 'vol-id' artık tamamen 'blkid' ile değiştirildi; Ne SuSE ne de Debian artık depolarında 'vol-id' kullanmıyor. whereis blockidKomut satırından çalıştırın (veya man blockid), yüklenip yüklenmediğini göreceksiniz. Kök olarak çalıştır: blkid /dev/sdb1gives (örneğin): /dev/sdb1: SEC_TYPE="msdos" LABEL="DR-05" UUID="8031-5963" TYPE="vfat"Man sayfası da bakılmaya değer.
Chris S

1

İşte IBM'den bir öneri : SCSI - Sıcak SCSI cihazlarının eklenmesi, kaldırılması, yeniden taranması: SCSI Cihazının yeniden taranması . Bu, bu SCSI adresini yeni cihazlar için yeniden tarar ve ardından / var / log / messages içindeki bilgileri okuyabilirsiniz. Diğer bazı disk araçları da sürücüyü takmadan çalışır.

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

Aslında dün biraz farklı bir şey denedim ve işe yaradı (RHEL4 sistemi):

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

0

Çekirdek tarafından bulunan tüm bölümlere basit bir genel bakış

cat /proc/partitions
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.