修改磁盘文件系统参数
某些时刻,你可能会希望修改一下目前文件系统的一些相关信息,举例来说,你可能要修改 Label name , 或者是 journal 的参数,或者是其他磁盘/文件系统运作时的相关参数 (例如 DMA 启动与 否~)。 这个时候,就得需要底下这些相关的指令功能啰~
mknod
回到顶部[root@initroot ~]# ll /dev/vda* brw-rw----. 1 root disk 252, 0 Jun 24 02:30 /dev/vda brw-rw----. 1 root disk 252, 1 Jun 24 02:30 /dev/vda1 brw-rw----. 1 root disk 252, 2 Jun 15 23:43 /dev/vda2 brw-rw----. 1 root disk 252, 3 Jun 15 23:43 /dev/vda3 brw-rw----. 1 root disk 252, 4 Jun 24 20:00 /dev/vda4 brw-rw----. 1 root disk 252, 5 Jun 24 21:15 /dev/vda5上表当中 252 为主要装置代码 (Major) 而 0~5 则为次要装置代码 (Minor)。 我们的 Linux 核心认 识的装置数据就是透过这两个数值来决定的!举例来说,常见的磁盘文件名 /dev/sda 与 /dev/loop0 装置代码如下所示:
磁盘文件名 Major Minor
/dev/sda 8 0-15
/dev/sdb 8 16-31
/dev/loop0 7 0/dev/loop1
7
1
如果你想要知道更多核心支持的硬件装置代码 (major, minor) 请参考核心官网的连结(注 8)。 基本上, Linux 核心 2.6 版以后,硬件文件名已经都可以被系统自动的实时产生了,我们根本不需要手动建 立装置文件。 不过某些情况底下我们可能还是得要手动处理装置文件的,例如在某些服务被关到特 定目录下时(chroot), 就需要这样做了。此时这个 mknod 就得要知道如何操作才行!
[root@initroot ~]# mknod 装置文件名 [bcp] [Major] [Minor]选项与参数:
装置种类: b :设定装置名称成为一个周边储存设备文件,例如磁盘等; c :设定装置名称成为一个周边输入设备文件,例如鼠标/键盘等; p :设定装置名称成为一个 FIFO 文件; Major :主要装置代码; Minor :次要装置代码;范例:由上述的介绍我们知道 /dev/vda10 装置代码 252, 10,请建立并查阅此装置
[root@initroot ~]# mknod /dev/vda10 b 252 10 [root@initroot ~]# ll /dev/vda10 brw-r--r--. 1 root root 252, 10 Jun 24 23:40 /dev/vda10# 上面那个 252 与 10 是有意义的,不要随意设定啊! 范例:建立一个 FIFO 文件,档名为 /tmp/testpipe
[root@initroot ~]# mknod /tmp/testpipe p [root@initroot ~]# ll /tmp/testpipe prw-r--r--. 1 root root 0 Jun 24 23:44 /tmp/testpipe# 注意啊!这个文件可不是一般文件,不可以随便就放在这里! # 测试完毕之后请删除这个文件吧!看一下这个文件的类型!是 p 喔!^_^
[root@initroot ~]# rm /dev/vda10 /tmp/testpipe rm: remove block special file '/dev/vda10' ? y rm: remove fifo '/tmp/testpipe' ? y
xfs_admin 修改 XFS 文件系统的 UUID 与 Label name
回到顶部[root@initroot ~]# xfs_admin [-lu] [-L label] [-U uuid] 装置文件名选项与参数:
-l :列出这个装置的 label name -u :列出这个装置的 UUID -L :设定这个装置的 Label name-U :设定这个装置的 UUID 喔!范例:设定 /dev/vda4 的 label name 为 vbird_xfs,并测试挂载
[root@initroot ~]# xfs_admin -L vbird_xfs /dev/vda4 writing all SBs new label = "vbird_xfs" # 产生新的 LABEL 名称啰! [root@initroot ~]# xfs_admin -l /dev/vda4 label = "vbird_xfs" [root@initroot ~]# mount LABEL=vbird_xfs /data/xfs/范例:利用 uuidgen 产生新 UUID 来设定 /dev/vda4,并测试挂载
[root@initroot ~]# umount /dev/vda4 # 使用前,请先卸除! [root@initroot ~]# uuidgen e0fa7252-b374-4a06-987a-3cb14f415488 # 很有趣的指令!可以产生新的 UUID 喔! [root@initroot ~]# xfs_admin -u /dev/vda4 UUID = e0a6af55-26e7-4cb7-a515-826a8bd29e90 [root@initroot ~]# xfs_admin -U e0fa7252-b374-4a06-987a-3cb14f415488 /dev/vda4 Clearing log and setting UUID writing all SBs new UUID = e0fa7252-b374-4a06-987a-3cb14f415488 [root@initroot ~]# mount UUID=e0fa7252-b374-4a06-987a-3cb14f415488 /data/xfs不知道你会不会有这样的疑问:『啊,既然 mount 后面使用装置文件名 (/dev/vda4) 也可以挂 载成功,那你为什么要用很讨厌的很长一串的 UUID 来作为你的挂载时写入的装置名称啊?』问的 好!原因是这样的:『因为你没有办法指定这个磁盘在所有的 Linux 系统中,文件名一定都会是 /dev/vda !』 举例来说,我们刚刚使用的随身碟在这个测试系统当中查询到的档名是 /dev/sda,但是当这个随 身碟放到其他的已经有 /dev/sda 文件名的 Linux 系统下,它的文件名就会被指定成为 /dev/sdb 或 /dev/sdc 等等。反正,不会是 /dev/sda 了!那我怎么用同一个指令去挂载这只随身碟呢? 当然有问 题吧!但是 UUID 可是很难重复的!看看上面 uuidgen 产生的结果你就知道了!所以你可以确定该 名称不会被重复! 这对系统管理上可是相当有帮助的!它也比 LABEL name 要更精准的多呢! ^_^
tune2fs 修改 ext4 的 label name 与 UUID
回到顶部[root@initroot ~]# tune2fs [-l] [-L Label] [-U uuid] 装置文件名选项与参数:
-l :类似 dumpe2fs -h 的功能~将 superblock 内的数据读出来~ -L :修改 LABEL name -U :修改 UUID 啰!范例:列出 /dev/vda5 的 label name 之后,将它改成 vbird_ext4
[root@initroot ~]# dumpe2fs -h /dev/vda5 | grep name dumpe2fs 1.42.9 (28-Dec-2013)Filesystem volume name: none> # 果然是没有设定的! [root@initroot ~]# tune2fs -L vbird_ext4 /dev/vda5 [root@initroot ~]# dumpe2fs -h /dev/vda5 | grep name Filesystem volume name: vbird_ext4 [root@initroot ~]# mount LABEL=vbird_ext4 /data/ext4这个指令的功能其实很广泛啦~上面仅列出很简单的一些参数而已,更多的用法请自行参考 man tune2fs 。
initroot编辑整理,转载请注明www.initroot.com
100次点赞
100次阅读