Bagaimana cara memindahkan / var ke partisi lain yang ada?

16

Saya memiliki partisi / yang berisi / var dan terlalu kecil. Saya memiliki partisi lain dengan ruang yang cukup.

Ini df saya:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

Bagaimana saya bisa memindahkan folder / var dari sda1 ke sda2?

Jérémie
sumber

Jawaban:

19

Pergilah ke mode pengguna tunggal, dan pastikan semua proses penulisan untuk /vardihentikan. (Periksa dengan lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# Anda dapat menghapus /var.oldketika Anda selesai untuk mendapatkan kembali ruang
  • mkdir -p /var
  • mount -o bind /home/var /var
  • perbarui Anda /etc/fstabuntuk membuat bind-mount permanen.

/etc/fstab

 /home/var /var        none    bind
Sakit kepala
sumber
Terima kasih! Bagaimana saya bisa masuk ke mode pengguna tunggal? Apakah folder 'var' akan tetap di / home?
Jérémie
Ya akan selalu ada /home/vardirektori jika Anda memecahkan masalah dengan cara ini. Salah satu cara Anda dapat masuk ke mode pengguna tunggal dengan me-reboot, dan memilih mode pengguna tunggal dari menu Boot.
Zoredache
Saya tidak begitu yakin apakah ini akan berfungsi dengan baik sepanjang waktu. Jika Anda menggunakan versi yang lebih baru (mengi) Anda mungkin baik-baik saja karena memiliki sistem file / run. OTOH: di awal proses boot file dapat dibuka di / var sebelum di-mount.
cstamas
1
@cstamas, Memiliki / var pada sistem file yang terpisah didukung , dan selalu demikian. Memiliki / var pada terpisah bahkan disarankan sebagai hal yang baik di FHS, dan dokumen resmi Debian.
Zoredache
Ok, saya pikir kamu benar. Sangat aneh bagi saya untuk melakukan ini dengan bind mounts.
cstamas
5

Anda juga bisa menggunakan:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

Ini tampaknya jauh lebih mudah daripada main-main dengan fstab dan mount stuff.

mdpc
sumber
1
Tidak yakin mengapa ada orang yang memilih ini. Ini akan bekerja dengan baik. Sym-link harusnya berfungsi dengan baik. Saya hanya menggunakan bind mounts untuk hal-hal lain, jadi saya cenderung memikirkannya dulu.
Zoredache
1
Untuk menambah ini, mungkin tidak seaman, tetapi sebenarnya berfungsi. Saya baru-baru ini melakukan ini pada mesin sebelum menempatkannya dalam produksi. Saya harus menggunakan hati-hati jika itu adalah mesin yang telah digunakan atau memiliki banyak proses yang berjalan. Dalam kasus saya, itu adalah server baru yang dimaksudkan untuk menjalankan hanya kucing jantan.
AJ Brown
1
Symlinking / var berfungsi, tetapi alih-alih melakukannya, saya lebih suka meletakkan entri di / etc / fstab, untuk mengingat diri saya di partisi / volume yang saya letakkan apa, dan mengapa (Anda dapat menambahkan komentar). Cara ini juga lebih bisa dimengerti oleh saya apa yang harus saya ubah dalam konfigurasi jika saya perlu mengubah sesuatu di perangkat keras saya.
gerlos
1
Saya tidak bisa melihat bagaimana ini akan bekerja. Saya ingin ini berfungsi, tetapi hal-hal dasar seperti init use / var, bukan?
Sue Spence
1

Pindah /vartanpa mengubah ke mode pengguna tunggal

Ketika saya mengambil alih server virtual baru yang telah disediakan untuk saya oleh perusahaan hosting perusahaan saya, saya membuat volume tambahan logis untuk vardan homeyang telah menjadi direktori reguler di partisi root. Karena penyedia server virtual tidak menyediakan antarmuka seperti KVM yang dengannya saya dapat mengakses server dalam mode pengguna tunggal, jawaban di atas tidak berlaku untuk pengaturan saya. Saya harap jawaban ini berguna untuk orang lain dalam situasi yang sama (Saya telah menyimpan detail LVM tetapi ini dapat dilewati karena tidak terlalu relevan apakah sistem file baru dibuat pada volume logis atau partisi disk).

Buat dan gunakan /varsistem file baru dengan LVM

Buat filesystem untuk varvolume baru , pasang (menggunakan direktori sementara) dan salin file dari saat ini /varke filesystem baru. Saat menyalin file dengan rsync, gunakan -a, --archiveopsinya untuk mempertahankan stempel waktu, kepemilikan, mode, dll. Dan -X, --xattrsopsinya untuk mempertahankan atribut yang diperluas seperti label keamanan yang digunakan oleh AppArmor dan SELinux.

sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
sudo rsync -raX /var/ /var.new/

Perbarui tabel sistem file

Konfigurasikan sistem file baru untuk digunakan sebagai titik-mount baru /vardengan menambahkan baris berikut ke /etc/fstab. Catatan yang 0digunakan sebagai nomor pass (bidang terakhir) sehingga sistem file tidak akan secara otomatis diperiksa ( fsck) setelah sejumlah reboot (saya tidak punya akses untuk masuk ke server dalam mode single-user).

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

Karena saya tidak dapat mengubah ke mode pengguna tunggal, reboot komputer untuk menggunakan volume baru ini sebagai /var.

Pulihkan ruang disk dari sistem file root

Setelah mesin restart, lakukan langkah-langkah berikut untuk membersihkan direktori sementara dan menghapus /varfile lama dari sistem file root:

  1. Hapus titik pemasangan sementara:

    sudo rmdir /var.new
    
  2. Buat titik mount baru untuk membuat jalur alternatif ke file di /vardirektori lama pada sistem file root (saat ini "tertutup" oleh /varsistem file baru yang dipasang pada direktori):

    sudo mkdir /old-root
    sudo mount /dev/mapper/VolGroup00-root /old-root/
    sudo rm -rf /old-root/var/*
    sudo umount /old-root/
    sudo rmdir /old-root/
    
Anthony G - keadilan untuk Monica
sumber