bootloader 阶段使用 BIOS 功能,所有的 SATA 默认都有一个简单的 BIOS 读写兼容功能提供支持。也就是说开了 AHCI ,BIOS 依然会提供兼容模式。不过现在的 *** 作系统在内核启动后就会绕过 BIOS 直接 *** 作硬件。这个时候如果开启了 AHCI 模式,那么 IDE 兼容部分的硬件接口模拟就没了,不过 BIOS 自己提供的读写功能虽然继续提供,但系统已然不用了。所以 bootloader 可以读写硬盘并不代表 linux 内核可以读写硬盘。
linux 的驱动有两种存放状态,编入内核或者编成模块。
initrd 里面的就是模块,会被 bootloader 在读取内核时一起读取进入内存。一般内核模块只在需要时载入,可以节省内核的运行体积。但现在新版 linux 内核的 sata 驱动已经高度集成了,所以很多发行版的 SATA 驱动都直接进入内核不需要模块载入方式了。当然这要看系统的设计,有的系统既然 initrd 必然会提供,那么编入内核确实没意义。不过需要另外找驱动的硬件,都是模块方式存在,他们在系统启动时必须存在于 initrd 里面,不然内核自己没法集成,也不能从硬盘里面读取(没驱动没法读盘,没法读盘就没法读驱动)。
BIOS 的 INT13 功能太简单了。限制也特别多,现在都是能不用就不用的。所以这东西现在只有 bootloader 才会用。
第一种方法:使用df命令,这个命令比较常用,大家都很熟悉。问题是这种方法,有时候挂载点和挂载的卷不在同一行,使用脚本分析需要一点技巧的。例如:orientalson:/home # df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 15213032 8043668 7169364 53% /
udev514496 104514392 1% /dev
/dev/mapper/vg_test-lv_test
511980 32840479140 7% /home/mt
orientalson:/home #
上面显示的挂载点/home/mt和她挂载的卷不在同一行,使用shell脚本分析非常麻烦。不过也不是没办法,具体分析可以以后再讲。
第二种方法:使用mount命令,mount -l,这种方法的缺陷在于没有卷的大小,但是挂载点和挂载的卷在同一行。例如:
orientalson:/home # mount -l
/dev/sda2 on / type reiserfs (rw,acl,user_xattr) []
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
securityfs on /sys/kernel/security type securityfs (rw)
/dev/mapper/vg_test-lv_test on /home/mt type reiserfs (rw) []
orientalson:/home #
尽管使用肉眼不是太好看,但是使用shell脚本还是比较容易分析的。
第三种方法:查看文件/etc/mtab。原理是,每新挂载一个卷基本上都会更新这个文件的,那么自然可以通过这个文件来查看挂载点和挂职的卷。这种方法比mount -l稍微清晰了一点,但是,有时候是不可靠的。
orientalson:/home # cat /etc/mtab
/dev/sda2 / reiserfs rw,acl,user_xattr 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
debugfs /sys/kernel/debug debugfs rw 0 0
udev /dev tmpfs rw 0 0
devpts /dev/pts devpts rw,mode=0620,gid=5 0 0
securityfs /sys/kernel/security securityfs rw 0 0
/dev/mapper/vg_test-lv_test /home/mt reiserfs rw 0 0
orientalson:/home #
上面已经说了基本上会更新这个文件,但是并不总是更新这个问题。如果挂载时使用了-n选项,那么/etc/mtab文件里面就不会新挂载卷的信息。
orientalson:/home # umount /home/mt
orientalson:/home # mount -n /dev/vg_test/lv_test /home/mt
orientalson:/home # cat /etc/mtab
/dev/sda2 / reiserfs rw,acl,user_xattr 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
debugfs /sys/kernel/debug debugfs rw 0 0
udev /dev tmpfs rw 0 0
devpts /dev/pts devpts rw,mode=0620,gid=5 0 0
securityfs /sys/kernel/security securityfs rw 0 0
orientalson:/home #
linux查看磁盘的信息和挂载磁盘是非常常见的 *** 作。在购买硬盘插到服务器上后,需要将硬盘挂载到文件系统上,不然是无法使用的。具体可以这样理解,在Windows上的硬盘没有分区也是无法直接使用的。
效果如下
之前sdb后面时没有挂载的,我们挂载到了/data目录下。sdb是单独的一块大硬盘。
进行检查,df -h
这个时候还没有到/etc/fstab 下面配置挂载信息,重启挂载就消失了。
挂载成功后ssh传输文件失败,发现是mount后,/data目录没有一般用户的权限。
执行后就可以使用了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)