在我使用虛擬機來架設 Linux 伺服器時,習慣在 Guest 中使用兩顆虛擬硬碟(VMDK),這就如同實體機器一樣,我們會將第一顆硬碟來安裝 OS 系統,第二顆硬碟存放運作資料,甚至第三顆硬碟來本地備份。

或許有人會問,在虛擬機何必這樣區分呢?不是都一樣都是假的?現在備份不都整個 Guest OS 備份?實際上,過去區分硬碟存放,為了是確保資料的保障;的確,在現在的虛擬環境備份方案,已經不像實體機的那麼複雜,層次也都已經拉升到整個運行虛擬機,而非單單那一顆硬碟。

但我仍會這樣做,尤其經過多次部署上線的經驗,配合虛擬機的特點,發現區分 DISK (VMDK) 仍有顯著幫助的。

用三種情況來解釋為什麼我會這樣做:

(一) 當要快速完成部署或更換系統,如我想快速的將某 Guest OS 移除,並換上新的 Guest OS 來運作(如 windows 2003 升級到 2008),我只要將舊的資料 VMDK 掛到新部署的 Guest OS 上,馬上完工。

(二) 我能將 I/O 需求比較高的 VMDK 放到獨立或效能較高實體區來運作,甚至是 SWAP 或 Windows 的分頁檔。

(三) 明確區分目前資料磁區的大小,在大部份的 OS 中,動態調整第二顆硬碟的空間遠比第一顆來的方便。

所以,老樣子,我們來替剛裝好的 CentOS 加入一個 DISK 吧~

一、透過 vSphere Client 將 Guest VM 新增硬碟

vSphere Client Summy Display

我相信大家對新增硬碟應該是很熟悉了,這部份的操作我就不再著墨太多啦~

guest vm add new hard disk

這台測試的機器一共放入兩顆 DISK,第一顆安裝 CentOS (20G),第二顆打算來放入架設網站的資料(60G),接下來就開機,使用 PuTTY 連入操作。

二、磁碟分割、格式化

開機完後,首先如何知道剛剛新加入的硬碟有被 CentOS 抓到呢?可以使用 fdisk -l  指令來查看目前硬碟的狀況。

[root@NGINX ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008ecae

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           2         501      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             502       20480    20458496   8e  Linux LVM
Partition 2 does not end on cylinder boundary.

Disk /dev/sdb: 64.4 GB, 64424509440 bytes
64 heads, 32 sectors/track, 61440 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root: 19.9 GB, 19872612352 bytes
255 heads, 63 sectors/track, 2416 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: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 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: 0x00000000

其中可以看到 Disk /dev/sdb: 64.4 GB, 64424509440 bytes 就是我們剛加入的硬碟,目前還沒有分割任何的磁區,所以我們就開始分割吧。

[root@NGINX ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x098f14be.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

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): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-61440, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-61440, default 61440):
Using default value 61440

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

我這直接將它切割為單一個主磁區,分割完後,可以再透過 fdisk -l 確認一次,再來就是使用 mkfs.ext4 對剛切出來的 /dev/sdb1 進行格式化(CentOS 可以使用 ext4 的檔案格式)。

[root@NGINX ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3932160 inodes, 15728636 blocks
786431 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
480 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

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

三、自動開機掛載

先在 / 下建立 data-disk 資料夾,供掛載 /dev/sdb1 使用,修改開機自動掛載設定檔 /etc/fstab,透過 mount -a 方式直接重新掛載,最後再透過 df 指令確認是不是已經掛載成功。

[root@NGINX ~]# mkdir /data-disk
[root@NGINX ~]# vi /etc/fstab

# 加入一行至最後
/dev/sdb1    /data-disk    ext4   defaults   1 2

[root@NGINX ~]# mount -a
[root@NGINX ~]# mount
/dev/mapper/VolGroup-lv_root 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)
/dev/sdb1 on /data-disk type ext4 (rw)
[root@NGINX ~]#
[root@NGINX ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       19G  1.2G   17G   7% /
tmpfs                 250M     0  250M   0% /dev/shm
/dev/sda1             485M   65M  395M  15% /boot
/dev/sdb1              60G  180M   56G   1% /data-disk
[root@NGINX ~]#

好了,這樣就完成新硬碟的安裝啦~

Related Posts Plugin for WordPress, Blogger...

您可以延伸閱讀這些文章:

  1. [教學] CentOS 6.3 設定 – (2) 安裝 VMware Tools
  2. [教學] 在 CentOS 中使用 Nginx 來架設 Web 伺服器
  3. [教學] CentOS 6.3 安裝 – (2) 網路設定篇
Tagged with:
 
About The Author

阿百

大家好,我是陳彥百(YenPai Chen)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>