`

在Linux系统中存储设备的两种表示方法

阅读更多
作者:北南南北
来自:LinuxSir.Org http://www.linuxsir.org/main/?q=node/127
摘要: 硬盘和硬盘分区在Linux都表示为设备,按我们通俗的说法来说,就是怎么来表示或描述硬盘和或硬盘分区,但这种描述应该是科学和具体的;比如IDE硬盘,在Linux 可以表示为 /dev/hda、/dev/hdb ... ;SCSI接口的硬盘、SATA接口的硬盘表示为/dev/sda、/dev/sdb ... ... ;而IDE接口的硬盘/dev/hda,也可以表示为hd0,而 SCSI 接口的如果是/dev/sda ,另一种表示方法是sd0;理解两种表示方法有何用?至少GRUB引导管理器用到这些知识;另外我们mount (挂载)文件系统(分区),也会用到这些知识;

一、对于IDE接口硬盘的两种表示方法;

1、IDE接口硬盘,对于整块硬盘的两种表示方法;
     IDE接口中的整块硬盘在Linux系统中表示为/dev/hd[a-z],比如/dev/hda,/dev/hdb ... ... 以此类推,有时/dev/hdc可能表示的是CDROM ,还是以具体的fdisk -l 输出为准吧;
另一种表示方法是hd[0-n] ,其中n是一个正整数,比如hd0,hd1,hd2 ... ... hdn ;
如果机器中只有一块硬盘,无论我们通过fdisk -l 列出的是/dev/hda 还是/dev/hdb ,都是hd0;如果机器中存在两个或两个以上的硬盘,第一个硬盘/dev/hda 另一种方法表示为hd0,第二个硬盘/dev/hdb,另一种表法是hd1 ;感觉大家对hd0,hd1这种表示方法并不寞生,现在新的机器,在BIOS 中,在启动盘设置那块,硬盘是有hd0,hd1之类的,这就是硬盘表示方法的一种;对于/dev/hda 类似的表示方法,也并不寞生吧;我们在Linux通过fdisk -l 就可以查到硬盘是/dev/hda还是/dev/hdb;

[root@localhost ~]# fdisk -l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device    Boot      Start     End      Blocks        Id    System
/dev/hda1   *           1         970     7791493+     7   HPFS/NTFS
/dev/hda2             971        9729    70356667+   5  Extended
/dev/hda5             971        2915    15623181     b  W95 FAT32
/dev/hda6            2916        4131     9767488+  83  Linux
/dev/hda7            4132        5590    11719386   83  Linux
/dev/hda8            5591        6806     9767488+  83  Linux
/dev/hda9            6807        9657    22900626    83  Linux
/dev/hda10           9658       9729      578308+    82  Linux swap / Solaris

请注意第一行, Disk /dev/hda: 80.0 GB, 80026361856 bytes ,这个就是表示机器中只有一个硬盘设备/dev/hda ,体积大小为 80.0G;下面的就是硬盘的分区,每个分区都有详细的信息,在这里不详细说了;

2、IDE接口硬盘分区的两种表示方法;

1)硬盘分区的第一种表示方法/dev/hd[a-z]X;
    硬盘的分区也有两种表示方法,一种是/dev/hd[a-z]X,这个a-z表示a、b、c......z
,X是一个从1开始的正整数;比如/dev/hda1,/dev/hda2 .... /dev/hda6,/dev/hda7 ... ... ,值得注意的是/dev/hd[a-z]X,如果X的值是1到4,表示硬盘的主分区(包含扩展分区);逻辑分区从是从5开始的,比如/dev/hda5肯定是逻辑分区了;我 用fdisk -l 就能列出一个硬盘的分区表,比如:

[root@localhost ~]# fdisk -l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device   Boot      Start     End         Blocks      Id    System
/dev/hda1   *           1         970     7791493+     7  HPFS/NTFS
/dev/hda2             971        9729    70356667+   5  Extended
/dev/hda5             971        2915    15623181     b  W95 FAT32
/dev/hda6            2916        4131     9767488+  83  Linux
/dev/hda7            4132        5590    11719386   83  Linux
/dev/hda8            5591        6806     9767488+  83  Linux
/dev/hda9            6807        9657    22900626   83  Linux
/dev/hda10           9658        9729     578308+   82  Linux swap / Solaris

2)硬盘分区的第二种表示方法(hd[0-n],y);
    我们前面已经说过了整块硬盘也有两种表示方法,一种是/dev/hd[a-z]的,另种方法是hd[0-n];一个硬盘分区首先要大确认在哪个硬盘,然后再确认他所在的位置;做个比喻,比如我住在XXX宾馆YYY号房间,我仅仅是告诉别人我在XXX宾馆不够的,还要告诉他YYY房间,这样来找我的人才能找到我;所以我们要知道一个硬盘分区,除了知道/dev/hd[a-z]以外,还要知道他在哪个位置,也就有前面所说的/dev/hd[a-z]X的说法,确认了分区在/dev/hd[a-z]后,还要通过X来确认具体位置;本标题中说的是另外一种表示方法 (hd[0-n],y),hd[0-n]我们知道这是硬盘的表示方法之一,如果不懂,请看看前面的东西吧;那这里的y是什么意思呢?y的值是/dev/hd[a-z]X中的 X-1 ;

用实例来理解吧;
[root@localhost ~]# fdisk -l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device   Boot      Start       End      Blocks     Id  System
/dev/hda1   *           1         970     7791493+   7  HPFS/NTFS
/dev/hda2             971        9729    70356667+   5  Extended
/dev/hda5             971        2915    15623181    b  W95 FAT32
/dev/hda6            2916        4131     9767488+  83  Linux
/dev/hda7            4132        5590    11719386   83  Linux
/dev/hda8            5591        6806     9767488+  83  Linux
/dev/hda9            6807        9657    22900626   83  Linux
/dev/hda10           9658        9729      578308+  82  Linux swap / Solaris

/dev/hda1 等同 (hd0,0)
/dev/hda2 等同 (hd0,1)  注:看好了,这个是扩展分区,在Linux还是Windows是不能挂载的;
/dev/hda5 等同 (hd0,4)
/dev/hda6 等同 (hd0,5)
/dev/hda7 等同 (hd0,6)
/dev/hda8 等同 (hd0,7)
... ...
/dev/hda10 同 (hd0,9)
对于机器中只有一个硬盘来说,无论在Linux通过/dev/hda 还是/dev/hdb ,用 hd[0-n]表示方法,都是hd0;所以如果您如果硬盘中列出来的是;

[root@localhost ~]# fdisk -l
Disk /dev/hdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device   Boot      Start      End      Blocks        Id     System
/dev/hdb1   *           1         970     7791493+     7   HPFS/NTFS
/dev/hdb2             971        9729    70356667+  5   Extended
/dev/hdb5             971        2915    15623181    b   W95 FAT32
/dev/hdb6            2916        4131     9767488+  83  Linux
/dev/hdb7            4132        5590    11719386   83  Linux
/dev/hdb8            5591        6806     9767488+  83  Linux
/dev/hdb9            6807        9657    22900626   83  Linux
/dev/hdb10           9658        9729      578308+  82  Linux swap / Solaris

对于机器中只有一个硬盘来说,如果通过fdisk -l 列出来的是/dev/hdb的分区表;对应关系和/dev/hda列出的分区表对应关系一样;
/dev/hdb1 等同 (hd0,0)
/dev/hdb2 等同 (hd0,1)  注:看好了,这个是扩展分区,在Linux还是Windows是不能挂载的;
/dev/hdb5 等同 (hd0,4)
/dev/hdb6 等同 (hd0,5)
/dev/hdb7 等同 (hd0,6)
/dev/hdb8 等同 (hd0,7)
... ...
/dev/hdb10 等同 (hd0,9)
注意:如果机器中有两块硬盘,那/dev/hda 另一种表示方法就是hd0,/dev/hdb 的另一种表示方法是hd1;这样我们就理解 (hd[0-n],y)的写法了吧;这样机器只有单个硬盘或者多个硬盘,我们都知道怎么写了;对不对?可能也不对,那就请指正吧;

二、关于SATA和SCSI接口的硬盘的两种表示方法;
      理解方法和IDE接口的硬盘相同,只是把hd换成sd;
      如果您的机器中比如有一个硬盘是/dev/hda ,也有一个硬盘是/dev/sda ,那/dev/sda的硬盘应该是sd0; 具体每个分区用(sd[0-n],y)的表示方法和IDE接口中的算法相同,比如/dev/sda1 就是(sd0,0);

三、usb及1394接口的存储设备和软驱设备;
      usb存储设备也目前在内核中在两种驱动方法,一种是模拟SCSI硬盘,通过fdisk -l 出现的是/dev/sd[0-n];如果是模拟SCSI设备的方法来驱动。那usb 存储设备在Linux的另一种表示方法和前面所说的SCSI和SATA的相同;但目前新版本的内核中,想抛弃模拟SCSI,我们通过fdisk 列系统存在的存储设置时会出现 /dev/uba类似的;但目前这个驱动并不成熟,比如大数据量表现不稳定;其实USB接口的存储设备,在Linux表现还是比较差;
       1394接口存储调备,在Linux中也是模拟SCSI,我们通过fdisk -l后,出现的也是/dev/sd[0-n],另一种表示方法(sd[a-z],y)的理解请参照前面所说的;1394接口的存储设备在Linux表现极好,USB存储如果相对1394接口的存储表现来说,应该不值不提,建议大家购买1394接口的存储设备;
        软驱在Linux中,是/dev/fd0设备这是一般情况,另一种表示为fd0 ;
        CDROM 或DVDROM ,以及COMBO ,一般的情况下是/dev/hdc ;看下面的例子,无论是 /dev/cdrom还是/dev/dvd ,最后都指向了/dev/hdc;

[root@localhost ~]# ls -la /dev/cdrom
lrwxrwxrwx  1 root root 3 2005-12-14  /dev/cdrom -> hdc
[root@localhost ~]# ls -la /dev/dvd
lrwxrwxrwx  1 root root 3 2005-12-14  /dev/dvd -> hdc

四、关于存储设备的不同的表示方法的应用;

1、/dev/hd[a-z] 表示方法的应用

1)用于mount 挂载文件系统(分区)之用;
    我们在前面所说的,硬盘的分区/dev/hd[a-z]X表示方法,一般是用于挂载和读取文件系统之用的;
[root@localhost ~]# fdisk -l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device   Boot      Start      End      Blocks       Id  System
/dev/hda1   *           1         970     7791493+    7  HPFS/NTFS
/dev/hda2             971        9729    70356667+  5  Extended
/dev/hda5             971        2915    15623181    b  W95 FAT32
/dev/hda6            2916        4131     9767488+  83  Linux
/dev/hda7            4132        5590    11719386   83  Linux
/dev/hda8            5591        6806     9767488+  83  Linux
/dev/hda9            6807        9657    22900626   83  Linux
/dev/hda10           9658        9729      578308+  82  Linux swap / Solaris

比如我要挂载 /dev/hda9 到系统中;所以过程应该是这样的;

[root@localhost ~]# mkdir /opt/data/  注:建立挂载点目录;
[root@localhost ~]# mount /dev/hda9 /opt/data/  注:挂载;

是不是挂载好了呢?看下面的信息,显示已经挂载好了,所以这时我们就能向/opt/data目录写东西了,写的所有东西都记录在了/dev/hda9上;

[root@localhost ~]# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda7              11G  9.2G  1.1G  90% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda9              22G  3.9G   18G  18% /opt/data
注意:挂载得需要内核支持,另外分区也得建立文件系统,请参考相关文档 ;

2)用于GRUB中指定Linux的根分区的位置;
    在GRUB系统引导管理器,用命令行启动一个操作系统时,要通过指定Linux根/所在的硬盘分区 /dev/hd[a-z]X;比如 root=/dev/hda7 ;

2、hd[0-n] 表示方法的应用;
    这种一般是应用在GRUB的/boot所位于的硬盘分区的指定上;在GRUB的命令行和GRUB的配置文件menu.lst 中都要应用到;
    比如我们要把GRUB写到硬盘的MBR上,在GRUB的命令行模式中要通过root (hd[0-n],y)来指定;这里的root (hd[0-n],y),在GRUB中就/boot所位于的分区;不要搞错了,有时/boot和Linux的根/并不是处于同一个分区的,就看您安装Linux时怎么安装的了;而我们前面所说的root=/dev/hd[a-z]X来指定的是Linux根/所位于的分区;虽然有时/boot和/同处一个分区,但两种表示方法在GRUB中各有用途;明白了吧;
    比如/boot位于同一个硬盘分区,就可以用类似下的方法来把GRUB写到硬盘的MBR上;举个例子;

[root@localhost ~]# grub  注:运行GRUB;
grub> root (hd0,6)  注:比如/boot位于 (hd0,6)分区上,应该这样
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,6)/boot/grub/stage2
/boot/grub/grub.conf"... succeeded
Done.

grub>quit 注:退出GRUB命令行模式;
分享到:
评论

相关推荐

    嵌入式Linux文件系统及其存储机制分析

    嵌入式设备中使用的存储器是像Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置。Flash是目前嵌入式系统中广泛采用的主流存储器, 它的主要特点是按整体/扇区擦除和按字节编程,具有低功耗、高密度、小体积...

    linux操作系统命令大全

     在Linux系统中,软件安装程序比较复杂,不过最常见的有两种: 一种是软件的源代码,您需要自己动手编译它。这种软件安装包通常是用gzip压缩过的tar包(后缀名为.tar.gz)。  另一种是软件的可执行程序,你只要...

    Linux操作系统基础教程

    在这一讲中,我们主要是了解一下 Linux 的概况,以及对 Linux 有一个初步的感性认识。 一.什么是Linux? Linux 是一个以 Intel 系列 CPU(CYRIX,AMD 的 CPU也可以)为硬件平台,完全免费的 UNIX 兼容系统,完全...

    Linux服务器配置与管理:Linux磁盘分区.pptx

    在磁盘上创建分区时,必须在MBR(Master Boot Record)和GPT(GUID Partition Table)两种技术之间做出选择。目前有且只有这两种分区形式。 硬盘分区有MBR和GPT两种方案 1.1 磁盘分区 3. MBR分区方案 MBR(Master...

    Linux内核工作原理 word版本 强烈推荐

    信号与管道是 其中的两种,Linux同时还支持系统V IPC机制。这些进程间通讯机制在IPC一章中描叙。 外部设备互连(PCI)标准已经成为PC上低价位高数传率的总线标准。PCI一章将描叙Linux核心是如何初始化并使用PCI总线...

    计算机病毒与防护:Linux启动过程.ppt

    * * * * * * * * 计 算 机 病 毒 护 与 防 目录页 Linux启动过程 Linux... 两种执行模式 grub不但可以通过配置文件进行例行的引导,还可以在选择引导前动态改变引导时的参数,还可以动态加载各种设备。 菜单式选择 在l

    Linux无盘工作站搭建

    它本身不含有硬存储设备,机器引导时需要借助网络上的服务器来传输操作系统启动文件到本地内存,才可以完成启动。因此,无盘工作站必须具有CPU、主板、内存、网卡和远程启动设备。远程启动设备主要以芯片的形式固化...

    iOS-截获导航控制器系统返回按钮的点击pop及右滑pop事件的两种方法.zip

    硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式...

    基于嵌入式Linux系统实现YAFFS2文件系统存储方案的设计

    提出一种适用于嵌入式系统的模块动态加载技术,设计实现简单,占用资源少,开销小,并且成功运用于DeltaOS.可提高系统的灵活性和扩属性。介招加载与动态链接的原理和应用情况,解释相关术语,描述基本设计思路:...

    LINUX_ARM下的USB驱动开发

    V ICE两种接口。操作系统是L INUX 2. 4. 18,而S3C2410 本身带有支持USB1. 1的HOST和DEV ICE硬件接口。本 文将首先说明如何实现S3C2410的USB HOST总线和USB DEV ICE总线驱动,然后说明如何在USB DEV ICE总线驱动 上...

    基于Linux内核的键盘模拟实现

    有两种IRQ,短类型和长类型。短IRQ需要很短的时间,在此期间机器的其他部分被锁定,而且没有其他中断被处理。一个长IRQ需要较长的时间,在此期间可能发生其他中断(但不是发自同一个设备)。如果可能的话,最好把一个...

    linux教程——很使用的那种

    linux中的文件(普通文件或设备文件等)都必须有挂在点,只有挂载到一个目录下才能访问,swap分区是不需要挂载点的,在分区的时候,将文件系统类型选为swap,挂载点自动会变为灰色。一般linux中的swap大小为内存的两倍。...

    凝思系统简单加固说明.pdf

    安全加固工具分为两种简单版(simple_security_config.sh)和完整版 (complete_security_config.sh) 简单版功能: (1) 系统新建用户后,需要先修改密码 (2) sshd_config 默认安全项配置 (3) 登录超时 (4) 禁用 ...

    对linux磁盘初始分区并挂载

    磁盘分区是将硬盘划分为不同的逻辑部分,以便在每个部分上存储数据或安装不同的操作系统。在Linux中,常用的磁盘分区工具是fdisk和parted。这两个工具都提供了一种交互式方式来管理磁盘分区。 准备工作: 在进行...

    iOS 国际化适配demo,包含应用内国际化和跟随系统两种情况。.zip

    硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式...

    本项目实现前两种方式,第三种请Fork Ucenter_redis。.zip

    本项目实现前两种方式,第三种请Fork Ucenter_redis。 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA...

    操作系统实验

    在Linux系统下,使用与文件相关的系统调用实现对物理设备文件的读写,参照Linux系统源代码以及Grub系统的源代码,对不同介质上的FAT格式文件系统进行分析。要求在Linux环境下设计出C语言程序,实现以下功能: 1)...

    《Linux 高性能服务器编程》和《Linux多线程服务端编程:使用muduo C++网络库》的笔记和源码.zip

    硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:LInux、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统...

    UNIX操作系统教程 张红光

    第1章绪论.1 1.1操作系统概述1 1.1.1建立操作系统的目标1 1.1.2操作系统是用户与计算机的接口1 1.1.3操作系统是资源管理器2 1.2UNIX系统的主要...UNIX基本概念及入门技术10 2.1UNIX系统基本常识10 2.1.1两种前端机10 />...

    自己动手写操作系统(含源代码).part2

    你需要什么技术基础 在本书中所用到的计算机语言只有两种:汇编和 C语言。所以只要你具备汇编和 C语言的经验,就可以阅读本书。除对操作系统常识性的了解(比如知道中断、进程等概念)之外,本书不假定读者具备其他...

Global site tag (gtag.js) - Google Analytics