Tên ổ đĩa? Thuật ngữ chính xác cho các phần của sda Cảnh là gì


16

fdisk (8) nói:

Thiết bị thường là / dev / sda, / dev / sdb hoặc hơn thế. Một tên thiết bị đề cập đến toàn bộ đĩa. Các hệ thống cũ không có libata (một thư viện được sử dụng bên trong nhân Linux để hỗ trợ các thiết bị và bộ điều khiển máy chủ ATA) tạo ra sự khác biệt giữa các đĩa IDE và SCSI. Trong những trường hợp như vậy, tên thiết bị sẽ là / dev / hd * (IDE) hoặc / dev / sd * (SCSI).

Phân vùng là tên thiết bị theo sau là số phân vùng. Ví dụ: / dev / sda1 là phân vùng đầu tiên trên đĩa cứng đầu tiên trong hệ thống. Xem thêm tài liệu nhân Linux ( tệp Tài liệu / thiết bị ).

Dựa trên điều này, tôi hiểu rằng trong ngữ cảnh của Linux, một chuỗi giống /dev/hdahoặc /dev/sdalà "tên thiết bị". Mặt khác, câu thứ hai tôi đã nhấn mạnh ở trên không có nghĩa gì: thay vào đó, nó sẽ nói, " Ví dụ, sda1 là phân vùng đầu tiên trên đĩa cứng đầu tiên trong hệ thống. "

Khung nhìn này được chứng thực bởi Phân vùng Linux HOWTO :

Theo quy ước, các ổ đĩa IDE sẽ được đặt tên thiết bị / dev / hda thành / dev / hdd .

Có một thuật ngữ tiếng Anh chính xác (và tốt nhất là rõ ràng và ngắn gọn) cho chuỗi con hdahoặc sdacủa một tên thiết bị như vậy không? Ví dụ, trong trường hợp này có đúng không khi gọi sdaổ đĩa:

  • "tên ngắn"; hoặc là
  • "Tên thiết bị không đủ tiêu chuẩn"; hoặc là
  • thứ gì khác?

(Tôi không yêu cầu thông tục về mặt kỹ thuật không chính xác, ngay cả khi chúng được sử dụng phổ biến.)


3
FWIW, trang man cho dkinfo , đây là lệnh duy nhất tôi gặp không sử dụng tên đường dẫn đầy đủ của thiết bị đĩa, gọi đó là "tên đĩa".
Đánh dấu Plotnick

@MarkPlotnick, cảm ơn, nhưng câu hỏi này là về Linux hoặc GNU / Linux, không phải về các hệ điều hành khác. Như vậy, dkinfokhông phải là một phần của Linux hoặc GNU / Linux (mà thay vào đó là một phần của SunOS ), nằm ngoài phạm vi, xin lỗi.
sampablokuper

Câu trả lời:


25

sdatên thiết bị . /dev/sdađường dẫn thiết bị .

Hãy nghĩ về /sbin/fdisk, fdisktên tệp , trong khi /sbin/fdiskđường dẫn tệp .


5
Mặc dù bạn phải cẩn thận với "đường dẫn thiết bị" vì có một số ý nghĩa của điều đó ...
derobert

1
Cảm ơn :) "sda là tên thiết bị. / Dev / sda là đường dẫn thiết bị." Đó cũng là quan điểm ban đầu của tôi, vì lý do bạn đã đưa ra, nhưng nó không được hỗ trợ bởi việc đọc kỹ đoạn trích dẫn trang fdisk của linux-linux trích dẫn trong câu hỏi của tôi. (Bây giờ tôi đã chỉnh sửa câu hỏi để nhấn mạnh hơn điều này.) Do đó tôi hỏi về vấn đề ở đây trên SE. NB Điều này không có nghĩa là câu trả lời của bạn sai - có lẽ một phần của trang người đàn ông đã được viết một cách cẩu thả? - nó chỉ có nghĩa là câu trả lời của bạn và trang man fdisk của linux-linux có vẻ mâu thuẫn. Bạn có nguồn nào để chứng thực câu trả lời của bạn không? Cảm ơn một lần nữa :)
sampablokuper

6
/dev/sdalà đường dẫn đến thiết bị khối, nhưng đường dẫn thiết bị thực tế sẽ giống như/devices/pci0000:00/0000:00:17.0/ata2/host1/target1:0:0/1:0:0:0/block/sda
Dietrich Epp

