linux基础知识-15

一、磁盘设备

linux允许通过/dev/目录下的设备节点对磁盘进行直接或低级访问。

设备节点 设备
/dev/fd0 flopyy disk 软驱已经淘汰
/dev/hd[a-d] IDE接口的磁盘 已经淘汰
/dev/sd[a-z] SCSI Disks 目前我们使用的磁盘,U盘都用sd[a-z]表示
/dev/cdrom 光驱链接

对于已经淘汰的东西,我们做为了解,老陌在本地主机上没有发现/dev/cdrom这个设备节点,因为老陌没有光驱。但老陌在虚拟机里测试一下,有这个设备。 老陌在虚拟机安装了centos系统(因为很小,不用图形界面):

[root@localhost ~]# ls -l /dev/cdrom 
lrwxrwxrwx. 1 root root 3 Jul 17 11:35 /dev/cdrom -> sr0

发现cdrom是一个软链接文件,链接到节点sr0。

/dev/sda表示第一块硬盘,/dev/sdb表示第二块硬盘,对于分区则在后面加上分区编号。

老陌在虚拟机中添加一块8G硬盘用于测试:

测试信息如下:

 /dev/sdb 表示第二块硬盘
 /dev/sdb1 表示第一个分区
 /dev/sdb2 表示第二个分区
 /dev/sdb5 表示第一个逻辑分区
 /dev/sdb6 表示第二个逻辑分区

为啥没有sdb3呢?这和分区类型有关。MBR类型分区由主分区+扩展分区+逻辑分区组成。由于主分区最多支持4个,所以逻辑分区从5开始编号。

老陌以GPT类型分区进行测试:

发现按:1-n的顺序显示的。GPT分区和MBR不同,它支持大硬盘,支持更多分区。

二、对设备进行低级访问

分区之后老陌没有对分区进行文件系统的创建(格式化)。此时分区相当于一片空地,还没有进行规划呢。老陌把/etc/os-release文件写到这个分区上,注意是低级写入。

cat /etc/os-release  > /dev/sdb2

之后用低级的方式读取一下分区:

lesss -f /dev/sdb2

less -f表示强制读取,我们会发现刚才写入的数据已经读出来了,最后一行是磁盘原始状态,less会一直读下去,但当前页满了暂停,可以按q键退出。通过测试发现低级访问很容易,但没有文件系统,因此无法创建文件,目录之类的高级东东。

老陌此时突发奇想,可不可以把live镜像通过低级的方式写到硬盘里呢? 首先老陌把 deepin-live-system-2.0-amd64.iso 通过深度终端的上传功能,传到虚拟机 centos 系统中,之后把镜像写到/dev/sdb中。

cat ./deepin-live-system-2.0-amd64 > /dev/sdb

注意不是写到分区,是写整个磁盘设备, 很疯狂3-4秒完事了,我重启按f12键,选择从disk2启动,果然成功了!

实际上可以用这个方法制作usb启动盘,把u盘插上,按上面的方式把live镜像直接写到u盘设备上,之后就可以用它来开机了!昨天老陌用dd命令把镜像写到U盘上,之后进行系统还原,方法是一样的。

三、文件系统

磁盘低级访问就是把数据按字节流的方式存放到磁盘中。老陌感觉有些像磁带,不知道小白们见过没有,磁带是那个年代流行音乐的载体。

这种低级的方式很不好用,我们希望按文件的方式组织管理,并控制对其访问的权限,这就要用到文件系统了。 文件系统将磁盘划分成规定大小的块进行管理,这块存放inode,那块存放dentry,这三块和那一块存放/etc/os-release数据等。文件系统可以用来存放这些信息,但使用时必须经过初始化,在Linux中叫创建文件系统,在其他系统中可能叫格式化。

Linux支持很多文件系统,比如:ext4,fat,xfs等。在linux中有mkfs开头的命令,用于创建文件系统:

