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/