1. 程式人生 > >十五、磁盤格式化、磁盤掛載、手動增加SWAP分區

十五、磁盤格式化、磁盤掛載、手動增加SWAP分區

con mon lock misc -a 打開 提示 ext3 proto

十五、磁盤格式化、磁盤掛載、手動增加SWAP分區

centos7支持的文件系統格式

# cat /etc/filesystems

xfs //centos7默認的文件系統,比如/和/boot就是xfs。

ext4

ext3

ext2

nodev proc

nodev devpts

iso9660

vfat

hfs

hfsplus

*

如何查看分區的文件系統,命令:mount,只關註/dev開頭的即可。還沒有掛載的分區看不到。

在centos6以及之前的版本使用的是ext格式的文件系統。

centos6 ext4

centos5 ext3

再往前就是ext2。

查看還沒有掛載的分區,命令:blkid /dev/sdb1

blkid命令:若不指定就是ext2的文件系統。

# blkid /dev/sdb5

/dev/sdb5: UUID="0bf14533-a292-421f-bf23-8820e58d2d05" TYPE="ext2"

一、磁盤格式化

磁盤分好區後暫時還不能用,還須對每個分區進行格式化所謂格式化,其實就是安裝文件系統,Windows下的文件系統有FAT32和NTFS。

1.命令mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4mkfs.xfs

當用man命令查詢前4個命令的幫助文檔時,會發現看到的是用一個幫助文檔,說明這4個命令是一樣的,下面以mke2fs為例介紹。

mke2fs命令的常用選項:

-b:表示分區時設定每個數據區塊占用的空間大小。目前,每個數據塊支持1024B,2048B和4096B。

-i:表示設定iNode的大小。多少字節對應一個iNode。想要更多iNode就把數值改小,最小一個塊對應1個iNode,不能再小了。

示例用法:mke2fs -i 8192 -t ext4 /dev/sdb1

-N:表示設定iNode的數量。有時默認的iNode數不夠用,所以要自定義iNode的數量。

-c:表示在格式化前先檢測一下磁盤是否有問題。加上這個選項後,運行速度會非常慢。

-L:表示預設該分區的標簽(label)。

-j:表示建立ext3格式的分區。若使用mkfs.ext3格式,就不用加這個選項。

-t:用來指定文件系統的類型,可以是ext2、ext3或ext4。

-m:指定該分區預留的空間大小。# mke2fs -m 0.1 /dev/sdb5(大小自定義,單位%)

示例命令:

# mke2fs -t ext4 /dev/sdb5

mke2fs 1.42.9 (28-Dec-2013)

文件系統標簽=

OS type: Linux

塊大小=4096 (log=2)

分塊大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

64000 inodes, 256000 blocks

12800 blocks (5.00%) reserved for the super user

第一個數據塊=0

Maximum filesystem blocks=262144000

8 block groups

32768 blocks per group, 32768 fragments per group

8000 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376

Allocating group tables: 完成

正在寫入inode表: 完成

