UNIX SİSTEM YÖNETİMİ BÖLÜM 4: Linux İşletim Sisteminin Kurulumu ve Temel Ayarlar 2

⚠️ Bu içerik, Anadolu Üniversitesi AÖF Bilgisayar Programcılığı programındaki ilgili ders için kendi ders çalışma sürecimde hazırladığım, sınav odaklı kişisel ders notlarımdan oluşmaktadır. Sınava hazırlanan öğrencilere ek bir çalışma kaynağı sunmak amacıyla paylaşılmaktadır.

SUNUCU KİMLİĞİ

Linux işletim sistemlerinin kurulum aşamasında profil ayarları sayfasında sisteme erişecek kullanıcı adı, sunucu adı (hostname) ve parola bilgileri tanımlanmaktadır. Sunucu yönetimi ve güvenliği açısından, kurulum aşamasında oluşturulan kullanıcı hesaplarının yetki seviyeleri ve SSH üzerinden parola/anahtar ile erişim yapılandırmaları kritik öneme sahiptir.

Linux dağıtımlarında kurulum esnasında varsayılan olarak gelen yönetici yetkileri ve root kullanıcısı yapılandırması farklılık göstermektedir:

  • Ubuntu İşletim Sistemi: Kurulum aşamasında oluşturulan ilk kullanıcı varsayılan olarak süper kullanıcı (sudo) yetkilerine sahip kılınır. Ubuntu kurulumunda root kullanıcısı için ayrıca bir parola istenmez; ilk kullanıcı tüm yönetimsel işlemleri sudo komutu ön ekiyle gerçekleştirir.
  • Debian İşletim Sistemi: Kurulum esnasında hem sudo yetkili bir kullanıcı oluşturulur hem de Ubuntu’dan farklı olarak root kullanıcısı için özel bir parola belirlenmesi istenir.
  • RedHat Tabanlı Dağıtımlar (CentOS, RedHat Enterprise Linux, AlmaLinux, Rocky Linux): Kurulum esnasında doğrudan root kullanıcısı için bir parola girilmesi zorunludur. Kurulumda tanımlanan normal kullanıcının yönetici (sudo) yetkisine sahip olup olmayacağı ise kullanıcının onayına (onay kutusuna) bırakılmıştır.

Aşağıdaki karşılaştırma tablosu, dağıtımların kurulum sırasındaki yetkilendirme yaklaşımlarını özetlemektedir:

Linux Dağıtımıİlk Kullanıcı Varsayılan YetkisiKurulumda Root Parolası İstenir mi?Sudo Yetkisi Atama Şekli
UbuntuSüper Kullanıcı (sudo)Hayır (Pasif / Parolasız)Otomatik olarak verilir
DebianSüper Kullanıcı (sudo)Evet (Ayrıca belirlenir)Otomatik olarak verilir
RedHat / CentOS / Alma / RockyStandart KullanıcıEvet (Zorunlu alan)İsteğe/Onaya bağlı

Mac OS İşletim Sisteminde SSH Kimliği Oluşturma

Linux sunuculara parola girmeden güvenli şekilde erişim sağlamak için Asimetrik Kriptografi (Açık/Gizli Anahtar Çifti) mimarisi kullanılır. macOS ve Linux işletim sistemlerinde varsayılan olarak gelen Terminal uygulaması üzerinden SSH anahtarı üretilebilir.

SSH anahtar çifti üretmek için komut satırında ssh-keygen aracı çalıştırılır:

ssh-keygen -t ed25519 -C "kullanici@domain.com"

Komut Parametreleri ve Anlamları:

  • -t ed25519: -t parametresi ile oluşturulacak SSH anahtarının şifreleme algoritması türü belirtilir. ED25519 algoritması modern, yüksek güvenlikli ve hızlı bir asimetrik anahtar türüdür. SSH-keygen v1 için olası değer rsa1 iken; SSH-keygen v2 için geçerli anahtar türleri: rsa, dsa, ecdsa, ecdsa-sk, ed25519, ed25519-sk olarak sıralanır.
  • -C "yorum": Anahtar dosyasının sonuna açıklayıcı bir yorum (genellikle kullanıcının e-posta adresi) eklemek için kullanılır.

Anahtar Oluşturma Adımları ve Dosya Yapısı:

  1. Komut çalıştırıldığında ilk olarak anahtarın kaydedileceği dosya yolu sorulur: Enter file in which to save the key (/Users/kullanici/.ssh/id_ed25519):. Değişiklik yapılmadan ENTER tuşuna basılırsa varsayılan konuma kaydedilir.
  2. Ardından SSH anahtarı için ek bir güvenlik parolası istenip istenmediği sorulur: Enter passphrase (empty for no passphrase):.
  • Passphrase Kullanımı: Eğer anahtara bir parola atanırsa, sunucuya SSH bağlantısı yapılırken Linux kullanıcı parolası sorulmaz; ancak SSH anahtarının kilidini açmak için belirlenen bu passphrase girilmelidir. Parola istenmiyorsa boş bırakılarak ENTER tuşuna basılır.
  1. İşlem tamamlandığında kullanıcı ev dizininde iki adet dosya üretilir:
  • Gizli Anahtar (Private Key): ~/.ssh/id_ed25519 (Asla başkalarıyla paylaşılmamalıdır!)
  • Açık Anahtar (Public Key): ~/.ssh/id_ed25519.pub (Sunuculara veya GitHub’a eklenecek açık anahtar)

