Configuring Storage
Fedora CoreOS dilengkapi dengan tata letak penyimpanan default yang sederhana: partisi root adalah partisi terakhir dan akan memperluas ukurannya hingga mencakup seluruh kapasitas disk. Selain partisi boot, semua data disimpan di partisi root. Lihat bagian Disk layout section untuk detail lebih lanjut.
Di bawah ini, kami memberikan contoh berbagai cara yang dapat Anda gunakan untuk menyesuaikan ini.
|
Fedora CoreOS memerlukan sistem berkas root berukuran minimal 8 GiB. Untuk alasan praktis, citra disk untuk beberapa platform dikirimkan dengan sistem berkas root berukuran lebih kecil, yang secara default akan secara otomatis diperluas untuk mengisi seluruh ruang disk yang tersedia. Jika Anda menambahkan partisi tambahan setelah sistem berkas root, Anda harus memastikan untuk secara eksplisit memperluas partisi root seperti yang ditunjukkan di bawah ini agar ukurannya minimal 8 GiB. Saat ini, jika sistem berkas root berukuran kurang dari 8 GiB, peringatan akan ditampilkan saat login. Mulai Juni 2021, jika sistem berkas root berukuran kurang dari 8 GiB dan diikuti oleh partisi lain, Fedora CoreOS akan menolak untuk boot. Untuk detail lebih lanjut, lihat bug ini. |
Mengacu pada perangkat blok dari Ignition
Banyak contoh di bawah ini akan merujuk pada perangkat blok, seperti /dev/vda. Nama perangkat blok yang tersedia bergantung pada infrastruktur dasar (bare metal vs cloud) dan seringkali jenis instance spesifik. Misalnya, di AWS, beberapa jenis instance menggunakan drive NVMe (/dev/nvme*), sementara yang lain menggunakan /dev/xvda*.
Jika konfigurasi disk Anda sederhana dan menggunakan disk yang sama tempat sistem operasi di-boot, maka tautan /dev/disk/by-id/coreos-boot-disk dapat digunakan untuk merujuk ke perangkat tersebut dengan mudah. Tautan ini hanya tersedia selama proses provisioning untuk memudahkan merujuk ke disk yang sama tempat sistem operasi di-boot.
Jika Anda perlu mengakses disk lain, Anda dapat mem-boot satu mesin dengan konfigurasi Ignition yang hanya memiliki akses SSH, lalu memeriksa perangkat blok melalui perintah seperti lsblk.
Untuk perangkat keras fisik, disarankan untuk merujuk ke perangkat melalui tautan /dev/disk/by-id/ atau /dev/disk/by-path.
Mengatur mount /var terpisah
Berikut adalah contoh konfigurasi Butane untuk mengatur /var pada partisi terpisah di disk primer yang sama:
variant: fcos
version: 1.6.0
storage:
disks:
- # The link to the block device the OS was booted from.
device: /dev/disk/by-id/coreos-boot-disk
# We do not want to wipe the partition table since this is the primary
# device.
wipe_table: false
partitions:
- number: 4
label: root
# Allocate at least 8 GiB to the rootfs. See NOTE above about this.
size_mib: 8192
resize: true
- size_mib: 0
# We assign a descriptive label to the partition. This is important
# for referring to it in a device-agnostic way in other parts of the
# configuration.
label: var
filesystems:
- path: /var
device: /dev/disk/by-partlabel/var
# We can select the filesystem we'd like.
format: ext4
# Ask Butane to generate a mount unit for us so that this filesystem
# gets mounted in the real root.
with_mount_unit: true
Tentu saja, Anda dapat mem-mount hanya sebagian dari /var ke partisi terpisah. Misalnya, untuk mem-mount /var/lib/containers:
variant: fcos
version: 1.6.0
storage:
disks:
- device: /dev/disk/by-id/coreos-boot-disk
wipe_table: false
partitions:
- number: 4
label: root
# Allocate at least 8 GiB to the rootfs. See NOTE above about this.
size_mib: 8192
resize: true
- size_mib: 0
label: containers
filesystems:
- path: /var/lib/containers
device: /dev/disk/by-partlabel/containers
format: xfs
with_mount_unit: true
Sebagai alternatif, Anda juga dapat menghubungkan penyimpanan dari disk terpisah. Misalnya, di sini kita menghubungkan /var/log dari partisi pada /dev/vdb:
variant: fcos
version: 1.6.0
storage:
disks:
- device: /dev/vdb
wipe_table: false
partitions:
- size_mib: 0
start_mib: 0
label: log
filesystems:
- path: /var/log
device: /dev/disk/by-partlabel/log
format: xfs
with_mount_unit: true
Dalam contoh ini, kita menghapus disk dan membuat dua partisi baru.
variant: fcos
version: 1.6.0
storage:
disks:
-
# Mandatory. We use the World-Wide Number ID of the drive to ensure
# uniqueness.
device: /dev/disk/by-id/wwn-0x50014e2eb507fcdf
# This ensures that the partition table is re-created, along with all
# the partitions.
wipe_table: true
partitions:
# The first partition (slot number 1) is 32 GiB and starts at the
# beginning of the device. Its type_guid identifies it as a Linux
# swap partition.
- label: part1
number: 1
size_mib: 32768
start_mib: 0
type_guid: 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f
# The second partition (implicit slot number 2) will be placed after
# partition 1 and will occupy the rest of the available space.
# Since type_guid is not specified, it will be a Linux native
# partition.
- label: part2
Mengonfigurasi ulang sistem berkas akar
Anda dapat mengonfigurasi ulang sistem berkas akar itu sendiri. Anda dapat menggunakan jalur /dev/disk/by-label/root untuk merujuk ke partisi akar asli. Pastikan bahwa sistem berkas baru juga memiliki label root.
| Anda harus memiliki setidaknya 4 GiB RAM agar proses reprovisioning root dapat berjalan dengan lancar. |
Berikut adalah contoh migrasi dari xfs ke ext4, namun tetap menggunakan partisi yang sama pada disk utama:
variant: fcos
version: 1.6.0
storage:
filesystems:
- device: /dev/disk/by-partlabel/root
wipe_filesystem: true
format: ext4
label: root
Sama seperti pada bagian sebelumnya, Anda juga dapat memindahkan sistem berkas root secara keseluruhan. Di sini, kami memindahkan root ke perangkat RAID0:
variant: fcos
version: 1.6.0
storage:
raid:
- name: myroot
level: raid0
devices:
- /dev/disk/by-id/virtio-disk1
- /dev/disk/by-id/virtio-disk2
filesystems:
- device: /dev/md/myroot
format: xfs
wipe_filesystem: true
label: root
Anda tidak memerlukan kunci path atau with_mount_unit; FCOS mengetahui bahwa partisi root bersifat khusus dan akan menentukan cara menemukannya serta menghubungkannya.
|
Jika Anda ingin menyalin disk boot ke beberapa drive untuk ketahanan terhadap kegagalan drive, Anda perlu mencerminkan semua partisi default (root, boot, EFI System Partition, dan kode bootloader). Ada sintaks konfigurasi Butane khusus untuk ini:
variant: fcos
version: 1.6.0
boot_device:
mirror:
devices:
- /dev/sda
- /dev/sdb
Menentukan sistem berkas
Contoh ini menunjukkan proses pembuatan sistem berkas dengan mendefinisikan dan memberi label pada partisi, menggabungkannya menjadi array RAID, dan memformat array tersebut sebagai ext4.
variant: fcos
version: 1.6.0
storage:
disks:
# This defines two partitions, each on its own disk. The disks are
# identified by their WWN.
- device: /dev/disk/by-id/wwn-0x50014ee261e524e4
wipe_table: true
partitions:
-
# Each partition gets a human-readable label.
label: "raid.1.1"
# Each partition is placed at the beginning of the disk and is 64 GiB
# long.
number: 1
size_mib: 65536
start_mib: 0
- device: /dev/disk/by-id/wwn-0x50014ee0b8442cd3
wipe_table: true
partitions:
- label: "raid.1.2"
number: 1
size_mib: 65536
start_mib: 0
# We use the previously defined partitions as devices in a RAID1 md array.
raid:
- name: publicdata
level: raid1
devices:
- /dev/disk/by-partlabel/raid.1.1
- /dev/disk/by-partlabel/raid.1.2
# The resulting md array is used to create an EXT4 filesystem.
filesystems:
- path: /var/publicdata
device: /dev/md/publicdata
format: ext4
label: PUB
with_mount_unit: true
Penyimpanan terenkripsi (LUKS)
Berikut adalah contoh konfigurasi perangkat LUKS di /var/lib/data.
variant: fcos
version: 1.6.0
storage:
luks:
- name: data
device: /dev/vdb
filesystems:
- path: /var/lib/data
device: /dev/mapper/data
format: xfs
label: DATA
with_mount_unit: true
Sistem berkas akar juga dapat dipindahkan ke LUKS. Dalam hal ini, perangkat LUKS harus diikat oleh Clevis. Terdapat dua jenis pengikatan utama yang tersedia: TPM2 dan Tang (atau kombinasi keduanya menggunakan Shamir Secret Sharing).
| TPM2 pinning hanya mengikat enkripsi ke mesin fisik yang digunakan. Pastikan untuk memahami model ancaman TPM2 sebelum memilih antara TPM2 dan Tang pinning. Untuk informasi lebih lanjut, lihat bagian ini dalam dokumentasi Clevis TPM2 pin. |
| Anda harus memiliki setidaknya 4 GiB RAM agar proses reprovisioning root dapat berjalan dengan lancar. |
Terdapat sintaks konfigurasi Butane yang disederhanakan untuk mengonfigurasi enkripsi sistem berkas akar dan penguncian. Berikut adalah contoh penggunaan sintaks ini untuk membuat sistem berkas akar terenkripsi yang dikunci oleh TPM2:
variant: fcos
version: 1.6.0
boot_device:
luks:
tpm2: true
Ini setara dengan konfigurasi yang diperluas berikut:
variant: fcos
version: 1.6.0
storage:
luks:
- name: root
label: luks-root
device: /dev/disk/by-partlabel/root
clevis:
tpm2: true
wipe_volume: true
filesystems:
- device: /dev/mapper/root
format: xfs
wipe_filesystem: true
label: root
Konfigurasi yang diperluas tidak mencakup kunci path atau with_mount_unit; FCOS mengetahui bahwa partisi root bersifat khusus dan akan menentukan cara menemukannya serta meng-mount-nya.
Contoh berikut ini mengikat enkripsi sistem berkas root ke PCR 7, yang sesuai dengan Komponen Boot UEFI yang digunakan untuk melacak sertifikat Secure Boot dari memori. Oleh karena itu, pembaruan pada firmware UEFI/sertifikat tidak seharusnya memengaruhi nilai yang disimpan di PCR 7.
| Pengikatan untuk PCR 8 (Komponen Boot UEFI yang digunakan untuk melacak perintah dan baris perintah kernel) tidak didukung karena baris perintah kernel berubah dengan setiap pembaruan sistem operasi. |
variant: fcos
version: 1.6.0
storage:
luks:
- name: root
label: luks-root
device: /dev/disk/by-partlabel/root
clevis:
custom:
needs_network: false
pin: tpm2
config: '{"pcr_bank":"sha1","pcr_ids":"7"}'
wipe_volume: true
filesystems:
- device: /dev/mapper/root
format: xfs
wipe_filesystem: true
label: root
Dokumentasi tambahan untuk bidang config dapat ditemukan di halaman manual clevis: man clevis-encrypt-tpm2
Perintah clevis berikut dapat digunakan untuk memastikan bahwa enkripsi sistem berkas root terikat pada PCR 7.
$ sudo clevis luks list -d /dev/disk/by-partlabel/root
1: tpm2 '{"hash":"sha256","key":"ecc","pcr_bank":"sha1","pcr_ids":"7"}'
Berikut adalah contoh sintaks konfigurasi yang disederhanakan dengan Tang:
variant: fcos
version: 1.6.0
boot_device:
luks:
tang:
- url: http://192.168.122.1:80
thumbprint: bV8aajlyN6sYqQ41lGqD4zlhe0E
Sistem akan menghubungi server Tang saat booting.
| Untuk informasi lebih lanjut tentang cara mengonfigurasi server Tang, lihat dokumentasi resmi. |
Anda dapat mengonfigurasi baik Tang maupun TPM2 pinning (termasuk beberapa server Tang untuk redundansi). Secara default, hanya perangkat TPM2 atau satu server Tang yang diperlukan untuk membuka kunci sistem berkas root. Hal ini dapat diubah menggunakan kunci threshold:
variant: fcos
version: 1.6.0
boot_device:
luks:
tang:
- url: http://192.168.122.1:80
thumbprint: bV8aajlyN6sYqQ41lGqD4zlhe0E
tpm2: true
# this will allow rootfs unlocking only if both TPM2 and Tang pins are
# accessible and valid
threshold: 2
Menentukan ukuran partisi root
Jika Anda menggunakan Ignition untuk mengonfigurasi ulang atau memindahkan partisi root, partisi tersebut tidak akan secara otomatis diperluas pada booting pertama (lihat diskusi terkait di masalah ini). Jika Anda memindahkan partisi root ke disk baru (atau beberapa disk), Anda harus mengatur ukuran partisi yang diinginkan menggunakan bidang size_mib. Jika Anda mengonfigurasi ulang sistem berkas root di tempat yang sama, seperti dalam contoh LUKS di atas, Anda dapat mengubah ukuran partisi yang ada menggunakan bidang resize:
variant: fcos
version: 1.6.0
storage:
disks:
- device: /dev/disk/by-id/coreos-boot-disk
partitions:
- label: root
number: 4
# 0 means to use all available space
size_mib: 0
resize: true
luks:
- name: root
device: /dev/disk/by-partlabel/root
clevis:
tpm2: true
wipe_volume: true
filesystems:
- device: /dev/mapper/root
format: xfs
wipe_filesystem: true
label: root
Menambahkan swap
Contoh ini membuat partisi swap yang mencakup seluruh perangkat sdb, membuat area swap di dalamnya, dan membuat unit swap systemd sehingga area swap diaktifkan saat boot.
variant: fcos
version: 1.6.0
storage:
disks:
- device: /dev/sdb
wipe_table: true
partitions:
- number: 1
label: swap
filesystems:
- device: /dev/disk/by-partlabel/swap
format: swap
wipe_filesystem: true
with_mount_unit: true
Menambahkan penyimpanan jaringan
Sistem Fedora CoreOS dapat dikonfigurasi untuk menghubungkan sistem berkas jaringan seperti NFS dan CIFS. Hal ini dapat dilakukan dengan menggunakan Ignition untuk membuat unit systemd. Sistem berkas dapat dihubungkan saat boot dengan membuat unit mount standar. Sebagai alternatif, sistem berkas dapat dihubungkan saat pengguna mengakses titik hubung dengan membuat unit automount tambahan. Berikut adalah contoh masing-masing untuk sistem berkas NFS.
Konfigurasi mount NFS
|
Membuat unit systemd untuk menghubungkan sistem berkas NFS saat boot.
Berkas .mount harus diberi nama berdasarkan jalur (misalnya /var/mnt/data = var-mnt-data.mount)
|
variant: fcos
version: 1.3.0
systemd:
units:
- name: var-mnt-data.mount
enabled: true
contents: |
[Unit]
Description=Mount data directory
[Mount]
What=example.org:/data
Where=/var/mnt/data
Type=nfs4
[Install]
WantedBy=multi-user.target
variant: fcos
version: 1.3.0
systemd:
units:
- name: var-mnt-data.mount
contents: |
[Unit]
Description=Mount data directory
[Mount]
What=example.org:/data
Where=/var/mnt/data
Type=nfs4
[Install]
WantedBy=multi-user.target
- name: var-mnt-data.automount
enabled: true
contents: |
[Unit]
Description=Automount data directory
[Automount]
TimeoutIdleSec=20min
Where=/var/mnt/data
[Install]
WantedBy=multi-user.target
Contoh lanjutan
Contoh ini mengonfigurasi disk boot yang di-mirror dengan sistem berkas root yang dienkripsi menggunakan TPM2, mengganti ukuran partisi root yang dihasilkan secara otomatis, dan menambahkan partisi /var yang dienkripsi dan di-mirror yang menggunakan sisa ruang disk.
variant: fcos
version: 1.6.0
boot_device:
luks:
tpm2: true
mirror:
devices:
- /dev/sda
- /dev/sdb
storage:
disks:
- device: /dev/sda
partitions:
# Override size of root partition on first disk, via the label
# generated for boot_device.mirror
- label: root-1
size_mib: 10240
# Add a new partition filling the remainder of the disk
- label: var-1
- device: /dev/sdb
partitions:
# Similarly for second disk
- label: root-2
size_mib: 10240
- label: var-2
raid:
- name: md-var
level: raid1
devices:
- /dev/disk/by-partlabel/var-1
- /dev/disk/by-partlabel/var-2
luks:
- name: var
device: /dev/md/md-var
# No key material is specified, so a random key will be generated
# and stored in the root filesystem
filesystems:
- device: /dev/mapper/var
path: /var
label: var
format: xfs
wipe_filesystem: true
with_mount_unit: true
Tata Letak Disk
Semua sistem Fedora CoreOS dimulai dengan citra disk yang sama, yang sedikit berbeda antar arsitektur tergantung pada kebutuhan untuk proses booting. Pada booting pertama, sistem berkas root diperluas untuk mengisi sisa ruang disk. Citra disk dapat disesuaikan menggunakan konfigurasi Butane untuk membagi ulang disk dan membuat/mereformat sistem file. Instalasi bare metal tidak berbeda; installer hanya menyalin citra mentah ke disk target dan menyisipkan konfigurasi yang ditentukan ke /boot untuk digunakan pada booting pertama.
| Lihat Mengonfigurasi ulang sistem berkas akar untuk contoh perubahan yang didukung pada partisi akar. |
Tabel Partisi
Penggunaan nomor partisi untuk merujuk pada partisi tertentu tidak disarankan, dan sebaiknya gunakan label atau UUID sebagai gantinya. Fedora CoreOS meng Reservasi label boot, boot-<number>, root, root-<number>, BIOS-BOOT, bios-<number>, EFI-SYSTEM, dan esp-<number>, serta nama perangkat RAID md-boot dan md-root. Pembuatan partisi, sistem berkas, atau perangkat RAID dengan label-label tersebut tidak didukung.
Tabel Partisi x86_64
Citra disk x86_64 diformat GPT dengan MBR pelindung. Citra disk ini mendukung booting melalui BIOS dan UEFI (termasuk Secure Boot).
Tata letak tabel partisi telah berubah seiring waktu. Tata letak saat ini adalah:
Nomor |
Label |
Deskripsi |
Jenis Partisi |
1 |
BIOS-BOOT |
Berisi citra BIOS GRUB |
raw data |
2 |
EFI-SYSTEM |
Berisi citra EFI GRUB dan Secure Boot shim |
FAT32 |
3 |
boot |
Berisi konfigurasi GRUB, citra kernel/initramfs |
ext4 |
4 |
root |
Berisi sistem berkas root |
xfs |
Partisi EFI-SYSTEM dapat dihapus atau diformat ulang saat booting BIOS. Demikian pula, partisi BIOS-BOOT dapat dihapus atau diformat ulang saat booting EFI.
Sistem Berkas yang di-mount
Fedora CoreOS menggunakan OSTree, yang merupakan sistem untuk mengelola beberapa pohon sistem operasi yang dapat di-boot dan berbagi penyimpanan. Setiap versi sistem operasi merupakan bagian dari sistem berkas /. Semua deployment berbagi /var yang sama, yang dapat berada di sistem berkas yang sama atau di-mount secara terpisah.
Ini menunjukkan titik mount default untuk sistem Fedora CoreOS yang diinstal pada disk /dev/vda:
$ findmnt --real # Some details are elided
TARGET SOURCE FSTYPE OPTIONS
/ /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash] xfs rw
|-/sysroot /dev/vda4 xfs ro
|-/etc /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash/etc] xfs rw
|-/usr /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash/usr] xfs ro
|-/var /dev/vda4[/ostree/deploy/fedora-coreos/deploy/var] xfs rw
`-/boot /dev/vda3 ext4 ro
Partisi Sistem EFI sebelumnya dipasang di /boot/efi, tetapi hal ini tidak lagi berlaku. Pada sistem yang dikonfigurasi dengan pencerminan perangkat boot, terdapat partisi EFI yang independen pada setiap disk yang membentuk sistem.
Tidak dapat diubah /, hanya baca /usr
Karena OSTree digunakan untuk mengelola semua file yang terkait dengan sistem operasi, titik mount / dan /usr tidak dapat ditulis. Perubahan apa pun pada sistem operasi harus diterapkan melalui rpm-ostree.
Demikian pula, titik mount /boot tidak dapat ditulis, dan Partisi Sistem EFI tidak di-mount secara default. Sistem berkas ini dikelola oleh rpm-ostree dan bootupd, dan tidak boleh diubah secara langsung oleh administrator.
Penambahan direktori tingkat atas (misalnya /foo) saat ini tidak didukung dan dilarang oleh atribut immutable.
Sebenarnya / (seperti akar sistem berkas di partisi root) dipasang secara read-only di /sysroot dan tidak boleh diakses atau dimodifikasi secara langsung.
Konfigurasi di /etc dan status di /var
Lokasi yang didukung untuk penulisan hanya /etc dan /var. /etc hanya boleh berisi berkas konfigurasi dan tidak dimaksudkan untuk menyimpan data. Semua data harus disimpan di bawah /var dan tidak akan terpengaruh oleh pembaruan sistem. Lokasi tradisional yang mungkin menyimpan data (misalnya /home atau /srv) adalah tautan simbolis ke direktori di /var (misalnya /var/home atau /var/srv).
Pemilihan versi dan proses booting
Entri menu GRUB dibuat untuk setiap versi Fedora CoreOS yang saat ini tersedia di sistem. Entri menu ini merujuk pada deployment ostree yang terdiri dari kernel Linux, initramfs, dan hash yang mengarah ke commit ostree (diteruskan melalui argumen kernel ostree=). Selama proses booting, ostree akan membaca argumen kernel ini untuk menentukan deployment mana yang akan digunakan sebagai sistem berkas root. Setiap pembaruan atau perubahan pada sistem (pemasangan paket, penambahan argumen kernel) akan menciptakan deployment baru. Hal ini memungkinkan untuk kembali ke deployment sebelumnya jika pembaruan menyebabkan masalah.
Want to help? Learn how to contribute to Fedora Docs ›