[linux@ccloves sbin]$ ls /sbin/mkf*
/sbin/mkfs         /sbin/mkfs.ext2  /sbin/mkfs.jfs     /sbin/mkfs.ntfs
/sbin/mkfs.bfs     /sbin/mkfs.ext3  /sbin/mkfs.minix   /sbin/mkfs.reiserfs
/sbin/mkfs.cramfs  /sbin/mkfs.ext4  /sbin/mkfs.msdos   /sbin/mkfs.vfat
/sbin/mkfs.exfat   /sbin/mkfs.fat   /sbin/mkfs.nilfs2  /sbin/mkfs.xfs

下面我们创建ext4格式的文件系统。老陌在虚拟机里实验,之前已经分好区了:/dev/sdb1, /dev/sdb2,我们对/dev/sdb1创建ext4文件系统:

[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
……

从windows过来的小白,可以理解这是在对/dev/sdb1这个分区进行格式化。

四、挂载文件系统

在linux中没有C:,D:之说,linux会把不同的分区映射到一个目录中,我们称为文件系统挂载。

(一) 查看挂载点

[linux@ccloves ~]$ mount 
……
/dev/sdb1 on / type ext4 (rw,relatime,data=ordered)
/dev/sdb6 on /home type ext4 (rw,relatime,data=ordered)
/dev/sda6 on /mnt/linux type ext4 (rw,relatime,data=ordered)
/dev/sda5 on /mnt/wind type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
/dev/sda1 on /mnt/winc type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)

用不带参数的mount可以查看挂载点。

/dev/sdb1 on / type ext4 (rw,relatime,data=ordered)

/dev/sdb1是被挂载的设备(分区), 挂载的目录是 /,文件系统类型是 ext4, 后面跟上其它选项。如果你动手操作,你会发现除了我们熟悉的还有一些不熟悉的挂载目录,他们是内核虚拟的,并不是任何物理设备。

(二)查看分区空间使用状态

我们要了解哪个分区剩余多少空间,每个分区多大,可以用df命令。

[linux@ccloves ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.4G     0  3.4G   0% /dev
tmpfs           692M  1.6M  690M   1% /run
/dev/sdb1        30G   12G   17G  42% /
/dev/sdb6        73G  2.2G   67G   4% /home
/dev/sda6       523G   36G  460G   8% /mnt/linux
/dev/sda5       200G   16G  185G   8% /mnt/wind
/dev/sda1       201G   13G  188G   7% /mnt/winc
……

通过命令: df -h 可以看出:

/dev/sdb1分区: 大小是30G, 用了12G, 还剩下17G, 已经使用空间的百分比是42%, 最后显示了挂载点。在这里我们可以了解哪个分区挂载到哪个目录上了,还能了解分区空间的情况,此命令很有用。

注意:-h参数表示以适当的单位显示空间大小,比如:30G,看起来很人性化。

(三)临时挂载 /media目录

一些设备比如u盘,光驱等在使用之前也需要挂载到目录中, 他们用哪个目录作为挂载点呢? 通用的做法是挂载到/media目录中,当然你的地盘你做主,你想放哪儿都行。老陌在用深度系统时发现有些应用对/media和其它系统目录的权限是不同的,对挂载到/media下有权限访问,而对挂载到其它目录则无法访问。

这就是说 /media 这个目录用于临时挂载区是一个标准。 老陌在虚拟机尝试挂载一下cdrom看看:

为了遵守这个规则,老陌先在/media下创建cdrom目录,之后用mount进行挂载,挂载成功之后查看到了光盘的内容。

老陌在本地主机中插上U盘,系统自动挂载U盘到/media目录中:

/dev/sdc1        15G  3.0G   12G  21% /media/linux/DEEPINOS

(四)挂载的相关问题:

  • 默认情况下只有管理员才能够挂载和卸载设备。
  • 只有未被使用的文件系统才能被卸载。比如:打开文件系统中的文件,或当前的工作目录正处在文件系统中,此时无法卸载。
  • 在图形环境下有些系统会自动挂载。
  • 当向U盘复制数据时,似乎很快完成,但卸载时很慢。这是因为linux为了提高性能,这些数据被内核缓冲了,即数据在内存中并未全部写到u盘,所以只有全部写到U盘之后才会卸载。

猜你喜欢

转载自www.cnblogs.com/myccloves/p/9327295.html