Açık Anahtarı Panoya Kopyalama (pbcopy):

macOS sistemlerde .pub dosyasının içeriğini bir metin editörüyle açmadan doğrudan panoya kopyalamak için pbcopy komutu kullanılır:

# Tilda (~) simgesi ile ev dizini kullanımı:
pbcopy < ~/.ssh/id_ed25519.pub

# Tam dosya yolu (Absolute Path) ile kullanım:
pbcopy < /Users/kullanici_adi/.ssh/id_ed25519.pub

Not: Linux ve macOS sistemlerde tilda (~) işareti, oturum açan kullanıcının ev dizinini (/home/kullanici veya /Users/kullanici) temsil eden kısayoldur. Kopyalanan anahtar metni, hedef sunucudaki ~/.ssh/authorized_keys dosyasına eklenir.

Windows İşletim Sisteminde SSH Kimliği Oluşturma

Windows işletim sistemlerinde SSH erişimi; Windows 10 ile birlikte opsiyonel özellik olarak sunulan OpenSSH İstemcisi (OpenSSH Client) üzerinden veya PuTTY, mRemoteNG, MobaXterm gibi 3. parti yazılımlar aracılığıyla gerçekleştirilir.

Win10 OpenSSH İstemcisinin Kontrolü ve Yüklenmesi:

  1. Kontrol: Windows 10 üzerinde sırasıyla Ayarlar > Uygulamalar ve Özellikler > İsteğe Bağlı Özellikler adımları takip edilir. Yüklü özellikler altında OpenSSH İstemcisi aranır.
  2. Yükleme: Eğer listede yoksa, Özellik Ekle butonuna tıklanıp arama kutusuna openssh yazılarak OpenSSH İstemcisi seçilir ve Yükle butonuna basılır.

Win10 Komut İstemi (CMD) Üzerinden Anahtar Üretimi:

  1. OpenSSH yüklendikten sonra Komut İstemi (cmd) uygulaması “Yönetici Olarak Çalıştır” seçeneği ile başlatılır.
  2. Komut satırına anahtar üretme komutu girilir:
ssh-keygen -t ed25519 -C "kullanici@domain.com"
  1. Anahtar dosyaları Windows üzerinde C:\Users\kullanici_adi\.ssh\ dizini altında oluşturulur:
  • C:\Users\kullanici_adi\.ssh\id_ed25519 (Gizli anahtar)
  • C:\Users\kullanici_adi\.ssh\id_ed25519.pub (Açık anahtar)
  1. Üretilen id_ed25519.pub dosyası Notepad++, Sublime Text veya Not Defteri ile açılarak kopyalanır ve hedef sunucunun ~/.ssh/authorized_keys dosyasına yapıştırılır.

SSH Kimliğini Github’a Kaydetme

Oluşturulan SSH açık anahtarı (id_ed25519.pub), GitHub veya Launchpad gibi bulut servis sağlayıcılarındaki profil hesabına eklenerek, yeni kurulacak Linux sunucularına otomatik aktarım amacıyla saklanabilir.

GitHub Anahtar Ekleme Adımları:

  1. GitHub’da oturum açılır.
  2. Sağ üst köşedeki profil simgesine tıklanıp Settings (Ayarlar) seçeneğine girilir.
  3. Sol gezinme menüsünden SSH and GPG keys başlığı seçilir.
  4. Açılan sayfada New SSH key (Yeni SSH anahtarı) butonuna tıklanır.
  5. Title (Başlık): Anahtarın üretildiği bilgisayarı tanımlayan bir isim girilir (Örn: Personal MacBook Pro veya Windows-Workstation gibi).
  6. Key (Anahtar): pbcopy veya metin editörü aracılığıyla kopyalanmış olan id_ed25519.pub içeriği (metin ssh-ed25519 ... şeklinde başlar) bu alana yapıştırılır.
  7. Add SSH key butonuna tıklanarak işlem tamamlanır.

SSH Kimliğini İçeri Aktarma

Linux sunucu kurulumu esnasında SSH Setup (SSH Yapılandırması) adımı geldiğinde, GitHub’a kaydedilmiş olan SSH anahtarı doğrudan sunucuya çekilebilir:

  1. Install OpenSSH server: Linux sunucuya uzak erişim sağlayabilmek için öncelikle kurulum sırasında [X] Install OpenSSH Server seçeneği işaretlenmelidir.
  2. Import SSH identity: Açılır menüden [ from Github ] veya [ from Launchpad ] seçeneği tercih edilir.
  3. Github Username: GitHub kullanıcı adı girilir.
  4. Allow password authentication over SSH (SSH Üzerinden Parola Doğrulamasına İzin Ver): SSH üzerinden anahtarın yanı sıra parola ile oturum açılmasına da izin verilmek isteniyorsa bu seçenek işaretlenir.
  5. Done: İşlem tamamlandığında Done butonuna basılır. Sistem GitHub servislerine bağlanarak ilgili kullanıcı adına tanımlı SSH açık anahtarını çeker ve ekranda anahtarın parmak izini (fingerprint) gösterir.
  6. Onay Sayfası: Parmak izi doğrulama uyarısına [ Yes ] yanıtı verilerek işlem onaylanır.

