Linux takas bölümünün nerede olduğunu nasıl bilebilir?


13

Takas bölümünü SSD yerine HDD'ye koymanız gerektiğini okudum.

Sorularım şunlardır:

  • Takas bölümünü bulmak için dağıtım (veya başka bir şey) tarafından yapılan "kontrol" ne zaman ve nasıl yapılır?
  • Önyükleme sırasında oluyor mu?
  • Sadece tüm kullanılabilir diskleri kontrol eder ve 'takas' bayrağı olan bir bölüm mü arar?
  • Böyle birkaç bölüm varsa ne olur?
  • Ayrıca, örneğin aynı diskte iki farklı dağıtım çalıştırırsam kaç takas bölümüne ihtiyacım var, diyelim ki Fedora ve Ubuntu?

17
SSD'deki bir takasın gerçekten harika bir takas olacağını unutmayın (macOS bunu yaşlar için yapıyor). Bununla birlikte, SSD'ye ömrünü kısaltabilecek ek okuma / yazma yapacaktır.
Nonyme

20
Takasın SSD yerine bir HDD'de olması gerektiğini nereden okudunuz? Ayrıca, makale veya yorum kaç yaşındaydı? Modern SSD'ler aşınma seviyelendirmede çok daha iyidir ve tekrarlanan SSD'ler yeni olduğunda yaptıkları şekilde yazıldıktan sonra başarısız olmazlar. Ayrıca, yalnızca SSD'leri olan bir bilgisayarınız varsa, takas kullanmamak dışında gerçekten fazla seçeneğiniz yoktur
JDS

2
@zakinster: 1 TB sürücünüz her zaman dolu olduğunda ne olur? Depolama ihtiyaçları ile depolama ihtiyaçları artmıştır.
Orbit'te Hafiflik Yarışları

3
Başka bir deyişle, "evet katılıyorum, önceki açıklamamın aksine diskin gerçek boyutu alakasız - ne kadarını kullanıyorsunuz"
Yörüngedeki Hafiflik Yarışları

6
@DavidSchwartz Ayrıca, "önemli miktarda takas kullanıyorsanız", SSD bir HDD'den çok daha az algılanan sistem performans kaybı üretirken, sisteme daha fazla RAM eklemek veya sanal sistemi azaltmak daha iyi bir seçenek olacaktır. önemli takas kullanımını durdurmak için bir şekilde iş yükünüzün bellek ayak izini. Ayrıca, neredeyse hiç kullanılmayan verilerle takas eden uzun çalışan bir sistem ile aktif olarak takas eden ve taranan bir sistem arasında bir fark olduğunu unutmayın ...
twalberg

Yanıtlar:


24

Statik olarak yapılandırılmış takas alanı (hemen hemen her dağıtımın kullandığı tür) /etc/fstabtıpkı dosya sistemleri gibi yapılandırılır .

Tipik bir giriş şuna benzer:

UUID=21618415-7989-46aa-8e49-881efa488132    none    swap     sw      0  0

Ayrıca bayraklar alanında (dördüncü alan) ya discardda nofailbelirtilenleri görebilirsiniz . Bir takas alanına Her tür çizgi karşılık (o değil sahip bir bölümü olmasını istiyorsanız, bunu takas dosyaları, hatta tüm takas diskleri olabilir).

Bazı özel durumlarda, bellek yönetimi ile ilgili sorunlu davranışlara neden olabileceğinden, oldukça nadir olmasına rağmen, dinamik olarak yapılandırılmış takas alanına sahip olabilirsiniz. Bu durumda, yapılandırma tamamen çalışma zamanında gerektiğinde takas dosyaları oluşturan ve etkinleştiren bir kullanıcı alanı bileşeni tarafından işlenir.

Kaç tane ihtiyacınız olduğu kadarıyla, bu cevaplaması karmaşık bir soru, ancak çalıştırmayı planladığınız farklı Linux dağıtımlarının sayısı, hazırda bekletme modundayken bir dağıtım yapmak istemediğiniz sürece (ve siz muhtemelen bunu yapmak istemezsiniz, çünkü sisteminizi sıkıştırmanın gerçekten kolay bir yoludur).

