CentOS 7/8 新增硬碟

1.分割硬碟
新的硬碟應該是沒有任何分割的,所以要先用 fdisk 來分割硬碟,但是要分割新硬碟之前,要先搞清楚新的硬碟是哪一顆,弄錯可就慘了!先用 df 來看一下目前系統硬碟的使用情形:
顯示出目前硬碟的掛載狀況

#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 440G 46G 372G 12% /
none 5.9G 260K 5.9G 1% /dev
none 5.9G 0 5.9G 0% /dev/shm
none 5.9G 64K 5.9G 1% /var/run
none 5.9G 0 5.9G 0% /var/lock
none 5.9G 0 5.9G 0% /lib/init/rw
/dev/sdb1 459G 198M 435G 1% /data1

而我門剛剛裝上去的新硬碟在這裡是看不到的,因為我們都還沒開始分割,接著在看看 /dev 下面所有的硬碟情況,

#ls /dev/[sh]d*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb /dev/sdb1 /dev/sdc

這樣一比較就知道新的硬碟是 /dev/sdc 這顆,再用 fdisk 確認一下:

#fdisk -l /dev/sdc
Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x40bab849<
Device Boot Start End Blocks Id System <==沒有分割表資訊

看起來沒問題,沒有任何磁碟分割表的資訊,接著開始分割,首先進入 fdisk:
fdisk 是一個互動模式的分割工具,輸入 m 再按 Enter 可以顯示各種指令的說明:

#fdisk /dev/sdc
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help):

首先我們要新增一個分割區,步驟如下

新增分割區,輸入 n 按 Enter。
選擇要建立 extended 還是 primary partition,因為我的硬碟全部只要一個分割區,所以我選 primary,輸入 p 按 Enter。
選擇 Partition number,primary 分割區最多可以有四個,隨便選都可以,不過建議選 1,免得以後看起來很奇怪,輸入 1 按 Enter。
輸入開始的 cylinder,用預設值就可以了,直接按 Enter。
輸入結束的 cylinder,若是要用最大的容量,就直接按 Enter,若是要指定分割區的大小,就用 +size{K,M,G} 的形式指定,例如指定為 100G 的大小就輸入 +100G 再按 Enter。
最後將分割表寫入硬碟,輸入 w 再按 Enter。

以上整個過程看起來就像這樣:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-243201, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-243201, default 243201):
Using default value 243201
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

若是要離開 fdisk 就輸入 q 按 Enter 就可以了。

接著再用 fdisk 確認分割區:

#fdisk -l /dev/sdc
Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x40bab849
Device Boot Start End Blocks Id System
/dev/sdc1 1 243201 1953512001 83 Linux <==分割表資訊

最下面一行就是新的分割資訊,看起來沒什麼問題了,接著就要來格式化硬碟。

2.格式化(Format)硬碟
現在新的 Linux 應該大都是用 xfs 的檔案格式,若是較舊的 Linux 可能會用 Ext3,不過操作方法都大同小異。

Linux 下格式化就用 mkfs.xfs 這個指令就可以了:

#mkfs.xfs /dev/sdc1
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
122101760 inodes, 488378000 blocks
24418900 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
14905 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

接著就剩下掛載(mount)硬碟的工作了。

3.掛載(mount)硬碟
在 Linux 下面的磁碟掛載設定都是寫在 /etc/fstab 中,而傳統的寫法是使用 /dev/sda1 這樣的方式指定磁碟,但是若是當磁碟更換安裝的順序時,原本的 /dev/sda1 有可能就會變成 /dev/sdb1,有時候光是分清楚哪顆是哪顆就夠頭痛的了。

現在新的方式都是使用 UUID 來指定磁碟的,所以 /etc/fstab 看起來會像這樣:

proc /proc proc nodev,noexec,nosuid 0 0
UUID=684530e1-df5c-48d7-b3e4-eb0d47054877 / ext4 errors=remount-ro 0 1
UUID=35ddf35e-87de-4ab0-88d1-2a654d36b19a none swap sw 0 0
UUID=9746f325-1c82-4c04-b447-b5c596eea6c1 /data1 ext4 defaults 0 2

硬碟的 UUID 就像是它的身分證字號,每一顆硬碟都可不同的 UUID,使用 UUID 來指定磁碟就不會因為安裝的順序不同而產生變化,這樣做的好處是若是當磁碟常常要拔來拔去時,系統管理者不用再去更改 fstab 的設定,系統會自動尋找對應的 UUID 來掛載,很方便!

以 Ubuntu Linux 為例,基本上在安裝好系統時,/etc/fstab 中預設就是使用 UUID 來指定磁碟,但是若要自己增加一顆新的硬碟時,要如何來指定 UUID 呢?其實很簡單,就是利用 blkid 這個指令,它可以列出所有磁碟的 UUID:

# blkid
/dev/sda1: UUID=”684530e1-df5c-48d7-b3e4-eb0d47054877″ TYPE=”ext4″
/dev/sda5: UUID=”35ddf35e-87de-4ab0-88d1-2a654d36b19a” TYPE=”swap”
/dev/sdb1: UUID=”9746f325-1c82-4c04-b447-b5c596eea6c1″ TYPE=”ext4″
/dev/sdc1: UUID=”146d3bb3-e351-45c8-ac84-42534ce51d29″ TYPE=”xfs″

所以現在就是依樣畫葫蘆,把新的硬碟資訊寫進 /etc/fstab 中,在 /etc/fstab 加入下面這行:

UUID=146d3bb3-e351-45c8-ac84-42534ce51d29 /data2 xfs defaults 0

這樣就大功告成了,下次重開機時,系統就會把新的硬碟掛載至 /data2,若要馬上測試掛載硬碟設定是否正確,可以使用 mount:

mount /data2

再用 df -h 看一下,就知道有沒有問題了。

2.將 /var 移至新硬碟

# mkdir /newvar
# mount /dev/sdc1 /newvar

將 /var 資料移到 新硬碟

# rsync -aqxP /var/* /newvar

將原本 /var備份,並建立新的 /var

mv /var /var.old

mkdir /var

umount partioion

# umount /dev/sdc1

將新的硬碟 mount 到 /var

# mount /dev/sdc1 /var

掛載到 /var 後,要下以下指令修復 Security Lable

# restorecon -vr

在 /etc/fstab 加入以下這行

UUID=146d3bb3-e351-45c8-ac84-42534ce51d29 /var xfs defaults 0

資料來源:https://blog.gtwang.org/linux/linux-add-format-mount-harddisk/