Creating journal (4096 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

指定文件系統格式為ext4時,命令mke2fs -t ext4 /dev/sdb5等同於mkfs.ext4 /dev/sdb5。然而,mke2fs不支持分區格式化成XFS類型,而只能使用mkfs.xfs,想格式化成XFS文件系統類型的時候,用mkfs.xfs命令就可以了。

mkfs.ext4和mk2fs支持的選項是一樣的

示例命令:

# mke2fs -t xfs /dev/sdb6

mke2fs 1.42.9 (28-Dec-2013)

Your mke2fs.conf file does not define the xfs filesystem type.

Aborting...

# mkfs.xfs /dev/sdb6

meta-data=/dev/sdb6 isize=512 agcount=4, agsize=64000 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0, sparse=0

data = bsize=4096 blocks=256000, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal log bsize=4096 blocks=855, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

上例中,塊大小=4096(bsize=4096)。

磁盤在格式化的時候,會預先規定好每一個塊的大小,然後再把所有的空間分割成一個個的小塊。存數據的時候,也是一個塊一個塊的寫入。

若磁盤裏存儲的都是特別小的文件,比如說1KB或者2KB,在格式化磁盤時指定塊數值就小一點。

ext4文件系統的默認塊大小為4096B(即4KB)。在格式化時,可以指定塊大小為1024B、2048B或4096B(它們是成倍增加的)。雖然格式化時可以指定塊大小超過4096B,但一旦超過4096B,就不能正常掛載。該如何指定塊大小呢,示例命令:

# mke2fs -t ext4 -b 8192 /dev/sdb5

Warning: blocksize 8192 not usable on most systems.

mke2fs 1.42.9 (28-Dec-2013)

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

文件系統標簽=

OS type: Linux

塊大小=8192 (log=3)

分塊大小=8192 (log=3)

Stride=0 blocks, Stripe width=0 blocks

64000 inodes, 128000 blocks

6400 blocks (5.00%) reserved for the super user

第一個數據塊=0

Maximum filesystem blocks=134201344

2 block groups

65528 blocks per group, 65528 fragments per group

32000 inodes per group

Superblock backups stored on blocks:

65528

Allocating group tables: 完成

正在寫入inode表: 完成

Creating journal (4096 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

# mkfs.xfs -b size=8192 /dev/sdb6 //重新格式化sdb6時,會提示這個分區已經格式化過。

mkfs.xfs: /dev/sdb6 appears to contain an existing filesystem (xfs).

mkfs.xfs: Use the -f option to force overwrite.

# mkfs.xfs -f -b size=8192 /dev/sdb6 //加-f選項就可以了。f:強制的,之前有講。

meta-data=/dev/sdb6 isize=512 agcount=4, agsize=32000 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0, sparse=0

data = bsize=8192 blocks=128000, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=8192 ascii-ci=0 ftype=1

log =internal log bsize=8192 blocks=559, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=8192 blocks=0, rtextents=0

上面的試驗發現,若指定塊大小為8192B,會提示塊值設置得太大,可以輸入y強制格式化。你還可以嘗試其他數字,但需要是1024的指數倍(1024、2048、4096、8192)。塊大小一般保持默認即可。

其中,mkfs.xfs用法有點特殊,需要註意和mke2fs區分。

另外,還可以給分區指定標簽,如下:

# mke2fs -L TEST -t ext4 /dev/sdb5

mke2fs 1.42.9 (28-Dec-2013)

文件系統標簽=TEST

OS type: Linux

塊大小=4096 (log=2)

分塊大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

64000 inodes, 256000 blocks

12800 blocks (5.00%) reserved for the super user

第一個數據塊=0

Maximum filesystem blocks=262144000

8 block groups

32768 blocks per group, 32768 fragments per group

8000 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376

Allocating group tables: 完成

正在寫入inode表: 完成

Creating journal (4096 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

這裏可以使用-L選項來指定標簽。標簽會在掛載磁盤時使用,也可以寫入配置文件。

小建議:除非有需求,否則不需要指定塊大小。也就是說,只要記住-t和-L兩個選項即可。

2.命令e2label

該命令用於查看或修改分區的標簽,它只支持ext格式的文件系統,而不支持XFS文件系統。

示例命令:

# e2label /dev/sdb5

TEST

# e2label /dev/sdb5 TEST123

# e2label /dev/sdb5

TEST123

二、磁盤掛載

格式化後的磁盤其實就是一個塊設備文件,類型為b。不可以直接在那個文件寫數據。在掛載分區前,先建立一個掛載點,這個掛載點是以目錄的形式出現的。一旦把某個分區掛載到這個掛載點(目錄)下,要再往這個目錄寫數據時,就都會寫到該分區中。所以,在掛載分區前,掛載點(目錄)下必須是個空目錄。其實目錄不為空並不影響所掛載分區的使用,但一旦掛載上了,該目錄下以前的東西就看不到了(數據並沒有丟失),除非卸載該分區。

1.mount命令(掛載的命令)

# mount

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=923696k,nr_inodes=230924,mode=755)

securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)

tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)

devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)

tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)

tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)

cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)

pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)

cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)

cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)

cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)

cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)

cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)

cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)

cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)

cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)

cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)

cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

configfs on /sys/kernel/config type configfs (rw,relatime)

/dev/sda3 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)

systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=26,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13387)

debugfs on /sys/kernel/debug type debugfs (rw,relatime)

hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)

mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)

/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186708k,mode=700)

該命令可以查看當前系統已經掛載的所有分區、分區文件系統的類型、掛載點及一些選項等信息。若想知道某個已掛載分區的文件系統類型,直接用mount命令查看。未掛載的分區用blkid命令查看。

先建立一個空目錄及文檔,示例:

# mkdir /newdir

# touch /newdir/newfile.txt

# ls /newdir/

newfile.txt

再把剛才格式化的/dev/sdb5掛載到/newdir上,如下:

# mount /dev/sdb5 /newdir/

# ls /newdir/

lost+found

# df -h |grep -v tmpfs

文件系統 容量 已用 可用 已用% 掛載點

/dev/sda3 16G 1007M 15G 7% /

/dev/sda1 197M 113M 85M 58% /boot

/dev/sdb5 985M 1.3M 983M 1% /newdir

把/dev/sdb5掛載到/newdir後,原來在/newdir下的newfile.txt就看不到了,通過命令df -h可以查看剛掛載的分區。

umount命令,用來卸載磁盤分區的。-l選項(laze,懶人的意思),可以在打開了這個目錄的情況下卸載掉這個分區。

# umount /newdir/

# df -h |grep -v tmpfs

文件系統 容量 已用 可用 已用% 掛載點

/dev/sda3 16G 1007M 15G 7% /

/dev/sda1 197M 113M 85M 58% /boot

常用選項:

-a:會把/etc/fstab中出現的所有磁盤分區都掛載上。

-t:用來指定掛載的分區類型,默認不指定,會自動識別。

-o:用來指定掛載的分區有哪些特性,即/etc/fstab文件中第四列的哪些。用法:

mount -o ro,sync /dev/sdb5 /newdir

