CentOS kurulu bir sistemde disk boyutunu değiştirebilmek için lvm ( Logical Volume Manager ) kullanılmaktadır. Bu özellik ile diskler üzerinde bölüm oluşturabilir, bölebilir ve birleştirebilirsiniz.
Mevcut sisteme bağlı diskleri ve partition kısımlarını görmek için aşağıdaki komutu yazarak disk genişletme çalışmamız için ilk adımı atıyoruz.
fdisk -l
Kontrolü yaptıktan sonra aşağıdaki çıktı geliyor. Çıktıda sda1 ve sda2 olmak üzere iki adet partition görünüyor. Biz burada sda1 partition' a map edilmiş olan lv-root kısmı için genişletme yapacağız. Ancak kullanılabilir ekstra bir alan görünmüyor. sda1 kısmında görünen alanın lv-root için tamamen kullanıldığını görüyoruz. Bu sebepten öncelikle sanallaştırma için kullandığımız uygulamadan ihtiyaç olan alanı sanal sunucumuz için atıyoruz.
[root@test ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 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: 0x000e22b5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
Disk /dev/mapper/vg_test-lv_root: 28.5 GB, 28462546944 bytes
255 heads, 63 sectors/track, 3460 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/vg_test-lv_swap: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 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
[root@test ~]#
Alan atamasını yaptıktan sonra tekrar kontrol ettiğimizde çıktımız aşağıdaki gibi olacaktır. Alan tanımlamasını yaptıktan sonra disk boyutunu görebilmek için aşağıdaki komutu kullanabilirsiniz ancak komut sonrası yine aynı sonuçlar çıkarsa sunucuyu reboot etmenizi öneririm.
Disk boyutunu görebilmek için aşağıdaki komutu kullanarak diskleri tekrar tarata bilirsiniz.
echo 1 > /sys/block/sda/device/rescan
[root@test ~]# fdisk -l
Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 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: 0x000e22b5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
Disk /dev/mapper/vg_test-lv_root: 28.5 GB, 28462546944 bytes
255 heads, 63 sectors/track, 3460 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/vg_test-lv_swap: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 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
[root@test ~]#
Kontrol ettikten sonra sda boyutumuz 64.4 GB olarak yükselmiş. Burada sda1 partition için kullanılan alan dışında sda kısmında 30 gb civarında bir alan boş görünüyor. Tanımladığımız ve kullanılmayan bu alanı yeni bir partition oluşturarak kullanacağız. Daha sonrasında bu partition kısmını sda1 e dahil edeceğiz.
Öncelikle kullanacağımız alan için bir partition oluşturalım. Bu partition oluşumu için sda olarak görünen kısımdaki kullanılmayan yani boş olan alanı kullanacağız.
Başlayalım ;)
fdisk /dev/sda
Komut sonrası aşağıdaki gibi bir çıktı gelecektir.
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):
Burada n tuşuna basıp enter diyoruz. Yani yeni partition oluşturmak istediğimizi belirtiyoruz.
Daha sonrasında sırasıyla aşağıdaki komutları uyguluyoruz.
n ( Yeni Partition )
p ( Primary Parttiion )
3 ( sda1 ve sda2 sistem tarafından ilk kurulumda oluşturulduğundan biz 1-4 arasında 3 numarasını kullandık )
enter ( Kullanılmayan tüm alanı kullanacağımız için burada bir değer girmiyoruz enter diyerek iki adımı geçiyoruz. )
enter
t ( Oluşturulan partition formatını değiştireceğimizi belirtiyoruz )
3 ( Formatını değiştireceğimiz yani oluşturduğumuz partition numarasını giriyoruz )
8e ( 8e hex kodu ile formatın lvm olacağını belirtiyoruz )
p ( Partition oluştu ancak yinede görmek isterseniz girebilirsiniz. )
w ( Oluşturulan partition kısmını yazarak işlemi bitiriyoruz )
Tüm komutların ve çıktılarının görüntüsü aşağıdaki gibi olacaktır.
[root@test ~]# fdisk /dev/sda
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): 3
First cylinder (3917-7832, default 3917):
Using default value 3917
Last cylinder, +cylinders or +size{K,M,G} (3917-7832, default 7832):
Using default value 7832
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 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: 0x000e22b5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
/dev/sda3 3917 7832 31453260 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@test ~]#
Artık üçüncü partition hazır. Kullanmak için sunucuyu reboot edebilirsiniz ya da aşağıdaki komutu kullanarak oluşturduğunuz partition' ı kullanılabilir bir hale getirebilirsiniz. partx -v -a /dev/sda
Komutu kullandıktan sonra çıktı aşağıdaki gibi olacaktır.
[root@test ~]# partx -v -a /dev/sda
device /dev/sda: start 0 size 125829120
gpt: 0 slices
dos: 4 slices
# 1: 2048- 1026047 ( 1024000 sectors, 524 MB)
# 2: 1026048- 62914559 ( 61888512 sectors, 31686 MB)
# 3: 62914560-125821079 ( 62906520 sectors, 32208 MB)
# 4: 0- -1 ( 0 sectors, 0 MB)
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
added partition 3
[root@test ~]#
Oluşturulan ve kullanılabilir olarak tanımladığımız sda3 partition'ı artık physical volume olarak oluşturmaya sıra geldi.
pvcreate /dev/sda3
Komut sonrası çıktı aşağıdaki gibi olmalıdır. Çıktıda hata ile karşılaşabilirsiniz ancak hata durumuna göre önemi olmayacaktır. Genellikle hata durumu
[root@test ~]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created
[root@test ~]#
sda3 partition'ı physical volume olarak oluşturduk. Mevcut olan sda1 diski ile birlikte kullanabilmek için sda3 partition'ı volume group 'a eklememiz gerekiyor. Aşağıdaki komutla volume group' a ekleyerek merge işlemine geçeceğiz.
Burada volume group adını öğrenmek için aşağıdaki komutu kullanabilirsiniz.
vgdisplay
Çıktısı aşağıdaki gibi olacaktır.
[root@test ~]# vgdisplay
--- Volume group ---
VG Name vg_test
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.51 GiB
PE Size 4.00 MiB
Total PE 7554
Alloc PE / Size 7554 / 29.51 GiB
Free PE / Size 0 / 0
VG UUID Y7Mwd9-b9M4-Lnc3-d6WT-3M83-q6Nw-uibVVO
[root@test ~]#
Volume group adını öğrendiğimize göre artık eklemeye geçebiliriz.
vgextend vg_test /dev/sda3
Komut sonrası aşağıdaki gibi bir çıktı gelecektir.
[root@test ~]# vgextend vg_test /dev/sda3
Volume group "vg_test" successfully extended
[root@test ~]#
Bir önceki vgdisplay komutunun çıktısında "Free PE / Size 0 / 0" kısmına dikkat ettiyseniz, gruba sda3 dahil ettikten sonra tekrar vgdisplay ile kontrol ettiğimizde bu kısma kullanılabilir alanın dahil olduğunu göreceğiz.
[root@test ~]# vgdisplay
--- Volume group ---
VG Name vg_test
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 59.50 GiB
PE Size 4.00 MiB
Total PE 15232
Alloc PE / Size 7554 / 29.51 GiB
Free PE / Size 7678 / 29.99 GiB
VG UUID Y7Mwd9-b9M4-Lnc3-d6WT-3M83-q6Nw-uibVVO
[root@test ~]#
Evet çıktımızda da gördüğümüz üzere "Free PE / Size 7678 / 29.99 GiB" kısmına kullanacağımız partition eklenmiş.
Artık lvextend ile görünen bu alanı vg-test grubuna dahil yani map edeceğiz. Ancak öncesinde disklerin son halini görelim.
df -h
Çıktımız aşağıdaki gibi
[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root
26G 2.1G 23G 9% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 477M 41M 411M 10% /boot
[root@test ~]#
Evet, artık map işlemine geçebiliriz. Aşağıdaki komut ile bu alanın tümünü vg-test grubuna dahil ediyoruz.
lvextend -l +100%FREE /dev/mapper/vg_test-lv_root
Komut sonrası çıktımız aşağıdaki gibi olacaktır.
[root@test ~]# lvextend -l +100%FREE /dev/mapper/vg_test-lv_root
Size of logical volume vg_test/lv_root changed from 26.51 GiB (6786 extents) to 56.50 GiB (14464 extents).
Logical volume lv_root successfully resized
[root@test ~]#
Sonrasında grup bilgileri ve disk bilgilerimizi kontrol edelim.
[root@test ~]# vgdisplay
--- Volume group ---
VG Name vg_test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
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 59.50 GiB
PE Size 4.00 MiB
Total PE 15232
Alloc PE / Size 15232 / 59.50 GiB
Free PE / Size 0 / 0
VG UUID Y7Mwd9-b9M4-Lnc3-d6WT-3M83-q6Nw-uibVVO
[root@test ~]#
Gruba map ettiğimiz alan görünüyor ancak diskte görünmemesi gerekiyor. Kontrol ediyoruz.
[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root
26G 2.1G 23G 9% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 477M 41M 411M 10% /boot
[root@test ~]#
Evet diskimiz normal olarak görünüyor. Şimdi sıra aynı gruba dahil ( map ) ettiğimiz sda3 partition 'ı sda1 e dahil ediyoruz. Bunun için diski tekrar boyutlandırıyoruz. Bu sayede vg-root bölümü genişlemiş olacaktır. Bu işlem sırasında bir veri kaybı ya da silinmesi olmaz.
Aşağıdaki komutumuzu uygulayarak son adımı atalım.
resize2fs -p /dev/mapper/vg_test-lv_root
Çıktımız aşağıdaki gibi olacaktır.
[root@test ~]# resize2fs -p /dev/mapper/vg_test-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_test-lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 4
Performing an on-line resize of /dev/mapper/vg_test-lv_root to 14811136 (4k) blocks.
The filesystem on /dev/mapper/vg_test-lv_root is now 14811136 blocks long.
[root@test ~]#
Artık son olarak disklerimizi kontrol ediyoruz.
[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root
56G 2.1G 51G 4% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 477M 41M 411M 10% /boot
[root@test ~]#
Evet çıktı sonrası diskimizin genişlediğini görüyoruz.