Hazır Paketler (Snaps)

SSH ayarlarının ardından kurulum sihirbazında sunucular için popüler olan hazır yazılım paketleri (Snaps) listelenmektedir:

  • Paket Seçim Mekanizması: Listelenen yazılımlar arasında ok tuşları ile gezilinir. Seçilmek istenen paketin üzerine gelindiğinde SPACE (Boşluk) tuşuna basılarak işaretleme yapılır. Paket detaylarını görmek için ENTER tuşuna basılır.
  • Öne Çıkan Snap Paketleri: microk8s (Kubernetes), nextcloud (Bulut depolama), wekan (Kanban panosu), docker (Konteyner mimarisi), canonical-livepatch, rocketchat-server, mosquitto (MQTT broker), etcd, powershell, aws-cli, google-cloud-sdk, postgresql10, prometheus, juju vb.
  • Seçimler tamamlandıktan sonra ya da ihtiyaç yoksa hiçbiri seçilmeden Done seçeneği üzerinde enter’a basılarak bir sonraki aşamaya geçilir.

Kurulumun Tamamlanması

İsteğe bağlı paket seçiminin ardından işletim sistemi gerekli dosyaları diske kopyalar ve son aşamada yeniden başlatma ekranı belirir:

  1. Kurulum tamamlandığında alt kısımda yer alan Reboot Now (Şimdi Yeniden Başlat) seçeneği üzerinde enter’a basılır.
  2. Medya Çıkarma Uyarısı: İşletim sisteminin tekrar kurulum medyasıyla (.iso dosyası) açılmaması için ekranda şu uyarı görüntülenir: Please remove the installation medium, then press ENTER:
  3. VirtualBox veya sanallaştırma yazılımının CD/DVD ortamından ISO kalıbı çıkarılır ve klavyeden ENTER tuşuna basılarak sistemin sabit diskten ön yükleme (boot) yapması sağlanır.

Kurulumu Gerçekleştirilmiş Sisteme SSH ile Bağlanma

Kurulum tamamlanıp sanal makine yeniden başlatıldığında sanal makine yazılımında açılacak olan konsol ekranında ilk oturum açma ve SSH bağlantısı adımları gerçekleştirilir:

Sanal Ağ Adaptörü Yapısı ve IP Adresi Tespiti:

Sanal makine konsolunda oturum açıldıktan sonra ağ kartlarının aldığı IP adreslerini görüntülemek için ip a (veya ip addr) komutu çalıştırılır.

Daha önceki ünitelerde tarif edilen kurulum adımlarında sanal makineye 2 farklı ağ adaptörü tanımlanmıştı:

  • 1. Ağ Kartı (enp0s3): NAT (Network Address Translation) veya Köprü Bağdaştırıcı (Bridged) olarak ayarlanmıştır. Sanal makinenin dış dünyaya ve internete çıkmasını sağlar. NAT modunda varsayılan olarak 10.0.2.15 IP adresini alır. NAT arkasındaki bu IP adresine dışarıdaki ana makineden (host) doğrudan SSH bağlantısı yapılamaz.
  • 2. Ağ Kartı (enp0s8): Yalnızca-Ana Makine Ağı (Host-Only Adapter) olarak yapılandırılmıştır. Sanal makine ile kişisel bilgisayarınız arasında özel bir yerel ağ kurar (Örn: 192.168.56.116). SSH bağlantıları bu ağ kartı IP’si üzerinden gerçekleştirilir.

Aşağıdaki tablo ağ yapılandırma türlerinin davranışlarını özetlemektedir:

Ağ Adaptörü / ModuÖrnek Arayüz AdıÖrnek IP Bloğuİnternet ErişimiAna Makineden Doğrudan SSH Erişimi
NAT Modu (1. Kart)enp0s310.0.2.xVarYok (Port yönlendirme gerektirir)
Köprü Modu (Bridged)enp0s3Ev/Kurum Ağı BloğuVarVar (Yerel ağdaki ayrı IP)
Host-Only Modu (2. Kart)enp0s8192.168.56.xYokVar (Sadece host-sanal arası)

Terminal Üzerinden İlk SSH Bağlantısı:

Kişisel bilgisayarınızdaki Terminal veya Komut İstemi açılarak enp0s8 kartının aldığı IP adresi üzerinden SSH bağlantı komutu girilir:

ssh ubuntu@192.168.56.116

Sunucu Parmak İzi Onayı (Host Key Fingerprint):

Sunucuya ilk kez bağlanıldığında istemci ekranında güvenlik uyarısı belirir. Klavyeden yes yazılıp ENTER tuşuna basıldığında, sunucunun ED25519 parmak izi istemci bilgisayardaki ~/.ssh/known_hosts dosyasına güvenilen sunucu olarak kaydedilir. Kurulum aşamasında GitHub SSH anahtarı içeri aktarıldığı için sistem kullanıcı parolası sormadan doğrudan kabuk ekranını açar.

🎯 Sınavlık Hap Bilgiler:

  • Debian ve RedHat tabanlı dağıtımlarda kurulum sırasında root parolası zorunlu olarak istenirken, Ubuntu’da ilk oluşturulan kullanıcıya otomatik olarak sudo yetkisi verilir ve root parolası istenmez.
  • SSH anahtarı üretme komutu ssh-keygen -t ed25519 -C "yorum" şeklindedir. -t algoritma türünü (ed25519, rsa), -C ise yorum/e-posta bilgisini ifade eder.
  • Kullanıcı bilgisayarında id_ed25519 gizli (private) anahtar, id_ed25519.pub ise açık (public) anahtardır. Sunucuda oturum açabilmek için açık anahtar hedef sunucudaki ~/.ssh/authorized_keys dosyasına eklenmelidir.
  • macOS sistemlerde SSH açık anahtarını dosyayı açmadan panoya kopyalayan komut pbcopy < ~/.ssh/id_ed25519.pub komutudur. Tilda (~) simgesi kullanıcının ev dizinini temsil eder.
  • Kurulum sırasında GitHub üzerindeki SSH anahtarları Import SSH identity -> from Github seçeneği ile doğrudan işletim sistemine çekilebilir.
  • Sanal makinede 1. Ağ Kartı (NAT / enp0s3) internete çıkış sağlarken, 2. Ağ Kartı (Host-Only / enp0s8) ana makineden sanal makineye SSH erişimi yapılmasına olanak tanır.
  • Kurulum tamamlandıktan sonra medya çıkarma uyarısı çıktığında ISO kalıbı çıkarılıp ENTER tuşuna basılmalıdır.
  • İlk SSH bağlantısında sunucu parmak izi onayına yes yazıldığında bu bilgi istemcinin ~/.ssh/known_hosts dosyasına kaydedilir.

SANAL MAKİNEDE DİSK İŞLEMLERİ – DİSK BOYUTUNU ARTIRMA

Linux işletim sistemlerinde sunucu performansının düşmemesi ve çalışan servislerin kesintiye uğramaması için kök dizin (/) doluluk oranlarının sürekli izlenmesi gerekir. Sanallaştırma ortamlarında yetersiz gelen disk alanını artırmak için iki temel yöntem bulunur:

  • Mevcut diski genişletmek veya,
  • Sisteme ikinci bir sanal disk eklemek.

Her iki yöntemde de diskin sanallaştırma yazılımı seviyesinde büyütülmesi tek başına yeterli değildir; eklenen alanın Mantıksal Hacim Yöneticisi (LVM – Logical Volume Manager) ve dosya sistemi seviyesinde genişletilmesi için bir dizi komut sırayla çalıştırılmalıdır.

Mevcut Disk Boyutunu Artırarak Diski Büyütme

Bu senaryoda, sanal makinenin mevcut 40 GB boyutundaki Ubuntu 22.04.vdi diski, sanallaştırma arayüzünden 60 GB’a çıkarılacak ve eklenen 20 GB’lık ham alan LVM üzerinden kök dizine (/) dahil edilecektir.

Adım 1: Sanal Makinenin Güvenli Kapatılması

Disk boyutu değiştirilmeden önce sanal makine komut satırından kapatılmalıdır:

sudo shutdown -h now
  • -h (halt): Sistem kapatma işleminin durdurma şeklinde olacağını belirtir. (Şayet -r parametresi kullanılsaydı kapatma işlemi yeniden başlatma (reboot) şeklinde gerçekleşirdi).
  • now: Kapatmanın hemen yapılacağını belirtir. (14:44 şeklinde ileri bir saat de girilebilir).

Adım 2: VirtualBox Arayüzünden Disk Boyutunu Artırma

  1. VirtualBox menüsünden Dosya > Sanal Ortam Yöneticisi adımları izlenir.
  2. Listeden ilgili disk (Ubuntu 22.04.vdi) seçilir.
  3. Alt kısımdaki Boyut ayar çubuğu 60,00 GB seviyesine getirilir ve Uygula butonuna basılarak pencere kapatılır.
  4. Sanal makine Başlat butonu ile yeniden çalıştırılır.

Adım 3: SSH Bağlantısı ve Root Yetkisine Geçiş

Sanal makine açıldıktan sonra SSH ile bağlantı sağlanır. Disk yapılandırma işlemleri üst düzey yetki gerektirdiğinden sudo -i komutu ile doğrudan root kullanıcısına geçilir:

ubuntu@ubuntu-local:~$ sudo -i
[sudo] password for ubuntu:
root@ubuntu-local:~#

Adım 4: Disk ve Dosya Sistemi Durumunun İncelenmesi (lsblk ve df -h)

Mevcut disk bloklarını listelemek için lsblk komutu çalıştırılır:

root@ubuntu-local:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 38G 0 part
  └─ubuntu--vg-ubuntu--lv 253:0 0 38G 0 lvm /
  • lsblk çıktısında sda fiziki diskinin 60 GB olduğu görülür. Ancak kök dizine (/) bağlı olan ubuntu--vg-ubuntu--lv mantıksal hacmi halen 38 GB alan kullanmaktadır.
  • Aktif dosya sistemi kullanımını görmek için df -h komutu çalıştırılır:
root@ubuntu-local:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 38G 7.6G 28G 22% /
/dev/sda2 2.0G 247M 1.6G 14% /boot

df -h çıktısı, sanallaştırma panelinde eklenen 20 GB’lık alanın henüz işletim sisteminin kullanımına sunulmadığını teyit eder.

Adım 5: Boş Alanın Bölümlendirilmesi (cfdisk)

Eklenen 20 GB ham alanı bölümlendirmek için cfdisk aracı çalıştırılır:

cfdisk /dev/sda
  1. Terminalde açılan cfdisk arayüzünde ok tuşlarıyla Free space (20G) satırına inilir.
  2. Alt menüden [ New ] seçilip ENTER’a basılır.
  3. Partition size: 20G ifadesi belirdiğinde ENTER ile onaylanır.
  4. Yeni oluşturulan bölüm /dev/sda4 adını alır (Type: Linux filesystem).
  5. Tabloyu diske yazmak için ok tuşlarıyla [ Write ] seçeneğine gelinir, ENTER’a basılır.
  6. Beliren “Are you sure you want to write the partition table to disk?” uyarısına yes yazılıp ENTER basılır.
  7. [ Quit ] seçilerek cfdisk ekranından çıkılır.

Adım 6: Yeni Bölümün Yeniden Başlatmadan Çekirdeğe Tanıtılması (partprobe)

Oluşturulan /dev/sda4 bölümünün işletim sistemi yeniden başlatılmadan çekirdek (kernel) tarafından algılanabilmesi için partprobe komutu çalıştırılır:

root@ubuntu-local:~# partprobe /dev/sda

Önemli Not: Eğer partprobe /dev/sda komutu çalıştırılmazsa, sistemin yeni bölümü görebilmesi için reboot veya shutdown -r now komutlarıyla yeniden başlatılması zorunlu hale gelir.

lsblk tekrar çalıştırıldığında /dev/sda4 bölümünün 20G boyutuyla eklendiği görülür:

root@ubuntu-local:~# lsblk
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
├─sda3 8:3 0 38G 0 part
│ └─ubuntu--vg-ubuntu--lv 253:0 0 38G 0 lvm /
└─sda4 8:4 0 20G 0 part

Adım 7: LVM Fiziksel Hacim (Physical Volume) Oluşturma (pvcreate)

Yeni disk bölümünün LVM tarafından kullanılabilmesi için öncelikle fiziksel hacme dönüştürülmesi gerekir:

root@ubuntu-local:~# pvcreate /dev/sda4
  Physical volume "/dev/sda4" successfully created.

Adım 8: Bölüm Grubu (Volume Group) Adının Tespiti ve Genişletilmesi (vgdisplay & vgextend)

Diskin ekleneceği Bölüm Grubu (Volume Group) adını öğrenmek için vgdisplay çalıştırılır:

root@ubuntu-local:~# vgdisplay
  --- Volume group ---
  VG Name ubuntu-vg
  VG Size < 38.00 GiB

Bölüm grubu adının ubuntu-vg olduğu tespit edildikten sonra, vgextend komutu ile yeni fiziksel hacim (/dev/sda4) bu gruba eklenir:

root@ubuntu-local:~# vgextend ubuntu-vg /dev/sda4
  Volume group "ubuntu-vg" successfully extended

Adım 9: Mantıksal Hacim (Logical Volume) Disk Yolunun Tespiti ve Büyütülmesi (lvdisplay & lvextend)

Genişletilecek mantıksal hacmin tam disk yolunu öğrenmek için lvdisplay komutu çalıştırılır:

root@ubuntu-local:~# lvdisplay
  --- Logical volume ---
  LV Path /dev/ubuntu-vg/ubuntu-lv
  LV Name ubuntu-lv
  VG Name ubuntu-vg

LV Path değerinin /dev/ubuntu-vg/ubuntu-lv olduğu belirlendikten sonra lvextend komutu ile gruptaki tüm boş alan (+100%FREE) mantıksal hacme dahil edilir:

root@ubuntu-local:~# lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <38.00 GiB (9727 extents) to 57.99 GiB (14846 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.

Adım 10: Dosya Sisteminin Canlı Olarak Genişletilmesi (resize2fs)

Mantıksal hacim büyütülse de dosya sistemi (ext4) henüz yeni alanı kullanmaz. Canlı sistemde dosya sistemini genişletmek için resize2fs komutu çalıştırılır:

root@ubuntu-local:~# resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 15202304 (4k) blocks long.

Adım 11: Son Durumun Doğrulanması (df -h)

df -h komutu tekrar çalıştırılarak kök dizinin (/) başarıyla 57 GB seviyesine çıkarıldığı teyit edilir:

root@ubuntu-local:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 57G 7.6G 47G 14% /

Sanal Makineye Disk Ekleyerek Diski Büyütme

İkinci senaryoda, mevcut diske dokunulmadan VirtualBox arayüzünden sanal makineye 20 GB boyutunda ikinci bir sanal disk (Ubuntu 22.04_1.vdi) eklenecek ve bu yeni disk LVM mimarisine dahil edilerek kök dizin 57 GB’tan 77 GB’a yükseltilecektir.

Adım 1: VirtualBox Üzerinden İkinci Sanal Diskin Oluşturulması ve Bağlanması

  1. Sanal makine kapalı konumdayken VirtualBox arayüzünde sanal makine seçilip Ayarlar > Depolama bölümüne girilir.
  2. Denetleyici: SATA başlığının sağındaki Disk Ekle (Sabit Disk Ekle) simgesine tıklanır.
  3. Açılan pencerede Oluştur butonuna tıklanarak Sanal Disk Sihirbazı başlatılır.
  4. Sabit disk dosyası türü: VDI (VirtualBox Disk Kalıbı) seçilir.
  5. Fiziksel sabit diskte depolama: Değişken olarak ayrılan seçeneği tercih edilir.
  6. Dosya yeri ve boyutu: Disk adı otomatik olarak Ubuntu 22.04_1.vdi şeklinde belirlenir, boyutu 20,00 GB olarak ayarlanır ve Oluştur butonuna basılır.
  7. Disk listesinden yeni oluşturulan Ubuntu 22.04_1.vdi seçilip Seçin ve ardından Tamam butonlarına basılarak işlem tamamlanır.

Adım 2: Makinenin Başlatılması ve İkinci Diskin Tespiti (lsblk)

Sanal makine başlatılır, SSH ile bağlanılır ve sudo -i ile root olunur. lsblk çalıştırıldığında ikinci diskin sdb (20G) ismiyle sisteme eklendiği görülür:

root@ubuntu-local:~# lsblk
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
├─sda3 8:3 0 38G 0 part
│ └─ubuntu--vg-ubuntu--lv 253:0 0 58G 0 lvm /
└─sda4 8:4 0 20G 0 part
  └─ubuntu--vg-ubuntu--lv 253:0 0 58G 0 lvm /
sdb 8:16 0 20G 0 disk

Adım 3: İkinci Diskin Bölümlendirilmesi (cfdisk /dev/sdb)

Yeni eklenen sdb diskini bölümlendirmek için cfdisk çalıştırılır:

cfdisk /dev/sdb
  1. Disk tamamen yeni ve biçimlendirilmemiş olduğundan ekranda bölüm etiket türü seçimi belirir: Select label type. Buradan gpt (GUID Partition Table) seçeneği tercih edilir.
  2. Free space (20G) satırı üzerindeyken [ New ] seçilir, Partition Size: 20G onaylanır.
  3. Oluşan yeni bölüm /dev/sdb1 olur.
  4. [ Write ] seçilir, uyarılacak “Are you sure you want to write the partition table to disk?” ifadesine yes yazılıp ENTER basılır.
  5. [ Quit ] ile cfdisk uygulamasından çıkılır.

Adım 4: Bölümün Çekirdeğe Tanıtılması (partprobe)

sdb diskindeki yeni bölümün işletim sistemi tarafından algılanması sağlanır:

root@ubuntu-local:~# partprobe /dev/sdb

lsblk çalıştırıldığında sdb1 bölümünün blok listesine eklendiği doğrulanır:

sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part

Adım 5: İkinci Diskte LVM Fiziksel Hacmi Oluşturma (pvcreate)

Oluşturulan /dev/sdb1 bölümü LVM fiziksel hacmi haline getirilir:

root@ubuntu-local:~# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

Adım 6: Bölüm Grubunun İkinci Disk ile Genişletilmesi (vgextend)

Mevcut ubuntu-vg bölüm grubu yeni fiziksel hacim (/dev/sdb1) ile genişletilir:

root@ubuntu-local:~# vgextend ubuntu-vg /dev/sdb1
  Volume group "ubuntu-vg" successfully extended

Adım 7: Mantıksal Hacmin Büyütülmesi (lvextend)

Mevcut mantıksal hacim (/dev/ubuntu-vg/ubuntu-lv), ikinci diskten gelen boş alanın tamamını kullanacak şekilde büyütülür:

root@ubuntu-local:~# lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 57.99 GiB (14846 extents) to <77.99 GiB
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.

Adım 8: Dosya Sisteminin Canlı Olarak Büyütülmesi (resize2fs)

Dosya sistemi yeni mantıksal hacim boyutuna göre genişletilir:

root@ubuntu-local:~# resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 20444160 (4k) blocks long.

Adım 9: Nihai Disk Durumunun Doğrulanması (df -h)

df -h komutu çalıştırılarak 57.99 GB olan kök dizin alanının 77 GB seviyesine ulaştığı teyit edilir:

root@ubuntu-local:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 77G 7.6G 66G 11% /
/dev/sda2 2.0G 247M 1.6G 14% /boot

Görüleceği üzere disk eklenmeden önce 57.99 GB olan kök dizinin boyutu disk ekleme sürecinden sonra 77 GB olarak artırılmıştır.


LVM Disk Genişletme İşlem Sırası Karşılaştırmalı Özet

Aşağıdaki tablo, sanal makine üzerinde disk boyutunu artırırken uygulanan iki yöntemin komut silsilesini yan yana özetlemektedir:

Adım Noİşlem Adımı1. Yöntem (Mevcut Diski Genişletme)2. Yöntem (İkinci Disk Ekleme)
1Sanallaştırma PaneliMevcut .vdi disk boyutu artırılır (40G -> 60G)Yeni 20G .vdi disk eklenir (Ubuntu 22.04_1.vdi)
2Root Yetkisine Geçişsudo -isudo -i
3Disk Bölümlendirmecfdisk /dev/sda (Oluşan: /dev/sda4)cfdisk /dev/sdb (GPT etiket, Oluşan: /dev/sdb1)
4Çekirdeğe Tanıtmapartprobe /dev/sdapartprobe /dev/sdb
5Fiziksel Hacim (PV)pvcreate /dev/sda4pvcreate /dev/sdb1
6Grup Genişletme (VG)vgextend ubuntu-vg /dev/sda4vgextend ubuntu-vg /dev/sdb1
7Hacim Büyütme (LV)lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lvlvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
8Dosya Sistemi Büyütmeresize2fs /dev/ubuntu-vg/ubuntu-lvresize2fs /dev/ubuntu-vg/ubuntu-lv
9Doğrulamadf -h (Kök dizin: 57 GB)df -h (Kök dizin: 77 GB)

Özetin Hazırlandığı Ders Kitabına Dair Notlar

  1. Dizgi ve Matbaa Tırnak İşi Hatası: Kitap metninde SSH anahtarı üretme komutu verilirken -C parametresindeki çift tırnak işaretleri düz tırnak ("...") yerine matbaa tırnak işareti (“...”) olarak basılmıştır. Bu komut terminale doğrudan kopyalandığında Bash/Zsh kabuğunda sözdizimi (syntax) hatasına yol açacaktır. Doğrusu düz tırnak kullanmaktır.
  2. Dosya Yollarında Eğik Çizgi Karışıklığı: Windows bölümünde SSH dosya yolları gösterilirken ters eğik çizgi (\) ile düz eğik çizgi (/) aynı satırda karışık olarak basılmıştır (C:\Users\user/.ssh/id_ed25519). Windows işletim sisteminde dizin ayracı ters eğik çizgidir (C:\Users\user\.ssh\id_ed25519).
  3. Disk Bölüm Numaralandırma Mantığı: Metinde mevcut disk büyütüldüğünde yeni bölümün neden sda4 olduğu açıkça vurgulanmamıştır. Disk üzerinde sda1 (BIOS boot), sda2 (/boot) ve sda3 (mevcut LVM) bölümleri önceden tanımlı olduğu için 4. bölüm zorunlu olarak sda4 adını almaktadır. İkinci disk eklendiğinde ise disk tamamen boş olduğu için oluşturulan ilk bölüm sdb1 adını alır.
  4. partprobe Komutunun Kritik Rolü: Kitapta partprobe çalıştırılmazsa sistemin yeniden başlatılması gerektiği belirtilmiştir; ancak sınav sorularında öğrencileri yanıltmak amacıyla partprobe yerine lsblk veya df şıkları konulabilmektedir. Disk tablosunu kernel’e re-read ettiren komutun partprobe olduğu sınav açısından unutulmamalıdır.

🎯 Sınavlık Hap Bilgiler:

  • Linux sistemlerde makineyi güvenli kapatma komutu sudo shutdown -h now komutudur. -h (halt) durdurma anlamına gelir; -r ise yeniden başlatır (reboot).
  • Disk blok durumunu ve bölümlerini görüntüleyen komut lsblk, dosya sistemi kullanım alanını insan tarafından okunabilir formatta gösteren komut df -h komutudur.
  • Disk bölümlendirmek için kullanılan arayüz komutları cfdisk /dev/sda veya cfdisk /dev/sdb şeklindedir. İkinci disk eklendiğinde etiket türü olarak gpt seçilir.
  • Yeni disk bölümünün sistem yeniden başlatılmadan çekirdek tarafından algılanmasını sağlayan komut partprobe /dev/sda (veya partprobe /dev/sdb) komutudur.
  • LVM Adım Sırası:
  1. pvcreate: Bölümü fiziksel hacme (Physical Volume) dönüştürür (pvcreate /dev/sda4).
  2. vgdisplay: Bölüm grubu (Volume Group) adını tespit eder (ubuntu-vg).
  3. vgextend: Bölüm grubunu genişletir (vgextend ubuntu-vg /dev/sda4).
  4. lvdisplay: Mantıksal hacim (Logical Volume) disk yolunu tespit eder (/dev/ubuntu-vg/ubuntu-lv).
  5. lvextend: Mantıksal hacmi tüm boş alanı kaplayacak şekilde genişletir (lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv).
  6. resize2fs: Dosya sistemini canlı olarak genişletir (resize2fs /dev/ubuntu-vg/ubuntu-lv).

🎯 4. Ünite: Sınavlarda Sorulma Olasılığı Yüksek Hap Bilgiler (Genel Tekrar)

  • ssh-keygen: İstemci bilgisayarda SSH anahtarı (public/private key pair) oluşturmak için kullanılan temel komuttur.
  • ed25519: ssh-keygen -t ed25519 komutunda -t parametresi ile belirtilen yüksek güvenlikli SSH anahtar türüdür.
  • id_ed25519.pub: Üretilen açık (public) SSH anahtarının istemci bilgisayarda kaydedildiği varsayılan dosyadır.
  • pbcopy: macOS ve bazı Linux sistemlerinde SSH anahtar dosyasını açmadan içeriğini doğrudan panoya kopyalamak için kullanılan komuttur (pbcopy < ~/.ssh/id_ed25519.pub).
  • authorized_keys: Sunucuda kullanıcının ev dizini altındaki .ssh/ klasöründe yer alan ve şifresiz SSH girişine izin verilen açık anahtarların eklendiği dosyadır.
  • OpenSSH İstemcisi: Windows 10 işletim sisteminde komut isteminden ssh-keygen ile anahtar üretebilmek için yüklü olması gereken isteğe bağlı özelliktir.
  • Github: Kişisel bilgisayarda üretilen SSH anahtarının kaydedilerek Linux kurulum aşamasında parola girmeden sunucuya aktarılmasını sağlayan bulut platformudur.
  • ssh kullanici@sanal_makine_ip_adresi: İstemciden uzak sunucuya belirli bir kullanıcı adı ve IP adresi ile SSH bağlantısı başlatma komut kalıbıdır.
  • .vdi: VirtualBox sanal makine yazılımında kullanılan varsayılan sanal sabit disk dosyası uzantısıdır.
  • ip a: Kurulum sonrasında sanal makinedeki ağ kartlarının aldığı IP adreslerini konsol ekranında görüntüleyen komuttur.
  • Köprü Modu (Bridged): Sanal makinenin, kurulduğu ana makine ile aynı ağ bloğundan fakat farklı ve bağımsız bir IP adresi almasını sağlayan ağ modudur.
  • Yalnızca Ana Makine Ağı (Host-Only): Sanal makinelerin dış internete kapalı olarak sadece ana makine ve kendi aralarında iletişim kurmasını sağlayan ağ modudur.
  • NAT: Sanal makinenin dış internet ortamına ana makinenin IP adresi üzerinden erişmesini sağlayan varsayılan ağ modudur.
  • cfdisk /dev/sda: Disk boyutlandırma işleminde diski bölümlendirmek (yeni sda4 veya sdb1 bölümü açmak) için çalıştırılan menülü arayüz komutudur.
  • partprobe /dev/sda: Disk bölümlendirme sonrasında işletim sistemini yeniden başlatmaya (reboot) gerek kalmadan yeni bölüm tablosunu çekirdeğe bildiren komuttur.
  • pvcreate /dev/sda4: Yeni oluşturulan disk bölümünü LVM mimarisinde kullanılabilir bir Fiziksel Hacim (Physical Volume) haline getiren komuttur.
  • vgdisplay: Diskin ekleneceği Bölüm Grubu Adını (VG Name, örn: ubuntu-vg) öğrenmek için kullanılan komuttur.
  • vgextend ubuntu-vg /dev/sda4: Yeni oluşturulan fiziksel hacmi mevcut bölüm grubuna ekleyerek grubu genişleten komuttur.
  • lvdisplay: Mantıksal bölüm disk yolunu (LV Path, örn: /dev/ubuntu-vg/ubuntu-lv) öğrenmek için çalıştırılan komuttur.
  • lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv: Bölüm grubundaki tüm boş alanı kapsayacak şekilde mantıksal bölümü %100 oranında genişleten komuttur.
  • resize2fs /dev/ubuntu-vg/ubuntu-lv: Mantıksal bölüme eklenen yeni alanı dosya sistemine işleyerek kök (/) dizin boyutunu canlı olarak artıran komuttur.

📚 Kaynakça ve Kaynak Güncelliği: Bu ders notu, Anadolu Üniversitesi Açıköğretim Fakültesi Yayınları’na ait UNIX Sistem Yönetimi ders kitabının Mayıs 2022 Baskısı, (AÖF Yayın No: 3072, E-ISBN: 978-975-06-4367-5) temel alınarak kendi ifadelerimle hazırlanmıştır. Konu bütünlüğünü korumak amacıyla temel kavram ve tanımların anlamı ana kaynağa bağlı kalınarak aktarılmış olup, içerik sınav odaklı kişisel ders notları biçiminde düzenlenmiştir. Bu notlar belirtilen baskıyı esas almakta olup kitabın daha sonraki baskılarını, Anadolum e-Kampüs üzerinden yapılan güncellemeleri veya müfredat değişikliklerini yansıtmayabilir. Sınava hazırlanırken Anadolu Üniversitesi tarafından sunulan güncel ders materyalini kontrol etmeniz önerilir. Kitabın basılı sürümüne Anadolu Üniversitesi Kitap Satış Sistemi, güncel dijital ders materyallerine ise Anadolum e-Kampüs üzerinden ulaşabilirsiniz. Ayrıca bu içerik, Anadolu Üniversitesi tarafından hazırlanmış veya onaylanmış resmî bir ders materyali değildir; kişisel çalışma notları niteliğindedir.

Paylaşmak güzeldir...