大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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):
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)
可能是你没有读取那个文件的权限,所以会导致open失败.
通常对于这种系统文件都要求有root权限,看看你是否有权限吧.
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。
同理查看其它硬盘序列号。
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;
}
编译完成后,执行效果如下:
df-TH硬盘信息free内存信息cat/proc/cpu****后面的用tab补齐我记得是cpuinfo但不确定cat/proc/meminfo也可以查看内存