跟我一起學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


分享到:


相關文章: