跳到主要內容

Linux新增磁碟到LVM的例子

今天要在一台Linux的機器上安裝一個程式,查詢狀態發現空間不足。
[root@pv_test ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       28G   24G  2.4G  91% /
/dev/sda1             101M   13M   82M  14% /boot
tmpfs                  10G  1.4G  8.7G  14% /dev/shm

查詢硬碟的結構,發現還有一個sdb1,因為這台機器是VM上面的虛擬機器,所以可能是之前就已經分配好的空間
[root@pv_test orcl]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        3916    31350847+  8e  Linux LVM

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  83  Linux
       ext3     defaults        0 0

       
因為有看到/dev/mapper/VolGroup00-LogVol00這樣的device,所以這台Linux應該有建LVM
實體Device可以建立為PV,多個PV可以建立為VG,VG就像一顆大的虛擬硬碟,就可以規劃分割區與格式化
而分割出來的虛擬區塊就是LV,這是可以實際使用的部份。

尋找是否有PV,發現有一顆PV /dev/sda2,並且正在使用  
[root@pv_test ora01]# pvscan
  PV /dev/sda2   VG VolGroup00   lvm2 [29.88 GB / 0    free]
  Total: 1 [29.88 GB] / in use: 1 [29.88 GB] / in no VG: 0 [0   ]

查詢PV的詳細訊息 
[root@pv_test ora01]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup00
  PV Size               29.90 GB / not usable 24.06 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              956
  Free PE               0
  Allocated PE          956
  PV UUID               O9OO6i-UAs5-WsUy-teoh-G8zx-PlcF-ozHzvd       

查詢VG的訊息,的確有一個VG(Found volumn group "VolGroup00")
[root@pv_test ora01]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2
 
查詢VG的詳細訊息,已經使用了全部的容量(Alloc PE / Size、Free  PE / Size)
[root@pv_test ora01]# vgdisplay
  --- Volume group ---
  VG Name               VolGroup00
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               29.88 GB
  PE Size               32.00 MB
  Total PE              956
  Alloc PE / Size       956 / 29.88 GB
  Free  PE / Size       0 / 0  
  VG UUID               K4DU8g-qJjI-uJoO-IzIa-Ji7o-vQVo-R4Zi8V  

接著準備把沒有使用到的sdb1加入LVM,讓空間變大,先更改sdb1的檔案格式旗標為Linux LVM
[root@pv_test ora01]# fdisk /dev/sdb

The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): t
Selected partition 1    
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

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

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

將/dev/sdb1建立為PV
[root@pv_test /]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
 
重新尋找PV,已經成功建立/dev/sdb1的PV
[root@pv_test /]# pvscan
  PV /dev/sda2   VG VolGroup00      lvm2 [29.88 GB / 0    free]
  PV /dev/sdb1                      lvm2 [19.99 GB]
  Total: 2 [49.87 GB] / in use: 1 [29.88 GB] / in no VG: 1 [19.99 GB]
 
接著加入到VG
[root@pv_test /]# vgextend VolGroup00 /dev/sdb1
  Volume group "VolGroup00" successfully extended
 
重新查詢VG,發現空間變大了,而且還有19.97GB的空間可以使用(Free  PE / Size)
[root@pv_test /]# vgdisplay
  --- Volume group ---
  VG Name               VolGroup00
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               49.84 GB
  PE Size               32.00 MB
  Total PE              1595
  Alloc PE / Size       956 / 29.88 GB
  Free  PE / Size       639 / 19.97 GB
  VG UUID               K4DU8g-qJjI-uJoO-IzIa-Ji7o-vQVo-R4Zi8V

