Raspberry Pi’ın disk alanı tükendiğinde çalışamaz ve durur. Bu başlıkta, Raspberry Pi bilgisayarının dosya sisteminin kullanım durumunun kolayca nasıl analiz edileceği ve alınabilecek tedbirler hakkında bilgiler yer almaktadır. Öncelikle diskin yani SD kartın fiziksel kapasitesine bakıp bu kapasitenin ne kadarının disk bölümleri için kullanıldığına bakılmalıdır. Örneğin 32GB bir bölüm üzerinde 4GB’lık bir Linux bölümü oluşturulmuş olabilir. Bu durumda hiçbir zaman kullanılamayacak, boşa gitmiş bir 28GB’lık alandan bahsedebiliriz. lsblk komutu ile SD kartın fiziksel kapasitesinin ne kadar olduğuna bakalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@raspberry:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 7.5G 0 disk ├─mmcblk0p1 179:1 0 63M 0 part ├─mmcblk0p2 179:2 0 1K 0 part ├─mmcblk0p5 179:5 0 32M 0 part /media/pi/SETTINGS ├─mmcblk0p6 179:6 0 69M 0 part /boot └─mmcblk0p7 179:7 0 7.3G 0 part / |
Ekran çıktısından görülebileceği gibi SD kartın fiziksel boyutu 7.5GB (mmcblk0) sahip olduğu bölümlerin toplamı da 7.5GB’dır. fdisk programının çıktısında disk bölümleri daha rahat görülebilir:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
pi@raspberry ~$ sudo fdisk -l Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 8192 137215 129024 63M e W95 FAT16 (LBA) /dev/mmcblk0p2 137216 15644671 15507456 7.4G 5 Extended /dev/mmcblk0p5 139264 204797 65534 32M 83 Linux /dev/mmcblk0p6 204800 346111 141312 69M c W95 FAT32 (LBA) /dev/mmcblk0p7 352256 15644671 15292416 7.3G 83 Linux |
Şimdi mevcut disk bölümlerinin ne kadarının dolu yani kullanımda olduğuna bakalım, bunun için df programı kullanılabilir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pi@raspberry:~ $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 7.1G 4.2G 2.6G 62% / devtmpfs 458M 0 458M 0% /dev tmpfs 462M 0 462M 0% /dev/shm tmpfs 462M 6.2M 456M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 462M 0 462M 0% /sys/fs/cgroup /dev/mmcblk0p6 68M 21M 47M 31% /boot tmpfs 93M 0 93M 0% /run/user/1000 /dev/mmcblk0p5 30M 1.6M 27M 6% /media/pi/SETTINGS |
Linux başarımı artırmak için diski birçok dosya sistemine ayırır. Yukarıdaki df çıktısında bu bölümleri görebilirsiniz. En önemli bölüm / kök dizinin bulunduğu 7.1GB’lık bölümdür. Bu bölümün %62’si kullanılmaktadır. Kök dizinin içerisinde yüz binlerce dosya ve dizin bulunmaktadır. Hangi dizinin ne kadar yer kapladığını görmek du (disk usage) programı kullanılabilir. du programı kendisine seçenek olarak verilen dizinin içerisindeki tüm dizin ve dosyaların toplam miktarını görüntüler. Örneğin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
pi@raspberry:/var $ sudo du -sh * 4.0K backups 136M cache 116M lib 4.0K local 0 lock 428K log 4.0K mail 4.0K opt 0 run 28K spool 100M swap 12K tmp |
/var dizini içerisinde çalıştırılan du komutu ile dizin içindeki tüm dizinlerin diskte kapladıkları alan listelenmektedir. Komuta eklenen -s seçeneği (summerize) alt dizin detaylarını listelenmemesini, sadece özet olarak toplam miktarın listelenmesini sağlamaktadır. -s seçeneğini kaldırarak daha detaylı bir listeleme gerçekleştirebilirsiniz. Benzer şekilde, bu yöntem kullanılarak, diskte kapladığı alan listelenmek istenen her dizin için bu komutun çalıştırılması gerekir.
Daha pratik bir listeleme için ncdu (NCurses Disk Usage) programı oldukça faydalıdır. ncdu interaktif çalışan bir programdır ve dizinler içerisinde dolaşarak dizinin toplam miktarı kolayca öğrenilebilir. Programı yüklemek için aşağıdaki komutları çalıştırın:
1 2 3 |
pi@raspberry:~ $ sudo apt update pi@raspberry:~ $ sudo apt install ncdu -y |
Kurulum tamamlandıktan ncdu programını / kök dizin içinde çalıştırmak için aşağıdaki komutu kullanabilirsiniz (Dizin belirtilmezse sadece içinde bulunulan dizin taranır).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
pi@raspberry:/ $ ncdu / --- /var ---------------------------------------------------------------------- 2.7 GiB [##########] /usr 918.3 MiB [### ] /opt . 351.8 MiB [# ] /var 181.6 MiB [ ] /lib 21.0 MiB [ ] /boot 7.5 MiB [ ] /home 7.3 MiB [ ] /sbin ... |
Ncdu’nun çıktısında, her satırda dizinin diskte kapladığı toplam alan ve diğer dizinlere kıyasla ne kadar yer kapladığı # karakterleri ile gösterilir. Dizinlerin içerisinde dolaşmak için klavyedeki ok tuşları ve enter tuşu kullanılabilir. Dizin boyutlarını % (yüzde) olarak görüntülemek için klavyeden g tuşunu, seçili dizini silmek için de d tuşunu kullanabilirsiniz.
Disk Dolu Hatası
Bir dosya sisteminde dosya boyutundan bağımsız olarak bulunabilecek dosya sayısı, dosya sistemi oluşturulurken tanımlanan inode (index node) sayısı ile belirlenir. inode her bir dosyaya karşılık gelen tekil bir sayıdan ibarettir ve dosya hakkındaki bilgilere (erişim izinleri, sahiplik, oluşturma/değiştirme zamanı vs) erişmek için kullanılır. Dosya sistemi üzerinde inode sayısını aşan miktarda dosya oluşturulursa “disk dolu / disk full” hatası ile karşılaşılabilir. Dediğimiz gibi bu, dosya boyutlarından bağımsız bir tanımlamadır ve inode sayısı dosya sistemi oluşturulurken tanımlanır. Dosya sistemi tarafından desteklenen ve kullanılan inode sayısını görmek için df aracına –i seçeneği geçilebilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
pi@desktop3:~ $ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/root 485760 140976 344784 30% / devtmpfs 117530 362 117168 1% /dev tmpfs 118682 1 118681 1% /dev/shm tmpfs 118682 453 118229 1% /run tmpfs 118682 3 118679 1% /run/lock tmpfs 118682 10 118672 1% /sys/fs/cgroup /dev/mmcblk0p1 0 0 0 - /boot tmpfs 118682 11 118671 1% /run/user/999 //192.168.0.155/disk 0 0 0 - /home/pi/Desktop/Bulut2 tmpfs 118682 18 118664 1% /run/user/1000 |
Yukarıdaki ekran çıktısında dosya sistemlerinde bulunabilecek dosya sayıları (inodes) ile mevcut dosya sayıları (IUsed) listelenmiştir. Diskin dolmasına neden olacak boyutta dosya olmamasına rağmen disk dolu hatasını alırsanız inodes sayısına göz atmalısınız. Eğer inodes sayısı tükenmişse muhtemelen sonsuz döngüye girmiş bir program/betik çok sayıda boş dosya üretmiştir. Dosya sistemi yapısı hakkında daha fazla bilgi için “Dosya Sisteminin Yapısı (SD Kart) ve Onarım” başlığına göz atabilirsiniz.
Disk temizliği yapmak
Raspberry Pi bilgisayarı, günümüz de halen sınırlı kabul edilebilecek kapasitelerde SD kartları, disk ortamı olarak kullanmaktadır. Aktif çalışan ve kullanılan bir sistemin disk kullanım miktarı zamanla artar. Buna örnek olarak sonradan yüklenen paketler ve otomatik güncellenen paketler, yükseltilen işletim sistemi (upgrade) ve sürekli olarak büyüyen log dosyaları (/var/log dizini) örnek verilebilir. Diskteki boş alan miktarı kritik seviye düştüğünde çeşitli servis ve programlar dolu disk hatası verir ve çalışmasını normal şekilde devam ettiremez. Bu durum Raspberry Pi bilgisayarının çalışamayacak duruma gelmesine kadar gidebilir.
Raspberry Pi OS işletim sisteminin kullandığı paket yöneticisinin olağan çalışma yapısından kaynaklanan gereksiz disk kullanımları oluşabilir. Sistemden kaldırılan paketlerin bağımlılıklarını da kaldırmak için autoremove komutunu kullanabilirsiniz.
Raspberry Pi OS işletim sistemi ile beraber gelen Wolfram (~650MB) ve Libreoffice (~250MB) programları da yüksek disk kullanımına sahiptir. Kurulu olan; fakat kullanılmayan programlar Linux’un başarımına doğrudan olumsuz bir etkiye sahip değildir. Fakat kullanmıyorsanız bu programların paketlerini de sistemden kaldırabilirsiniz. Kaldırmak için aşağıdaki komutları verebilirsiniz:
1 2 3 4 5 6 7 |
pi@raspberry ~ $ sudo apt purge wolfram-engine pi@raspberry ~ $ sudo apt remove --purge libreoffice* pi@raspberry ~ $ sudo apt autoremove pi@raspberry ~ $ sudo apt autoclean |
Raspberry Pi sürekli olarak /var/log dizini altına günlük kayıtları ekler. Zamanla bu dizin aşırı yer kaplar duruma gelir. Zaman zaman disk kullanım durumunu kontrol ederek buradaki dosyaları temizleyebilirsiniz.
Linux mimarisinde geçici dosyalar için /tmp ve /var/tmp dizinleri kullanılır. Bu dizinler geçici dosyaların depolanacağı bir konum olarak kabul edilmiştir. Geçici olarak bir dosya oluşturmak isteyen bir program dosyasını bu dizin altında oluşturur ve işi bittiğinde siler. Bazen programlardaki hatalardan veya kullanıcı kaynaklı durumlardan buradaki dosyalar silinmezler. Raspberry Pi bilgisayarını yeniden başlattıktan sonra burada oluşmuş büyük boyutlu dosyaları güvenli şekilde silebilirsiniz. Hatırlamak gerekir ki, bu dizindeki dosyaların silinmesi o anda çalışan programların çalışmasını olumsuz etkileyebilir. Bunun için dosya oluşturulma tarihini kendinize ölçüt alabilirsiniz.
Grafik ortamda disk temizleme araçlarını kullanmak
Bleachbit[1], diskteki gereksiz dosyaları silerek boş alan açan ve grafiksel ortamda çalışan kullanışlı programlardan birisidir. Linux, Windows, Mac OS ve Blackberry gibi işletim sistemlerinde çalışabilen Bleachbit ile temizlik yapabileceğiniz alanlar şunlar:
- Bellek ve Swap.
- APT önbelleği.
- Bash komut günlük dosyaları.
- Geçici yerel ve internet dosyaları (tmp).
- Kırık uygulama kısa yolları ve dosya uzantıları.
- Pano dosyaları.
- X11 hata ayıklama kayıtları.
- Yüzlerce uygulamanın geçici dosya arşivlerini silebilme (aMSN, Chromium, aMule, Firefox, LibreOffice).
- Boş disk alanının üzerine yazarak güvenli silme (kurtarılamayacak şekilde silme).
Programı yüklemek için aşağıdaki komutu uygulayabilirsiniz:
1 2 |
pi@raspberry:~ $ sudo apt update pi@raspberry:~ $ sudo apt install bleachbit –y |
Programı çalıştırmak için Raspberry Pi menüsünden System Tools altındaki BleachBit veya BleachBit (root) seçeneklerine tıklatabilirsiniz. BleachBit (root) seçeneği ile program root yetkileri ile çalışacağından sistemde daha kapsamlı bir temizlik yapmayı sağlar. Program çalıştığında bizi aşağıdaki gibi bir arabirim karşılar:
BleachBit programın arabirimi
Silme işlemini başlatmak için soldaki kategori ağacından temizlik yapmak istediğiniz kısımları seçin ve araç çubuğundaki Clean simgesine tıklatın.
Gereksiz Grafik Kullanıcı Arabirimi (GUI) Dosyalarını Kaldırmak
Raspberry Pi’ı headless (monitörsüz) olarak kullanıyorsanız X11 grafik ortamına ihtiyacınız yok demektir. Bununla ilgili dosyaları sistemden kaldırarak bir miktar boş disk alanı oluşturabilirsiniz:
1 |
pi@raspberry ~ $ sudo apt purge --auto-remove libx11-.* |
[1] BleachBit ana sayfası: https://www.bleachbit.org/