linux命令硬盘编号 硬盘的编号

Linux 磁盘分区详解

Linux 系统中所有的硬件设备都是用文件的形式来表示和使用的,也就是说,如果你想使用某个硬件设备首先你就需要将其挂载到某个目录下面,通过对这个目录的操作来操作设备;如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。

创新互联服务电话:18980820575,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联网页制作领域十载,包括成都自上料搅拌车等多个领域拥有多年的网站设计经验,选择创新互联,为网站保驾护航。

并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录

磁盘也是一样的,磁盘的文件是存放在 /dev 目录下,磁盘设备文件的命名规则为:

常见的主设备号有:sd,hd;它们是代表的不同的磁盘类型: sd 代表的 IDE 硬盘, hd 代表的是 SCSI 硬盘

次设备号就是同一类型设备的次序,用 [a-z] 来表示, /dev/sda 表示第一块 IDE 类型的磁盘, /dev/sdb 表示第二块 IDE 类型的磁盘

磁盘分区编号,每一块磁盘都会被划分为多个磁盘分区(这个下面会介绍),每一个分区都会有一个编号,比如: /dev/sda1 表示这是该磁盘的第一个分区,以此类推

在 Linux 中,每一个硬盘设备都只能划分四个主分区;若是划分了一个扩展分区那最多可以划分三个主分区;可以表示为:

主分区加扩展分区最多只有四个;可以全部划分为主分区,也可以之划分一个主分区;但是扩展分区最多只有一个;扩展分区是不能直接使用的,还有进一步划分为逻辑分区才能使用;一个扩展分区可以划分为多个逻辑分区;

主分区的分区编号是:1,2,3,4;从扩展分区划分出来的逻辑分区的编号是从 5 开始,以次累加

这跟系统启动有关系;当你启动电脑时,首先就会加载 BIOS 信息,这里面包含了 Cpu 和其他硬件设备的信息;找到它计算机就知道怎么启动了

接下来,它会去找 MBR(Master Boot Record) ,也就是主引导记录;为了方便 BIOS 的查找,所以就会把它放在磁盘上第0磁道上的第一个扇区中,磁盘中每个扇区有 512 字节;虽然只有这么大一点,但是要存三部分信息:

磁盘分区表总共只有 64 字节,而每个分区信息占 16 个字节,所以就只能有四个主分区了

这应该是历史遗留的问题了,一开始只有四个分区,后来发现四个分区不够用,就引入了扩展分区,而扩展分区是不能直接使用的,它必须再划分为逻辑分区,逻辑分区的数量可以是任意多个。

对用户而言,主分区和逻辑分区使用起来没有任何的区别,同时还能够达到无限分区的目的

我想很多人都思考过这个问题,我再了解了之后才发现磁盘分区还是有很多的好处的。具体例子:

现在给你一个仓库,你打算存放快递,一开始你一股脑的把所有的快递直接放进去,等到别人来取快递的时候你就发愁了,几十甚至上百个快递得找到啥时候啊

所以你打算开始分区管理,因为你代理了中通,圆通,百世等好几个快递,所以你打算按照不同的快递分为三个货架;

过一段时间发现同一种快递如果量大的时候还是会混乱;因此你又想了个办法就是按照日期给快递编号,然后按照不同的日期将货架分为多层,每一层存放某一天的快递,同时你又找了个表记录了每个分区快递存放的位置,这大大增加了存取的效率

磁盘分区的目的,

Linux 常见目录:

一般要是新手,可以只建立两个分区:

这种分区方式比较简单,如果只是测试可以用这种;要是想当成一个常用的系统,就需要更细一点划分了,常用的分区方案如下(假如有磁盘有100G):

linux命令SCSI_ID

echo "scsi add-single-device x y z u" /proc/scsi/scsi

其中:

x是硬盘所在SCSI控制器号(一般机器就一个SCSI控制器,所以就是0);

y是硬盘所在SCSI通道的编号(一般单通道的就是0,多通道的要看是哪个通道了);

z是硬盘的SCSI ID号(可以通过具体插入的硬盘插槽来判断);

u是硬盘的lun号(默认情况都是0)

LINUX 硬盘序列号

可能是你没有读取那个文件的权限,所以会导致open失败.

通常对于这种系统文件都要求有root权限,看看你是否有权限吧.

LINUX如何查询工作站多硬盘的硬盘序列号

LINUX查询工作站多硬盘的硬盘序列号方法:

1、确认安装yaourt hdparm