查詢LV,目前已分割成LogVol00與LogVol01,而這次我們要擴充空間的是LogVol00
[root@pv_test /]# lvscan
  ACTIVE            '/dev/VolGroup00/LogVol00' [27.91 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [1.97 GB] inherit
 
把VG剩餘的空間(Free  PE / Size       639 / 19.97 GB)全部都給LogVol00
[root@pv_test /]# lvresize -l +639 /dev/VolGroup00/LogVol00
  Extending logical volume LogVol00 to 47.88 GB
  Logical volume LogVol00 successfully resized
 
重新查詢LV的詳細訊息,可以發現LogVol00的空間變大了
[root@pv_test /]# lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV UUID                8bnCPd-9VFM-V2fd-xyIP-MMZ2-1JlX-jhvz2t
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                47.88 GB
  Current LE             1532
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol01
  VG Name                VolGroup00
  LV UUID                rJ8EKs-4bev-rfeL-xXBr-8LBj-ndPH-0ejKJJ
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.97 GB
  Current LE             63
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
  
雖然LV(LogVol00)的空間變大了,但是變大的部份還不能被我們使用,我們最後再下resize2fs的指令讓變大的部份可以使用,
這個指令可以on-line直接執行,而且不會影響原本已存在的資料,這樣就直接把空間變大了,真的很方便。
[root@pv_test /]# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 12550144 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 12550144 blocks long.

查詢之後可以發現,原本不足的空間,實際可用量變多了。
[root@pv_test /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       47G   24G   21G  53% /
/dev/sda1              99M   13M   82M  14% /boot
tmpfs                  10G  1.4G  8.7G  14% /dev/shm

留言

這個網誌中的熱門文章

Shell Script簡易教學

一、概論
在許多的情況之下,我們都需要固定一組可以重覆或判斷資訊的指令,
而把這些指令存被在文字檔中,再交由Shell執行,就是Script。
一般會將Shell Script的副檔名命名為.sh,雖然副檔名在Linux中並非必要,
但是有副檔名可以讓我們更容易管理這些檔案。

假設有一個名為test.sh 的 Shell Script,首先用文字編輯器來撰寫內容如下:
#!/bin/bash
echo Hello World

第一行是必需的,它是用來定義你要使用的 shell。Linux中有許多的Shell可以使用,
如:ksh、bash,但是彼此之間語法有所差異,所以我們首先需要定義使用哪一個Shell。
而第二行的 echo 代表列出一個字串,預設會把後面的字串「Hello World」顯示在螢幕上。
將test.sh存檔後,可以用下列其中一種方式執行它:
1、直接輸入 sh test.sh
2、改變test.sh的權限,加上可以執行的權限,
   chmod a+x test.sh
   接著直接執行它:
   ./test.sh

在Shell Script中,「#」表示註解,在#後面將視為註解並且被程式忽略。
例如:
#pwd
ls -l
Shell只會執行ls -l,而不會執行ls -l

而「;」 則代表指令的分隔,例如:
pwd;ls -l

pwd
ls -l
都是一樣執行pwd及ls -l。

二、變數的使用
在Shell Script中,所有的變數都視為字串,因此不需要在定義變數類型。
在Shell中定義和使用變數時並不一樣。
例如,定義一個變數id並且設定值為2013001,接著還要將印出變數的值:
id=2013001 -> 定義變數時前面不加「$」符號
echo $id   -> 使用變數時前面要加「$」符號
注意,在等號的二邊不可以有空白,否則將出現錯誤。

再介紹一個範例:
dir=/home/oracle
ls $dir

這裡我們定義了變數dir的值為/home/oracle,接著用ls指令來印出變數dir,
此時指令會變為ls /home/oracle,所以就把目錄中所有檔案都列出來。


我們再來看一個例子,說明如何使用變數來定義變數:
$ tmppath=/tmp$ tmpfile=$tmppath/abc.txt$ ec…

用Excel 2010製作免費甘特圖

用Excel 2010製作免費甘特圖,以下是完成圖,其實是用圖表的功能加上修改圖表的選項來仿製甘特圖,
並非真正的甘特圖,如果要用免費的甘特圖軟體,可以下載GanttProject,有支援中文。
官方網址:http://www.ganttproject.biz/

首先將任務、開始日期、天數、完成日期填入工作表中,完成計劃後將資料全選,並在工具列上找到橫條圖。
一定要將資料全選起來,不然Excel有可能會判斷錯誤,畫出不符我們需求的圖表
(日期我算錯了,不過不影響製作,可以事後再修改)

圖表出現之後,修改資料的範圍(藍色框的部份),將資料由D6拉到C6。
「完成日期」只是為了讓Excel一開始不要判斷錯誤而產生錯誤的圖表。

在「藍色線條」上按滑鼠右鍵,選擇「資料數列格式」

依下圖點選「無填滿」,把藍色的線條變成透明,讓圖表看起來像是甘特圖。

接著我們要修改欄、列的參數,在下面日期的部份點選滑鼠右鍵,選「座標軸格式」

下方列是日期,所以選「日期」,並選擇一個類型

再來到「座標軸選項」中設定最小、最大值,讓圖表看起來更像甘特圖,其中最小值、最大值的數字,
是由1900/1/1到指定日期的總天數,例如:2014/4/9-1900/1/1=41737天(可用Excel直接相減得出數值)
「主要刻度間距」改為1,也就是間距為1天

接著回到圖表上,在左方任務列上按滑鼠右鍵,選擇「座標軸格式」

這次只選「類別次序反轉」,會把任務上下翻轉。

最後再將圖表的寬度、長度做一個調整就完成了。

補充說明: 如果遇到下列的情形,圖表的內容相反的話,可以按下「切換列/欄」來改變

Excel可以自訂公式(函數)來補足內建公式(函數)無法處理的情形

Excel有許多實用的公式,善用這些公式可以達成大部份的功能,但是萬一公式無法滿足需求時,可以自訂公式來解決。

          自訂公式其實就是自訂函數,先開啟Visual Basic(VBA)


                     新增一個「模組」


在開啟的模組視窗內撰寫VBA的函數程式,例如:

Function TEST01(A, B)
    TEST01 = A * 10 + B * 20
End Function

                    函數TEST01需要兩個參數A、B,並且將計算的結果回傳。



完成上述的設計之後,就可以在插入函數中選擇使用者定義,再選擇TEST01。
(或直接在儲存格輸入函數名稱TEST01)
反正使用的方法就跟一般的Excle的公式一樣就對了。