跟我一起学Linux(十二)教你玩转Linux磁盘管理(二)

跟我一起学Linux(十二)教你玩转Linux磁盘管理(二)

格式化磁盘分区

命令 : mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4

当用man查询这四个命令的帮助文档时,你会发现我们看到了同一个帮助文档,这说明四个命令是一样的。mke2fs常用的选项有:

‘-b’ 分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。

‘-i’ 设定inode的大小

‘-N’ 设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。

‘-c’ 在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢

‘-L’ 预设该分区的标签label

‘-j’ 建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了

‘-t’ 用来指定什么类型的文件系统,可以是ext2, ext3 也可以是 ext4.

[root@localhost ~]# mke2fs -t ext4 /dev/sdb5

mke2fs 1.41.12 (17-May-2010)

文件系统标签=

操作系统:Linux

块大小=4096 (log=2)

分块大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

64256 inodes, 257024 blocks

12851 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=264241152

8 block groups

32768 blocks per group, 32768 fragments per group

8032 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376

正在写入inode表: 完成

Creating journal (4096 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 24 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

指定文件系统格式为ext4, 该命令等同于 mkfs.ext4 /dev/sdb5. 目前CentOS 6 默认文件系统格式为ext4, 所以以后你遇到需要格式磁盘分区的时候,直接指定格式为ext4即可,但早期的版本CentOS 5 是使用ext3作为默认的文件系统的,所以你可以根据操作系统的版本来决定格式化什么格式的文件系统。在上面的例子中,你是否有注意到一些指标呢?其中一个指标是 “块大小=4096” 这里涉及到一个 “块” 的概念,磁盘在被格式化的时候会预先规定好每一个块的大小,然后再把所有的空间分割成一个一个的小块,存数据的时候也是一个块一个块的去写入。所以如果你的磁盘存的都是特别小特别小的文件,比如说1k或者2k,那么建议在格式化磁盘的时候指定块数值小一点。ext文件系统默认块大小为4096也就是4k. 在格式化的时候,可以指定块大小为1024, 2048, 4096(它们是成倍增加的),虽然格式化的时候可以指定块大小超过4096,但是一旦超过4096则不能正常挂载,如何指定块大小?

[root@localhost ~]# mke2fs -t ext4 -b 8192 /dev/sdb5

Warning: blocksize 8192 not usable on most systems.

mke2fs 1.41.12 (17-May-2010)

mke2fs: 8192-byte blocks too big for system (max 4096)

无论如何也要继续? (y,n) y

Warning: 8192-byte blocks too big for system (max 4096), forced to continue

文件系统标签=

操作系统:Linux

块大小=8192 (log=3)

分块大小=8192 (log=3)

Stride=0 blocks, Stripe width=0 blocks

64256 inodes, 128512 blocks

6425 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=134201344

2 block groups

65528 blocks per group, 65528 fragments per group

32128 inodes per group

Superblock backups stored on blocks:

65528

正在写入inode表: 完成

Creating journal (4096 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 28 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

指定块大小为8192会提示,块值设置太大了,我们直接输入 ‘y’ 强制格式化,你还可以尝试指定更大的数字。

[root@localhost ~]# mke2fs -t ext4 -L TEST -b 8192 /dev/sdb5

可以使用 ‘-L’ 来指定标签。标签会在挂载磁盘的时候使用,另外也可以写到配置文件里,稍后阿龙介绍。关于格式化的这一部分,阿龙建议你除非有需求,否则不需要指定块大小,也就是说,你只需要记住这两个选项: ‘-t’ 和 ‘-L’ 即可。

跟我一起学Linux(十二)教你玩转Linux磁盘管理(二)

命令 : e2label

用来查看或修改分区的标签,阿龙很少使用,你只要了解一下即可。

[root@localhost ~]# e2label /dev/sdb5

TEST

[root@localhost ~]# e2label /dev/sdb5 TEST123

[root@localhost ~]# e2label /dev/sdb5

TEST123

挂载/卸载磁盘

在上面的内容中讲到了磁盘的分区和格式化,那么格式化完了后,如何去用它呢?这就涉及到了挂载这块磁盘。格式化后的磁盘其实是一个块设备文件,类型为b,也许你会想,既然这个块文件就是那个分区,那么直接在那个文件中写数据不就写到了那个分区中么?当然不行。

在挂载某个分区前需要先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某一个分区挂载到了这个挂载点(目录)下,那么再往这个目录写数据使,则都会写到该分区中。这就需要你注意一下,在挂载该分区前,挂载点(目录)下必须是个空目录。其实目录不为空并不影响所挂载分区的使用,但是一旦挂载上了,那么该目录下以前的东西就不能看到了。只有卸载掉该分区后才能看到。

命令 : mount

如果不加任何选项,直接运行 “mount” 命令,会显示如下信息:

[root@localhost ~]# mount

/dev/sda3 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

这个命令可以查看当前系统已经挂载的所有分区,以及分区文件系统的类型,挂载点和一些选项等信息,所以你如果想知道某个分区的文件系统类型直接用该命令查看即可。下面我们先建立一个空目录,然后在目录里建一个空白文档。

[root@localhost ~]# mkdir /newdir

[root@localhost ~]# touch /newdir/newfile.txt

[root@localhost ~]# ls /newdir/newfile.txt

/newdir/newfile.txt

然后把刚才格式化的 /dev/sdb5 挂载到 /newdir 上。

[root@localhost ~]# mount /dev/sdb5 /newdir/

mount: wrong fs type, bad option, bad superblock on /dev/sdb5,

missing codepage or helper program, or other error

In some cases useful info is found in syslog - try

dmesg | tail or so

不能完成挂载,根据提示可以查看一下错误信息:

[root@localhost ~]# dmesg |tail

eth0: no IPv6 routers present

sdb: sdb1 < sdb5 >

sdb:

sdb: sdb1 < sdb5 sdb6 >

EXT4-fs (sdb5): bad block size 8192

EXT4-fs (sdb5): bad block size 8192

EXT4-fs (sdb5): bad block size 8192

EXT4-fs (sdb5): bad block size 8192

EXT4-fs (sdb5): mounted filesystem with ordered data mode. Opts:

EXT4-fs (sdb5): bad block size 8192

可以看到,我的/dev/sdb5指定的块值8192不合法,所以只能重新格式化磁盘。

[root@localhost ~]# mke2fs -t ext4 -L TEST /dev/sdb5

使用默认块值即可。我们继续挂载sdb5:

[root@localhost ~]# mount /dev/sdb5 /newdir/

[root@localhost ~]# ls /newdir/

lost+found

[root@localhost ~]# df -h

文件系统 容量 已用 可用 已用%% 挂载点

/dev/sda3 14G 1.5G 12G 11% /

tmpfs 160M 0 160M 0% /dev/shm

/dev/sda1 97M 27M 66M 29% /boot

/dev/sdb5 989M 18M 921M 2% /newdir

把 /dev/sdb5 挂载到 /newdir 后,原来在 /newdir 下的 newfile.txt 被覆盖了,通过 df -h 可以看到刚刚挂载的分区,我们也可以使用LABEL的方式挂载分区:

[root@localhost ~]# umount /newdir/

[root@localhost ~]# df -h

文件系统 容量 已用 可用 已用%% 挂载点

/dev/sda3 14G 1.5G 12G 11% /

tmpfs 160M 0 160M 0% /dev/shm

/dev/sda1 97M 27M 66M 29% /boot

[root@localhost ~]# mount LABEL=TEST /newdir

[root@localhost ~]# df -h

文件系统 容量 已用 可用 已用%% 挂载点

/dev/sda3 14G 1.5G 12G 11% /

tmpfs 160M 0 160M 0% /dev/shm

/dev/sda1 97M 27M 66M 29% /boot

/dev/sdb5 989M 18M 921M 2% /newdir

本例中用到了 “umount” 命令,这个是用来卸载磁盘分区的,

跟我一起学Linux(十二)教你玩转Linux磁盘管理(二)

如果你喜欢的话,可以给个赞,或者推荐给你身边的小伙伴,我们一起用最短的时间更高效的学习Linux


分享到:


相關文章: