• 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盘之后才会卸载。
  • 相关阅读:
    Android开发日志问题
    Android 常用的快捷键(随时更新)
    Android v4 包和v7包问题
    mongoDB 3.0.3 以上GUI 连接认证问题
    python(6)
    python学习(5)
    01_数字滤波器调研
    动态称重数据处理算法及其在禽蛋和类球形水果分选中的应用研究-01
    点云学习
    10-视频图像读取与保存
  • 原文地址:https://www.cnblogs.com/myccloves/p/9327295.html
Copyright © 2020-2023  润新知