linux查缺补漏之磁盘参数修订

本文发布时间: 2019-Mar-22
linux磁盘参数修订 档案代表装置 在linux下面我们都知道可以用相应的档案代表一个装置,比如 /dev/sdb1代表sdb硬盘的第一个分隔槽,该装置通过major和minor来标示对应代替的装置 brw-rw—- 1 root disk 8, 0 5月 12 20:16 /dev/sda brw-rw—- 1 root disk 8, 1 5月 12 19:48 /dev/sda1 brw-rw—- 1 root disk 8, 10 5月 12 19:48 /dev/sda10 brw-rw—- 1 root disk 8, 11 5月 12 19:48 /dev/sda11 brw-rw—- 1 root disk 8, 12 5月 12 19:48 /dev/sda12 brw-rw—- 1 root disk 8, 13 5月 12 19:48 /dev/sda13 brw-rw—- 1 root disk 8, 2 5月 12 19:48 /dev/sda2 brw-rw—- 1 root disk 8, 3 5月 12 19:48 /dev/sda3 brw-rw—- 1 root disk 8, 4 5月 12 19:48 /dev/sda4 brw-rw—- 1 root disk 8, 5 5月 12 19:48 /dev/sda5 brw-rw—- 1 root disk 8, 6 5月 12 19:48 /dev/sda6 brw-rw—- 1 root disk 8, 7 5月 12 19:48 /dev/sda7 brw-rw—- 1 root disk 8, 8 5月 12 19:48 /dev/sda8 brw-rw—- 1 root disk 8, 9 5月 12 19:48 /dev/sda9 root@qeesung-laptop:/media# ll /dev/sdb* brw-rw—- 1 root disk 8, 16 5月 12 20:16 /dev/sdb brw-rw—- 1 root disk 8, 17 5月 12 20:25 /dev/sdb1 brw-rw—- 1 root disk 8, 18 5月 12 20:18 /dev/sdb2 linux内核就是通过对应的major和minor来认识对应的设备的 device name major minor /dev/sdb 8 0-15 /dev/sdba 8 16-31 mknod命令 这个命令主要是用来创建一个设备文件的(make block or character special files) mknod [OPTION]... NAME TYPE [MAJOR MINOR] 其中类型主要有: - b block块设备 - c char字符设备 - p pipe管道设备 使用示例: 新建一个管道文件 #mknod pipeFile p #echo this is a test line >> pipeFile #cat pipeFile 新建一个块文件 #mknod blockFile b 8 100 新建一个字符文件 #mknod charFile c 4 100 最终会有三个文件 brw-r–r– 1 root root 8, 100 5月 12 21:15 blockFile crw-r–r– 1 root root 4, 100 5月 12 21:16 charFile prw-r–r– 1 root root 0 5月 12 21:12 pipeFile| e2label命令 在linux下面,每一个分隔槽都可以指定一个对应的label用来标示这个分隔槽,这点好比windows下面的C盘D盘一样。如果磁盘的分隔槽指定了label,那么就会咋/media目录下面按照label的名字挂载,如果没有指定label,那么将会按照分割槽的UUID在/media目录下面挂载 在linux下面可以可以通过e2label命令该指定对应分隔槽的label是什么,指定label有一个好处就是label不会随着磁盘文件名的改变而改变,我们知道在linux下面磁盘的挂载顺序决定了磁盘的文件名,比如你先挂载SATA磁盘1,那么磁盘1的设备名字就是 /dev/sda,要是你在挂在SATA磁盘2滞后再挂载磁盘1,那么磁盘1的磁盘文件就是/dev/sdb。。。但是就算不管磁盘文件名是怎么变换的,对应的分隔槽label是不会改变的 使用e2label命令: e2label /dev/sdb1 “newLabelName” tune2fs命令 tune2fs命令用途很大,下面是一些基本用法 - -l 相当于dumpe2fs -h 显示分隔槽的superBlock内容 - -L 相当于e2label改变一个分隔槽的label - -J将ext2文件格式转换为ext3带有日志的文件格式 具体更多用法还是man一下好了 文件系统的自动挂载 我们可以通过更改在/etc/fstab下面的数据来改变系统每次开机自动挂载的文件系统,下面是/etc/fstab/文件里面的东西: 这个例子里面的文件系统挂在/home目录下面,没一行信息标示开机自动挂载的文件系统,每一项都以空格来区分,每一项的具体含义为: - file system:对应的分隔槽,是UUID或者是label名字 - mount point:挂载点,一定必须是目录,而且根目录/一定要优先于所有文件系统挂载 - type:文件系统的类型 - options:文件系统的挂载参数,有: arg1 arg2 描述 user nouser 普通用户是否可以挂载文件系统 async sync 磁盘是否以异步的方式读写 auto noauto 是否可以自动挂载,就是mount -a rw ro 文件系统是只读的还是可以读写的 suid nosuid 是否支持suid/sgid的文件和目录 defaults 默认的配置模式 - dump:标示是否对文件系统进行dump备份:0标示不做备份,1标示每天做备份,2标示不定期的做备份 - pass:用fsck来检测文件系统是否有问题,0标示不检测,1标示最先检测(一般是根目录),2表示需要检测,只是在1检测之后检测! 现在假设我们需要对文件系统/dev/sdb1在开机的时候自动以只读的方式挂载到/media/sdb1目录下面,那么我们就需要在/etc/fstab下面写入; /dev/sdb1 /media/sdb1 ext4 ro 1 2 接下来我们试一下mount -a,发现文件系统自动以只读的形式挂载到了/media/sdb1目录下面了,表明我们没有写错 注意:要是你在没有检测自己是否新增的fstab里面的条目书写是否正确就匆匆的进行重启,那么就有可能开机无法成功而进入到单人模式之中,这个时候你就需要mount -n =o remount.rw /对根目录重新挂载,然后我们再修改/etc/fstab文件 mount -o loop mount -o 的loop选项是用来将一个文件当成硬盘分区挂载在系统目录上面,特别是在我们分区不合理的情况下,比如你的根目录的分区特别大,而其分区的大小就快要满了,现在你可以简历一个比较大的文件,当成一个新的设备挂在在系统上面,现在你就多了一个分区了,不过这个分区只是虚拟的而已,在磁盘上面是没有对应的分分隔槽来将这块分区划分出来的哦。 下面我们来看一下实际应用: # 我们新建一个目录cd /tmp && mkdir hello && cd hello #我们从/dev/zero文件系统开始的地方顺着复制512个1M的数据块到file1里面dd if=/dev/zero of=./file1 bs=1M count=512ll -h file1#我们得到 -rw-r--r-- 1 root root 512M 5月 13 23:49 file1 新建一个挂载点mkdir file1MountPoint#现在我们尝试挂载file1到file1MountPointmount -o loop file1 ./file1MountPoint#发现挂载出错了 mount:您必须指定文件系统类型,于是我们格式话这个文件mkfs -t ext4 ./file1#我们再次尝试挂载,发现挂载成功了,因为一开始文件里面的内容全都是0,子让无法挂载一个全是0的文件了,我们需要对这个文件进行格式才能挂载,也就是在这个文件所在的磁盘区域内建立superBlock inodetable blockTable那些东西了,挂载的时候会读取进行挂载 上面我们是从一个叫做/dev/zero的设备里面拷贝512M的内容到文件里面去,现在我们来尝试将一个容量为100M的文件系统/dev/sdb1全都拷贝出来成一个新的文件file2,看看再次挂载回怎么样 #查看那些挂载的目录df -l | greo /dev/sdb1#我们得到对应的挂载目录 /dev/sdb1 99150 5647 88383 7% /media/sdb1#我们进入到/media/sdb1看看cd /media/sdb1 && ls ; cd /tmp/hello#我们发现这下面有三个文件 lost+found newfile newFiledd if=/dev/sdb1 of =./file2 bs=1M count=512 && mkdir file2MountPoint#得到文件file2,我们的file2大小只有100M,这里我们也就是将/dev/sdb1里面的东西全都复制出来了,我们不格式化直接挂载这个文件看看行不行mount -o loop ./file2 ./file2MountPoint#没有报错,竟然成功了,进入到这个文件系统下面看看cd file2MountPoint && ls#发现里面有三个文件 lost+found newfile newFile 上面的文件file2是复制/dev/sdb1里面整个磁盘里面的内容,所以file2里面的内容就是完整的文件系统内容,就是说file2里面的文件数据就是/dev/sdb1文件系统里面的全部数据,包括了superBlock,inodeTable,blockTable等等,于是我们就可以直接挂在这个文件了,这里其实也可以做到文件系统的全备份 swap分区的新建 swap分区的主要功能就是在物理内存不足的情况下,将内存中占用的程序移动到swap中去,让物理内存可以被需要的程序使用 我们可以新建一个swap文件系统 fdisk /deb/sdbn+2Gt682#改变文件系统id mkswap /dev/sdb6swapon /dev/sdb6 上面是用硬盘分区重新建立一个一块swap分区 下面采用文件的形式来新建一个swap分区 dd if=/dev/zero of=./newSwapFile bs=1M count=500Mmkswap ./newSwapFileswapon ./newSwapFile 我们可以采用swapon -s来查看现在有哪几个swap正在挂载使用 也可以一采用swapoff来移除系统里面一个正在使用的swap分区 可以使用free命令来查看系统中swap使用情况(总量,使用情况,剩余情况) system ID 在linux下,每一种文件系统都有一个对应的的id,嚼嘴哦system id - linux ext4 —->system id = 83 - linux swap —->system id = 82 - windows ntfs —-> system id = 7 目录占用总量 我们在一个目录下面执行ll -l命令的时候,输出的最上方会出现这样的字样总用量 512032, 这里的总用量和du -s命令的的总用量很相近,其实这里的总用量是目录下面文件占用的block数量*block大小 如果是分割大硬盘的话,最好使用命令parted来分割


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:09pm
栏目列表