2
@jiggunjer: Nhưng mountcũng chỉ đạo trình điều khiển thiết bị ánh xạ một số RAM (không phải âm lượng) dưới dạng hệ thống tệp, có thể --bindmột phần của cây tệp dưới dạng cây con, v.v. Hơn nữa, việc gắn "đĩa" RAID có thể hữu ích và / hoặc kỳ quái những thứ có nhiều khối lượng để truy cập hoặc hủy bỏ các phần của nó. Nói tóm lại, mountcó thể làm nhiều việc nhưng điển hình nhất là làm cho một hệ thống tệp xuất hiện ở đâu đó trong cây tệp.
wallyk

1
@jiggunjer Tôi nghĩ bạn có thể có nghĩa là một định dạng hệ thống tập tin, không giống với định dạng của định dạng như vậy, thường được coi là một hệ thống tập tin, cái mà bạn gọi là một tập. Ngay cả khi điều đó là không chính xác về mặt kỹ thuật, đó là những gì mọi người có nghĩa là bởi hệ thống tập tin. Tôi vẫn chưa gặp bất kỳ ai tham gia khởi tạo định dạng hệ thống tập tin dưới dạng tập. Không có cuốn sách nào tôi đọc về chủ đề này đã từng sử dụng từ "volume" để có nghĩa là "hệ thống tập tin" (theo nghĩa nào đó).
Rõ ràng hơn vào

6

Các sdaphần của /dev/sdathể đại diện cho một vài điều tùy thuộc vào quan điểm của bạn:

  1. Tên tệp
    Nói chung, đó là tên của một tệp, nếu là đĩa, là một thiết bị khối , do đó, tên thiết bị

    Là gốc:

    $ ls -la /dev/sd*
    brw-rw---- 1 root disk 8, 0 Sep 11 22:01 /dev/sda
    brw-rw---- 1 root disk 8, 1 Sep 11 22:02 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Sep 11 22:01 /dev/sda2
    
  2. Tên đĩa
    sdalà chuỗi cung cấp tên cho đĩa (khác với phân vùng sda1, sda2, sdX, v.v.). Nó thường được tạo bởi udev dựa trên các quy tắc thiết bị được áp dụng.

  3. Đường dẫn thư mục
    sdalà tên cơ sở của đường dẫn/dev/sda


Giới hạn trong việc giải thích liên quan đến tên đĩa:

Thời xưa: sda từng là tên thiết bị của đĩa SCSI a .

Vì cùng một thư viện đã được mở rộng cho các ổ đĩa SATA, tôi đoán rằng bây giờ nó sẽ được gọi là:

device name: SATA/SCSI/SAS disk a

Hoặc đơn giản:

device name: first SATA/SCSI/SAS disk

3

Nó là tên khối đĩa / thiết bị phân vùng do kernel tạo ra :

