Linux|系统管理|WEB开发

关注Linux,系统管理,WEB开发以及开源世界

\[sbin学习\]b\*命令

| Comments

/sbin/b*命令不多,DC5.0下面仅仅3个

badblocks,blkid和blockdev

badblocks:
对指定的设备找出坏块,他接受的参数不是太多,你可以指定开始块也结束块。还能用-f来指定是否需要对查找的分区进行修复,不过在man中对-f这个参数的描述是, 永远都不要使用-f,除非你比这个命令更聪明。

[root@lancy sbin]# badblocks /dev/hda5 

man手册中提到一般不要直接执行badblocks命令,而是应该用e2fsck命令的-c参数来自动调用badblocks命令,他会查找坏块并标记起来,以便下次存储数据时,不会存储在这些坏块上。

blkid:用来定位或者打印块设备属性的命令行工具,他一般和libuuid(3)程序库一起使用。他可以推测出一个块设备内容的类型(比如是文件系统,是swap)和其他属性。

 [root@lancy ~]# blkid /dev/hda5 
 /dev/hda5: LABEL="/" UUID="74e3bf86-ce24-411d-ac35-c4bc49964f36" SEC_TYPE="ext3" TYPE="ext2"
[root@lancy ~]# blkid /dev/hda1 /dev/hda1: UUID="6C2B-F039" TYPE="vfat"

UUID在RAID和LVM中有比较广泛的使用,在RAID中,寻找某一个设备或者分区不是根据你的设备号(比如hda3),也不是标签(比如/HOME),因为手工创建的分区默认没有标签,而是根据UUID号,比如你的第一个SCSI设备因为槽位的变化,那么在linux中设备好也发生了变化(比如从sda变成sdb),但是系统依然能够识别出来。而槽位的改变在服务器上很容易发生,因为大部分都是支持热插拔的。在LVM的配置文件中,你更能非常清楚的看到UUID号。

blockdev: 在命令行调用设备的ioctl函数。在Linux系统中,似乎对设备的直接操作只有ioctl函数了。他接受的参数不是太多,而且都是一一对应的。

–setro 设置设备为只读
–getro 读取设备是否为只读(成功为1,0则为可读写)
–setrw 设置设别为可读写
–getss 打印设备的扇区大小,通常是512
–getsize 打印设别的容量,按照一个扇区512个字节计算
–setra N Set readahead to N 512-byte sectors.
–getra 打印readahead
–flushbufs 刷新缓冲
–rereadpt 重读分区表。

个人觉得–setro,–setrw比较有用,这个mount -o ro(rw)是有区别的,mount是在文件系统这个级别上对某个分区挂载为只读或可读写。
而blockdev则是在设别这个级别上设置为只读和可读写。 看下面的命令输出结果就一目了然了。

[root@lancy ~]# blockdev –setro /dev/hda4
[root@lancy ~]# blockdev –getro /dev/hda4
1
[root@lancy ~]# mount /dev/hda4 /misc -o rw
mount: block device /dev/hda4 is write-protected, mounting read-only
[root@lancy ~]# umount /dev/hda4
[root@lancy ~]# blockdev –setrw /dev/hda4
[root@lancy ~]# blockdev –getro /dev/hda4
0
[root@lancy ~]# mount /dev/hda4 /misc -o rw
[root@lancy ~]# touch /misc/one
[root@lancy ~]# umount /dev/hda4
[root@lancy ~]# mount /dev/hda4 /misc -o ro
[root@lancy ~]# rm -f /misc/one
rm: 无法删除‘/misc/one’: 只读文件系统

只读文件系统 这个命令在高可用环境比较实用。比如红旗的HA产品就使用了类似的命令来防止,红旗HA停止时,会自动将他监管的设备设置为只读,防止用户的改写,除非你手工设置为可读写(红旗HA使用了clproset命令,其作用应该和这个差不多)

Comments