Yükleyiciyi hemen hemen tüm büyük dağıtımlar için (Fedora, OpenSUSE, Linux Mint, Debian ve Ubuntu dahil) çalıştırdığınızda, sistemdeki mevcut takas bölümlerini algılar ve bunları dağıtım için yapılandırmaya ekler. kurulum (muhtemelen manuel bölümlemeyi seçerseniz hariç) ve çoğu durumda bu sistemin makul bir şekilde yapılandırılmasına neden olur.

Bunun dışında bile, çok sayıda diske sahip bir sunucu sisteminden bahsetmedikçe, kişisel olarak birden çok takas bölümüne sahip olmaktan kaçınmayı öneririm ve o zaman bile, iyi performans göstermesi için kurmak için ne yaptığınızı bilmeniz gerekir. .


2 Linux dağıtımınız varsa, sistem için bir takas bölümünüz olabilir ... bu nedenle hazırda bekletme ve devam ettirmeyi deneyebilirsiniz ... (farklı kullanıcıların BTW'sini kullanmak daha iyidir ve farklı /tmpbölümlere / dizine de ihtiyacınız vardır ). Muhtemelen bu durumda sanal makinelere sahip olmak daha iyidir ...
Hastur

Öyleyse, Linux işletim sisteminin yüklü olduğu aynı SSD'de takas için özel bir bölümleri varsa, yapılması gereken şey, aslında takas veya kullanımda olduğu için görünmüyor. Eğer systemctl --all | grep swapkoşarsam iki sonuç alırım. dev-disk-by\x2duuid-1c692cc4\x2df942\x2d4478\x2dad0f\x2d266b7484273a.swapve swap.targether ikisi de AKTİF = etkin değil ve SUB = ölü . Sistemimin takas alanını kullanmasını nasıl sağlayabilirim?
Rockin4Life33

21

diyelim Fedora ve Ubuntu?

... ikisi de günümüzde işletim sistemidir.

Systemd işletim sistemlerinde ne olur

doğal mekanizma

Systemd çeşitli birimler kullanır. .mountbirim dosyaları birimlere bağlanmasını bildirir. .swapbirim dosyaları, çekirdeğe takas bölümleri hakkında bilgi vermesini söyler. ( .servicebirim dosyaları, hizmetlerin nasıl çalıştırılacağını anlatır. Bunları yürürlüğe koymak için, systemd kendisi ilgili sistem çağrılarını yapan alt süreçleri kaldırır.

Böyle bir systemd işletim sisteminde systemctl(with --all) komutunu kullanırsanız , yüklü .swapbirimler hakkında bilgi verir . Örneğin:

dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap yüklü etkin etkin / dev / disk / by-partuuid / 40549710-05
dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap yüklü etkin etkin / dev / disk / tarafından-uuid / 1bb589e8-929f-4041-81f4-ff2b339b49
dev-sda5.swap yüklü etkin etkin / dev / sda5

Ayrıca .mountbirimler hakkında da bilgi verecektir .

Bir sistem yöneticisi aslında böyle yazabilirsiniz .swapXe yazabilir, tıpkı elle birim dosyaları .service, .socketve elle diğer birim dosyaları. systemd kendisi sadece dosya sistemindeki birim dosyalarını arar. Bunlar kendi doğal mekanizmasıdır.

Birisi size bu birim dosyalarında ne olduğunu ve dosya sisteminde nerede bulunduğunu göstermek için systemd alabilir:

$ systemctl cat dev-disk-tarafından \\ x2duuid-1bb589e8 \\ x2d929f \\ x2d4041 \\ x2d81f4 \\ x2dff2b339b4e2a.swap 
# /run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap
# Systemd-fstab-generator tarafından otomatik olarak oluşturulur

[Birim]
KaynakYolu = / etc / fstab
Dokümantasyon = erkek: fstab (5) erkek: systemd-fstab-jeneratör (8)

[Değişim]
by-Uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a Ne = / dev / disk /
Seçenekler = sw
$ 

otomatik oluşturulan birim dosyaları

Bunları elle yazabilirsiniz. Ancak genellikle bu tür .mountve .swapbirim dosyaları, jeneratörler olarak bilinen programlar tarafından otomatik olarak oluşturulur . Bu tür iki jeneratör systemd-fstab-generatorve systemd-gpt-auto-generator. Her ikisi de önyükleme işleminin başlarında ve bir systemctl daemon-reloadkomuta yanıt olarak çalışır ve (yukarıda görebileceğiniz gibi), birim dosyalarının bir dolu yükünü belgelenmemiş bir alt dizine oluştururlar /run/systemd/. systemd'nin kendisi sadece oluşturulan birim dosyalarını kullanır .

Eski jeneratör /etc/fstab, bu dosya biçimindeki birkaç systemd uzantısını tanıyarak okur . Bir cevap açıklamasında işaret ettiğim gibi, geleneksel olarak takas bölümleri bağlama türüne sahiptir swve diğer işletim sistemlerinin bu tablodaki takas kayıtlarını tanımasını bu şekilde bulacaktır. Ancak Linux yazılımları VFS türünü aramak yerine VFS türünü tanımak için alternatif bir yol swapizledi. systemd-fstab-generatorburada bir istisna değildir /etc/fstabve yerel mekanizmalara dönüştürürken bu şekilde yorumlanır .

İkinci jeneratör, çeşitli tanınmış bölüm tipi GUID'leri olan EFI bölüm tablosu girdilerini arayan, EFI Sistem Bölümü'nü tutan aynı diskte bulunan EFI bölüm tablosunu işler . Bu GUID'lerden biri Linux takas bölümlerine atanan geleneksel GUID'dir; ve systemd-gpt-auto-generatorbu GUID ile (systemd doco'da verilen kriterleri karşılayan) bir bölüm bulursa, bunun için bir .swapbirim oluşturur; hiç /etc/fstabdahil değil .

Tabii ki, bu sürecin birçok yan etkisi vardır. Örneğin /etc/fstab, tablonun birincil anahtarı olmadığından kayıtların yinelenen "spec" ve "file" (yani "ne" ve "nerede") alanları olabilir. Ancak, yerel systemd mekanizmasında, "dosya" (yani "nerede") alanı, .mountbirim adlarına gömülü birimler için benzersiz bir anahtardır . .mountBunu iki birim paylaşamaz. İçin .swapbirimler "Spec" (yani "ne") alanı birimleri için benzersiz bir anahtardır. .swapBunu iki birim paylaşamaz. Bu nedenle, tüm kayıtların /etc/fstabyerel mekanizmalara dönüştürülmesi gerekmez ve özellikle insanlar iki farklı amaç için aynı bağlama noktasını listelemek veya aynı takas bölümünü iki farklı şekilde listelemek gibi çalışırsa çalışacaktır.

Benzer şekilde, /etc/fstabyerel mekanizmaya çevrildiği ve systemd'nin yerel mekanizmasının birimleri etkinleştirmenin başka yolları olduğu için, davranış sistemsiz olmayan işletim sistemlerinden farklıdır. Bir .mountbirim, varsayılan olaraksystemd-udevd , takılı depolama aygıtının görünümüne yanıt olarak önyükleme işleminden sonra bile otomatik olarak etkinleştirilir . Veya bir Wants=veya Requires=bazı .serviceveya .socketbirim olarak listelenebilir , yani bulunduğunda (yeniden) etkinleştirilir. Hatta var RequiresMountsFor=.

yükleyici programları ve sistem yolu

Geleneksel olarak, işletim sistemi yükleyici programları ve sistemd yöneticisi daha sonra sistemi yeniden yapılandırmak için yazılı swgirişlere sahiptir /etc/fstab. Böylece yerli .mountve .swapbirimler otomatik olarak oluşturulur. Yükleme / yapılandırma yardımcı programı takas dosyasının nereye yerleştirildiğini "bilir", çünkü kullanıcı yöneticisi sistem yöneticisi bir tür seçim yaptı ve /etc/fstabeşleşmesi için bir yazar . Bazen bu seçim, kurulumun bir parçası olarak bana bir takas bölümü yapmanıza ihtiyacım var. ; bazen sadece diskte bulduğunuz takas bölümünü kullanın. (yükleyiciler bölüm türlerine de bakar).

Ancak sistem kullanıcıları, kendilerini büyük ölçüde boş bir /etcağaçtan, vatansız sistem denilen otomatik olarak yapılandıran ve EFI bölümleme tablosunu okuyan jeneratör gibi mekanizmaların hepsi budur. Sistemd insanların planında, hiçbir şey yoktur /etc/fstabve aslında hiçbir kalıcı yapılandırma verisi yoktur /etcve tüm bunlar, diskteki bölüm tablosunun , her önyüklemede ve her birinden çıkarılırsystemctl daemon-reload . Günümüzde işletim sistemi yükleyici programlarını, bir/etc/fstab .

Geleneksel şemada, elbette her işletim sisteminin kendi özel takas bölümüne sahip olmasını ve birbirlerinin takas bölümlerine dokunmalarını sağlayabilirsiniz. Ve eğer bir takas bölümü aracılığıyla diske hazırda kullanan ve hibernated iken (başka bir işletim sistemine çoklu boot edebilmek için bekliyoruz aslında eğer bir olan çok kötü bir fikir çünkü o neden dosya sistemi yolsuzluk bu şekilde çok kolay olacaktır) gerekli.

Systemd şemasında, işletim sistemi henüz systemd insanlar tarafından öngörülen ve "vatansız" olarak olmasa bile, yukarıda belirtilen jeneratörler çalışır; ve böylece gerekli bölüm tipine sahip tüm takas bölümleri (ESP / kök disk üzerinde) tüm sistemd işletim sistemleri tarafından otomatik olarak kullanılır. Otomatik olarak keşfedilen tüm takas bölümlerini paylaşacaklarından, yüklü işletim sistemi başına bir takas bölümü oluşturmaya gerek yoktur.

daha fazla okuma


Çok hoş - açıklama için teşekkürler!
Andy Dalton

Sadece systemd hakkında konuştuğunuz için size oy vermek isteyen bir parçam var. Ama elbette bu haksız (ve ayrıca systemd ya da no yanlış olduğun anlamına gelmez) ve yapıcı olmak için uygun bir yol olarak bana hiç görünmediği için tipik olarak bir şeyleri oylamam. Ancak güzel bir yazıştırmadır, bu yüzden Lennart'a yapılan referansları görmemize rağmen bu cevabı oyladım. Eğer başka bir şey yapmazsan, çaba gösterirsin ve övülmelidir. Vatansız çöp hakkında kısaca okudum ve bu daha ziyade ... Ne yaptığından bile emin değilim, o yüzden bırakacağım.
Pryftan

13

Tarihsel olarak, takas bölümü /etc/fstabtür girişiyle belirtilir swap. Önyükleme sırasında, başlatma işlemleri bu dosyayı okur ve bu yapılandırmayı çekirdeğe aktarır.

İçindeki girişe bir örnek /etc/fstab:

/dev/sdb    none    swap     sw      0  0

systemdTakasın nasıl yönetildiğine aşina değilim , ancak sonuçların aynı olduğuna inanıyorum: bir kullanıcı alanı işlemi takas için hangi alanın tahsis edildiğinin farkındadır ve kullanıcı alanı işlemi çekirdeği bilgilendirir.


Soru soran Linux hakkında sordu ve bu Linux için yanlış değil; ama Linux'a özgüdür. Örneğin FreeBSD gibi diğer işletim sistemleri, içinde takas kayıtları tanımak /etc/fstabonların arasından swmonte tip ziyade dan swapVFS türü.
JdeBP

1
Cevap, sorunun tüm bölümlerini ele almıyor.
Sergiy Kolodyazhnyy

Ayrıca bu cevabın sistemd işletim sistemleri dünyasında da güncel olmadığını belirtmeliyim. Dikkate almaz systemd-gpt-auto-generator.
JdeBP

2
Ne demek istiyorsun systemd fstab kullanmıyor? Tabii ki öyle!
psusi

1
@psusi: systemd anlar, ancak fstab gerektirmez.
MSalters

4

Diğer tüm yanıtlar, önyükleme sırasında bir takas dosya sistemine nasıl işaret edileceğini belirtir.

Ancak, diğer cevaplara eklemek için birkaç nokta:

  • takas alanı da bir dosya olabilir;
  • bir takas alanı bölümü genellikle 0x82 türü olarak işaretlenir;
  • çalışma zamanında herhangi bir noktaya takas alanı monte edebilirsiniz ;
  • bir bölümü / dosyayı işaretlemek / başlatmak için, daha sonra takas alanı olarak tanınması ve kullanılması / monte edilmesi için komutu kullanmanız gerekir mkswap;
  • bir takas bölümünü / dosyayı elle etkinleştirmek / kullanmak için komutu kullanırsınız swapon;
  • aynı şekilde takas etmek için, sen de git swapoff.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.