sdatên đĩa được tạo bởi kernel. Trình điều khiển hạt nhân (bao gồm ngăn xếp SCSI, rất thuận tiện để sử dụng cho các đĩa SATA) điền vào disk_nametrường gendiskcấu trúc (nghĩa là đối với SCSI: trình điều khiển / scsi / sd.c # L3338 ) để tạo sdatên.

Tên này sau đó đã từng là một tên tương ứng với thiết bị khối trong /dev, /sys/proc/{partitions,diskstats}. Tuy nhiên, hướng dẫn sử dụng cho tên Procfs tên phân vùng ( Proc (5) ) và tài liệu về thống kê đĩa gọi nó là tên thiết bị ( iostats.txt ).


Thú vị, tôi đoán sda/dev/sdacó thể hoán đổi cho nhau, và cả hai đều được gọi là tên thiết bị. Tôi nghĩ rằng vì (trong một hệ thống bình thường), bạn gắn devfsvào /dev, vì vậy những cái tên như sdalần lượt vào đường dẫn như /dev/sda(mà bạn cũng có thể gọi một tên).
Peter Cordes

1

Trong Linux / Unix mọi thứ đều là một tệp. Một thiết bị đại diện như một tập tin. Tất cả các loại tập tin thiết bị nằm ở vị trí / dev. Vì vậy, sda là một tập tin đặc biệt loại thiết bị khối.

hd(x) - IDE
sd(x) - SATA,SSD,ISCI,SAS

Lưu ý : trong đó x là một biến. x đại diện cho vị trí của đĩa cứng.

if x = a for IDE disk means hda represents primary master disk
   x = b for IDE disk means hdb represents primary slave disk

Bây giờ trong sd *

if x = a for SATA/SSD/ISCI/SAS sda represents first disk
   x = b fo SATA/SSD/ISCI/SAS sdb represents second disk

Các đĩa IIRC, thậm chí IDE (PATA) có được sd*tên với một số trình điều khiển hoặc luôn luôn có nhân hiện đại? Tôi quên, tôi không có bất kỳ máy hoạt động nào có PATA và kernel hiện đại.
Peter Cordes

2
Cảm ơn câu trả lời, nhưng dường như nó không giải quyết được câu hỏi tôi đã hỏi :( Tôi hiểu rằng trong một ngữ cảnh như /dev/sda, sdalà một tệp và tôi cũng hiểu tệp đó đại diện cho cái gì. Câu hỏi của tôi là về cách gọi chuỗi con sdavà chuỗi giống như nó, khi đề cập đến họ bằng lời nói.
sampablokuper

1
@PeterCordes đã sử dụng openSUSE Leap 42.2 trong một thời gian, tôi có thể xác nhận rằng các ổ đĩa IDE PATA, cả cứng và quang, đều có sdXtên và xen kẽ với cả SATA và SUB.
Spellweaver Gypsy

1

Dường như có ít nhất hai câu trả lời hợp lệ

  1. sdachính xác có thể được gọi là "tên cơ sở" cho ổ đĩa.

  2. sdacũng có thể được gọi chính xác là "tên đĩa kernel" cho ổ đĩa.

Làm thế nào bạn đạt được kết luận này?

Theo quy trình loại bỏ trên mỗi ứng cử viên hợp lý:

  • "Tên thiết bị"

Đây không thể là thuật ngữ chính xác. Như đã lưu ý trong câu hỏi ban đầu , nó đề cập đến tên đủ điều kiện (ví dụ /dev/sda), không phải là đoạn cuối cùng (ví dụ sda).

Bằng chứng chứng thực tồn tại trong các nguồn bổ sung, chẳng hạn như trang 68 của Hướng dẫn dứt khoát về SUSE Linux Enterprise Server 12 :

Bạn cũng có thể chọn sử dụng một chế độ gắn kết dựa trên tên thiết bị (chẳng hạn như /dev/sdb1)

tr.94 của Phiên bản Kinh Thánh Linux 2008 :

Nhấp vào tab Thiết bị và nhập tên thiết bị (chẳng hạn như /dev/cdrom)

  • "tên tệp" hoặc "tên tệp"

Đây cũng không thể là thuật ngữ chính xác, vì nó được sử dụng trong tài liệu kỹ thuật như một từ đồng nghĩa với tên đủ điều kiện (ví dụ /dev/sda), không chỉ là đoạn cuối cùng (ví dụ sda):

BASENAME (1) :

tên cơ sở - thư mục dải và hậu tố từ tên tệp

TRỰC TIẾP (1) :

dirname - dải thành phần cuối cùng từ tên tệp

  • "Tên"

Đây cũng không thể là thuật ngữ chính xác, vì nó được sử dụng trong tài liệu kỹ thuật như một từ đồng nghĩa với tên đủ điều kiện (ví dụ /dev/sda), không chỉ là đoạn cuối cùng (ví dụ sda):

GNU Coreutils: gọi tên cơ sở :

basenameloại bỏ bất kỳ thành phần thư mục hàng đầu từ tên .

GNU Coreutils: gọi tên dirname :

dirnamein tất cả trừ thành phần được phân cách bằng dấu gạch chéo cuối cùng của mỗi tên .

  • "tên ngắn" hoặc "tên ngắn"

Điều này cũng không thể là thuật ngữ chính xác. Tôi không thể tìm thấy bất kỳ tài liệu kỹ thuật nào đề cập đến phần cuối của tên thiết bị là "tên ngắn" hoặc "tên ngắn". Các thuật ngữ này dường như được sử dụng, trong Linux hoặc GNU, chỉ trong ngữ cảnh của các tùy chọn gắn kết VFAT hoặc tên máy chủ lưu trữ trên mạng .

  • "tên cơ sở"

Thuật ngữ này dường như là một câu trả lời hợp lệ, dựa trên tr.149 của Cài đặt Red Hat Linux 7 :

Đảm bảo chắc chắn rằng tên cơ sở của đĩa bạn định phân vùng không được liệt kê (đây là hdb, trong trường hợp ổ đĩa tôi đã thêm).

ghi chú khóa học cho CST8207 (Hệ điều hành GNU / Linux) tại Algonquin College :

Định nghĩa tên cơ sở: Tên cơ sở của bất kỳ tên đường dẫn nào là thành phần tên bên phải nhất của nó, ở bên phải của dấu gạch chéo bên phải của nó.

tr.1456 của Hướng dẫn thực hành về Red Hat Linux 8 :

tên cơ sở: Tên của một tệp, trái ngược với tên đường dẫn, không đề cập đến bất kỳ thư mục nào chứa tệp (và do đó không chứa bất kỳ dấu gạch chéo nào [/]). Ví dụ, hostslà tên cơ sở của /etc/hosts.

Hạnh phúc, GNU / Linux cũng có một basenamelệnh, có thể được sử dụng để lấy tên cơ sở:

$ basename '/dev/sda'
sda
  • "tên đĩa nhân"

Thuật ngữ này cũng dường như là một câu trả lời hợp lệ, do p.100 của Linux Kernel in a Nutshell :

/dev/<diskname>

Sử dụng tên đĩa kernel được chỉ định bởi <diskname>như đĩa gốc.

Ngẫu nhiên, "tên đĩa nhân" cũng có vẻ là thuật ngữ hợp lệ trong bối cảnh của Solaris :

Đối với phiên bản lệnh i điều chỉnh này, đầu ra chỉ hiển thị số liệu thống kê mở rộng cho những thiết bị đĩa có hoạt động khác, theo đường dẫn thiết bị vật lý thay vì tên đĩa nhân logic (nghĩa là c0t0d0thay vì sd0).


Có, bạn có thể nói tên cơ sở khi nói về việc chia nhỏ đường dẫn, nhưng tôi chưa bao giờ thấy "tên cơ sở" khi nói về thiết bị. "Tên" có, "tên cơ sở" không. Cả hai liên kết trong câu hỏi của bạn đều sử dụng thuật ngữ "tên cơ sở" hoặc "tên cơ sở"; ý bạn là gì mà các nguồn trong câu hỏi hỗ trợ gọi nó là tên cơ sở?
Peter Cordes

@PeterCordes, ý tôi là các chuỗi như /dev/sdađược gọi bằng: BASENAME (1) là "tên tệp"; DIRNAME (1) là "tên tệp"; GNU Coreutils tài liệu là "tên"; & bởi FDISK (8) và TLDP là "tên thiết bị". Vì vậy, không có thuật ngữ nào trong số đó có thể được sử dụng rõ ràng để chỉ thành phần được phân cách bằng dấu gạch chéo cuối cùng của chuỗi. Ergo, nếu chúng ta muốn một thuật ngữ có thể được sử dụng để đề cập rõ ràng đến phần đó của chuỗi, thì chúng ta phải sử dụng một cái gì đó khác. Các nguồn trong câu trả lời của tôi, được ghép lại với nhau, nói phần trước dấu gạch chéo cuối cùng là "dirname", và phần sau là "tên cơ sở". Võngà .
sampablokuper

Tôi đoán đó là công bằng. Nếu bạn đang ghi lại một cái gì đó chỉ chấp nhận sdavà không chấp nhận /dev/sda, bạn có thể gọi nó là "tên cơ sở". Hoặc bạn chỉ có thể sử dụng "tên" so với "đường dẫn" trong tài liệu đó và đưa ra một ví dụ, giống như hầu hết các tài liệu khác. Tôi không nghĩ rằng có một thuật ngữ thường được thống nhất ngoài "tên", mặc dù một số tài liệu sử dụng "tên" để bao gồm đường dẫn đầy đủ.
Peter Cordes

0

"Mọi thứ đều là một tệp" - vì vậy không phải sdalà tên tệp đơn giản, /devthư mục (và chuỗi trống là phần mở rộng) của thiết bị được cung cấp qua đường dẫn đầy đủ /dev/sda, mà theo quy ước là đĩa không phải IDE đầu tiên? Giống như passwdtên tệp và /etcthư mục của tệp có thể truy cập được /etc/passwdtheo quy ước chứa dữ liệu mật khẩu (ed)?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.