mount -o remount,ro,sync /dev/sdb5 /newdir //remount,重新掛載

2./etc/fstab配置文件

# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Mon Jan 22 01:47:58 2018

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=5035b91d-4724-40f0-b6f1-daca081fa9ad / xfs defaults 0 0

UUID=e0f242ce-37db-4f09-bc9e-05d274a9e8b2 /boot xfs defaults 0 0

UUID=fa9c1185-bf37-42d6-b64f-571e57f24bac swap swap defaults 0 0

該文件顯示了系統啟動時需要掛載的各個分區,簡述各列含義:

第一列:分區標識,可寫分區的LABEL、分區的UUID、也可以寫分區名(/dev/sda1)

第二列:掛載點

第三列:分區格式

第四列:mount的一些掛載參數。一般情況下,直接寫defaults即可

第五列:這列的數字表示是否被dump備份。1表示備份,0表示不備份

第六列:這列的數字表示開機時是否自檢磁盤。1和2都表示檢測,0表示不檢測。檢測時,1比2優先級高,所以先檢測1,再檢測2。若有多個分區需要開機檢測,就都設置成2,1檢測完後會同時檢測2.在centos7系統裏,所有分區中該列的值都是0。

第四列的常用選項:(重點)

async/sync:async表示與磁盤和內存不同步。系統每隔一段時間就會把內存數據寫入磁盤中,而sync則會時時同步內存和磁盤中的數據。默認是async。

auto/noauto:表示開機自動掛載/不自動掛載。

default:表示按照大多數永久文件系統的默認值設置掛載定義,它包含了rw、suid、dev、exec、auto、nouser和async。每個都對應了一個no的選項。

ro:只讀權限掛載。

rw:可讀可寫權限掛載。

exec/noexec:允許/不允許可執行文件執行。千萬不要把根分區掛載為noexec,否則將無法使用系統,甚至連mount命令都無法使用。

user/nouser:允許/不允許root外的其他用戶掛載分區。為了安全,請用nouser。

suid/nosuid:允許/不允許分區有suid屬性,一般設置nosuid。

usrquota:表示啟動用戶的磁盤配額模式。磁盤配額會針對用戶限定他們使用的磁盤額度。

grquota:表示啟動群組的磁盤配額模式。

3.blkid命令

若想讓某個分區在開機後自動掛載,有兩個辦法可實現:

a)在/etc/fstab中添加一行,比如這樣的一行:

UUID="11eefb8d-62c1-43bd-9dc6-5748bfd00189" /newdir ext4 defaults 0 0

b)把掛載命令寫到/etc/rc.d/rc.local文件中去,系統啟動後會執行這個文件中的命令。只要你把想要開機啟動的命令統統寫入到這個文件中(直接放到最後)即可。

有的可能遇到把命令寫入了/etc/rc.d/rc.local文件裏,可是卻開機沒有執行,可能是系統沒有找到那個命令。所以為了避免此類問題,寫入到該文件的命令,要使用絕對路徑,。更改完/etc/rc.d/rc.local文件後,還需要一步操作:

# chmod a+x /etc/rc.d/rc.local

因為,在centos7系統,該文件默認沒有執行權限。以上兩種方法任選其一,建議在掛載磁盤分區時,盡量使用UUID或者LABEL這兩種方法。

4.手動增加swap分區

增加虛擬磁盤的基本思路:建立swapfile,格式化為swap格式,啟動該虛擬磁盤。

a)先建立swapfile,如下所示:

# dd if=/dev/zero of=/tmp/newdisk bs=1M count=1024

記錄了1024+0 的讀入

記錄了1024+0 的寫出

1073741824字節(1.1 GB)已復制,22.9133 秒,46.9 MB/秒

dd命令:使用方法:

if指定源(一般是/dev/zero,它是UNIX系統特有的一個文件,它可以源源不斷的提供“0”)

of指定目標文件

bs定義塊大小

count定義塊的數量

bs和count這兩個參數決定了目標文件的大小,即目標文件大小=bs*count。

上例中,用dd命令建立了一個大小為1.1GB的文件,下面將它格式化,如下:

# mkswap -f /tmp/newdisk

正在設置交換空間版本 1,大小 = 1048572 KiB

無標簽,UUID=28ac58d0-d39f-428a-a815-117427cfbd54

文件格式化後,就可以掛載使用了,如下:

# free -m

total used free shared buff/cache available

Mem: 1823 123 478 8 1220 1504

Swap: 4095 0 4095

# swapon /tmp/newdisk

swapon: /tmp/newdisk:不安全的權限 0644,建議使用 0600。

[root@yaowei-01 ~]# free -m

total used free shared buff/cache available

Mem: 1823 124 478 8 1220 1504

Swap: 5119 0 5119

雖然提示不安全,但實際已經掛載上。

前後對比swap分區,多了1024MB的空間。

free命令:查看內存的使用情況,-m選項:以MB為單位。

若想再卸載這個文件,用命令:

# swapoff /tmp/newdisk


十五、磁盤格式化、磁盤掛載、手動增加SWAP分區