LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 807|回复: 9

mkfs 时的一个现象,已解决

[复制链接]
发表于 2009-12-27 20:48:57 | 显示全部楼层 |阅读模式
fdisk查看分区信息如下
[root@vkill'host ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x06e39518

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          14      112423+   c  W95 FAT32 (LBA)
/dev/sdb2   *          15          28      112455   83  Linux
/dev/sdb3              29         261     1871572+   5  Extended
/dev/sdb5              29         261     1871541    c  W95 FAT32 (LBA)

当我用mkfs格式化分区时tab提示如下
[root@vkill'host ~]# mkfs.vfat /dev/sdb
sdb   sdb1

发现没有sdb3 之类的,我用mkfs直接写分区名时提示如下
[root@vkill'host ~]# mkfs.vfat /dev/sdb5
mkfs.vfat 3.0.1 (23 Nov 2008)
/dev/sdb5: No such file or directory

不知道啥原因,我第一次fdisk分区时只分了一个区,我把那一个mkfs 后mount 到了 /mnt ,我再次想fdisk 分区时忘记了先umount,而就导致了这个现象,我想问下有没有在不重启linux的情况下解决这个问题的方法那?



解决方法见7楼
发表于 2009-12-27 21:33:50 | 显示全部楼层
cat /proc/partitions显示什么内容,会不会分区之后没有重新读入分区表?如果磁盘上有busy分区(当前挂接)fdisk/sfdisk是不能重新刷新分区表的,parted有时能成功刷新,不过如果是猜测的这种情况最好能重新启动一次。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-27 22:12:24 | 显示全部楼层
打开那文件如下
[root@vkill'host ~]# cat /proc/partitions
major minor  #blocks  name

   8        0    4194304 sda
   8        1    2931831 sda1
   8        2          1 sda2
   8        5     497983 sda5
   8        6     763056 sda6
   8       16    2097152 sdb
   8       17    2096451 sdb1

从这里看确实是没有刷新过来。
不过打开这个我发现了个东西,呵呵,就是 major 和 minor ,知道这个的话那就可以自己 mknod 了,我试试看
回复 支持 反对

使用道具 举报

发表于 2009-12-27 22:18:00 | 显示全部楼层
重新拔插看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-27 22:20:31 | 显示全部楼层
我mknod 了个 /dev/sdb2 问题依旧,不知道为啥,我操作如下

[root@vkill'host ~]# mknod /dev/sdb2 b 8 18
[root@vkill'host ~]# mkfs.ext2 /dev/sdb2
mke2fs 1.41.3 (12-Oct-2008)
mkfs.ext2: No such device or address while trying to determine filesystem size

scsi硬盘的major number 都是8,我g了半天确实是这样,搜索到一篇文章没看懂,这下懂了
文章地址http://www.lanana.org/docs/device-list/devices.txt

中间这段
8 block        SCSI disk devices (0-15)
                  0 = /dev/sda                First SCSI disk whole disk
                 16 = /dev/sdb                Second SCSI disk whole disk
                 32 = /dev/sdc                Third SCSI disk whole disk
                    ...
                240 = /dev/sdp                Sixteenth SCSI disk whole disk

                Partitions are handled in the same way as for IDE
                disks (see major number 3) except that the limit on
                partitions is 15.

现在回头再来看,明白了,但是我mknod为啥还是不行那?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-27 22:27:12 | 显示全部楼层
Post by ch_fb;2059881
重新拔插看看


呵呵,我更想要的是过程,如果就只为结果的话,我重启就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-27 22:49:21 | 显示全部楼层
呵呵,问题解决啦,参加了下面这篇文章的 9.4 章节

文章地址 http://www.ibiblio.org/pub/Linux ... h-Memory-HOWTO.html


解决方法就是
# fdisk /dev/sdb
       Choose p; check partition table
       If satisfied, choose w
回复 支持 反对

使用道具 举报

发表于 2009-12-27 22:49:30 | 显示全部楼层
如果内核没有重新读入分区表创建多少个设备入口也没用啊。实在不想重启(比如重要服务器)要么umount掉全部分区然后sfdisk -R /dev/sdb(或者在fdisk里面保存退出),但对于root文件系统所在分区行不通,这种情况只能装个parted好像可以强制重新认分区。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-27 22:56:55 | 显示全部楼层
Post by lifc;2059908
如果内核没有重新读入分区表创建多少个设备入口也没用啊。实在不想重启(比如重要服务器)要么umount掉全部分区然后sfdisk -R /dev/sdb(或者在fdisk里面保存退出),但对于root文件系统所在分区行不通,这种情况只能装个parted好像可以强制重新认分区。


呵呵,谢谢,我误打误撞到的,你说的完全正确,这下理解了,还好刚才我忍住没重启,要不又少学点东西啦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-27 23:10:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表