2、运行下面命令查看共有多少硬盘

[root@myhost detect]# fdisk -l

Disk /dev/sda: 320.1 GB, 320072933376 bytes

255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Device Boot Start End Blocks Id System

/dev/sda1 * 63 385559 192748+ 83 Linux

/dev/sda2 385560 4385744 2000092+ 82 Linux swap / Solaris

/dev/sda3 4385745 14378174 4996215 83 Linux

/dev/sda4 14378175 625137344 305379585 5 Extended

/dev/sda5 14378238 34379099 10000431 83 Linux

/dev/sda6 34379163 44371529 4996183+ 83 Linux

/dev/sda7 44371593 75617954 15623181 83 Linux

/dev/sda8 75618018 106864379 15623181 83 Linux

/dev/sda9 106864443 126865304 10000431 83 Linux

/dev/sda10 126865368 625137344 249135988+ 83 Linux

由上可见,只有一个硬盘sda,其中,sda1到sda10是说该硬盘共有十个分区。

多个硬盘的话会看到sdb、sdc等;

3、查看sda硬盘的序列号,

[root@myhost detect]# hdparm -i /dev/sda

/dev/sda:

Model=ST3320418AS, FwRev=CC66, SerialNo=6VMDEMJM

Config={ HardSect NotMFM HdSw15uSec Fixed DTR10Mbs RotSpdTol.5% }

RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4

BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=16

CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=625142448

IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

PIO modes: pio0 pio1 pio2 pio3 pio4

DMA modes: mdma0 mdma1 mdma2

UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5

AdvancedPM=no WriteCache=enabled

Drive conforms to: unknown: ATA/ATAPI-4,5,6,7

由上可见,sda硬盘的序列号为6VMDEMJM。

同理查看其它硬盘序列号。

linux下怎么用c获取硬盘物理序列号

1、在Linux系统中通过C语言获取硬盘序列号,可以借助于ioctl()函数,该函数原型如下:

int ioctl(int fd, unsigned long request, ...);

ioctl的第一个参数是文件标识符,用open()函数打开设备时获取。

ioctl第二个参数为用于获得指定文件描述符的标志号,获取硬盘序列号,一般指明为HDIO_GET_IDENTITY。

ioctl的第三个参数为一些辅助参数,要获取硬盘序列号,需要借助于struct hd_driveid结构体来保存硬盘信息 ,该结构体在Linux/hdreg.h中,struct hd_driveid的声明如下

struct hd_driveid {

unsigned short    config;        / lots of obsolete bit flags */

unsigned short    cyls;        /* Obsolete, "physical" cyls */

unsigned short    reserved2;    /* reserved (word 2) */

unsigned short    heads;        /* Obsolete, "physical" heads */

unsigned short    track_bytes;    /* unformatted bytes per track */

unsigned short    sector_bytes;    /* unformatted bytes per sector */

unsigned short    sectors;    /* Obsolete, "physical" sectors per track */

unsigned short    vendor0;    /* vendor unique */

unsigned short    vendor1;    /* vendor unique */

unsigned short    vendor2;    /* Retired vendor unique */

unsigned char    serial_no[20];    /* 0 = not_specified */

unsigned short    buf_type;    /* Retired */

unsigned short    buf_size;    /* Retired, 512 byte increments

* 0 = not_specified

*/

……

};

2、源代码如下

#include stdio.h

//ioctl()的声明头文件

#include sys/ioctl.h

//硬盘参数头文件, hd_driveid结构声明头文件

#include linux/hdreg.h

//文件控制头文件

#include sys/fcntl.h

int main()

{

//用于保存系统返回的硬盘数据信息

struct hd_driveid id;

//这里以第一块硬盘为例,用户可自行修改

//用open函数打开获取文件标识符,类似于windows下的句柄

int fd = open("/dev/sda", O_RDONLY|O_NONBLOCK);

//失败返回 

if (fd  0) {

perror("/dev/sda");

return 1; }

//调用ioctl()

if(!ioctl(fd, HDIO_GET_IDENTITY, id))

{

printf("Serial Number=%s\n",id.serial_no);

}

return 0;

}

编译完成后,执行效果如下:

linux怎么查看硬盘型号等信息

df-TH硬盘信息free内存信息cat/proc/cpu****后面的用tab补齐我记得是cpuinfo但不确定cat/proc/meminfo也可以查看内存


分享标题:linux命令硬盘编号 硬盘的编号
转载来于:http://csdahua.cn/article/hjejpp.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流